, `£`, `€`, `(`, `)`, `,` inside number fields, or any text like `nil` or `N/A`\n3. Use [SplitForge Data Cleaner](/tools/data-cleaner) → Find & Replace to strip all currency symbols and comma separators from amount columns in one pass\n4. Convert any parenthetical negatives `(500.00)` to negative decimals `-500.00`\n5. Verify the cleaned amounts look correct, then re-import\n\n**Edge case:** If your amounts use a comma as a decimal separator (common in European exports), you'll also need to swap commas to periods. Our guide on [fixing CSV delimiter and encoding issues](/blog/csv-import-failed-encoding) covers this in detail.\n\n---\n\n## Error 5: Duplicate Reference Number\n\nXero rejects any invoice, bill, or transaction with a reference number that already exists in your books. This error is most common when re-importing after a partial failure, or when migrating historical data that overlaps with transactions already entered manually.\n\n**Fix — Step by Step:**\n\n1. Note which reference numbers are failing (Xero will show them in the error summary)\n2. Search for each reference in Xero (Business → Invoices, use the search bar)\n3. If the existing transaction is correct, delete the duplicate row from your CSV\n4. If the existing transaction is wrong, void it in Xero first, then re-import\n5. For bulk historical migrations, append a prefix to all reference numbers (e.g., `HIST-INV-001`) to avoid clashes\n\n---\n\n## Error 6: Tax Rate Not Found\n\nXero validates tax rate labels against the tax rates configured in your account settings. If your CSV says `GST 10%` but Xero has it configured as `GST on Income`, the row fails.\n\nRegional variation is significant here. Australian, New Zealand, UK, and US Xero accounts all have different default tax rate names.\n\n**Fix — Step by Step:**\n\n1. In Xero, go to **Accounting → Tax Rates** and note the exact name of each active rate\n2. In your import CSV, find every unique value in your tax rate column\n3. Replace each value with the exact Xero label (exact wording, exact capitalisation)\n4. If a tax rate doesn't exist in Xero, create it before importing\n5. Re-import after all tax rate values are corrected\n\n**Note:** Xero's exact tax rate labels vary by region and account configuration. If you're unsure, export a sample transaction from Xero and check the exact label it uses.\n\n---\n\n## Error 7: Column Headers Don't Match\n\nXero's importers are template-specific. Bank statement imports, invoice imports, and contact imports each require a different set of column headers in a specific format. Adding extra columns, renaming required headers, or changing capitalisation causes the import to fail or silently skip columns.\n\n**Fix — Step by Step:**\n\n1. Download the official Xero import template for your import type from the Xero Help Centre\n2. Open both the template and your CSV side by side\n3. Rename your column headers to match the template exactly — same spelling, same capitalisation, same order\n4. Remove any columns not in the template (Xero ignores extra columns in some importers but rejects them in others)\n5. Re-import using the corrected headers\n\n**Common mistake:** The \"Description\" column in some Xero templates is case-sensitive. `description` will fail where `Description` is required. Check the template carefully.\n\n[Screenshot: Xero template column headers vs custom CSV headers showing mismatch]\n\n---\n\n## Fix Multiple Errors at Once\n\nIf your CSV has several of the errors above, fixing them one at a time is slow. The most efficient approach is to clean the entire file in a single pass before re-importing.\n\n**Bulk fix workflow:**\n\n1. Upload your CSV to [SplitForge Data Cleaner](/tools/data-cleaner) — your file never leaves your browser\n2. Strip currency symbols and comma separators from amount columns\n3. Reformat date columns to match your Xero region\n4. Standardise contact names against your Xero contacts export\n5. Remove or flag duplicate reference numbers\n6. Download the cleaned file and import to Xero\n\nThis typically takes under five minutes for files up to 50,000 rows. For a full walkthrough of CSV cleaning before platform imports, see our [complete guide to why CRMs reject CSV imports](/blog/why-crm-rejects-csv-imports). If your Xero errors relate to Tax ID formatting, our [Tax ID format fix guide](/blog/fix-tax-id-format-invalid-accounting-csv) covers accounting software validation in detail.\n\nFor a broader overview of CSV import errors across all platforms, see our [complete CSV import errors guide](/blog/csv-import-errors-complete-guide).\n\n---\n\n## Additional Resources\n\n**Official Xero Documentation:**\n- [Xero Help Centre — Import a CSV file](https://central.xero.com/s/article/Import-a-CSV-file) — Official import guide with template downloads\n- [Xero Help Centre — Fix import errors](https://central.xero.com/s/article/Fix-errors-when-importing-bank-transactions) — Bank statement import troubleshooting\n\n**Technical Standards:**\n- [RFC 4180: Common Format and MIME Type for CSV Files](https://datatracker.ietf.org/doc/html/rfc4180) — Official CSV specification\n- [Unicode Consortium: UTF-8 Encoding](https://unicode.org/faq/utf_bom.html) — Encoding standard and BOM guidance\n\n**Related Guides:**\n- [ISO 8601: Date and Time Format](https://www.iso.org/iso-8601-date-and-time-format.html) — International date format standard\n- [W3C: Character Encoding Recommendations](https://www.w3.org/International/questions/qa-choosing-encodings) — Encoding best practices for data files\n\n**SplitForge Guides:**\n- [Finance CSV Data Prep: Fix Accounting Import Errors Safely](/blog/finance-csv-data-prep-complete-guide) — comprehensive guide covering Xero, QuickBooks, NetSuite, Stripe, and bank export errors across all platforms\n- [Split CSV for Xero: 100,000-Row Limit Workaround](/blog/xero-csv-row-limit-split) — strategies for large bank statement exports that exceed Xero's import row cap\n\n> **Tested:** Xero bank statement, invoice, and contact importers. Errors reproduced in Xero AU, UK, and US regional settings. March 2026.\n\n---\n\n## FAQ\n\n### Why does Xero keep saying \"we couldn't import your file\" with no detail?\n\nThis generic error almost always means your column headers don't match Xero's template exactly. Download the official template from Xero's Help Centre for your specific import type (bank statements, invoices, contacts) and copy the exact header names into your file. Even one misspelled or differently capitalised header can trigger this message.\n\n### Does Xero accept CSV files with semicolon delimiters?\n\nNo. Xero's importer requires standard comma-delimited CSV files. If your file uses semicolons (common in European exports), you need to convert the delimiter to commas before importing. Our [CSV delimiter fix guide](/blog/csv-import-failed-delimiter-problem) covers the conversion process.\n\n### Why does my date format work in Excel but fail in Xero?\n\nExcel interprets dates based on your computer's regional settings and often displays them correctly even when the underlying format doesn't match. Xero validates the raw text in the CSV file, not Excel's interpreted display. Open your file in a text editor to see exactly what format the dates are stored in, then reformat to match your Xero region settings.\n\n### Can I import a CSV with more columns than Xero's template?\n\nIt depends on the import type. Some Xero importers silently ignore extra columns. Others reject the file entirely. The safest approach is to remove all columns not in the official template before importing. Extra columns can also cause the importer to misread which column contains which data.\n\n### Why do my amounts show as zero after a successful Xero import?\n\nThis usually means the amount column contained symbols or formatting that Xero couldn't parse — so it defaulted to zero instead of rejecting the row. Check the original file for currency symbols, commas inside numbers, or extra spaces around amounts. Clean the column and re-import to correct the affected rows.\n\n### How do I fix \"contact not found\" when the contact name looks identical?\n\nThe most common hidden causes are trailing spaces after the name, different apostrophe characters (straight vs. curly), or a non-breaking space that looks like a regular space but isn't. Open the CSV in a text editor, copy the contact name from your file, and paste it directly into Xero's contact search. If Xero doesn't find it, there's a hidden character difference. Use SplitForge Data Cleaner's trim and normalise function to clean the contact column.\n\n### Does Xero accept UTF-16 encoded CSV files?\n\nNo. Xero requires UTF-8 encoding. Files saved from Excel on Windows are often UTF-16 or Windows-1252 by default. Save your file with explicit UTF-8 encoding (without BOM) before uploading. Most text editors let you choose encoding when saving.\n\n---\n\n## Clean Your Xero Import File Now\n\n✅ Strip currency symbols and fix amount formatting in seconds\n✅ Reformat date columns to match your Xero region settings\n✅ Standardise contact names and remove duplicate references\n✅ Browser-based — your financial data never leaves your computer\n\n**[Clean Your CSV →](https://splitforge.app/tools/data-cleaner)**\n"};
Navigated to blog › xero-csv-import-errors-fix
Back to Blog
csv-import-guides

