CSV is the format Xero uses for most of its native import features — invoices, bills, contacts, and bank statements. In theory, it's straightforward: prepare a CSV, upload it, and Xero creates the records. In practice, Xero is very particular about how that CSV is structured. One wrong column name, one date in the wrong format, and the entire import fails.
This guide covers the exact CSV format Xero expects for each document type, the most common errors people run into, and what to do when your data doesn't fit Xero's template.
Xero's CSV format for invoices and bills
Invoices and bills use the same import format in Xero, with a few field differences.
Required columns
The essential columns are:
- ContactName (must match an existing Xero contact exactly)
- InvoiceNumber (your invoice or bill reference)
- InvoiceDate (in your Xero region's date format)
- DueDate (in your Xero region's date format)
- Description (line item description)
- Quantity (number — typically 1 for simple invoices)
- UnitAmount (the line item amount, excluding tax)
- AccountCode (must match a Xero account code exactly)
Optional but commonly needed columns
- TaxType (must match your Xero tax rate name exactly)
- Currency (three-letter code, e.g., GBP, AUD, USD)
- Reference (an additional reference field)
- Discount (percentage discount on the line item)
Multi-line invoices
If an invoice has multiple line items, each line item is a separate row in the CSV. The ContactName and InvoiceNumber must be repeated on every row that belongs to that invoice. Xero groups rows into a single invoice when the InvoiceNumber matches.
Xero's CSV format for bank statements
Bank statement imports have a different, simpler format.
The two accepted structures
Xero accepts either three columns (Date, Description, Amount — where positive is money in and negative is money out) or four columns (Date, Description, Debit, Credit — where amounts are always positive).
A header row is required. Xero uses the first row to identify which column is which.
Date format
Date format must match your Xero organisation's region. DD/MM/YYYY for UK, Australia, and New Zealand. MM/DD/YYYY for the US. ISO format (YYYY-MM-DD) is not accepted. Named months (15-Mar-2026) are not accepted.
Xero's CSV format for contacts
Contact imports require Name as the only truly mandatory field. Optional fields include EmailAddress, FirstName, LastName, AccountNumber, BankAccountName, BankAccountNumber, BankAccountParticulars, TaxNumber, PhoneNumber, and address fields (AddressLine1 through AddressLine4, City, Region, PostalCode, Country).
The 7 most common Xero CSV import errors
1. Date format mismatch
This is the most frequent error. Your CSV has dates as DD/MM/YYYY but your Xero org is set to US region (MM/DD/YYYY), or vice versa. Xero either rejects the file or — more dangerously — silently misreads dates where the day value is 12 or below (for example, interpreting 06/03/2026 as June 3 instead of March 6).
Fix: check your Xero organisation's region setting under Settings > General Settings, and format dates to match.
2. Contact name doesn't match
Xero matches contacts by exact name. If your CSV says "Acme Ltd" but Xero has "Acme Ltd." (with a period) or "ACME LTD" (different case), the import will fail.
Fix: export your Xero contact list and cross-reference the exact names against your import file.
3. Tax code doesn't match
Your CSV uses "GST" but Xero expects "GST on Income" or "GST on Expenses". Tax rate names must match your Xero configuration exactly.
Fix: go to Accounting > Advanced > Tax Rates in Xero and use the exact names shown there.
4. Account code doesn't exist
The AccountCode in your CSV doesn't match any account in your Xero chart of accounts. Xero rejects the row.
Fix: check your chart of accounts and ensure the codes match exactly — including leading zeros if applicable.
5. Excel corrupted your CSV
This is a subtle one. You opened a CSV in Excel to check it, and Excel silently reformatted dates, stripped leading zeros from reference numbers, or changed number formatting. When you save and upload to Xero, the data is no longer in the expected format.
Fix: avoid opening CSVs in Excel before import. If you must edit, use a plain text editor or Google Sheets (which is less aggressive about reformatting).
6. Encoding issues
Your CSV was saved with Windows-1252 or another non-UTF-8 encoding. Special characters in descriptions (accents, currency symbols) display as garbled text in Xero.
Fix: save your CSV with explicit UTF-8 encoding. In Excel: Save As > CSV UTF-8.
7. File too large
Xero struggles with large CSV files. Imports over 500 rows often time out or fail.
Fix: split large files into batches of 500 rows or fewer.
When the CSV approach becomes impractical
Xero's CSV import is designed for straightforward, occasional imports. It works well when your data is already close to the right format and the volume is small.
It becomes impractical when:
- Your source data is in Excel, PDF, or XML rather than CSV (requiring conversion before every import)
- Your files come from multiple sources with different layouts (requiring different reformatting steps each time)
- You're doing this weekly or daily rather than occasionally
- Your files are large and need splitting
- The data needs transformation beyond simple column mapping (splitting costs, applying fees, converting currencies)
In these situations, the time spent preparing data for Xero's CSV format becomes the bottleneck.
The alternative: skip the CSV step entirely
EntryRocket accepts whatever file your system exports — CSV, Excel, PDF, XML, JSON — and imports the data directly into Xero. No reformatting, no column renaming, no date conversion, no file splitting.
A custom reader handles the mapping between your source format and what Xero needs. It's built once around your specific files and works automatically from that point forward.
If you're spending recurring time wrestling with Xero's CSV format requirements, the time savings from automated import are usually measured in hours per week rather than minutes.