Export Bank Statement — bank statement PDF to Excel
sync_altGuide

Fix Xero Import Errors

Fix Xero import errors — date format mismatch, amount column shape, missing required fields and the duplicate-statement warning. A reconciled CSV avoids most.

bolt

Almost every Xero import error comes down to the CSV itself, not Xero. The four that account for most of them: a date written in an order Xero's "Import a Statement" screen doesn't expect, an amount column in the wrong shape, a required field (Date, Amount, Payee or Description) missing from the header, and the duplicate-statement warning when a date range overlaps something you've already brought in. Fix the file and the import usually goes through on the next try. One thing to be clear on from the start: this is a CSV you upload by hand under Import a Statement, not a live bank-feed API pushing transactions into Xero.

Xero imports your file as statement lines — the same kind of lines a bank feed produces, ready to reconcile against your invoices and bills. That's why the column shape matters so much. Get it right once and the file slots in cleanly; get it wrong and Xero either bounces the upload or, worse, accepts a file that's quietly missing a transaction.

The error you'll actually see, and what fixes it

Xero's messages are terser than QuickBooks' and tend to point at a row or a column. Here's how the common ones map to a cause.

What Xero shows

What's actually wrong

The fix

"The statement could not be imported" with a date complaint

Date order doesn't match the format Xero asked you to pick on the import screen

Choose the format that matches your file (e.g. DD/MM/YYYY) in the date dropdown during import, then check one known transaction landed on the right day

Required column not found / mapping won't complete

A header is missing or misnamed — Xero needs a Date, an Amount, and a Payee or Description to map

Make sure the first row has clear headers and at least Date, Amount and Payee/Description are present

Amounts import as zero or as text

Currency symbols (, $) or thousands commas inside the number cells

Strip the symbol and the commas — leave digits, one decimal point and a leading minus only

Money in and money out land the wrong way round

Confusion between one signed Amount column and separate debit/credit columns

Use a single signed Amount (money out negative) or two columns Xero can map — not both

"This statement appears to be a duplicate"

The date range overlaps a statement already imported for that bank account

Import a non-overlapping range, or confirm it really is new before overriding the warning

Upload greyed out or rejected outright

Wrong file type — a PDF, .xls or .numbers handed to a CSV importer

Save as plain .csv; Xero won't read a PDF as transactions

Fewer lines than the statement, no error at all

A transaction was dropped or misread before you ever opened Xero

Reconcile the file first: opening balance + transactions should equal the closing balance

That last row is the dangerous one, because there's no message attached to it. We'll come back to why.

What Xero's "Import a Statement" CSV needs

Xero's bank-statement import maps to a small, fixed set of fields. You don't need every column the bank gave you — you need the ones Xero recognises:

  • Date — required. Has to match the date format you select on the import screen.
  • Amount — required. Either a single signed figure (out = negative, in = positive) or split across columns Xero can read as money in and money out.
  • Payee — who the transaction was with. Treated as required for a usable line.
  • Description — what it was for. Strongly recommended; it's what makes reconciliation against bills and invoices quick later.
  • Reference — optional, but useful for matching cheque numbers or invoice references.

Everything else from the original statement — the running balance column, transaction-type codes, a second address line, blank spacer rows — should come out before you save. A statement export that's been trimmed to those fields imports far more reliably than one you've handed over whole.

Sort the date format first

The single most common Xero import error is a date mismatch, and it catches anyone working across regions. A statement printed as `06/04/2026` is the 6th of April in the UK and the 4th of June in the US — Xero can't tell which you mean, so it asks you to pick the format on the import screen.

Pick the order your file actually uses. If your CSV reads `06/04/2026` and you mean the 6th of April, choose DD/MM/YYYY. Then do the one check that saves the most grief: find a payment you remember and confirm it imported on the right date. A month out means your format selection is wrong, not your data.

Editing the file by hand? Write dates as `YYYY-MM-DD`. It's unambiguous and Xero handles it cleanly. Don't trust Excel here either — open a CSV and re-save it and it'll happily reinterpret a date column without telling you.

Get the amount column into one shape

Two separate things go wrong in the amount column, and they produce similar-looking failures.

The first is formatting inside the cell. A value like `1,240.00` reads as text because of the symbol and the comma, so Xero either zeroes it or refuses to map the column. The cell should hold `1240.00` and nothing else — no currency sign, no thousands separator.