Fix Xero CSV Import Errors: 7 Common Causes and Exact Fixes (2026)

March 10, 2026
12
By SplitForge Team

Quick Answer

Xero CSV imports fail for seven predictable reasons.

The most common causes are date format mismatches (triggering "Date format not recognised"), account codes that don't exist in your chart of accounts, contact names that don't match exactly, duplicate reference numbers, amount fields containing currency symbols or commas, wrong column headers, and UTF-8 encoding errors. Every one of these is fixable in under five minutes without re-entering data manually.


Fast Fix (90 Seconds)

If your Xero import just failed, check these first:

  1. Open your CSV in a text editor (Notepad or TextEdit) — not Excel
  2. Check the first row — column headers must match Xero's template exactly, including capitalisation
  3. Check date column — Xero expects DD/MM/YYYY (AU/NZ/UK) or MM/DD/YYYY (US) depending on your region settings
  4. Check amount columns — remove all currency symbols ($, £, €) and comma thousand-separators
  5. Re-save as UTF-8 — File → Save As → Encoding: UTF-8 (no BOM)

If your file passes all five checks and still fails, continue below for the specific error fix.


TL;DR: Xero CSV imports fail most often because of date format mismatches, missing account codes, or amount fields with symbols. Clean your file client-side with SplitForge Data Cleaner, match Xero's exact column headers, and re-import. No re-entering data required.


