BankScanPro — PDF bank statement converter
Integration Guide8 min read16 June 2026

How to Import Bank Statements into Xero: OFX and CSV, Step by Step

Xero can't read PDFs. When a bank has no feed — overseas accounts, credit cards, Stripe and PayPal payouts, or historical periods — you need to convert the statement first, then import it. Here's exactly how, for both OFX and CSV.

Xero runs on bank feeds. When a feed exists, transactions flow in on their own and there's nothing to import. The friction starts with the accounts that have no feed: overseas banks, business cards that only ever send a PDF, payment processors like Stripe and PayPal, and the historical months that predate the day you connected the feed. For those, you have a statement in PDF — and Xero won't take it.

Xero accepts structured statement files, not documents. So the job is two steps: turn the PDF into a file Xero understands, then run it through Xero's import screen. This guide covers both formats Xero recommends — OFX and CSV — including the exact CSV layout, the region-specific date trap that breaks most first imports, and how to confirm the data is right before you reconcile.

If you also work in QuickBooks, the same logic applies there with slightly different menus — see our companion guide on importing bank statements into QuickBooks.

Why Xero can't import PDFs — and what it actually accepts

A PDF is a layout format. It records where to paint each piece of text on the page, not what that text means or how a date relates to the amount beside it. Xero needs the opposite: rows of structured data with a clear date, description, and amount per transaction. That's why dropping a PDF into Xero does nothing useful — there's no transaction structure for it to read.

For a manual statement import, Xero accepts five formats:

  • OFX (Open Financial Exchange) — a structured financial data standard. Xero imports OFX directly, with no column mapping. This is the format Xero officially recommends where you can get it.
  • QFX — Quicken's variant of OFX. Treated the same as OFX on import.
  • QBO — the QuickBooks flavour of OFX. Also accepted as a structured statement file.
  • QIF — an older Quicken text format. Supported, but with less structure than OFX.
  • CSV — plain rows of date, description, and amount. The most widely available format, but it requires you to map columns to Xero's fields the first time.

In practice the decision is simple: use OFX if your converter produces it, and fall back to CSV when you need to inspect or edit the data before importing. The rest of this guide focuses on those two.

Method 1: OFX import — the fastest path into Xero

OFX wins whenever it's available because it carries dates, amounts, and payee names in a structure Xero already understands. There's nothing to map.

Step 1: Convert your PDF to OFX. Use a converter that outputs OFX. BankScanPro generates OFX from any PDF bank statement and validates the extracted transactions against the statement's opening and closing balances before producing the file — so a complete, balanced statement is what lands in Xero.

Step 2: Open the bank account in Xero. Go to Accounting → Bank accounts and click the account you're importing into. If the account doesn't exist yet, add it first — manual imports need a destination account to attach to.

Step 3: Import a statement. On the account, open Manage Account → Import a Statement, choose your OFX file, and upload. Because OFX is structured, Xero reads it without asking you to match columns and shows the statement lines it found.

Step 4: Confirm. Xero loads the lines onto the account's Reconcile tab, ready to match against bills, invoices, and spend or receive money transactions. Because the payee names came through in the OFX, matching and categorising is faster than with a bare CSV.

Method 2: CSV import — the exact Xero format

CSV is the fallback when OFX isn't an option, or when you need to clean up the data first. Xero is specific about what the file must contain, and getting this right the first time avoids re-imports.

The columns Xero needs

At a minimum, a Xero statement CSV needs a Date column and an Amount column. Two layouts work:

  • Three columns — Date, Description (payee/narrative), and a single Amount column.
  • Four columns — Date, Description, and separate Debit and Credit columns.

With a single Amount column, the sign convention is the part people get wrong: positive amounts are money received (deposits) and negative amounts are money paid out (withdrawals). If your converter exports withdrawals as positive numbers, every payment will import as income.

Date format — the most common failure

Xero reads dates according to your organisation's region: DD/MM/YYYY for the UK, Australia, and New Zealand, and MM/DD/YYYY for the US. Mismatch this and Xero silently swaps days and months for any date where it's ambiguous — so check it before, not after.

File requirements and limits

  • Save the file as UTF-8 encoded CSV.
  • Xero recommends keeping each import to under 500 lines; the hard ceiling is 100,000 rows. For long histories, split the import by statement period — it's also cleaner for your audit trail.
  • For pre-coded statements you can add optional AccountCode, TaxType, and ContactName columns to drive automatic categorisation during reconciliation.

Running the import

Open the bank account, then Manage Account → Import a Statement, and upload the CSV. Xero shows a mapping screen where you match your file's columns to its statement fields — Date, Amount, Payee, Description, Reference. Set the date format to match your file, confirm, and the lines appear on the Reconcile tab. Xero remembers the mapping, so subsequent imports with the same column layout skip this step.

Bank feeds vs. manual import: when to use which

A direct bank feed is always the lower-effort option when your bank offers one — transactions arrive daily with no file handling. Manual import isn't a replacement for feeds; it's for the gaps a feed can't cover:

  • Unsupported or overseas banks — no feed available in your region.
  • Credit cards and lenders that only issue PDF statements.
  • Payment processors — Stripe, PayPal, and similar accounts you reconcile from exported statements.
  • Historical periods — months from before the feed was connected, which feeds rarely backfill.

