Back to blog
How to Import Bank Statement CSVs into Xero
tipsWritten with AI
Michael
October 1, 2026
5 min read

How to Import Bank Statement CSVs into Xero

xerocsv importaccounting softwarebank statementsbookkeeping

Xero's CSV import is powerful but picky about formatting. Here's how to get your bank statements in on the first try, without import errors.


How to Import Bank Statement CSVs into Xero (2026)

Xero is one of the most popular accounting platforms for UK small businesses and freelancers, and its bank statement import feature is one of its most-used tools. But anyone who's tried to upload a CSV for the first time knows the frustration of import errors — wrong date formats, unrecognised columns, or mysterious failures with no clear explanation. This guide covers exactly how to format your CSV for a clean Xero import every time.

What Xero Expects

Xero's CSV import requires a specific structure. The file needs, at minimum, three columns: a date, a description, and an amount. Xero can handle two-column amounts (separate debit and credit columns) or a single amount column with positive and negative values.

The critical requirements are that dates must be in a consistent, recognisable format (DD/MM/YYYY works best for UK accounts), amounts must be numeric (no currency symbols or thousand separators), and the file must be UTF-8 encoded with comma delimiters. Header rows are fine — Xero lets you skip them during mapping.

Step-by-Step Import Process

  1. Log into Xero and go to Accounting > Bank Accounts
  2. Select the bank account you want to import into
  3. Click Import a Statement
  4. Choose your CSV file and upload it
  5. Xero shows a column mapping screen — assign each column to the correct field (Date, Description, Amount or Debit/Credit)
  6. Set the date format to match your file (e.g., DD/MM/YYYY)
  7. Choose whether to skip header rows
  8. Click Import to finalise

Xero remembers your column mapping for future imports from the same source, so the first upload takes the most effort.

Getting Your CSV Right Before Import

The most common import failures come from formatting issues in the CSV itself, not from Xero's import tool. Here's how to avoid them.

Dates: Use DD/MM/YYYY consistently. Avoid mixed formats like "15 Jan 2026" in some rows and "15/01/2026" in others. If your bank's CSV uses an unusual format, reformat the date column in Excel before uploading to Xero.

Amounts: Remove any currency symbols (£), thousand separators (1,000.00 should be 1000.00), and ensure debits are negative if you're using a single amount column. If your bank provides separate "Money In" and "Money Out" columns, Xero can map these as Credit and Debit respectively.

Encoding: Save your file as CSV UTF-8. If you're using Excel, go to File > Save As and select "CSV UTF-8 (Comma delimited)" from the format dropdown. Non-UTF-8 files can cause special characters in transaction descriptions to display incorrectly.

Empty rows: Remove any blank rows at the top or bottom of the file. Xero may interpret these as transactions with missing data and reject the import.

Using BankToFile for Xero-Ready CSVs

If your bank only provides PDF statements — or if the native CSV export produces formatting that Xero rejects — BankToFile converts bank statement PDFs into clean, properly formatted CSV files that import into Xero without issues.

Upload your PDF from any major UK bank (Barclays, HSBC, Lloyds, NatWest, Nationwide, Santander, Monzo, Starling, Revolut, and more), select CSV as the output, and download a file with correctly formatted dates, numeric amounts, and clean descriptions. This saves the manual formatting step entirely.

Handling Duplicates

Xero automatically checks for duplicate transactions during import. If you've already imported a period via bank feed and then try to upload a CSV covering the same dates, Xero will flag potential duplicates and let you exclude them.

To avoid issues, keep track of which periods you've already imported and don't overlap date ranges between bank feed data and manual CSV uploads. If you're switching from bank feeds to manual CSV imports (or vice versa), choose a clean cutoff date.

Tips for Smooth Imports

Test with one month first. Before importing a full year, upload a single month's CSV to verify your column mapping and date format are correct. Fix any issues, then import the remaining months.

Don't include opening or closing balance rows. If your CSV has summary rows (like "Opening Balance: £1,234.56"), remove them before importing. Xero expects only transaction rows.

Watch for internal transfers. If you have multiple accounts in Xero, transfers between them should appear in both accounts. Import them into one account and use Xero's transfer matching to link them, rather than importing the same transfer twice.

Reconcile after importing. Once your transactions are in Xero, use the reconciliation tool to match them against invoices, bills, and bank rules. This is where the real time-saving happens — well-categorised CSV data makes reconciliation significantly faster.

Common Import Errors and Fixes

"Date format not recognised." Your dates don't match the format you selected in the import wizard. Check for inconsistencies — even one row with a different format will cause the entire import to fail.

"Amount is not a valid number." Currency symbols, spaces, or thousand separators are in the amount column. Strip these out before uploading.

"File contains no valid transactions." Usually caused by empty rows, incorrect delimiters (semicolons instead of commas), or encoding issues. Re-save as CSV UTF-8 and try again.

Transactions imported to the wrong date. Verify your date format setting matches the actual format in your file. DD/MM/YYYY and MM/DD/YYYY look identical for dates before the 13th of each month, so a mismatch may not be immediately obvious.

Conclusion

Xero's CSV import is a powerful feature, but it requires clean, correctly formatted input. The good news is that once you've established a reliable workflow — whether using your bank's native CSV export or converting PDFs through BankToFile — subsequent imports take just a few minutes.

Get your formatting right once, and every future import becomes a quick, painless process.