Accounting imports · Xero
Convert a bank statement PDF to a Xero CSV
Xero imports statements as CSV, OFX or QIF, not PDF. Convert the PDF here to a Xero-ready CSV, with every balance checked before it gets near the books.
or drop it here
Read in this browser. Your file is never uploaded.
Rows wrong or missing?
Send us the shape of this statement, not its contents. The report below is made in this browser. It keeps where text sits, dates and column headings. Every name, amount, reference and account number is replaced with x and 1, as you can see. Nothing is sent until you send it.
Then email the report to support@statementtocsv.co.uk and say which bank it is from. We’ll add the layout and let you know.
| Date | Description | Paid in | Paid out | Balance |
|---|
| Check | Result | What we found |
|---|
Statements
| Period | File | Opening | Closing | Rows | Used as |
|---|
| Date | Description | Paid in | Paid out | Balance | From |
|---|
Works with text PDFs that have Date, Description, Paid in / Paid out (or Amount) and Balance columns. Scanned or photographed statements are not supported yet. The samples are fictional test data.
What’s in the Xero CSV
| Column | What it holds |
|---|---|
| Date | Transaction date, dd/mm/yyyy |
| Amount | Positive for money in, negative for money out, two decimal places, no £ sign |
| Payee | The transaction description, trimmed to Xero’s length limit |
| Description | The full description from the statement, including references printed on a second line |
| Reference | Left empty, for you to fill in if you want |
These match the fields Xero asks you to assign when you import a statement, so mapping takes a few seconds.
Why check the balances first
Once statement lines are in Xero, a missing transaction surfaces as a reconciliation difference that never quite goes away. The usual way to find it is to compare the bank statement with Xero line by line. StatementToCSV does that comparison before the import: every row of the PDF is reconciled to the bank’s printed running balance, and any row that doesn’t add up is pointed out with the exact amount. Only import a statement that says “Verified”.
A year of statements into Xero
When you take on a client mid-year, or a bank feed started late, you may need to bring in many months at once. Add all the statements to “Several statements”. The whole-year check confirms nothing is missing, removes duplicate statements and counts overlapping interim statements once. Then download a single Xero CSV for the whole period and import it in one go.
Avoiding duplicates with a Xero bank feed
If the account already has a bank feed, check the date of the earliest statement line in Xero, and only import transactions from before it (or a gap you know about). Delete the overlapping rows from the CSV in Excel before importing if you need to. If duplicate statement lines do get in, Xero lets you delete imported statement lines that haven’t been reconciled.
Step-by-step import
The full walkthrough, including how to map the columns and what to do if Xero rejects the file, is on how to import a bank statement into Xero.
Questions people ask
What format does Xero need for a bank statement import?
Xero accepts CSV, OFX and QIF files. A CSV needs at least a date and an amount for each transaction; the Xero CSV from this converter also includes payee and description.
Should money out be negative in a Xero CSV?
Yes. In a single Amount column, money in is positive and money out is negative. The Xero CSV is built that way.
Does Xero accept UK dates?
Yes. Choose the dd/mm/yyyy date format when Xero asks during the import.
Is the Xero export free?
It is a Pro feature. During the beta, it is free for everyone.