SheetStatement

Xero Bank Statement CSV Import Format, Explained

By SheetStatement Team · · Updated · 11 min read

TL;DR: Xero's statement import needs, at minimum, a date and a signed amount for each transaction (money in positive, money out negative). Payee, description and reference are optional but make reconciliation much easier. Use one date format, plain numbers, one header row, and import into the correct bank account. Xero's own CSV template is a good starting point.

Xero is one of the most pleasant accounting tools to reconcile in, and a lot of that comes from bank statement lines being clean. When they arrive through a bank feed, they usually are. When you're importing statements by hand, for older months, for banks without feeds, or for a catch-up project, the quality of your CSV decides how smooth reconciliation will be.

Here's what Xero expects and how we build files that import on the first try.

Where the import lives

In Xero, statement imports are done per bank account. In general terms: open the bank account in Xero (from the bank accounts list or the dashboard), look for the option to import a statement in the account's menu, choose your file, and map the columns. Xero shows a preview before anything is imported.

On the same screen, Xero usually offers a downloadable CSV template. If you're building a file from scratch, start from it; it shows the column names Xero recognizes.

Xero also accepts other statement formats, such as OFX and QIF, alongside CSV. We cover why you might choose one over another below.

The columns

Xero's CSV import works with these fields:

Field Required? Notes
Date Yes The transaction date
Amount Yes Signed: positive for money in, negative for money out
Payee Optional Who you paid or who paid you
Description Optional Free text, often the bank's description
Reference Optional Invoice or check numbers, transaction references
Cheque/Check number Optional Useful for matching checks

The required fields are just Date and Amount. In practice, include Payee and Description. Xero's reconciliation suggestions and bank rules work from that text, and empty fields make every line look the same.

A clean example:

Date,Amount,Payee,Description,Reference
02/03/2026,1982.40,Stripe,STRIPE PAYOUT,po_1234
03/03/2026,-72.00,Google,GOOGLE *WORKSPACE,
05/03/2026,-1450.00,Acme Properties,Rent March,INV-0391

(Dates here are day/month/year, as for a UK or Australian organization. Use whatever format matches your file and choose it during import.)

The single most important rule: signed amounts

Xero wants one Amount column with a sign. Money into the account is positive; money out is negative.

If your source has separate Debit and Credit columns, combine them before import:

=N([@Credit])-N([@Debit])

(where Credit is money in and Debit money out, as on a bank statement).

For credit card accounts in Xero, the same perspective applies: spending on the card is money out (negative), payments to the card are money in (positive). If a card export shows purchases as positive, flip the sign before importing.

After import, check two lines in the reconcile screen. A known expense should appear on the "spent" side and a known deposit on the "received" side. If they're reversed, delete the imported statement lines and import a corrected file.

Dates

During import, Xero asks you to confirm how dates are formatted. Rules that keep it simple:

  • Use one format for the whole file.
  • Use four-digit years.
  • Check a date after the 12th of a month in the preview, since that's where day/month swaps become visible.
  • Remember that Excel may rewrite dates when you save a CSV. Look at the saved file in a text editor.

If your organization is in the US and the file is from a UK bank (or vice versa), dates are the first thing to check.

Amount formatting

  • No currency symbols.
  • No thousands separators.
  • Minus sign for negatives, not parentheses.
  • Period as decimal separator (unless your setup clearly expects otherwise).

Building the file from a PDF statement

If you only have PDFs:

  1. Convert them with a statement converter such as SheetStatement's bank statement to Xero tool, which outputs Xero's layout directly.
  2. Check the balance: opening + sum of amounts = closing.
  3. Review any flagged rows.
  4. Download the Xero CSV and import.

If you're doing it manually from a spreadsheet, build the columns above and save as CSV UTF-8.

Splitting payee and description

Bank descriptions often combine the merchant, a location and a reference. For Xero, splitting them helps:

  • Payee: the clean merchant name ("Google," "Acme Properties").
  • Description: the original bank text, kept for the audit trail.
  • Reference: any invoice or transaction number.

You don't need to do this for every line. Do it for the recurring payees, and Xero's bank rules and matching will do the rest. A simple lookup table (raw text pattern → clean payee) makes this quick; our guide to Excel formulas for categorizing transactions uses the same technique for categories.

Why statement lines need good text

