Accounting import check
Your import will not fail. That is the problem.
Upload the bank, invoice or journal file you are about to import. Accounting Import Check checks it against the rules Xero and QuickBooks actually apply, and hands back a file they will accept.
CSV, TSV or XLSX, up to 20 MB
Free. No account. Your file never leaves the browser tab.
- Warning
Date order cannot be told from the file
all rows
- Notice
Amounts use a decimal comma
62 rows
- Blocker
A totals row is mixed in with the data
row 63
Watch Accounting Import Check catch three rows Xero or QuickBooks would misread, in 30 seconds.
A real bank file, checked in the actual product — no account, and nothing to upload to watch it happen.
Thirty seconds, and it starts silent — turn the sound on in the player once it loads.
Nothing has been sent to YouTube yet: the image and this text came from us, and pressing play is what connects your browser to YouTube.
- 0:00Xero or QuickBooks Online.
- 0:02Three rows go in wrong.
- 0:05Two readings. One is silent.
- 0:09Write dates nothing can misread.
- 0:12Serial dates, formulas, totals rows.
- 0:15Eleven safe fixes, one press.
- 0:18Every rewrite, shown both ways.
- 0:22Take the import-ready file.
The costly import is the one that succeeds
A rejected file is an afternoon. A file that imports without complaint and posts the wrong figures is a reconciliation, a corrected VAT return, and a conversation with your accountant.
It happens silently
03/07/2026 is two different months
Your accounting system reads dates against its own region setting. A file written day-first, imported into an organisation set to month-first, posts July's transactions to March. Nothing is rejected and nothing is reported — the period is simply wrong.
It happens by a factor of a thousand
1.234 is one euro, or it is a thousand
Half of Europe writes the decimal comma. Read the separator the other way and 1.234 becomes one thousand two hundred and thirty-four. Both are valid numbers, so no importer will ever query it.
It happens once per file
The totals row imports as a transaction
A spreadsheet's own summary row carries a real number in the same column as every genuine transaction. The importer takes it as one more, and the account is out by the value of the entire file.
Every check on this page is measured against what Xero and QuickBooks publish about their own importers, or against arithmetic the file has to satisfy on its own.
What Accounting Import Check does
The file you're about to import
march-statement.csv
- Bank transactions
- Date · Description · Amount, or Debit + Credit
What the check finds
Date order cannot be told from the file
WarningAmounts use a decimal comma
NoticeA totals row is mixed in with the data
Blocker
Cleaned for import
Date,Amount,Payee,Reference
2026-07-03,1250.00,Fenwick and Sons,INV-1042
2026-07-05,-82.50,Northwind Supplies,INV-1043
Settles how the file reads
Before judging a single figure it works out — from the data, not from a guess — whether the dates are day-first and whether the separator is a decimal point. Where the file cannot prove it, it asks you rather than choosing.
Checks it against the real rules
Every row is measured against the importer you are actually using: what it rejects, what it truncates, what it silently reads as something else. Plus the arithmetic — journals that do not balance, tax that does not match its rate.
Hands back a file that imports
Amounts in the plain shape both vendors document, headings spelled the way the importer matches them, and an issues report naming every row that still needs a person.
What a finding looks like
Three real cases, with what goes in, what the tool says, and what it would write instead.
- Every date on or before the twelfth
In: a column of 03/07/2026, 05/09/2026, 11/12/2026 — nothing above twelve anywhere.
Out: the tool refuses to pick and asks which order the file is in.
Warning · The date order cannot be told from the file. Your accounting system would pick one from its region setting and post the transactions to the wrong months.
- An amount written the European way
In: -1.234,56 in the amount column of a file bound for QuickBooks.
Out: -1234.56, in the plain shape the vendor documents.
Blocker for QuickBooks, whose amount field takes digits and one decimal point. A notice for Xero, which reads it — the export normalises either way.
- A summary row under the data
In: a final row reading Total in the description column and 4.590,19 in the amount column, with no date.
Out: the row is struck through in the preview and left out of the export.
Blocker · Recognised by a totals label beside a real number with no date, so a genuine transaction described as “Total rent” is left alone.
Three steps, and nothing else
Upload and pick your platform
A CSV, TSV or Excel file, plus Xero or QuickBooks Online and what you are importing. The file is read in your browser tab — it is never uploaded anywhere.
Confirm how the file reads
Accounting Import Check shows what it worked out about your dates and decimals, and how it knows. Where the file is genuinely ambiguous it says so and waits, because guessing there is the expensive mistake.
Review, fix, export
Findings grouped by what they are, each naming its rows. Tick the safe mechanical fixes; the rest are listed for you. Then download the cleaned file, the issues report, the change log, or your untouched original.
What it checks
Six families of finding, each one either a rule the vendor publishes or a sum the file has to satisfy on its own.
Dates
Ambiguous or contradictory date order, Excel serial numbers left in a date column, impossible days, years decades out, and a due date that falls before its invoice.
Amounts and decimals
Currency symbols, thousands separators, decimal commas, brackets and trailing minus signs for negatives, too many decimal places, and a bank statement whose expenses lost their minus.
Tax
A blank tax code, which Xero imports as untaxed rather than defaulted. One code carrying two different rates. A stated tax amount that does not match the rate and the net.
Balance
Journals whose debits and credits do not meet, and by how much. A row carrying both a debit and a credit, or neither. A line total that is not quantity times unit price.
Multi-line documents
Continuation rows that leave the contact name or the dates blank, which Xero rejects one row at a time. Rows of one invoice that disagree, or that are scattered through the file.
Duplicates
Identical rows, one invoice number used by two different customers, and the same date, amount and description twice — the signature of a statement downloaded twice.
Who it is for
Anyone who prepares a file for an accounting system and would rather find out now than after it has posted.
Bookkeepers
You import statements and sales files every week, and you already know which of your clients' banks writes dates the awkward way. This is the check you would run by eye, run in a second.
Accounting practices
Thirty clients, thirty export formats, and a junior doing the import. A verdict and an issues report make that reviewable rather than trusted.
Migrations onto Xero or QuickBooks
Opening balances, historic invoices and years of transactions, all going in once. The rows you cannot re-import are the rows worth checking twice.
Finance teams
The month-end journal that a colleague built in a spreadsheet. Whether it balances is a question worth answering before it reaches the ledger.
What you can put in
Three record types, because the rules are genuinely different for each. Pick what you are importing and the checks follow.
Bank transactions
Checked forA statement export, or a CSV your bank hands you. Checked for the sign convention, the date order, the decimal convention, duplicates and totals rows.
ColumnsDate · Description · Amount, or Debit + Credit
Sales invoices
Checked forIncluding multi-line invoices, where the continuation rows are exactly where an import quietly falls over. Adds tax, account codes and document checks.
ColumnsContact · Number · Dates · Quantity · Unit amount · Account · Tax
Manual journals
Checked forRead either way a file can be written: a debit and a credit column, or one signed amount column. Every journal has to balance, and this says by how much it does not.
ColumnsNarration · Date · Account · Debit + Credit, or Amount
Two platforms, checked against their own documentation
The two disagree about things as basic as whether brackets mean a negative, so a generic check would be wrong for one of them.
Xero
Rules read fromDates read against your organisation's region setting, which is where the silent month error comes from. Brackets around a negative are ordinary. A blank TaxType column imports the line untaxed rather than defaulted — the opposite of what an empty cell suggests.
LimitsBank statement: 100,000 rows · Bills: headings matched letter for letter
QuickBooks Online
Rules read fromThe stricter of the two on how a number may be written: digits, one decimal point and an optional leading minus, and nothing else. Formulas, blank rows and spreadsheet errors are named refusals.
LimitsBank: 1,000 lines and 350 KB · Invoices: 100 at a time
A third platform is a data file rather than a code change — what it needs first is a published row limit and column list, read from the vendor rather than from a blog.
What it does not do
Stated plainly, because a tool that overstates its reach costs more than one that does less.
It does not import anything
Accounting Import Check prepares the file. You run the import yourself, in your own accounting system, exactly as you do now.
It cannot see your chart of accounts
Whether account 200 exists in your organisation is something only your accounting system knows. Account codes are checked for shape and for self-consistency, never against your real ledger.
It does not convert PDFs
If your statement is a PDF, something else has to turn it into a spreadsheet first. This checks the file you already have.
It is not accounting advice
It reports what an importer will do with your file. Which account a transaction belongs to, and whether a journal is right, remain yours to decide.
Privacy
Your ledger never leaves the tab
A bank statement or a sales ledger is among the most sensitive files a business has: every counterparty it pays, every customer it bills, and what each of them is worth.
The file is read in your browser tab. It is not uploaded, because no code on this page sends it — our code keeps that, the browser does not enforce it. What the browser enforces is reach: the page's content-security policy lets the page itself contact only our own origin, Cloudflare's two analytics hostnames and, once you press play on the demo video, the host YouTube's player is loaded from. Our policy stops at that frame: what the player loads inside it is YouTube's, not ours to govern or count. Nothing from your file is in any of it.
Accounting Import Check never touches your accounting system. There is no connection, no OAuth and no permission to grant. It only looks at the file you are about to give Xero or QuickBooks yourself.
There is no account, no sign-in and no email address to hand over. Open the page and check a file.
Your file is never stored, because it is never sent. What the tool does send is an anonymous count that a file was checked — no file name, no row count, no column names — and Cloudflare's anonymous page-view measurement. Pressing play on the demo video hands your browser to YouTube's player, which then loads whatever it loads from Google's own hosts; we neither control nor count those requests, and nothing from your file is in any of them.
Questions
The things people ask before uploading a file full of their customers' money.
- What does Accounting Import Check actually do?
- You upload a bank, invoice or journal file and choose Xero or QuickBooks Online. It checks every row against that platform's own import rules plus the arithmetic accounting requires, gives you a verdict, and exports a cleaned file with an issues report and a change log.
- Which accounting systems does it check against?
- Xero and QuickBooks Online. Both sets of rules are read from the vendors' own documentation rather than inferred, which is why there are two rather than ten — a limit taken from a blog post would make the tool wrong in the one way it may not be.
- Is my file uploaded anywhere?
- No. It is read in your browser tab and never sent, because no code on this page sends it — that is what our code does, not something the browser enforces. What the browser enforces is reach: the page's content-security policy lets the page itself contact only our own origin, Cloudflare's two analytics hostnames and the host the demo video's player is loaded from once you press play. Our policy stops at that frame: what the player loads inside it is YouTube's, not ours to govern or count. Nothing from your file is in any of it.
- Why does it ask me about dates?
- Because 03/07/2026 has two correct readings and your accounting system will pick one silently. Where the file proves the order — any day above the twelfth does — it settles it and says so. Where every date falls on or before the twelfth, no amount of cleverness can tell, so it asks.
- Why does it ask me about decimals?
- For the same reason: 1.234 is one and a bit under one convention and a thousand and a bit under the other, and both are valid numbers. A file carrying 1.234,56 settles it outright. A file where every separator has exactly three digits after it does not, and guessing there is a thousandfold error nothing downstream would report.
- Does it check that my journals balance?
- Yes, per journal, and it tells you the amount each one is out by. It reads either shape a file can be in — a debit and a credit column, or a single signed amount column that must sum to nothing. It never guesses which side is wrong, because that is a judgement about the transaction.
- Does it read Excel files?
- Yes — .xlsx as well as CSV and TSV. Formulas are read as the value they produced, which is what an import cares about, and a cell still carrying a formula or a #REF! error is itself a finding.
- Will it change my figures?
- Only the ones you tick, and only mechanically. It normalises how a number is written without changing what it is, fills a document's own values down its own rows, and removes totals rows and blank rows. Everything it touches is listed cell by cell with the value before and after, your original stays downloadable, and unticking a fix returns the file exactly.
- What does it cost?
- Nothing. There is no paid tier, no trial and no card. If that changes, the free check stays free.
- Can it connect to my Xero or QuickBooks account?
- No, and that is the design rather than a missing feature. Tools that connect to your accounting system clean what is already in it; this checks the file while it is still a file, when the fix is free and nothing has been written to a system of record.
Common import errors, explained
The exact wording Xero and QuickBooks Online show on screen, connected to the check that catches it and the fix that clears it.
Check the file first. It takes a second.
Free. No account. Your file never leaves the browser tab.