Try with your file
Drop your bank statement (PDF)
1 file · 100 pages max · Free preview of 2 pages
1 file selected
Save hours every week
Turn your bank statements (PDF) into Excel, CSV or OFX, without manual retyping.
Drop a PDF statement and watch the extraction happen live. Instant preview, no signup required.
Xero can now import some bank-statement PDFs directly, but that feature is not universal. Xero currently documents direct PDF import for organisations in the United States and Canada, with plan, language, file and statement requirements. If the direct PDF route is unavailable, use a bank-native export or convert the statement to CSV. Unlock a protected PDF locally before conversion; changing the output format does not bypass password protection.
The best route is therefore a decision, not a blanket “Xero accepts PDFs” or “Xero rejects PDFs” rule:
| Your source and Xero organisation | Best route |
|---|---|
| Bank offers OFX or CSV for the required period | Prefer the native export; Xero recommends OFX where available |
| US or Canadian Xero organisation and eligible PDF | Try Xero’s direct PDF import, then review every extracted line |
| Other region, unsupported plan/layout or extraction error | Use a native export, or convert an unlocked PDF to CSV and validate it |
Xero’s current overview of manual bank-transaction imports lists PDF alongside OFX, QFX, QIF, CSV and QuickBooks files, while its dedicated PDF import documentation explains the regional and file restrictions.
Route 1: import an eligible PDF directly into Xero
Direct PDF import is currently documented for Xero organisations in the US and Canada. It is not available on the Xero Ledger plan. Check Xero’s linked PDF requirements for the accepted language, file size, page count and scan quality before upload. Use a readable, straight and unlocked document. Xero says validated banks are more likely to produce high-quality results, but it also allows other banks with variable accuracy.
If your file qualifies:
- In Xero, open Accounting → Bank accounts.
- Open the menu for the target account and choose Import a Statement.
- Upload the PDF and click Next.
- Review the transactions marked ready, warning or error.
- Clear any line you do not want to import, then complete the import.
Do not skip the review screen. A PDF import is an extraction step: it can misread a date, amount or wrapped description even when the table looks plausible. Compare the first and last transaction, the number of rows, the period total, and the closing balance with the original statement before reconciling.
Route 2: convert the bank-statement PDF to a Xero-ready CSV
Use CSV when direct PDF import is unavailable or unreliable, or when you want to inspect and correct the extracted rows outside Xero first.
Step 1 — prefer a bank-native export when one exists
Download OFX or CSV from your bank for the exact account and period if the portal offers it. A bank-native structured export avoids OCR altogether. Use a converter only when the historical statement is available as PDF but the transactions are not available in a structured format.
Step 2 — extract the PDF into rows
Upload the unlocked statement to BankStatementLab, review the extracted transactions, and export CSV for the workflow described here. BankStatementLab also generates XLSX, JSON and OFX 1.6 SGML for supported current/checking and savings accounts; it does not create QIF or QBO and it does not connect directly to Xero. The Xero step remains a manual file import, and any OFX path must be tested against the exact Xero edition and account configuration.
The app rejects password-protected PDFs, so remove the password locally before uploading. Review the privacy policy and deletion settings: source files and extracted data have different lifecycles, and successful sources are not always deleted immediately. Current product limits and credit usage are listed on the pricing page.
Step 3 — prepare the CSV using Xero’s actual rules
Xero’s official CSV bank-statement guide requires only Date and Amount to create statement lines. Payee, Description, Reference and Cheque number are optional but make reconciliation easier.
| Converted column | Xero field | Preparation check |
|---|---|---|
| Date | Transaction Date | Use one supported format for every row; YYYY/MM/DD is unambiguous |
| Signed amount | Transaction Amount | Money received positive, money paid negative; remove currency symbols and grouping commas |
| Description or payee | Payee / Description | Keep a wrapped statement description in one CSV cell |
| Reference | Reference | Optional; useful for invoice or transfer references |
| Running balance | Do not import | Xero calculates the account balance from statement lines |
Remove the account number, opening/closing-balance columns and empty rows. Do not import subtotals, “balance brought forward” rows or zero-value lines as transactions. Xero supports several date formats and prompts you when a date is ambiguous; consistency matters more than guessing from the organisation’s country.
CSV example: combine debit and credit correctly
For this fictional bank account, the source has separate Money In and Money Out columns. Create the signed Amount as Money In − Money Out, treating blank movement cells as zero after checking their meaning. Preserve the original columns in your working copy.
Date,Amount,Payee,Description,Reference
2026/09/03,1200.00,Example Client,Invoice payment,INV-104
2026/09/04,-85.50,Example Supplier,Office supplies,RCPT-28
2026/09/05,-12.00,Example Bank,Monthly account fee,FEE-09
The net movement is 1,102.50. With an opening balance of 2,000.00 and no other activity, the statement should close at 3,102.50. Keep those balance controls outside the transaction CSV; do not add an opening-balance “receipt” to make an import agree.
A positive bank line is not automatically revenue: it may be a loan or transfer. The sign tells Xero the cash direction, while reconciliation determines the bookkeeping treatment. Save as CSV and reopen it to check that dates, minus signs and any descriptions containing commas survived export.
Step 4 — import, map and verify
In Accounting → Bank accounts, choose Import a Statement, upload the CSV, map its Date and Amount columns, select the date format if prompted, and inspect the review screen. Xero saves the mapping for later files with the same headers, so stable column names make recurring imports easier.
Before completing the import, check:
- the account and currency match the statement;
- the earliest and latest dates cover the intended period;
- the row count matches the source statement;
- incoming and outgoing cash signs are correct;
- no period already supplied by a bank feed is included.
Xero recognises duplicates from imported files, but duplicate prevention is not a substitute for choosing a clean, non-overlapping date range. If the file fails, Xero’s import-error guide identifies common causes such as blank lines, invalid dates and wrong mapping. It advises splitting files with more than 1,000 transactions. Record which rows each batch covers and inspect import history before retrying after a timeout.
What “statement lines” means in Xero
Imported rows become bank statement lines. Xero then matches each line to an existing invoice, bill or account transaction, or lets you create a transaction during reconciliation. Xero’s bank reconciliation guide makes that distinction explicit: importing the statement supplies the bank side of the comparison; reconciliation connects it to the books.
That is why the safest workflow is:
source statement → validated PDF extraction or bank export → import → reconcile
The conversion is not finished when Xero accepts the file. It is finished when the imported lines reconcile to the original statement and the ledger.
Compare bank movements with your books
You can also compare an export of the bank-account entries with processed statements in the BankStatementLab reconciliation report. Review and approve suggested pairs, then download Excel, CSV or PDF for the reviewer. That report is separate from Xero’s reconciliation state and does not create or amend Xero entries.
Frequently asked questions
Can Xero import a PDF bank statement?
Yes, but Xero currently documents direct PDF imports only for organisations in Canada and the United States, and not on the Ledger plan. The PDF must also meet Xero’s language, size, resolution, page and password requirements. Other organisations should use a bank-native file or a validated CSV.
Should I use PDF, OFX or CSV for Xero?
Use OFX when your bank supplies it; Xero recommends that route. Use direct PDF import only where it is available and review the extracted lines. Use CSV when the PDF route is unavailable, the source needs conversion, or you want an editable checkpoint before import.
What columns does a Xero CSV require?
Date and Amount are the mandatory fields in Xero’s template. The amount is a single signed column: money received is positive and money paid is negative. Payee, Description, Reference and Cheque number are optional but useful.
Why does my Xero CSV import fail?
Check for an inconsistent or invalid date format, blank rows, currency symbols or commas in the amount column, wrong field mapping, zero-value transactions, and an account currency mismatch. Xero may also ask you to split an unusually large file.
Does BankStatementLab connect directly to Xero?
No. It converts the source document into CSV, XLSX or JSON. You review the CSV and import it through Xero’s Import a Statement screen.
Conclusion
Start with a complete bank-native OFX or CSV export. If only PDF is available, choose Xero’s eligible direct import or a reviewed CSV conversion based on your organisation and document. If conversion is required, BankStatementLab gives you editable rows before the accounting import rather than pretending the PDF can be trusted without review.
Convert an unlocked statement to CSV for Xero, then reconcile the imported lines against the original PDF.
Related articles
Ready to Automate your CSV exports?
Create structured CSV files compatible with all your accounting tools.