It's worth spelling out why we keep emphasizing payee and description. In Xero's reconcile screen, each statement line sits next to a suggested match or a blank form to create a transaction. Xero's suggestions draw on the line's amount, date and text. When a line just says "POS 4471 03/14" with no payee, Xero has nothing to go on, and you have to remember what it was.

Clean text has a compounding effect. The first month, you reconcile by hand and create rules. The second month, rules catch the regulars and Xero's memory of past reconciliations suggests the rest. By the third or fourth month, most lines match with a click. Messy text breaks that cycle, because each month the same supplier looks slightly different.

So the extra minute spent filling in payees on recurring lines isn't cosmetic. It's what makes every future month faster, which is exactly what you want from a tool you'll use for years.

Avoiding duplicate statement lines

Xero tries to spot duplicate statement lines on import, but CSV files have no transaction IDs, so it can't be certain. Duplicates usually come from:

  • Importing the same file twice.
  • Importing a period that the bank feed already covers.
  • Overlapping date ranges between two files.

Prevention is easier than cleanup:

  1. Decide on a cutoff date between imported statements and the bank feed.
  2. Keep a log of which periods you've imported for each account.
  3. Import by statement period, not by arbitrary date ranges.

If you do end up with duplicates, Xero lets you delete imported statement lines that haven't been reconciled. Our guide to Xero bank statement import errors covers the cleanup options.

CSV vs. OFX in Xero

CSV OFX
Edit before import Easy Awkward
Column mapping Required Not needed
Transaction IDs No Yes
Duplicate protection Weaker Stronger
Built from a spreadsheet Yes No

We use CSV when we've edited or cleaned the data, or combined sources. We prefer OFX when we're importing a bank's own download as-is, because the IDs help avoid duplicates. For PDF conversions, a Xero-formatted CSV is usually the most practical.

Reconciling after import

Once imported, statement lines appear on the reconcile tab, waiting to be matched or created. Before diving in:

  1. Check the imported total. In Xero, the statement balance after import should match the closing balance of the bank statement, assuming your opening balance was correct.
  2. Create bank rules for the recurring items.
  3. Match invoices and bills first, then create transactions for the rest.

If the balances don't line up, our guide to bank statement import errors in Xero and the general bank reconciliation in Excel guide can help you find the gap.

Opening balances and conversion dates

When you start using Xero, you set a conversion date and opening balances. If you import statements from before the conversion date, they'll complicate reconciliation, because Xero expects the opening balance to already account for them. For catch-up projects, decide early whether you're setting the conversion date at the start of the catch-up period (and importing everything after it) or at a later date. Talk to whoever manages the Xero organization before importing old months into a live file.

Importing many months at once

For a catch-up project, you might have twelve or twenty-four months to bring into Xero. You can combine them into one large file, but we prefer importing one statement period at a time, for three reasons.

First, verification stays simple. Each file corresponds to one PDF with a known opening and closing balance. If something's off after import, you know exactly which file and which month.

Second, mistakes stay small. If one month has a sign problem, you delete and redo one month, not two years.

Third, reconciliation keeps pace. Importing a month and reconciling it before moving to the next means problems surface early, while the context is fresh.

