Export Bank Statement — bank statement PDF to Excel
sync_altGuide

Best Way to Import Historical Transactions into Xero

The best way to import historical transactions into Xero: convert your PDF statements to a reconciled CSV, then import it as bank statement lines.

bolt

The best way to import historical transactions into Xero is to convert your old bank-statement PDFs into a CSV that matches Xero's import layout, then bring them in through Import a Statement under the bank account. Xero's bank feeds only pull roughly the last 90 days, so anything older has to come in manually as a statement CSV — there's no live API that backfills years of history. Convert the statements, check that every line reconciles against the running balance, then import the file. That's the whole job, and the reconciliation check is what keeps you from importing a month that's quietly missing a transaction.

This is a file import, not an automated sync. You produce a clean CSV and Xero reads it as reconcilable bank statement lines, exactly as if a feed had delivered them — just sourced by hand from your statements.

Why bank feeds can't do this for you

Xero's bank feeds are built for keeping a live account current, not for loading the past. When you connect a feed, it typically imports around 90 days of recent activity and then keeps pulling new transactions. Ask it for two years ago and it has nothing to give you.

So if you're setting up a new Xero file, migrating from another system, or catching up a backlog, the historical period is on you. The data lives in your bank statements — usually as PDFs you've downloaded or been sent. The task is turning those statements into a CSV Xero will accept, with the figures intact.

Here's the mistake we see most: people retype the statements or copy-paste from the PDF, import the lot, and only discover three months later that a page break dropped four transactions. By then the numbers are reconciled and trusted. Getting the import right *before* it goes in is far cheaper than unpicking it after.

Step by step: import historical transactions into Xero

Work through these in order. Each step assumes the one before it is clean.

  1. Gather every statement for the period. Download the PDFs for each month you need to backfill, in date order, with no gaps. A missing month is a missing opening balance later.
  2. Convert each PDF to a spreadsheet. Get the transactions out of the PDF and into Excel or CSV. Scanned or photographed statements need OCR to read the text; a plain copy-paste tends to scramble columns and merge wrapped lines.
  3. Check the figures reconcile. Before you trust a single row, confirm that opening balance + transactions = closing balance for each statement. The running balance is your safety net — the first row where your recomputed total stops matching the bank's printed balance is exactly where a transaction was misread or dropped.
  4. Map the columns to Xero's layout. Xero's Import a Statement expects, at minimum, a Date, an Amount, and a Payee or Description. You can also include a Reference. Arrange your columns to match.
  5. Get the date format right. Xero asks you which date format the file uses during import (for example DD/MM/YYYY or MM/DD/YYYY). Pick the one your statement actually uses, or every date will land wrong or be rejected.
  6. Decide signed amount vs separate debit/credit. Xero accepts either a single signed Amount column (money out as negative, money in as positive) or separate debit and credit columns. Use one approach consistently across the file — don't mix.
  7. Import a Statement, per bank account. In Xero, open the bank account, choose Manage Account → Import a Statement, upload the CSV, map the fields when prompted, and confirm. Import into the account the statement belongs to.
  8. Reconcile inside Xero. The imported lines now sit in Xero as statement lines, ready to match against bills, invoices, and spend money. This is the same reconcile screen a live feed would feed into.

Get the Xero CSV format right the first time

Most rejected imports come down to four things, and all four are avoidable.

  • Dates. Tell Xero the exact format your file uses. A UK statement reading 03/04/2024 is 3 April; if Xero reads it as MM/DD it becomes 4 March, and your whole period shifts.
  • Amounts. Either one signed column (−45.00 for money out, 45.00 for money in) or two columns (debit and credit). Strip currency symbols and thousands separators — leave plain numbers.
  • One file per bank account. Don't merge two accounts into one CSV. Import each account's statements into that account in Xero.
  • No duplicate periods. If a statement overlaps the previous one by a day, you'll double-count the boundary transactions. Trim overlaps so each transaction appears once.

Column

What Xero expects

Common slip

Date

