Bank Statement PDF to CSV for Xero — Xero bank import
Xero does not accept PDF bank statements. Its import wizard takes CSV, OFX, QFX, QBO or QIF, and this gives you the CSV already in the columns Xero maps: Date, Amount, Payee, Description and Reference, with dates written dd/mm/yyyy and money out negative.
Xero's import wizard takes CSV, OFX, QFX, QBO or QIF — all of which are here.
One Amount column, already signed
Xero's import has a single Amount field. A British statement prints money in and money out as two separate columns, and combining them by hand in a spreadsheet is the step this removes — money out is written negative, using the direction the bank's own running balance confirms.
Or skip mapping entirely
If you would rather not map anything, download the same statement as OFX or QFX from this site and Xero reads the columns itself.
Checked before you import
Press Verify transactions and a statement that does not reconcile is flagged here, not discovered weeks later during a bank reconciliation.
What the CSV file contains
Field by field, where each part of the download comes from.
| On the statement | In the CSV | How |
|---|---|---|
| Date | Date | Written dd/mm/yyyy, whatever order the statement printed. |
| Paid out, Paid in | Amount | One signed column, money out negative, by the column the bank used and the running balance beside it. |
| Description | Payee, Description | The bank's narration in both. |
| Type, Ref or Cheque No | Reference | The bank's own code or reference, where a column is headed that way. |
| Balance | Not written | Xero's import has no balance column. It is used to confirm each amount's direction. |
| Opening balance line | Nothing | It moves no money, so it is not a transaction. |
Sample output
Made by this converter's own code from a made-up statement table like the one the PDF reader produces. The output is the file it writes, not retyped.
The input: Statement table
A made-up UK statement table, as the PDF reader hands it to the file writer. Reading the PDF itself is not part of this sample.
Date Type Description Paid out Paid in Balance
01/03/2026 BALANCE BROUGHT FORWARD 1,820.15
02/03/2026 FPI EXAMPLE LTD SALARY 2,450.00 4,270.15
04/03/2026 DD MADE-UP COUNCIL TAX 146.00 4,124.15
13/03/2026 DEB SAMPLE CAFE & BAKERY 8.40 4,115.75
20/03/2026 FPO FICTIONAL LETTINGS RENT 950.00 3,165.75The output: CSV for Xero
The whole file.
Date,Amount,Payee,Description,Reference
02/03/2026,2450.00,EXAMPLE LTD SALARY,EXAMPLE LTD SALARY,FPI
04/03/2026,-146.00,MADE-UP COUNCIL TAX,MADE-UP COUNCIL TAX,DD
13/03/2026,-8.40,SAMPLE CAFE & BAKERY,SAMPLE CAFE & BAKERY,DEB
20/03/2026,-950.00,FICTIONAL LETTINGS RENT,FICTIONAL LETTINGS RENT,FPOQuestions about converting a statement to CSV
Does Xero import PDF bank statements?
Only for organisations in the United States and Canada, not on the Ledger plan, and only a PDF downloaded from the bank rather than a scan. Everywhere, its statement import takes CSV, OFX, QFX, QBO and QIF, and this CSV is written in the columns that import maps: Date, Amount, Payee, Description and Reference.
Which date format should I choose in Xero?
Day first, dd/mm/yyyy. Every date in the file is written that way, whatever order the statement printed, so the one choice is right for the whole file.
Why is there one Amount column instead of Paid in and Paid out?
Xero's import has a single Amount field. Money out is written as a negative figure and money in as a positive one, so there is nothing to combine by hand before importing.