Why bank CSVs almost never import cleanly into Xero
Xero's bank-statement import is fussy in a way that catches almost every first-time user. It looks for two required columns marked with an asterisk — *Date and *Amount — plus at least one of Payee, Description, or Reference. Dates must be in DD/MM/YYYY, and amounts must be a single signed column: positive for money in, negative for money out. Drop a vanilla bank export into Xero's upload screen and you get a polite but unhelpful error: "Your file is not in the correct format."
The fix is mechanical — rename the headers, flip the date format, merge the bank's separate Debit and Credit columns into a single signed Amount column. People do this in Excel every month. This tool does it in two clicks, in your browser, without uploading anything anywhere.
What Xero needs in the CSV
*Date— required.DD/MM/YYYYformat. Xero will reject ISO dates,MM/DD/YYYY, and most variants. (If your Xero org is on a US-locale, you can switch the format under your org settings — most of the world uses DD/MM.)*Amount— required. One signed number per row.-45.30for an expense,2500.00for a deposit. No currency symbols, no thousands separators, no parentheses for negatives.Payee— strongly recommended. This is what shows in Xero's reconcile screen. If your bank export doesn't have a separate payee column, we use the first chunk of the description as a sensible fallback.Description— the full narration / details from the bank. Helps Xero's bank-rule engine match the right contact.Reference— payment reference, cheque number, or wire reference. Optional, but if your bank gives it to you, keep it — Xero shows it on the imported transaction.
What this tool fixes for you
- Metadata rows above the header.Most bank CSVs have 1-7 rows of account name, statement period, opening balance, and blank rows before the actual headers. Xero refuses to parse those. We scan the first 15 rows for a date-shaped header and skip everything above it. You can see what was skipped in the "Skipped metadata rows" toggle so it's never a black box.
- Split Debit / Credit columns. European banks especially love giving you two positive-only columns instead of one signed column. We merge them: debit becomes negative, credit becomes positive, both go in the
*Amountcolumn Xero wants. - EU vs US locale numbers.
1.234,56(EU) and1,234.56(US) both get normalised to plain1234.56. Parentheses negatives(45.30)and trailingDR/CRmarkers are handled too. - Date format normalisation. ISO (
2026-04-15),15/04/2026,15.04.2026, and15 Mar 2026all get rewritten to theDD/MM/YYYYXero expects. - UTF-8 BOM. Xero needs a BOM on the file or it can mis-decode names with accents, umlauts and currency symbols. We prepend one automatically.
- RFC 4180 CSV escaping.Commas, quotes and newlines inside descriptions are escaped the way Xero's parser expects. No more half-imported lines because someone's description had a comma in it.
How to import the CSV into Xero
- Sign in to Xero and go to Accounting → Bank accounts, then click the bank account you're importing into.
- Click Manage Account → Import a Statement.
- Choose the CSV you downloaded from this tool. The format will be CSV (.csv) Custom.
- Map the columns — Xero will pre-fill most of them because we used the column names it recognises.
- Review the import summary and confirm. Transactions land in the bank account ready for reconciliation.
If you started from a PDF statement and don't need the CSV middle step, our paid converter does PDF → reconciled CSV (or Xero-ready CSV directly) in one pass. The main converter is free for the first 7 pages per day.
Common error messages and what they mean
- "Your file is not in the correct format"— Xero couldn't find the required
*Date/*Amountheaders, or the dates aren't in DD/MM/YYYY. This tool fixes both. - "The statement balance does not match"— your CSV transactions don't add up to the opening-to-closing balance Xero is expecting. Use our Reconciliation Checker to find which row is off before you re-import.
- "Duplicate transactions detected" — Xero matches on date + amount + description. If your statement period overlaps an earlier import, Xero correctly skips duplicates. Trim the CSV to only the new period.
- "Negative amounts not allowed"— this only happens if you've enabled the older two-column (Spent / Received) Xero import format. Switch back to the single-amount format in the Xero org settings and the file we generate will work.
When to skip CSV altogether
CSV imports work, but they're a step you can avoid. If your bank only gives you PDF statements (most do), going PDF → CSV → Xero adds two places where data can drift — the PDF parse and the Xero import map. Our paid converter does PDF → reconciled Xero CSV in one pass, including the balance-reconciliation check that catches extraction errors before they land in Xero. For occasional use the free tier handles 7 pages per day. For ongoing bookkeeping, paid plans start at €19/month with Xero-ready output included.
Not sure which plan you need? Try our plan estimator.