A real date in a stated format

Wrong format picked at import → shifted or rejected dates

Amount

Signed number, or split debit/credit

Currency symbols left in, or signs the wrong way round

Payee

Who the money went to / came from

Left blank, leaving lines hard to reconcile

Description

What the transaction was

Merged with Payee, or truncated from a wrapped PDF line

Reference

Optional cheque or transaction ref

Helpful for matching; safe to omit

Where the reconciliation check earns its place

Converting a PDF is the easy part. Knowing the converted file is *complete* is the hard part, and it's the step almost every tool skips.

Export Bank Statement converts the PDF — including scanned and photographed statements via OCR — into clean Excel or CSV, then runs the running-balance check for you. It recomputes opening + transactions against the printed closing balance and flags any statement that doesn't reconcile, so you catch a missing or misread line before it ever reaches Xero. We've seen a backfill where everything looked tidy until the check caught a 1,200 transfer dropped at a page break — the totals said "doesn't reconcile", and the fix took a minute instead of a quarter's worth of detective work.

It exports in Xero's native bank-import CSV format, so the lines come in as reconcilable statement lines through Import a Statement. Be clear on what this is and isn't: it's convert, then import the CSV. It does not push transactions into Xero through a live bank-feed API — that's a separate, certified integration. Think of it as producing a verified import file you control, not a one-click sync.

Manual entry vs a verified conversion

Step

Retype / copy-paste

Verified conversion

Get data out of the PDF

Key it in line by line

Converted to Excel/CSV, scans read via OCR

Catch a missing transaction

Hope you notice

Running-balance check flags it

Confirm the period reconciles

Recompute by hand

Done automatically, marked pass or fail

Match Xero's CSV layout

Reformat columns yourself

Exported in Xero's native import format

Get it into Xero

Import a Statement

Import a Statement

The columns differ in one place that matters: catching what's absent. A human is good at checking the figures they can see and poor at noticing the figure that was never there. The running-balance check is built for exactly that blind spot.

Frequently asked questions

How do I import old transactions into Xero?keyboard_arrow_down

Convert your historical bank-statement PDFs into a CSV with Date, Amount and Payee or Description columns, then go to the bank account in Xero and choose Manage Account → Import a Statement. Map the fields, set the correct date format, and import. The transactions arrive as bank statement lines you can reconcile, the same as a feed would deliver.

Why won't Xero's bank feed import my historical transactions?keyboard_arrow_down

Bank feeds are designed to keep a live account current, so they typically only pull about the last 90 days and then track new activity. They don't backfill older history. Anything beyond that window has to be imported manually as a statement CSV.

What format does Xero need for a bank statement CSV import?keyboard_arrow_down

At a minimum, a Date column, an Amount column, and a Payee or Description column; a Reference column is optional. Amounts can be a single signed column (negative for money out) or separate debit and credit columns. During import, Xero asks which date format the file uses — set it to match your statement.

Can Export Bank Statement push transactions straight into Xero?keyboard_arrow_down

No. It produces a CSV in Xero's native bank-import format that you import yourself — convert, then import. It isn't a live bank-feed API, and it isn't a bookkeeping service. You decide what gets imported and reconciled, which is the point when you're loading historical data.

How do I know the imported history is complete and correct?keyboard_arrow_down

Check that each statement reconciles before you import — opening balance plus all transactions should equal the printed closing balance. A converter that recomputes the running balance and flags any statement that doesn't reconcile catches missing or misread lines up front, so you're not importing gaps into Xero. See how to import PDF bank statements into Xero and the Xero bank statement CSV format guide for the field-level detail.

verified

Try it on your own statement

Clean Excel/CSV, with every transaction checked to balance.

upload_fileConvert free
Keep reading

More guides

verifiedChecked to balance

Convert your bank statement — every transaction verified

Upload any PDF, get clean Excel or CSV ready for Xero & QuickBooks. Scanned statements too.

upload_fileConvert a statement free
Best Way to Import Historical Transactions into Xero