Xero is doing its job correctly. Your file doesn't match what it expects, and the error message it gives you is often too vague to act on immediately.

You exported the bank statement, formatted the invoices, or built the journal — and now Xero is telling you it can't import the file without explaining which row is wrong or why. The deadline for the month-end close is today.

This guide covers the seven most common Xero CSV import errors, what they actually mean, and the exact steps to fix each one. Each error type was reproduced using Xero's bank statement, invoice, and contact importers, March 2026.


What Xero's Error Messages Actually Mean

"We couldn't import your file" — Generic catch-all for column header mismatch or wrong file format. Start by comparing your headers to Xero's downloadable template.

"Date format not recognised" — Your dates are formatted differently from your Xero region settings. A US-formatted date (04/30/2026) will fail in an AU/NZ/UK Xero account that expects (30/04/2026).

"Account [code] not found" — The account code in your CSV doesn't exist in your Xero chart of accounts. Either the code is wrong or the account hasn't been created yet.

"Contact [name] not found" — The contact name in your import file doesn't exactly match the name in your Xero contacts list. One extra space or different capitalisation causes this.

"Duplicate reference number" — Xero already has a transaction or invoice with that reference. It rejects the duplicate silently or with this message.

"Amount must be a number" — Your amount column contains currency symbols ($, £, €), comma separators (1,000.00), or text. Xero only accepts plain decimals (1000.00).

"Tax rate [name] not found" — The tax rate label in your file doesn't match an active tax rate in your Xero settings. Exact wording may vary by account region.

Rows import successfully but amounts show as zero — Amount column contained symbols or commas that Xero couldn't parse, so it defaulted to zero. Remove currency symbols and thousand-separators and re-import.


