Skip to main content
Back to Articles

Convert Bank Statement PDFs to Xero-Ready CSV

Extract statement transactions, map date, amount, and description columns, validate totals, then import the reviewed CSV into Xero without a bank feed.

Try with your file

Drop your bank statement (PDF)

1 file · 100 pages max · Free preview of 2 pages

Save hours every week

Turn your bank statements (PDF) into Excel, CSV or OFX, without manual retyping.

Try for free

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 organisationBest route
Bank offers OFX or CSV for the required periodPrefer the native export; Xero recommends OFX where available
US or Canadian Xero organisation and eligible PDFTry Xero’s direct PDF import, then review every extracted line
Other region, unsupported plan/layout or extraction errorUse 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:

  1. In Xero, open Accounting → Bank accounts.
  2. Open the menu for the target account and choose Import a Statement.
  3. Upload the PDF and click Next.
  4. Review the transactions marked ready, warning or error.
  5. 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 columnXero fieldPreparation check
DateTransaction DateUse one supported format for every row; YYYY/MM/DD is unambiguous
Signed amountTransaction AmountMoney received positive, money paid negative; remove currency symbols and grouping commas
Description or payeePayee / DescriptionKeep a wrapped statement description in one CSV cell
ReferenceReferenceOptional; useful for invoice or transfer references
Running balanceDo not importXero 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.


---
🎁 5 credits on signup, then 5/month
💎 1 credit = 1 page

Ready to Automate your CSV exports?

Create structured CSV files compatible with all your accounting tools.

Try BankStatementLab