1. Your statement CSV
A .csv download from your bank, or its text pasted below. Comma, semicolon and tab separators are read.
Choose a file or paste the text, then click Check file.
Result
Repaired file
The rules, and what they leave out
- Structure: the first row names the columns, with at least Date and Amount; no rows above it; no blank rows; every row has the header's number of cells.
- Amount: one column, negative for money out, plain digits and a decimal point. Currency symbols, brackets, trailing minus, CR/DR and thousands separators are rewritten; Debit and Credit columns are merged.
- Dates: DD/MM/YYYY, MM/DD/YYYY, YYYY-MM-DD or 5 Jan 2024. The order is proven only by a date that can be read one way; mixed orders are an error.
- Fixed automatically: rows above the header and blank rows removed, columns renamed to Xero's names, unknown columns dropped, Debit/Credit merged, plain-decimal amounts, and, only if you ask, dates rewritten with a four-digit year in a proven or confirmed order.
- Never guessed: the date order when the file does not prove it, a garbled amount, a row that is both money in and out, or whether two similar rows are one payment.
- Not checked: that balances match your bank, that the file came from your bank, which bank account or currency you import into, Xero's row limit, or what Xero will accept today. Read from memory of Xero's public import help and sample file, with no Xero import available when this was built; confirm against Xero's own current documentation.
Common questions
Why does Xero say my bank statement CSV could not be imported?
The usual causes are rows above the header (account details or a title), separate Debit and Credit columns instead of one Amount column, an amount with a currency symbol, brackets or a thousands separator, a date Xero cannot read in the format you chose, and a quoted field that never closes. This tool reads the file, names each problem with its line number, and writes a repaired CSV.
Why did my dates import as the wrong month?
A date such as 03/04/2024 does not say whether it is 3 April or March 4, and the file has no field to declare it; you choose the format in Xero's import step. This tool reads the whole file: any date like 13/01/2024 proves day-first and any date like 01/13/2024 proves month-first. If every date has both numbers 12 or under it says the order cannot be proven and tells you to pick the format your bank uses and spot-check one row.
My bank gives me separate Debit and Credit columns. What do I do?
Xero takes one Amount column with money out as a negative number. The repair merges the two columns, writing the debit amount with a minus sign and the credit amount as it is. Rows where both columns are filled, or neither, are reported and left for you.
Why were transactions imported twice?
A statement downloaded twice, or two overlapping date ranges, repeats rows. The checker flags rows with the same date, amount and text so you can trim the overlap before importing. If two of them are genuinely separate payments, ignore the flag.
Does it change my file without telling me?
No. Every change is listed. Only provable fixes are made: dropping rows above the header and blank rows, renaming columns to Xero's names, dropping columns Xero does not read, merging Debit and Credit, plain-decimal amounts, and, if you ask, dates rewritten in a four-digit-year format in an order the file proves or you confirm. Garbled amounts, mixed date orders and ragged rows are reported and left for you.
Is my file uploaded anywhere?
No. It is read in your browser tab and a test in the code asserts there are no network calls. Bank files contain account details, so do not paste one into a tool that uploads it.