Skip to content

How to Import a Bank Statement Into Xero

To import a bank statement into Xero, open Accounting → Bank accounts, select the account, and choose Import a Statement, then upload an OFX, CSV, or QIF file. Xero cannot read PDFs, so if your statement is a PDF you need to convert it to one of those formats first. OFX is the format to reach for when you have a choice: it imports without a column-mapping step, which removes the most common source of import errors.

Where do you import a bank statement in Xero?

Manual statement import lives inside the bank account itself, not in a general settings area. Go to Accounting → Bank accounts, open the account you want to import into, and look for Import a Statement — depending on your Xero version it sits under a Manage Account or similar menu. Xero's interface wording shifts from time to time, but the starting point is always the specific bank account.

Manual import matters when a bank feed missed transactions or went down for a stretch, when you need historical data from before the feed was connected, when the account has no feed available, or when a client hands you statements for a period you have to backfill. The result is the same as a feed: each transaction becomes a statement line waiting to be reconciled.

Xero accepts OFX, QIF, and CSV files for manual import. It does not accept PDF, no matter how cleanly formatted the PDF is. That single fact drives the rest of this guide.

Should you import OFX or CSV into Xero?

Use OFX whenever you can get it. OFX (Open Financial Exchange) is a structured format built specifically for moving bank data between systems: every transaction carries its date, amount, and description in labeled fields, and the file identifies which account it belongs to. Because the structure is unambiguous, Xero reads an OFX file directly — no mapping screen, nothing to configure, nothing to get wrong.

CSV is just a plain table. Xero has no way of knowing which column holds the date or the amount, or whether payments are negative numbers or sit in their own column — so it asks you, every time, on the mapping screen. Each answer is a chance for a mistake: a DD/MM date read as MM/DD, a debit column mapped as credit, an amount that imports as text because of currency symbols.

The practical rule: OFX when you have a choice, CSV when it is what you have. CSV is universal and easy to inspect in any spreadsheet, and Xero imports it perfectly well once mapped correctly — it just puts the burden of correctness on you instead of on the file format.

What if your bank statement is a PDF?

This is the most common blocker: the bank only offers a PDF for the period you need, and Xero will not take a PDF at all. The answer is to convert the PDF into an import-ready file first.

BankStatementWise does exactly this. Upload a bank-statement PDF — or a scan or phone photo of one — and it produces an OFX file that imports straight into Xero, or CSV and Excel if you prefer to review the data in a spreadsheet first. It works with any bank's statement, whether checking, savings, or credit card, with no per-bank templates to pick from. Every statement is reconciled to the cent against its own opening and closing balances, every row carries a confidence mark, and anything uncertain is flagged rather than silently guessed — which matters when the numbers are going into your books. See convert PDF to Xero for the Xero-specific workflow or convert PDF to OFX for the format details.

It is free to try with no sign-up: upload a statement, preview the entire result, and download the file. A typical statement converts in around four to six seconds; large multi-month packets usually take about thirty. Photographed or scanned statements go through the same flow.

How does Xero's CSV mapping screen work?

When you upload a CSV, Xero shows a mapping step where you tell it what each column contains. You assign the transaction date, the amount (either a single signed column or separate debit and credit columns), and the payee and description or reference fields. Xero previews a few rows so you can sanity-check before committing.

The mapping screen is where most CSV imports go wrong, and the failure modes are predictable:

  • Date format: a file with dates like 03/04/2026 is ambiguous. Check that Xero's preview shows the dates you expect — March 4 versus April 3 is a real difference in your books.
  • Sign convention: if the file uses one amount column, payments must be negative and deposits positive. If they are all positive with a separate debit/credit indicator, map the two-column option instead.
  • Text that should be numbers: currency symbols, thousands separators, or stray spaces in the amount column can make values import incorrectly or fail. Amounts should be plain numbers.
  • Extra rows: subtotal lines, page headers, and repeated header rows from a PDF-derived CSV will import as junk transactions if you do not remove them.

Every one of these problems exists only because CSV carries no structure — an OFX file skips the mapping screen entirely.

How do you handle multi-account statements?

Some banks issue combined statements — a checking and a savings account on one document, or a business packet covering several accounts. Xero imports into one bank account at a time, so a combined statement has to become one file per account before anything can be imported.

Splitting a combined statement by hand in a spreadsheet is tedious and easy to get wrong, especially when the accounts share a page or the running balances interleave. When BankStatementWise converts a multi-account statement, each account is kept separate automatically, so you end up with one clean export per account, each ready to import into its matching account in Xero. Import them one at a time, checking that the account in Xero matches the account the file came from — importing savings transactions into the checking account is a mess to unwind.

How do you reconcile in Xero after importing?

Once the import finishes, the transactions appear as statement lines on the account's Reconcile tab, exactly as they would from a bank feed. For each line, Xero suggests a match against existing invoices, bills, or payments; you accept the match, or use Create to code the line to a contact and account, or Find & Match for anything more complicated like split payments. For long runs of similar transactions, Xero's cash coding view lets you code many lines at once.

Before you start clicking OK down the list, do one check: compare the statement balance Xero now shows for the account against the closing balance printed on the actual statement. If they disagree, stop and find out why — usually a duplicated line, a missing transaction, or an amount that imported with the wrong sign — because this is much easier to fix before reconciliation than after. If your source file came from a converter that reconciles against the statement's own opening and closing balances, this check should already pass; that is the point of doing the arithmetic upstream.

One duplicate trap deserves a specific warning: if the account also has an active bank feed, importing a statement whose dates overlap the feed will create duplicate statement lines. Restrict the import to dates the feed did not cover, or delete the duplicates from the account transactions list before reconciling. For the broader discipline of proving your books against the bank, see the guide on bank statement reconciliation; if you also run QuickBooks, the QuickBooks import guide covers the equivalent workflow there.

Frequently asked questions

Can I import a PDF bank statement directly into Xero?
No. Xero only accepts OFX, QIF, and CSV files for manual statement import. Convert the PDF to OFX or CSV first — OFX is preferable because it imports into Xero without a column-mapping step.
Why did my CSV import into Xero with wrong dates or amounts?
Almost always a mapping problem: an ambiguous date format read the wrong way, a debit/credit column mapped backwards, or amounts containing currency symbols that broke numeric parsing. Re-check the mapping preview before committing, or use OFX, which carries this structure in the file and skips mapping entirely.
Will a manual import create duplicates if I also have a bank feed?
It can, if the imported file's date range overlaps dates the feed already delivered. Restrict the import to the missing period, or delete the duplicate statement lines from the account before reconciling.
Can I import credit card statements into Xero the same way?
Yes. A credit card account in Xero is set up as a bank account, and the import works identically: convert the statement to OFX or CSV if it is a PDF, then import it into the matching credit card account and reconcile the lines.
What if my statement covers more than one account?
Xero imports into one account at a time, so a combined statement must be split into one file per account. BankStatementWise keeps each account separate automatically when converting a multi-account statement, producing a ready-to-import file for each.
Try it on your own statement

Upload a bank statement PDF and get reconciled spreadsheet data back. Free to try, no sign-up.

Convert a statement — free