1. Your invoice CSV
The file from a spreadsheet, a billing system export, or Xero's own import template, saved as CSV.
Choose a file or paste the text, then click Check file.
2. Optional: check against your own Xero lists
Xero rejects an invoice line whose account code or tax rate does not exist in your organisation, and quietly creates a duplicate contact when a name is spelled a little differently. Paste the lists below and every line is compared. Same privacy: nothing is uploaded.
Leave these empty to skip. Click Check file again after pasting.
Result
Invoices
| First line | Invoice | Contact | Date | Due | Lines | Net total |
|---|
Safe fixes
Split into import-sized files
The model, and what it leaves out
- One invoice, many lines: every line with the same
*InvoiceNumberbelongs to one invoice, so contact, invoice date, due date and currency must agree on all of them, and the lines should sit together. - Required columns carry a leading star in the template: ContactName, InvoiceNumber, InvoiceDate, DueDate, Description, Quantity, UnitAmount, AccountCode and TaxType, on every line.
- Dates are read by Xero in your organisation's date format. This tool works out which order your file uses from the dates that can only mean one thing (like 27/11/2026), and treats a file that uses both as an error.
- Plain numbers: Quantity, UnitAmount and Discount are digits and a decimal point, with no currency symbol, units or thousands separator. Discount is a percentage from 0 to 100.
- Account Code and Tax Type (
*AccountCode,*TaxType) must match your Xero chart of accounts and tax rates. On its own the tool flags names where codes belong, bare percentages where rate names belong, and lists the values used. Paste your chart of accounts, contacts and tax rate names in step 2 and it checks every line against them: unknown or archived accounts, an account name where the code belongs (and swaps in the code), non-revenue accounts, contacts that would duplicate an existing one, and tax rates spelled differently. - Size: Xero limits an import file to roughly 500 lines. The splitter keeps each invoice whole.
- Safe fixes change only separator, heading spelling, stray spaces, number formatting, currency case, Excel serial dates, the date format you choose, and line grouping. It never edits a contact, description, invoice number, amount digits, account code digits or tax type.
- Not checked: that Xero will accept the file today, that contacts, accounts, tax rates and currencies exist, that an invoice number is unused, and anything Xero changes in its importer. Import one or two invoices first.
Common questions
Why does my Xero sales invoice CSV import fail?
The usual causes are a date in a different order from your organisation's date setting, an invoice whose lines disagree on contact or dates, a missing required column or empty required cell, a Tax Type that is a percentage instead of a tax rate name, an Account Code that is the account's name rather than its code, amounts with a currency symbol or decimal comma, and an Excel save that turned numbers into scientific notation. This tool tests each of them and names the line.
How do I check a Xero invoice CSV before importing it?
Paste the file or drop it onto this page. It reads the header against the sales invoice template, groups lines by invoice number, and lists every problem with its line number as errors, warnings and notes. Nothing is uploaded.
Why does Xero say my dates are invalid?
Xero reads dates in the format set for your organisation, so 03/04/2026 is 3 April in one organisation and March 4 in another. A file mixing 27/11/2026 and 11/27/2026 cannot satisfy either. This tool detects the order your file uses, flags real conflicts, and converts to DD/MM/YYYY, MM/DD/YYYY, YYYY-MM-DD or D MMM YYYY when the source order is certain.
How many invoice lines can I import into Xero at once?
The help pages this tool was written from describe a limit of about 500 lines and a file size cap per import. The split option cuts a big file into parts of at most 500 lines and starts each new part at an invoice boundary so no invoice is separated. Check the current limit in Xero's help.
What should the Tax Type and Account Code columns contain?
Account Code is the code from your chart of accounts, such as 200, not the account's name. Tax Type is the name of a tax rate in your organisation, such as 20% (VAT on Income) or Tax Exempt, spelled exactly. Paste your chart of accounts, contacts and tax rate names in step 2 and the tool compares every line to them; without them it only lists the values used so you can compare by eye.
What does Apply safe fixes change?
Only things with one reasonable reading: the separator, template heading spelling, stray spaces around contacts, invoice numbers and codes, currency symbols and thousands separators in amounts, decimal commas, a percent sign in Discount, a .0 on an account code, lower-case currency codes, Excel serial dates, a chosen date format when the file's order is certain, and moving an invoice's lines together. It never edits a contact name, description, invoice number, amount digits, account code digits or tax type.
Is it safe to put my invoices into a web page?
The page runs in your browser, the file is read locally and nothing is uploaded; a test in the code asserts there are no network calls. Your own policies still decide what you may open in a browser.
What does this not check?
Whether Xero will accept the file today, whether contacts, accounts, tax rates and currencies exist in your organisation, whether an invoice number is already used in Xero, and anything Xero changes in its importer. A clean result is not a promise of success: import one or two invoices first.