One rule keeps the two from colliding: never manually import a date range an active feed is already covering. Let the feed own current transactions, and use imports only for the periods or accounts it doesn't reach.

Reconciling imported statement lines

Importing only loads the statement lines — it doesn't reconcile anything. On the account's Reconcile tab, Xero lists each imported line on the left and proposes matches on the right: an existing invoice, a bill, or a spend/receive money transaction.

Work down the list: click OK on confident matches, use Create to record a new transaction for unmatched lines, and Transfer for money moving between your own accounts. Bank rules are worth setting up for anything recurring — they auto-suggest the contact and account code so repeat transactions reconcile in one click. The mechanics here are the same whether the data arrived by feed or by import; for the broader workflow, see our step-by-step bank reconciliation guide.

Common import errors and how to fix them

"The file is not in a supported format." — The file is the wrong type or was saved with the wrong extension. Confirm it's a genuine .ofx, .qfx, .qbo, .qif, or .csv, and that a CSV was exported as UTF-8 rather than a spreadsheet's native format.

Dates off by a month. — The classic region mismatch. Reformat the date column to your org's order (DD/MM/YYYY for UK/AU/NZ, MM/DD/YYYY for US) and confirm the date-format setting on Xero's mapping screen.

Payments showing as income. — A sign-convention problem in a single-Amount CSV. Withdrawals must be negative and deposits positive; if your file has them reversed, either flip the sign or switch to a separate Debit/Credit layout.

"No new transactions" / duplicates skipped. — Xero detected lines it already has, usually because the period overlaps an existing import or a live feed. Check the account's existing statement lines and narrow your import to the missing range.

Import succeeds but the statement balance is off. — A transaction was dropped, duplicated, or has the wrong amount. This is a data-accuracy issue, not a Xero one — verify against the original statement before reconciling, as below.

Verifying accuracy before you reconcile

An import that finishes without an error message is not the same as an import that's correct. Xero doesn't check the data against the original statement — that's on you, and it's far cheaper to catch a problem now than to unwind it after it's been reconciled across dozens of matched lines.

Check the transaction count. Count the lines on the PDF statement and compare to the count Xero imported. A mismatch means a line was dropped or duplicated.

Check the period totals. Sum the imported debits and credits and compare them to the totals printed on the statement. A discrepancy points to a wrong amount on a specific line.

Check the balance chain. Opening balance + total received − total paid out should equal the closing balance. When you convert with BankScanPro this check runs at conversion — the balance validation summary confirms the extracted data forms a complete, balanced chain before you ever download the file. For more on why this validation matters, see how PDF bank statement conversion works.

Frequently asked questions

Can I import a PDF bank statement directly into Xero?

No — Xero does not read PDF files. You first convert the PDF into a format Xero accepts: OFX, QFX, QIF, QBO, or CSV. OFX is the recommended choice because Xero imports it without any column mapping. Once converted, the file imports through the same Import a Statement screen Xero uses for any manual statement.

What file formats does Xero accept for manually importing bank statements?

Xero accepts OFX, QFX, QIF, QBO (the QuickBooks format), and CSV for manual statement imports. Xero officially recommends OFX where possible, because an OFX file imports directly without needing to map or reformat any columns. CSV is the most universally available format but requires you to map columns to Xero's statement fields on first import.

What is the difference between a Xero bank feed and a manual import?

A bank feed is a live connection that pulls transactions into Xero automatically each day — it's the easiest path when your bank supports it. A manual import is a one-time upload of a statement file (OFX or CSV). You use manual imports when there's no feed available: overseas banks, credit card providers that only issue PDFs, payment processors like Stripe or PayPal, or historical periods from before your feed was connected. Both produce the same statement lines on Xero's Reconcile screen.

Why did my imported transaction dates come out wrong or shifted by a month?

This is almost always a date-format mismatch. Xero reads dates according to your organisation's region: DD/MM/YYYY for the UK, Australia, and New Zealand, and MM/DD/YYYY for the US. If your CSV uses the US order but your Xero org is set to a UK/AU/NZ region (or vice versa), days and months get swapped — 03/05 becomes 5 March instead of 3 May. Reformat the date column to match your org's region before re-importing.

Will Xero create duplicate statement lines if I import the same statement twice?

Xero checks imported statement lines against what's already in the account and flags likely duplicates based on date, amount, and reference, so re-importing an overlapping period usually won't double up your data. As a safeguard, import period by period and reconcile each statement before importing the next. If an account already has a live bank feed, avoid manually importing the same date range — let the feed handle current transactions and use manual imports only for gaps the feed doesn't cover.

What if my bank or country isn't supported by Xero's feeds?

Manual import is exactly the path for unsupported banks. BankScanPro supports 1,000+ banks across the US, UK, Canada, Australia, and Europe. Even if your specific bank isn't recognised by name, the AI extracts transactions from the statement's layout rather than relying on a bank-specific template — so you still get a clean OFX or CSV to import. Check the balance validation summary after conversion: if the extracted opening and closing balances match the statement, the data is accurate regardless of whether the bank was pre-mapped.

PDF in. Xero-ready OFX out.

Convert any PDF bank statement to OFX, CSV, or Excel in under 30 seconds — balance validation included. Import straight into Xero and start reconciling.

Free sign-in required·AES-256 encrypted·1,000+ banks supported