How to Import a Bank Statement into Xero (CSV and OFX)

Prepare a bank CSV or OFX file for Xero, import it into the right bank account and fix the most common Xero import problems.

Xero's bank feeds cover most banks, but there are plenty of reasons to import a statement file instead: a feed that dropped a few days of transactions, a new organisation that needs last year's history, or an account at a bank Xero can't connect to. This guide shows how to prepare the file, import it, and avoid the problems that make Xero reject statements.

Which file formats Xero accepts

Xero's statement import accepts several bank file formats, including CSV and OFX. In practice:

  • OFX is the smoothest. There's no column matching and each transaction carries a unique ID, which helps Xero recognise lines you've already imported.
  • CSV is the most common, because almost every bank offers it. It needs to be in the right layout first.

Step 1: Download your transactions

In online banking, open the account and export transactions for the period you need. Pick OFX if it's offered (sometimes labelled Money or Microsoft Money), otherwise CSV. If your bank only gives you PDF statements, extract the transactions with a PDF statement converter and choose Xero CSV or OFX as the output.

Start the export the day after the last transaction already in Xero, so you don't import overlapping lines.

Step 2: Put the CSV into Xero's layout

Xero's statement CSV needs:

Column mapping: the bank export Date goes to Xero Date, Details to Description, and Paid out and Paid in combine into a single signed Amount; Type and Balance are not needed.
Paid out and Paid in become one signed Amount; Type and Balance are dropped.
ColumnRule
DateRequired. Use the format of your organisation's region — DD/MM/YYYY in the UK, MM/DD/YYYY in the US.
AmountRequired. A single column: negative for money paid out, positive for money received.
Payee, Description, ReferenceAt least one of these on every line.
Cheque NumberOptional.

Typical bank CSVs need several changes to fit: combining separate Paid in and Paid out columns into one signed amount, removing balance rows, converting text dates such as "05 Jan 2026", and stripping currency symbols. Our CSV to Xero converter does all of this in your browser. If you prefer to do it in a spreadsheet, the formula =PaidIn-PaidOut creates the signed amount column, and Format Cells → Date sets a consistent date format before you save as CSV.

Step 3: Import the statement

  1. In Xero, go to Accounting → Bank accounts.
  2. Find the bank account and choose Manage account → Import a statement.
  3. Select your file and choose Import.
  4. For a CSV, Xero shows your columns and asks you to assign them: Date to Transaction Date, Amount to Transaction Amount, and Payee, Description and Reference to the matching fields. Tick the option to skip the first line, because it contains headings.
  5. Save and import. Xero tells you how many lines were imported and how many were skipped as duplicates.
Steps in Xero: Accounting, Bank accounts, Manage account, Import a statement, match the columns for a CSV, then reconcile.
OFX files skip the column-matching step.

Step 4: Reconcile

The imported lines appear on the account's Reconcile tab, alongside any bank feed lines. Match or create transactions as usual. When you've finished, compare Xero's statement balance with your bank statement for the same date.

Troubleshooting

  • Dates in the wrong month. The file's date format doesn't match your organisation's region. Convert the dates to the right format and import again.
  • All amounts on the wrong side. The amount signs are reversed — common with credit card exports. Flip them before importing (in our converter, tick Swap money in and money out).
  • Lines skipped as duplicates. Xero found lines it had already imported for the same dates. That's usually what you want. If they're real repeat transactions, check that the description or reference differs.
  • Imported into the wrong account. Delete the imported statement from the account's statement list (under Manage account) and import it into the correct account.