Xero CSV Import Error Quick Reference

Error / SymptomRoot CauseFix
"Date format not recognised"CSV dates don't match your Xero region settingReformat to DD/MM/YYYY (AU/NZ/UK) or MM/DD/YYYY (US)
"Account [code] not found"Code missing from chart of accountsAdd account in Xero or correct the code
"Contact [name] not found"Name doesn't exactly match Xero contactMatch spacing, punctuation, and capitalisation exactly
"Amount must be a number"Currency symbols or commas in amount fieldRemove $, £, €, and comma separators
"Duplicate reference number"Transaction already exists in XeroRemove duplicate row or void existing transaction
"Tax rate [name] not found"Tax label doesn't match Xero settingsReplace with exact label from Accounting → Tax Rates
"We couldn't import your file"Column headers or file format mismatchMatch official Xero template headers exactly
Amounts show as zero after importSymbols parsed as zero, no error shownStrip symbols and re-import affected rows

Table of Contents


This guide is for: Bookkeepers, accountants, and business owners importing bank statements, invoices, contacts, or journals into Xero via CSV.

Already know the error? Jump directly to the section for your specific message above.


Why Xero CSV Imports Fail

Xero's importer is strict by design. It validates every row against your account settings before accepting anything. A single formatting issue in one column — wrong date format, unrecognised account code, extra currency symbol — fails the entire row or the entire file.

Most competing tools (QuickBooks, FreshBooks) have more forgiving importers that try to interpret ambiguous data. Xero does not. This design choice prevents bad data from entering your books, but it means your CSV must be clean before you upload.

The seven errors below cover roughly 90% of Xero import failures seen in practice.


Error 1: Date Format Not Recognised

Xero's "Date format not recognised" error occurs when the dates in your CSV don't match your organisation's regional settings. AU, NZ, and UK accounts require DD/MM/YYYY. US accounts require MM/DD/YYYY. Any mismatch — even a single date in the wrong format — causes Xero to reject every row it can't parse.

The problem: most exports from banks, payment processors, or Excel default to a different format than your Xero region. A file with 04/30/2026 will fail instantly in a UK Xero account expecting 30/04/2026.

Fix — Step by Step:

  1. Open your CSV in a text editor (not Excel — Excel auto-reformats dates when you open the file)
  2. Find your date column and check the format of the first five rows
  3. If the format doesn't match your Xero region, use SplitForge Data Cleaner to reformat the entire column at once
  4. Select your date column, choose "Reformat Date", and set the output format to match your Xero region
  5. Download the cleaned file and re-import

Prevention: When exporting from your bank or payment processor, check whether there's a date format option. Set it to match your Xero region at the source. This eliminates the conversion step entirely.

For more on date format issues in CSV files, see our guide to fixing mixed date formats in CSV columns.

[Screenshot: Date column in CSV showing MM/DD/YYYY vs DD/MM/YYYY comparison]


Error 2: Account Code Not Found

Xero's invoice and journal importers require an account code that matches exactly what exists in your chart of accounts. If you type 200 but the account is coded 200A in Xero, the row fails.

This error is common when importing from another accounting system, building a CSV manually, or when account codes have been updated in Xero since the template was last downloaded.

Fix — Step by Step:

  1. In Xero, go to Accounting → Chart of Accounts and export your full account list
  2. Open your import CSV and your account list side by side
  3. Find every account code in your import file and verify it exists exactly in the export
  4. For codes that don't match, either correct the code in your CSV or create the missing account in Xero first
  5. Re-import after all codes are verified

Common mistake: Using account names instead of codes. Xero's importer requires the code (e.g., 200) not the name (e.g., Sales). Check your template to confirm which column expects which.


Error 3: Contact Not Found

Xero's "Contact [name] not found" error appears when the contact name in your CSV doesn't exactly match an existing contact in Xero. One extra space, different capitalisation, or a single punctuation difference — Acme Corp vs Acme Corp. — fails the row. Xero does not fuzzy-match contact names.