The second is the shape of the column. Decide between one signed Amount column, where money out carries a minus (`-89.99`) and money in is positive, or columns Xero can map separately as paid-in and paid-out. Pick one. A money-out figure that loses its minus sign imports as income, and you won't notice until the account refuses to reconcile and you're hunting for the difference.

Clear the duplicate-statement warning

When Xero says a statement looks like a duplicate, it's comparing the date range against what's already on that bank account. Usually it's right — you've re-imported a month, or the range overlaps a few days you already brought in.

Import in clean, non-overlapping ranges. Know the exact last date you imported and start the next file the day after. If the warning fires and you're certain the lines are new, you can override it, but check first — once duplicate statement lines are in, you're unpicking them one at a time during reconciliation.

Why a reconciled CSV clears most of these at once

Here's the part most guides skip. Every error above is a *format* problem, and format problems at least announce themselves. The quiet one is a missing transaction. A converter can hand you a tidy CSV with perfect Date, Amount and Payee columns that imports into Xero without a single complaint and is still wrong — because one Direct Debit fell off the bottom of page three. A clean file that's incomplete is worse than an obviously broken one, because you'll trust it.

This is where the running balance earns its keep. It's a built-in checksum: opening balance, plus money in, minus money out, has to equal the printed closing balance. Recompute it line by line and the first row where your total stops matching the bank's figure is the exact line where something was dropped or misread. Reconcile before you import and you're not chasing a discrepancy through your Xero account a fortnight later.

Export Bank Statement converts the PDF — including scanned and photographed statements, via OCR — into a clean CSV or Excel file, then runs that running-balance check for you. It recomputes the totals against the printed closing balance and flags any statement that doesn't reconcile, so a missing or misread line shows up before it reaches Xero. We once watched a tidy-looking import fail the check over a single standing order clipped at a page break; the flag turned an afternoon of cross-checking into a one-line fix. It also writes the file in Xero's native bank-import CSV format, so Date, Amount, Payee and Description arrive shaped the way Xero's importer expects.

Be plain about what it is, though: convert, then import. It doesn't push transactions into Xero through a live bank-feed API, and it isn't a bookkeeping service — you decide what gets imported and reconciled. For the field-by-field detail, the Xero CSV import format explained walkthrough goes column by column, and can Xero import PDF bank statements? answers the question sitting underneath all of this. You can also browse the wider Xero guides or the UK accounting guides.

Frequently asked questions

Why does Xero say my statement could not be imported?keyboard_arrow_down

Most often it's the date format. Xero asks you to pick the date order on the import screen, and if your file uses DD/MM/YYYY while you've selected MM/DD/YYYY (or the reverse), it rejects the rows. Choose the format that matches your file, then confirm one known transaction landed on the right day. If the date isn't the issue, check that the header row has a Date, an Amount and a Payee or Description column.

What columns does Xero need in a bank statement CSV?keyboard_arrow_down

Xero's "Import a Statement" maps to Date, Amount, Payee, Description and an optional Reference. Date and Amount are required, and you need a Payee or Description for a usable line. Trim everything else — the running balance, type codes and spacer rows — before you save, since extra columns are a common cause of mapping failures.

How do I stop the duplicate-statement warning in Xero?keyboard_arrow_down

Import non-overlapping date ranges and start each file the day after your last imported date. Xero raises the warning when a range overlaps statement lines already on that bank account. You can override it if you're sure the lines are genuinely new, but check first — duplicate statement lines have to be removed one by one once they're in.

Should the amount be one column or two?keyboard_arrow_down

Either works, but commit to one. A single signed Amount column — money out negative, money in positive — is simplest. Separate paid-in and paid-out columns are fine too, as long as Xero can map them and you don't also leave a signed column in the file. Strip any currency symbols and thousands commas, or the numbers import as text.

Will fixing the CSV format catch a missing transaction?keyboard_arrow_down

No, and that's the trap. Format fixes get the file accepted, but they can't tell whether a transaction was dropped during conversion. Check that the file reconciles: opening balance plus money in, minus money out, should equal the printed closing balance. A converter that recomputes the running balance and flags any statement that doesn't reconcile catches the gap before it reaches your Xero account.

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