Xero bank feeds handle most accounts automatically. Manual import is for everything else: a bank Xero doesn't connect to, a feed that broke and left a gap, historical periods from before the feed started, or a client who hands you statements rather than bank access. This guide covers the import itself, the file requirements, and what to do when the statement only exists as a PDF.
Which file formats Xero accepts
Xero's manual import takes CSV, OFX and QFX. It does not accept PDF. If your bank offers an OFX or QFX download, prefer it: those formats carry structured fields, so Xero needs little or no column mapping. CSV is the fallback when that's all the bank provides, or when you need to review and edit rows before importing.
The import steps
- Go to Accounting → Bank accounts.
- On the target account, open Manage Account → Import a Statement. Confirm it's the right account before continuing — importing into the wrong one creates reconciliation work that has to be undone by hand.
- Select the file and continue.
- For a CSV, assign each column to a Xero bank statement field. Xero keeps this mapping for future imports unless a later file has different headers or extra columns.
- If prompted, select the date format the file uses.
- On the review screen, clear the checkbox next to any transaction you don't want, then complete the import.
The imported lines appear on the Reconcile tab, where they're matched against invoices, bills and bank rules the same way feed transactions are.
CSV requirements
Only two fields are mandatory: transaction date and transaction amount. A file with nothing else will import. The optional fields are where the useful information lives:
| Field | Required | Notes |
|---|---|---|
| Date | Yes | Must match the date format you confirm during import |
| Amount | Yes | Single signed column: positive for money in, negative for money out |
| Payee | No | If it matches an existing Xero contact exactly, it links to that contact; a near-match creates a duplicate contact |
| Description | No | Free text; useful for bank rules and later review |
| Reference | No | Payment reference or invoice number — the field that makes reconciliation fast |
If you import without a payee, Xero shows the bank account name as the contact. That works, but reconciling anything beyond a handful of lines becomes slow.
The errors that cause most failed imports
Dates read the wrong way round
This is the most common problem and the most dangerous one. A date like 03/04/2026 is valid as 3 April and as 4 March, so Xero will accept it either way without an error. The import succeeds, the transactions land in the wrong month, and reconciliation fails later for no obvious reason. Confirm the date format during import and check a few dates on the review screen against the original statement.
Opening the CSV in Excel first
Double-clicking a CSV to open it in Excel lets Excel reinterpret the contents. It can switch date formats to match your computer's locale, strip leading zeros from references (so 007823 becomes 7823), and add thousand separators to amounts. If you save the file afterwards, those changes are written back. Review CSVs in a plain text editor, or in Excel through Data → From Text/CSV with columns set to Text.
Wrong sign convention
Xero expects money out as negative. Some banks print debits as positive numbers in a separate column, or mark them with DR, a trailing minus, or brackets. All of those need converting to a leading minus sign in a single amount column before import. If your imported payments appear as income, this is the cause.
Encoding
Save as UTF-8. Other encodings turn currency symbols and accented characters into garbled text — a common problem with Central European payee names on statements from banks like Tatra banka or ČSOB.
Overlapping date ranges
Importing January 1–31 and then January 15–February 15 duplicates two weeks of transactions. Before importing, check the last transaction date already in Xero for that account and start the new file from the day after. This is especially relevant when filling a gap left by a broken feed, where the feed and the manual import can overlap at both ends.
When the statement is a PDF
Many banks — and most clients — only provide PDFs. Xero can't import those, so they need converting first. Options:
- Excel's PDF import (Data → Get Data → From PDF) works on text-based PDFs, then needs manual clean-up and all the checks above. It doesn't work on scans. See converting a bank statement to Excel.
- A statement converter produces a CSV in Xero's layout directly. Statement Mill has a Xero CSV export with the Date, Amount, Payee, Description and Reference columns, UTF-8 encoding and signed amounts. Each conversion is also checked against the statement's opening and closing balances before download, so you know no transaction was dropped before it reaches Xero.
Whichever route you use, test an unfamiliar bank's file against Xero's Demo Company first. It's a sandbox organisation every Xero user has access to. Importing there costs nothing and shows exactly how Xero reads the dates and signs, without touching your real books.
After importing: confirm the balance
A clean import isn't proof of a complete one. Check that the statement balance shown in Xero after import matches the closing balance printed on the bank statement for that date. If it doesn't, a transaction is missing or duplicated, and it's easier to find now than after reconciliation.
Summary
- ☐ Use OFX or QFX if the bank offers it; otherwise CSV
- ☐ Date and amount are mandatory; add payee, description and reference
- ☐ Signed amounts in one column, money out negative
- ☐ UTF-8 encoding, and don't re-save the file through Excel
- ☐ Confirm the date format and check dates on the review screen
- ☐ No overlap with dates already in Xero
- ☐ Xero's statement balance matches the bank statement after import
For PDF statements, convert to Xero CSV free — 3 pages without signing up, 20 with an account, no credit card required.