Guide · Xero

How to import a PDF bank statement into Xero

Xero steps checked against Xero Central's help on October 12, 2026. Xero renames menus from time to time; the sources at the end link the current help page.

In short

  • Xero's manual statement import reads files such as CSV, OFX, QFX and QIF, not PDFs, so a PDF statement has to be converted first.
  • Only Date and Amount are required. Payee, Description and Reference make reconciling easier.
  • Money in and money out share one Amount column: income positive, spending negative, with a minus sign or brackets.
  • Use one date format, such as DD/MM/YYYY, MM/DD/YYYY or YYYY/MM/DD. Xero asks you to confirm it when a date could be read two ways.

Steps at a glance

  1. Convert the PDF statement to rows

    Upload the statement to a bank statement converter and check the dates, descriptions and amounts against the original page.

  2. Export a Xero file

    Download a CSV with Date, Amount, Payee, Description and Reference columns, one signed Amount column and one date format, or an OFX file.

  3. Open Import a Statement

    In Xero, go to Accounting, then Bank accounts, open the menu for the account and select Import a Statement.

  4. Upload and assign the columns

    Select the file, assign its columns to the statement fields (Transaction Date and Transaction Amount are required) and confirm the date format if Xero asks.

  5. Review, import and check the balance

    Clear any line you don't want, select Complete import, then compare Xero's statement balance with the statement's closing balance before you reconcile.

Why convert

Why the PDF can't go straight in

Xero builds bank statement lines from files of transactions, one per line, and calculates the account's balance from them. A PDF statement is a printed page, with page headers, running balances and totals mixed in with the transactions, so Xero's statement import doesn't take it.

Xero's own advice is to use your bank's OFX, QFX or QuickBooks download where it offers one, and to use CSV to create your own file otherwise. Bank downloads often stop after a year or two, though, while statements go back much further, and some banks only give you PDFs. For those periods, convert the PDF.

Step 1

Convert the statement with pdf2text

Upload the PDF to the bank statement converter. Digital PDFs, scanned PDFs and phone photos all work. The rows open next to the original page: date, description, money in and out, and the running balance where the statement prints one. You can correct any cell before you export, and the export uses your edits.

The first page of each statement is read free, with just an email (no card). A one-page statement shows part of its page. If the rows look right, pay once for that statement to read the rest: the price depends on its page count and is shown before you pay. There are monthly plans for regular volume, and no subscription is needed for a single statement.

When the opening balance plus credits minus debits equals the closing balance, the workstation shows a Balances check line above the transactions. On our accuracy benchmark, PDF2TEXT got 98% of numbers correct across 82 hand-checked real-world pages (see the benchmark against free tools). Still compare the rows with the statement before you import them.

What the Export menu gives you for Xero

  • Xero CSV: Date, Amount, Payee, Description and Reference, with one signed amount per row. Payee is the statement's payee column where it has one, otherwise the description.
  • OFX: a bank file Xero's import reads without column assignment.
  • Date format: Automatic follows the statement's country (MM/DD/YYYY for US banks, DD/MM/YYYY for UK, Australian, Canadian and most other banks), or choose DD/MM/YYYY, MM/DD/YYYY or YYYY/MM/DD. Leave out YYYY-MM-DD for Xero: it isn't one of the formats Xero lists.
  • These accounting files come with a paid statement or any plan. The free first page exports as Excel, CSV or JSON, which you can shape into the template below yourself.

The file

Xero's statement import template and its fields

Xero's template is a CSV with a header row and one transaction per row. Mandatory fields are marked with an asterisk in the template, and only Date and Amount are mandatory.

Fields of Xero's bank statement import
FieldNeededWhat goes in it
*Date Required The transaction date, in one of Xero's date formats.
*Amount Required Income positive, spending negative: -30.00 or (30.00). Money in and out share this one column. Don't use commas for decimals.
Payee Recommended Who was paid or paid you. Match an existing Xero contact's name exactly, or Xero creates a duplicate contact.
Description Optional Shown as Particulars on the account's Bank statements tab.
Reference Optional Any reference you want kept with the line.
Cheque number Optional The cheque number, if any. The US template calls it Check number.
Analysis code, Transaction type Optional Two extra columns you can add for the bank's own codes. The transaction type shows only in the reconciliation screen.

A file in the layout of pdf2text's Xero CSV

Date,Amount,Payee,Description,Reference 01/10/2026,2500.00,Harbor Design Ltd,Invoice payment,INV-1042 03/10/2026,-86.40,Office Supply Co,Card purchase, 07/10/2026,-500.00,Savings account,Transfer to savings, 31/10/2026,-12.00,Bank,Monthly service fee,

Accepted date formats

  • DD/MM/YYYY (15/01/2026), MM/DD/YYYY (01/15/2026) or YYYY/MM/DD (2026/01/15).
  • Also listed by Xero: DD/MM/YY, MM/DD/YY, DD/MMM/YY (15/JAN/26), DD/MMM/YYYY, DD-MM-YYYY, DD.MM.YYYY, DD MM YY with spaces, and DDMMYYYY.
  • Use one format for the whole file. When a date could be either day-first or month-first, Xero asks which, and applies the answer to the whole statement and to later CSV imports.

