Xero's CSV import fails in two different ways, and the second is the dangerous one. Sometimes Xero rejects the file with an error message (often a vague one with no row number). Other times it accepts the file, reports success, and silently imports the wrong data, with no warning at all.

This page lists both: the error messages Xero shows and what actually causes each one, then the silent errors that never produce a message. Each fix is something you can check before you re-upload. It is based on hands-on testing of Xero's live importer in June 2026.

Errors Xero shows you (the file is rejected)

These stop the import and usually give you a message, though the message is often less specific than you would like.

"[Field] cannot be empty" on every row

If Xero reports a required field empty on every single row, the values are almost certainly there, but Xero cannot see the column. Header names are case-sensitive and space-sensitive: "Contact Name" with a space and "contactname" in lower case both fail, and Xero then treats the column as missing and complains that it is empty on each row.

Fix: match Xero's header spelling exactly, with no spaces and the correct capitalisation (ContactName, InvoiceNumber, UnitAmount, and so on). The leading star is optional: ContactName and *ContactName both work. If only some rows error, the value really is missing on those rows, so fill them in.

"[Amount] could not be converted to a number"

This comes from a currency symbol in an amount column. Xero reads an amount by keeping the digits and the decimal point, so a value like £500.00 with the currency symbol attached fails to convert.

Fix: remove the currency symbol and leave just the number. You do not need to strip thousands separators: Xero accepts both commas (1,000.50) and spaces (1 234.56), and a leading minus sign for negatives. It is only the currency symbol that breaks it.

The date is rejected as invalid

Three things trigger a date error. An impossible calendar date such as 31/02/2026. An Excel date serial such as 45992 (which happens when Excel converts a date column to its internal number). And a real date read in the wrong region where the day makes it impossible, for example 25/03/2026 in an organisation set to US format, because there is no 25th month.

Fix: use real calendar dates, and avoid opening the CSV in Excel before import (Excel is what turns dates into serials). If the region is the issue, the dates are fine but your organisation's region setting does not match them, which is the same root cause as the silent date error below.

Every field imports as empty (wrong delimiter)

If the preview shows your whole row crammed into a single column, or you get a "cannot be empty" error on every row even though the values are clearly there, the file is not comma-separated. Xero splits only on commas, so a semicolon-separated file (the default from Excel in many European locales) or a tab-separated one parses as one big column and every field reads blank.

Fix: save the file as comma-separated CSV. In Excel, use "CSV UTF-8 (Comma delimited)" in the Save As dialog rather than the locale default.

The file will not import and the header is not recognised

If Xero cannot read the file at all and the columns never match, the encoding is likely UTF-16, which some bank portals and older tools produce. The null bytes in UTF-16 break Xero's header matching.

Fix: re-save as CSV with UTF-8 encoding. Contrary to a lot of advice online, ordinary single-byte encodings like Windows-1252 / Latin-1 import fine (accented characters come through correctly); it is specifically UTF-16 that fails.

A generic CSV or header error

A duplicate column heading (the same header name appearing twice) makes Xero reject the file with a generic error rather than a helpful one.

Fix: make sure every column heading is unique, then re-upload.

A server error, or the import stops partway, on a large file

Large invoice imports do not fail cleanly. Xero slows down as the file grows and then crashes partway through with a generic server error, so a big file can import the first few hundred invoices and silently stop. In our testing it died at around 600 invoices.

What matters is the number of invoices, not the number of rows. Xero groups rows into invoices by InvoiceNumber, so a 2,000-row file that is 400 multi-line invoices is fine, while 1,500 single-line invoices is not.

Fix: keep each file to 500 invoices or fewer, counting distinct invoice numbers rather than rows, and keep all rows of one invoice together. Our validator counts the invoices and can split an over-size file into batches for you.

Silent errors: the import succeeds but the data is wrong

These are the ones to worry about, because Xero gives no error. The file imports, the totals look plausible, and the data is wrong. You usually find out weeks later when something does not reconcile.

Your dates imported on the wrong day

The invoice importer has no date-format picker. It assumes your organisation's region and applies it silently. When every date in the file has a day of 12 or below (for example 06/03/2026), it could be read as DD/MM or MM/DD, and Xero just uses whichever your region is set to. If your organisation is US but the dates are really DD/MM, every date lands on the wrong day with no warning.

Fix: confirm your organisation's region setting matches the format your dates are actually in. The validator flags a file where every date is ambiguous and asks you to confirm the region before you import. (The bank statement importer is different: it forces you to choose a date format, so it cannot make this mistake.)

Your amounts came in 100 times too big

This is a decimal comma. A value like 1234,56 (the European convention) is read as 123456, because Xero treats the comma as a thousands separator and keeps only the digits and the dot. There is no dot, so the whole thing becomes a whole number one hundred times too large.

Fix: use a dot as the decimal separator (1234.56). If your spreadsheet exports comma decimals by default, change the export setting or run the file through the validator, which catches this and can correct it.

Your negative amounts imported as positive

Accounting software often shows negatives in parentheses, like (45.00). Xero reads input parentheses as nothing, so (45.00) imports as +45, and the sign is silently lost. A credit becomes a charge.

Fix: use a leading minus sign for negatives (-45.00) rather than parentheses.

An invoice imported under the wrong customer

On a multi-line invoice, you repeat the InvoiceNumber on every line. If those rows disagree on the ContactName (easy to do after a sort or a copy-paste), Xero does not reject the file. It keeps the contact from the first row and silently discards the rest, so the whole invoice can land on the wrong customer.

Fix: keep ContactName (and the dates) identical across every row that shares an invoice number.

A line imported with no tax

If you include a TaxType column, every cell in it must be filled. A blank TaxType cell imports that line with no tax at all, even on an invoice whose other lines are taxed. The amount lands and the tax silently does not. (Leaving the whole column out is fine: Xero then applies your default rate. It is a present-but-blank cell that causes the problem.)

Fix: give every line an explicit tax rate name that matches your Xero tax rates exactly (Accounting > Advanced > Tax rates). For genuinely untaxed lines, use a zero-rate name such as "No VAT" or "Zero Rated" rather than leaving the cell blank.

A line imported as zero

An empty Quantity does not stop the import. It imports as a zero, so the line comes in at £0 rather than erroring. The same can happen with a blank unit amount.

Fix: make sure every line has both a quantity and a unit amount before you import.

The fastest way to find the problem

Xero's import errors rarely tell you which row is at fault, and the silent errors give you nothing to go on at all. Rather than re-uploading and guessing, run the file through our free Xero CSV validator first. It checks all of the above in your browser (your file is never uploaded anywhere), shows you every issue with its row number and a fix hint, and can correct the mechanical ones (encoding, delimiter, header spelling where it is just wrong case or spacing, date and amount formats, oversize files) and hand you back a clean file to import.

When to stop fighting the CSV

If you are hitting these errors every time you import, the CSV path itself is the problem, not your file. EntryRocket takes whatever your system exports (CSV, Excel, PDF, XML, JSON) and imports it straight into Xero: no reformatting, no header renaming, no date conversion, no file splitting. A custom reader is built once around your exact file format and works automatically from then on.

Want a deeper reference on the format itself? Read the full Xero CSV import format guide, which covers what Xero expects (and quietly accepts) for each document type.