1. Your contacts CSV
The file from a spreadsheet, a CRM or old accounting package export, or Xero's own contacts import template, saved as CSV.
Choose a file or paste the text, then click Check file.
Result
Contacts
| Line | Name | Phone | City |
|---|
Safe fixes
Split files
The model, and what it leaves out
- One required column:
*ContactNameis the only starred column in the template, and it must be filled on every row. - Names are unique: Xero compares contact names ignoring capitals and repeated spaces, so near-copies collide. Exact copies of a whole row are flagged separately and removed by safe fixes.
- One email per contact: the template has a single EmailAddress cell. A list separated by commas or semicolons is an error.
- Excel damage: phone, bank and tax numbers in scientific notation are unrecoverable and flagged; postal codes and phone numbers that lost a leading zero are flagged but never rewritten, because the tool cannot know the original.
- Payment terms: a day count from 0 to 31 plus one of DAYSAFTERBILLDATE, DAYSAFTERBILLMONTH, OFCURRENTMONTH or OFFOLLOWINGMONTH, both halves together.
- Discount is a percentage from 0 to 100, written as a bare number.
- Safe fixes change only the separator, heading spelling, stray spaces, a mailto: prefix, a percent sign or decimal comma in Discount, payment term capitals and exact duplicate rows. It never edits the letters of a name, an address, or a phone, bank or tax number.
- Not checked: that Xero will accept the file today, that a contact already exists, that tax code names, account codes and tracking categories exist, and anything Xero changes in its importer. Import a handful first.
Common questions
Why does my Xero contacts CSV import fail?
The usual causes are a missing *ContactName column or empty name cells, two rows whose names are the same once case and spacing are ignored, a cell holding two email addresses, payment terms outside the values Xero accepts, a Discount above 100 or written as a fraction, and an Excel save that turned phone or bank numbers into scientific notation. This tool tests each of them and names the line.
How do I check a Xero contacts CSV before importing it?
Paste the file or drop it onto this page. It reads the header against the contacts template, then lists every problem with its line number as errors, warnings and notes. Nothing is uploaded.
Does Xero allow two contacts with the same name?
No. Contact names must be unique, and Xero compares them without regard to capitals or repeated spaces, so Acme Ltd and ACME ltd collide. Add a town or branch to tell them apart, or merge the rows. This tool lists every pair with its line numbers.
Why did my phone numbers turn into 4.41175E+11?
Excel stored a long number in a cell formatted as General or Number and shortened it. The lost digits cannot be recovered from the file, so the tool flags the cell as an error and leaves it alone. Re-export from the source with the column set to Text.
Why did my ZIP codes lose their leading zero?
Excel reads 02108 as the number 2108. The tool flags four-digit postal codes on US addresses, because the original usually began with a zero, but it never rewrites a postcode itself.
What does Apply safe fixes change?
Only things with one reasonable reading: the separator, template heading spelling, stray spaces in any cell, a mailto: prefix on an email, a percent sign or decimal comma in Discount, lower-case payment terms, and exact duplicate rows. It never edits the letters of a name, an address, a phone, bank or tax number.
Is it safe to put my customer list 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 a contact already exists in your organisation, whether tax code names, account codes and tracking categories exist, and anything Xero changes in its importer. A clean result is not a promise of success: import a handful of contacts first.