If you do want one file for speed, keep a Statement column in your working spreadsheet (even though Xero won't import it) so you can trace any line back to its source PDF.

Bank rules that make the next import easier

Every import is a chance to teach Xero. After the first month, look at the lines you reconciled by hand and ask which ones will repeat. Rent, payroll, software subscriptions, loan repayments, card processor payouts and bank fees almost always do.

Create a bank rule for each, keyed on the payee or a distinctive word in the description. This is where clean Payee values pay off: a rule matching "Acme Properties" is far more reliable than one matching a fragment of a noisy bank string.

Review your rules every few months. A rule that was right for last year's supplier can quietly miscategorize a new supplier with a similar name.

Multi-currency accounts

If your Xero plan supports multiple currencies and you have a foreign currency bank account, import its statement into the matching foreign currency account in Xero. The amounts in the CSV should be in that account's currency, exactly as the bank statement shows them. Xero handles the conversion to your base currency using its exchange rates.

Don't convert the amounts to your home currency yourself before importing. That breaks the link between the bank statement and the account, and the account will never reconcile to the bank's own balance.

A pre-import checklist for Xero

  1. One header row, no title lines, no totals.
  2. Date and signed Amount present on every row.
  3. One date format, four-digit years.
  4. Amounts are plain numbers, negatives with a minus sign.
  5. Payee filled for recurring names; Description holds the original bank text.
  6. Saved as CSV UTF-8 and checked in a text editor.
  7. Opening balance plus the sum of amounts equals the statement closing balance.
  8. The date range doesn't overlap with the bank feed or a previous import.
  9. You're importing into the right bank account in Xero.

If all nine are true, the import will almost certainly work. If one isn't, that's where to look.

A worked example

A client's bank provides this CSV export for a UK business account:

Date,Type,Description,Paid out,Paid in,Balance
14 Mar 2026,DD,ACME PROPERTIES RENT,"1,450.00",,"8,430.11"
15 Mar 2026,BGC,CUSTOMER LTD,,"3,200.00","11,630.11"

Steps:

  1. Convert the date to a numeric format: 14/03/2026.
  2. Remove the thousands separators.
  3. Combine Paid out and Paid in into a signed Amount: =N(Paid in)-N(Paid out).
  4. Map Description to Description, add Payee for the recurring names, and drop the Balance column (or keep it for your own verification).
  5. Keep the Type column in Reference if you find it useful; DD (direct debit) and BGC (bank giro credit) are handy for matching.

Result:

Date,Amount,Payee,Description,Reference
14/03/2026,-1450.00,Acme Properties,ACME PROPERTIES RENT,DD
15/03/2026,3200.00,Customer Ltd,CUSTOMER LTD,BGC

Verify: the balance before the first row plus the sum of amounts equals the last balance. Import, confirm a date after the 12th in the preview, and check one expense and one receipt land on the right sides.

Our take

Xero's CSV import is forgiving once the basics are right: signed amounts, one date format, plain numbers, and meaningful payee and description text. Get those right and reconciliation becomes the quick, satisfying part it's meant to be.

Edge cases in Xero CSV files

Payee and description both blank. Xero needs something to show on each statement line. If the bank's description is blank (some fees and interest lines are), fill it with something meaningful like "Bank fee" so the line can be reconciled and matched by bank rules.

References that look like numbers. A reference such as 000123 can lose its leading zeros if the file passes through a spreadsheet. If references matter for matching, format the column as text before saving.

Dates around month-end. If you import one file per month, make sure each file covers exactly the statement period. A file that ends on the 30th when the statement ends on the 31st leaves a gap that only shows up at reconciliation.

Credit card accounts. For a card account in Xero, spending reduces the account's balance like money out of a bank account. Check that a known purchase imports as spent money, not received money.

Amounts with currency codes. Strip codes like "GBP" or "USD" from amount cells; the account defines the currency.

A second worked example: a charity's quarterly import

A small charity's treasurer imports quarterly. She converts three monthly statements, combines them into one Xero-format CSV, and imports. The reconciliation is out by 12.00. Sorting by amount, she finds a 12.00 refund that appears twice: once at the bottom of March's statement and again at the top of April's, because the PDF repeated it in a "recent activity" box. Deleting the duplicate fixes it. Since then, she imports one statement per file and checks each one's total first, which catches this kind of thing before it reaches Xero.

Mini checklist

  1. Date, amount and description columns present and filled.
  2. One date format, real calendar dates only.
  3. Signs checked for the account type.
  4. Each file covers exactly one statement period.
  5. Totals checked against the statement before import.

FAQ

What columns does Xero require in a bank statement CSV?

Date and Amount are required. Payee, Description, Reference and check number are optional, but including payee and description makes matching and bank rules work much better.

Should withdrawals be negative in a Xero CSV?

Yes. Use a single signed Amount column: positive for money in, negative for money out. For credit cards, spending is negative and payments to the card are positive.

Why does Xero show my dates in the wrong month?

The date format chosen during import doesn't match the file, swapping day and month. Check a date after the 12th in the preview and choose the correct format.

Can I import a PDF bank statement into Xero?

Xero's statement import expects a file such as CSV or OFX. Convert the PDF to a Xero CSV first, verify the balance, then import.

How do I remove duplicate statement lines in Xero?

Xero lets you delete imported statement lines that haven't been reconciled. To avoid duplicates, use a cutoff date between imports and the bank feed, and keep a log of imported periods.

Is OFX better than CSV for Xero?

OFX includes transaction IDs that help prevent duplicates, so it's good for importing a bank's download as-is. CSV is better when you've cleaned, edited or combined data.

Skip the retyping

Upload a PDF or scanned statement and download a balance-checked Excel, CSV, QuickBooks or Xero file. Try the converter free.

Related articles

Convert your first statement free

3 pages a month on the free plan. No credit card.