Before importing, delete opening and closing balance columns (Xero works the balance out from the transactions), the account number if it appears in the file, and empty rows. The header row must be row 1, with a different name for each column. A file can't have more than 100,000 rows. For a credit card account, payments to the card are positive and purchases negative.

To get the template itself, go to Accounting, then Bank accounts, open the menu for the account, select Import a Statement and click the link to the Xero CSV template. Xero picks the template's region, and so its file name and column headings, from your web browser's language setting, defaulting to New Zealand English.

If you build the file from pdf2text's plain CSV or Excel export instead: delete the document details above the transaction table and the summary below it, delete the Balance, Category and Confidence columns, and combine Debit and Credit into one signed Amount. The plain CSV puts an apostrophe in front of any value that starts with a minus sign, so spreadsheet programs don't read it as a formula; remove it from the amounts.

Step 2

Import the statement in Xero

Importing needs the administrator role in Xero, or the standard role with bank accounts access. These are the steps on Xero Central.

  1. In the Accounting menu, select Bank accounts.
  2. For the account, click the menu icon, then select Import a Statement.
  3. In File to upload, drag and drop the CSV or OFX file, or click Select file, then click Next.
  4. If asked, assign each column in the file to a statement field. Transaction Date and Transaction Amount must be assigned. Click Next.
  5. If asked, select the date format the file uses, then click Next.
  6. Review the lines. Clear the checkbox next to any you don't want to import.
  7. Click Complete import.

Xero remembers the column assignment for later CSV imports unless a file has extra columns or different headings, which is why exporting every month in the same layout pays off. The imported lines are then ready to reconcile against the transactions in Xero.

Troubleshooting

Common errors and how to fix them

  • Dates rejected, or day and month swapped

    Use one format for the whole file and choose the order the statement itself prints (Automatic in pdf2text's export menu does this). If Xero asks whether 03/04/2026 is day-first or month-first, answer for the file in front of you: Xero keeps that answer for later CSV imports. Make sure every date has a year; some statements print only the day and month.

  • Money in and money out in two columns

    Xero wants both in one Amount column. Combine them: money in positive, money out negative with a minus sign or brackets.

  • Lines flagged with errors on the review screen

    Fix the rows in the file or download a new one, then import again. Common causes are a balance column left in, empty rows, a header row that isn't row 1, and commas used as the decimal point.

  • Duplicate lines

    Xero treats lines that match ones already in Xero as duplicates and doesn't import them, but import each period once anyway. If a bank feed already covers recent months, import converted statements only for dates before the feed starts.

  • Duplicate contacts appearing

    Payee names that don't match an existing contact exactly create new contacts. Edit the Payee column to the contact names you already use in Xero before importing.

  • File too large

    A CSV can't have more than 100,000 rows. Delete empty rows, or split the file by date range.

Last step

Check the totals against the statement

  • Before the import, the Balances check line in pdf2text tells you the rows add up from the opening to the closing balance. If it doesn't appear, compare the totals by hand: a missing or doubled row is the usual cause.
  • Check the file too: the number of rows should match the transactions on the statement, the positive amounts should add up to its total deposits and the negative ones to its total withdrawals, to the cent. On Xero's review screen, make sure no line is held back with an error.
  • After the import, Xero's statement balance for the account should equal the closing balance printed on the statement, as long as every earlier period is already in Xero. If it's off, the difference usually equals one missing, doubled or reversed line.

FAQ

Common questions

Can Xero import a PDF bank statement?
Not through its statement import, which reads files such as CSV, OFX, QFX and QIF. Convert the PDF to a CSV or OFX file first, then import that.
Which columns does Xero require?
Only Date and Amount. Payee, Description, Reference and Cheque number are optional, but they make reconciling easier, and an exact Payee match avoids duplicate contacts.
Does Xero accept separate debit and credit columns?
Its CSV statement import wants both in one Amount column: income positive, spending negative, written as -30.00 or (30.00).
What date format does Xero accept?
DD/MM/YYYY, MM/DD/YYYY and YYYY/MM/DD, plus a few others such as DD-MM-YYYY and DD.MM.YYYY. Use one format for the whole file. When a date could be read two ways, Xero asks which format the file uses.
CSV or OFX: which should I import?
Xero recommends OFX, QFX or QuickBooks files when the bank offers them, because they need no column assignment. A CSV is easier to open and edit in a spreadsheet first. pdf2text exports a Xero CSV and an OFX file for a paid statement.
Is converting the statement free?
The first page of each statement is read free, with just an email. To read the rest, pay once for that statement; the price depends on its page count and is shown before you pay. The Xero CSV and OFX exports are included once the statement is paid for, or with any monthly plan.

Turn a PDF statement into a Xero file

Upload a statement, check the first page free beside the original, then export a Xero CSV or OFX file.

Convert a statement