Not the job you came for? Tell me what you need
Six things that break an invoice or bill import from a spreadsheet. The first one is the worst, because the import succeeds.
This is the one to know about. Put a code in the file that doesn't exist in your chart of accounts and Xero does not reject it. The import reports success, every line comes in, and the account field is blank on all of them.
Confirmed in a Xero Demo Company on 7 August 2026: code 210
doesn't exist there, the import succeeded, and every line arrived with no
account. The totals were right, the grouping was right, and the bills
couldn't be approved.
What to do: check the code against your own chart before you import, not after. In Xero it's Accounting → Chart of accounts → Export. The page's own breadcrumb says Settings, but that isn't how anyone actually navigates there.
"A bill is an invoice with the direction flipped" is the assumption everybody makes, and it produces a file Xero rejects outright. The bill template is 24 columns to the sales invoice's 27. No Reference, no Discount, no BrandingTheme, and Description loses its asterisk.
What to do: download the blank template for the exact document you're importing, from that import screen, and match its header row. Not last year's, and not the other one.
Xero stars *Description on the sales invoice template, which
means a line with an empty one fails. Plenty of perfectly good
spreadsheets have no description column at all — a list of amounts against
dates and customers is a normal way to keep books.
What to do: put something in every line. A single stand-in word repeated down the column is fine and makes no claim about your data; a blank is what stops the import.
It isn't in the file. It's a dropdown on Xero's own import screen, and nothing in your spreadsheet influences it. Get it wrong and every total moves by the GST — the import still succeeds, and the numbers are all wrong by a consistent 10%.
What to do: look at the dropdown deliberately rather than accepting what it happens to be set to. Then check one invoice against the spreadsheet before you approve the batch.
Opening a CSV in Excel and saving it is enough. Two things happen routinely and neither is announced:
| Leading zeros disappear |
Invoice 0012 becomes 12. So does a
0800 postcode and an 0412 mobile prefix.
Excel reads a padded number as a number, and a number doesn't have a
leading zero.
What that costs, and what survives it.
|
| Cents get dropped from the display |
A column formatted to zero decimal places shows 730
where the value is 730.40. Save it out as CSV and the
rounding can become real.
|
What to do: if you can, export from the source system straight to the file you import, without opening it in between. If you must open it, use Excel's Text Import so you can set the code columns to Text, and check a padded reference at the bottom of the file as well as the top.
A line-item export writes the customer, date and order number once and leaves them blank on the continuation rows. Import that as-is and you either get one invoice per line, or rows that fail for having no customer.
Xero groups lines onto one invoice by invoice number. If your file has an order or reference number, that's your grouping column and it needs to be filled in on every row, not just the first of each group.
Everything arrives as a draft. Nothing posts to your ledger until you approve it, so an import you're unsure about is safe to look at and delete.
Xero warns you about duplicates. Re-importing the same file raises its own warning. That's Xero doing its job, not a sign you've broken something.
This site's Convert tab turns a spreadsheet into Xero's own template — sales invoices or supplier bills — and checks the things above rather than assuming them. Attach your exported chart of accounts and it names the account back to you as 429 — General Expenses rather than reading 429 back at you, and it refuses to build the file at all if the code isn't in your chart. Padded references stay padded. Every row becomes a line or a named rejection, and the money in the file plus the money left out equals the column it came from.
It's free, nothing is stored, and the file never leaves Australia. Convert a spreadsheet for Xero.