To import contacts into Xero, prepare a CSV with one contact per row and the name in the ContactName column, then open Contacts, All contacts, choose Import from the menu and select the file. Customers and suppliers go in the same file. Xero treats any ContactName it doesn't recognize as a new contact, so names decide whether you get duplicates.
What goes in the Xero contacts CSV?
A Xero contacts file needs one required value per row, the ContactName. Everything else is optional: email, phone, addresses, payment terms, default accounts and tax rates. The easiest starting file is an export of your existing contacts, from Contacts, All contacts and Export in the menu, because its headers are already the ones the import expects.
For a brand-new organisation with no contacts yet, use the template Xero offers on the import screen instead. Paste your own list under its headers and delete the example rows.
Here is an example file. The names and figures are made up for illustration.
| ContactName | EmailAddress | PhoneNumber | DueDateSalesDay | DueDateSalesTerm | PurchasesAccount |
|---|---|---|---|---|---|
| Harbor Dental Group | accounts@example.com | 1 503 555 0142 | 30 | Days After | |
| Lowell Street Bakery | owner@example.com | 1 503 555 0177 | 14 | Days After | |
| Cascade Paper Supply | billing@example.com | 1 360 555 0109 | 310 | ||
| Cobalt Utilities | 1 800 555 0190 | 445 |
The first two rows set invoice terms, which suits customers. The last two set a default purchases account by its code, which suits suppliers. A row can carry both if a contact is both.
Customer and supplier contacts in one Xero import
Xero keeps customers and suppliers in a single contact list, so there is no separate customer import or supplier import. A contact shows up as a customer once you raise a sale to it, and as a supplier once you enter a bill from it. One file can hold both kinds, side by side.
What makes a row behave like a customer or a supplier is the defaults you fill. Sales-side columns, such as invoice terms and the default sales account, shape the invoices you raise. Purchase-side columns, such as bill terms and the default purchases account, shape the bills you enter. Leave the other side blank.
Why does Xero create duplicate contacts on import?
Xero matches each row to an existing contact by its ContactName. Xero's guide to updating multiple contacts warns that changing anything in that column creates a new contact instead of updating the old one. A name spelled a little differently is, to Xero, a different contact.
Duplicates usually come from one of these:
- An extra word, such as "Harbor Dental" in Xero and "Harbor Dental Group" in the file.
- A trailing space, an extra period or "&" against "and."
- Importing a list from an old system into an organisation that already picked up contacts from bank reconciliation.
Before the import, export your current contacts and compare names with your file. Remove rows for contacts that already exist, or copy Xero's exact spelling into your file if you mean to update them.
Uploading the contact file from the Xero contacts screen
The import runs from the contacts list. You pick the file, tell Xero what to do with blank cells, review what it found and confirm. The blank-cell choice matters most when you are updating contacts that already have details, because one option can wipe existing information.
- In the Contacts menu, select All contacts.
- Open the menu icon at the top right and select Import.
- Select your saved CSV file.
- Choose how Xero treats empty fields: ignore them, keeping current details, or delete existing information in those fields.
- Select Next and review the contacts Xero is about to create or update.
- Select Complete Import.
For a first import into an empty organisation, either option works. When updating, choose to ignore empty fields unless you mean to clear them. Xero also notes that the delete option fails if any columns were removed from the file.
Contact columns that need exact Xero names
Several optional columns only import when they match something already set up in Xero. Default tax rates must use the exact tax rate name. Default sales and purchases accounts take the account code from your chart of accounts. Tracking categories and their options must exist in Xero before the import.
A few formats from the same Xero guide are easy to get wrong:
- PhoneNumber uses spaces between the country code, area code and number.
- BankAccountNumber should include hyphens, so a spreadsheet doesn't turn a long number into scientific notation.
- DueDateSalesDay and DueDateSalesTerm go together; fill both or neither. The bill-side pair works the same way.
- Website needs http:// at the start.
The same rule about matching names runs through Xero's other imports. Items need exact codes, as the guide to importing inventory items into Xero shows, and payments need the right invoice numbers, as the guide to importing payments into Xero explains.
Contact changes the Xero import can't make
The contact import adds and updates details, but Xero says it can't rename, archive, merge or restore contacts. Those changes are made in Xero one contact at a time. Renaming through the file creates a new contact and leaves the old one in place, which is how many duplicate lists start.
If you do find duplicates after an import, merge them in Xero itself, keeping the contact with the transactions attached. Bank lines matter here too: a clean contact list makes bank reconciliation quicker, because each statement line can be matched to a known name. Xero's statement import takes a CSV laid out the way it expects, and SimpleBankConvert is being built to produce that file from a PDF statement, with payee and reference in their own columns. If you also keep books in QuickBooks, its spreadsheet route is different; the guide to importing Excel into QuickBooks covers it.