Fix — Step by Step:

  1. Export your Xero contacts list (Contacts → All Contacts → Export)
  2. In your import file, identify the contact name column
  3. Run a find-and-replace or use SplitForge Data Cleaner to standardise contact names against your exported list
  4. For new contacts, either create them in Xero before importing or check whether your import type allows creating contacts on import (bank statement imports do not; invoice imports do in some cases)
  5. Re-import after names are aligned

Tip: Use the Data Cleaner's fuzzy match feature to catch near-matches (e.g., Smith & Sons vs Smith and Sons) before they cause failures.

[Screenshot: Contact name mismatch — "Acme Corp" vs "Acme Corp." in Xero contacts]


Error 4: Amount Must Be a Number

Xero's amount fields accept only plain decimal numbers. Anything else — currency symbols, comma separators, parentheses for negatives, or the word "nil" — fails validation.

This is the most common error when importing bank statements exported directly from a bank portal. Banks format amounts for human readability ($1,234.56) not for software import (1234.56).

Fix — Step by Step:

  1. Open your CSV in a text editor and locate your amount columns
  2. Check for: $, £, , (, ), , inside number fields, or any text like nil or N/A
  3. Use SplitForge Data Cleaner → Find & Replace to strip all currency symbols and comma separators from amount columns in one pass
  4. Convert any parenthetical negatives (500.00) to negative decimals -500.00
  5. Verify the cleaned amounts look correct, then re-import

Edge case: If your amounts use a comma as a decimal separator (common in European exports), you'll also need to swap commas to periods. Our guide on fixing CSV delimiter and encoding issues covers this in detail.


Error 5: Duplicate Reference Number

Xero rejects any invoice, bill, or transaction with a reference number that already exists in your books. This error is most common when re-importing after a partial failure, or when migrating historical data that overlaps with transactions already entered manually.

Fix — Step by Step:

  1. Note which reference numbers are failing (Xero will show them in the error summary)
  2. Search for each reference in Xero (Business → Invoices, use the search bar)
  3. If the existing transaction is correct, delete the duplicate row from your CSV
  4. If the existing transaction is wrong, void it in Xero first, then re-import
  5. For bulk historical migrations, append a prefix to all reference numbers (e.g., HIST-INV-001) to avoid clashes

Error 6: Tax Rate Not Found

Xero validates tax rate labels against the tax rates configured in your account settings. If your CSV says GST 10% but Xero has it configured as GST on Income, the row fails.

Regional variation is significant here. Australian, New Zealand, UK, and US Xero accounts all have different default tax rate names.

Fix — Step by Step:

  1. In Xero, go to Accounting → Tax Rates and note the exact name of each active rate
  2. In your import CSV, find every unique value in your tax rate column
  3. Replace each value with the exact Xero label (exact wording, exact capitalisation)
  4. If a tax rate doesn't exist in Xero, create it before importing
  5. Re-import after all tax rate values are corrected

Note: Xero's exact tax rate labels vary by region and account configuration. If you're unsure, export a sample transaction from Xero and check the exact label it uses.


Error 7: Column Headers Don't Match

Xero's importers are template-specific. Bank statement imports, invoice imports, and contact imports each require a different set of column headers in a specific format. Adding extra columns, renaming required headers, or changing capitalisation causes the import to fail or silently skip columns.

Fix — Step by Step:

  1. Download the official Xero import template for your import type from the Xero Help Centre
  2. Open both the template and your CSV side by side
  3. Rename your column headers to match the template exactly — same spelling, same capitalisation, same order
  4. Remove any columns not in the template (Xero ignores extra columns in some importers but rejects them in others)
  5. Re-import using the corrected headers

Common mistake: The "Description" column in some Xero templates is case-sensitive. description will fail where Description is required. Check the template carefully.

[Screenshot: Xero template column headers vs custom CSV headers showing mismatch]


Fix Multiple Errors at Once

If your CSV has several of the errors above, fixing them one at a time is slow. The most efficient approach is to clean the entire file in a single pass before re-importing.

Bulk fix workflow:

  1. Upload your CSV to SplitForge Data Cleaner — your file never leaves your browser
  2. Strip currency symbols and comma separators from amount columns
  3. Reformat date columns to match your Xero region
  4. Standardise contact names against your Xero contacts export
  5. Remove or flag duplicate reference numbers
  6. Download the cleaned file and import to Xero

This typically takes under five minutes for files up to 50,000 rows. For a full walkthrough of CSV cleaning before platform imports, see our complete guide to why CRMs reject CSV imports. If your Xero errors relate to Tax ID formatting, our Tax ID format fix guide covers accounting software validation in detail.

For a broader overview of CSV import errors across all platforms, see our complete CSV import errors guide.


Additional Resources

Official Xero Documentation:

Technical Standards:

Related Guides:

SplitForge Guides:

Tested: Xero bank statement, invoice, and contact importers. Errors reproduced in Xero AU, UK, and US regional settings. March 2026.


FAQ

This generic error almost always means your column headers don't match Xero's template exactly. Download the official template from Xero's Help Centre for your specific import type (bank statements, invoices, contacts) and copy the exact header names into your file. Even one misspelled or differently capitalised header can trigger this message.

No. Xero's importer requires standard comma-delimited CSV files. If your file uses semicolons (common in European exports), you need to convert the delimiter to commas before importing. Our CSV delimiter fix guide covers the conversion process.

Excel interprets dates based on your computer's regional settings and often displays them correctly even when the underlying format doesn't match. Xero validates the raw text in the CSV file, not Excel's interpreted display. Open your file in a text editor to see exactly what format the dates are stored in, then reformat to match your Xero region settings.

It depends on the import type. Some Xero importers silently ignore extra columns. Others reject the file entirely. The safest approach is to remove all columns not in the official template before importing. Extra columns can also cause the importer to misread which column contains which data.

This usually means the amount column contained symbols or formatting that Xero couldn't parse — so it defaulted to zero instead of rejecting the row. Check the original file for currency symbols, commas inside numbers, or extra spaces around amounts. Clean the column and re-import to correct the affected rows.

The most common hidden causes are trailing spaces after the name, different apostrophe characters (straight vs. curly), or a non-breaking space that looks like a regular space but isn't. Open the CSV in a text editor, copy the contact name from your file, and paste it directly into Xero's contact search. If Xero doesn't find it, there's a hidden character difference. Use SplitForge Data Cleaner's trim and normalise function to clean the contact column.

No. Xero requires UTF-8 encoding. Files saved from Excel on Windows are often UTF-16 or Windows-1252 by default. Save your file with explicit UTF-8 encoding (without BOM) before uploading. Most text editors let you choose encoding when saving.


Clean Your Xero Import File Now

Strip currency symbols and fix amount formatting in seconds
Reformat date columns to match your Xero region settings
Standardise contact names and remove duplicate references
Browser-based — your financial data never leaves your computer

Continue Reading

More guides to help you work smarter with your data

ai-data-prep

AI-Ready Data Checklist: 10 Things to Verify Before Upload (2026)

Before uploading to ChatGPT, Claude, or a fine-tuning API, run through this 10-point checklist. UTF-8 encoding, clean headers, PII removed, size within limits.

Read More
ai-data-prep

Convert Excel to JSON for AI APIs and LLM Pipelines (2026)

AI APIs and LLM pipelines expect JSON, not spreadsheets. Fine-tuning needs JSONL; direct prompts take arrays. Convert locally — no upload, no conversion server.

Read More
ai-data-prep

Prepare Data for AI: The Complete Guide (Privacy-First, 2026)

How to prepare a CSV or Excel file for ChatGPT, Claude, or an AI API — encoding, PII, format, size, and privacy. The complete local-first prep workflow.

Read More