To import Excel into Xero, download the Xero template for the record type (contacts, invoices, bills, chart of accounts or manual journals), copy the client's columns into it without renaming any heading, save the sheet as CSV, and import it from that record's screen. Invoices, bills and journals arrive as drafts to review and approve.
Which Xero records can you import from Excel?
Xero records you can import from Excel are the ones with a CSV import template. Xero's list covers contacts, invoices and credit notes, bills and credit notes, chart of accounts, manual journals, bank statements, budgets, fixed assets, inventory items and payroll employees. Each has its own template and screen; Xero has no single import for a whole data set.
Xero's Import data in to Xero article says items are imported one type at a time, that every type accepts CSV, and that a spreadsheet program such as Microsoft Excel can create or edit the file. The file formats in that article's table do not include an Excel workbook (.xlsx). Excel is where the data is shaped; CSV is what Xero takes.
The five templates below cover most of a client's bookkeeping spreadsheets. Each sample row is a fictional example.
| Template | Where the import lives | Required columns | Sample row (example) |
|---|---|---|---|
| Contacts | Contacts, All contacts, menu icon, Import | ContactName (the field Xero matches on) | Example Florist LLC, accounts@example.com |
| Sales invoices | Sales, Invoices, Import | ContactName, InvoiceNumber | Example Florist LLC, INV-0412, 1, 250.00, 200 |
| Bills | Purchases, Bills, New bill, Import from CSV | Contact Name | Example Paper Supply Co., EP-7731, 2, 45.00, 429 |
| Chart of accounts | Accounting, Chart of accounts, Import | Code, Name, Type, Tax Code | 429, General Expenses, Expense, Tax Exempt |
| Manual journals | Accounting, Manual journals, Import | Narration, Date, Amount, plus AccountCode on each line | Accrue March rent, 03/31/2027, 469, 1800.00 |
Sources for the table: Xero's articles Update or edit multiple contacts, Import customer invoices, Import bills and credit notes, Import a chart of accounts and Add, import and post manual journals. Most of those articles also give a size limit. Xero recommends no more than 500 items per invoice file and splitting bill files over 500 items. A chart of accounts file takes at most 1,000 rows including the header. A journal file built in Excel takes up to 300 lines.
Bank statements have their own template and rules, covered in required and optional columns in the Xero statement template. The full walkthrough for statements is in the Xero bank statement CSV import template post.
Filling a Xero import template from a client's Excel sheet
Filling a Xero import template means moving each of the client's columns into the matching Xero column, in Xero's file, under Xero's headings. Download the template from the record's import screen, keep every heading as it is, and paste the client's data beneath. Values that refer to Xero settings must be spelled exactly as Xero shows them.
The headings are fixed. Xero's invoice article says not to delete columns or change headings, because the import needs them. Its journal article says a changed heading makes the import fail. Columns for features the client does not use, such as tracking or foreign currency, can stay blank.
A client's sheet rarely lines up. Work through it column by column:
- Names. The client's "Customer" or "Vendor" column goes to ContactName. Xero's invoice article says the name must exactly match the contact in Xero, or a duplicate contact is created.
- Accounts. The client's category labels become Xero account codes. The journal article says to enter only the code, such as 200, not the account name. Build a lookup sheet from Xero's exported chart of accounts and use it to fill the AccountCode column.
- Tax. The TaxType column takes the tax rate's display name exactly as it appears in Xero's tax settings.
- Amounts. Invoice and bill prices go in UnitAmount, with Quantity beside them. The file must be all tax-inclusive or all tax-exclusive, and the choice is made on the import screen. Journal amounts go in one Amount column, with debits positive and credits negative.
- Dates. The US bills article and the invoice article give DD/MM/YYYY. The US journal article gives mm/dd/yyyy or mmm dd yyyy, such as 06/30/2026. Use the format the article for that template states.
Date order is an easy error to miss, because a day-month swap still looks like a valid date for the first twelve days of each month. The causes and fixes are covered in why Xero misreads dates in a bank statement CSV, and they apply to these templates too.
Contacts have one extra route. Xero's Export contacts from Xero article says the export file has the same columns as the contact import template. Exporting first gives the template with the client's existing contacts already in it, which helps when updating in bulk. The update article adds that changing a ContactName in that file creates a new contact rather than renaming the old one.
Saving the Excel sheet as a CSV that Xero accepts
Saving an Excel sheet as a CSV that Xero accepts means one sheet, saved through File and Save As with a CSV file type, with account codes and long numbers kept as text. Excel saves only the active sheet, drops formatting, and can strip leading zeros. Check the CSV before importing, not after Xero reports errors.
A CSV holds one sheet of plain values, so put the import data on its own sheet and make it the active one before saving. What Excel does to leading zeros, long numbers and dates is covered in what Excel does to dates and account numbers on open, and the choice between the two formats in should accounting exports be XLSX or CSV.
Xero's own articles add four rules for its templates:
- File extension. The journal article asks for the .csv extension, such as 2019Journals.csv.
- Account codes as text. The chart of accounts article says the Code column should be formatted as text, and warns that Excel removes leading zeros from account codes in an exported chart of accounts CSV.
- Bank account numbers. The contacts update article suggests hyphens in long bank account numbers so Excel does not convert them to scientific notation.
- Non-English characters. The chart of accounts article says a file with non-English characters should be saved as a text file in Excel so those characters are kept, then imported through the same CSV import.
Before importing, open the saved CSV in a text editor and check that codes still have their zeros, dates read in the order the template asks for, and no totals row or blank rows sit at the bottom.
Importing sales invoices and bills into Xero from a spreadsheet
Importing sales invoices and bills into Xero from a spreadsheet uses one row per invoice line. Rows that share an invoice number become lines of one invoice or bill. Everything imports as a draft, so nothing posts to the ledger until someone reviews and approves it.
Xero's invoice article gives the import steps: in the Sales menu, select Invoices, then Import, browse to the CSV, choose whether to update contact address details, choose tax-inclusive or tax-exclusive prices, and import. Review the message, then Complete Import, or Go Back to fix errors. The bills article uses Purchases, Bills, New bill, then Import from CSV, with the same review step.
Grouping is by number. The invoice article says each invoice needs a unique number, rows with the same number belong to one invoice, and a number that already exists in Xero is not imported. The bills article goes further: rows with the same reference are combined even if the contact name differs, so a reference may repeat only for lines of the same bill.
A three-line bill, grouped by invoice number
This bill from a fictional supplier shows how three rows become one draft bill. Account codes are examples from a sample chart, and dates use the DD/MM/YYYY format the US bills article gives. The headings below follow the bills article's spelling; use them exactly as the downloaded template has them.
| Contact Name | Invoice Number | Invoice Date | Due Date | Description | Quantity | Unit Amount | Account Code | Tax Type |
|---|---|---|---|---|---|---|---|---|
| Example Paper Supply Co. | EP-7731 | 05/03/2027 | 04/04/2027 | Copy paper, case | 2 | 45.00 | 429 | Tax Exempt |
| Example Paper Supply Co. | EP-7731 | 05/03/2027 | 04/04/2027 | Toner cartridge | 1 | 118.00 | 429 | Tax Exempt |
| Example Paper Supply Co. | EP-7731 | 05/03/2027 | 04/04/2027 | Delivery | 1 | 15.00 | 425 | Tax Exempt |
Xero reads these as one bill, EP-7731, with three lines totaling 223.00. If a fourth row for a different supplier also carried EP-7731, the bills article says it would be combined into the same bill. Prefix references with a supplier code when two suppliers use similar numbering.
After the import, approve the drafts. The invoice article adds that invoices dated before the organisation started using Xero call for an update to conversion balances once approved. Source PDFs can be attached to the drafts afterward; the steps are in how to attach a document to a Xero transaction or contact.
Why does Xero reject rows from an Excel import?
Xero rejects or alters rows from an Excel import when a value does not match what Xero already holds: an account code not in the chart, a tax rate name spelled differently, a contact name that differs, a duplicate invoice number, or a renamed heading. The import message lists the problems so the file can be fixed and imported again.
What Xero's articles say happens for each cause:
- Account codes. The invoice article says AccountCode, TaxType, TrackingName, TrackingOption, Currency and BrandingTheme values must be entered exactly as they appear in Xero, otherwise the information is not imported. A code missing from the chart is the usual cause.
- Tax rates. In a chart of accounts import, rates that are not in Xero default to Tax Exempt (0%), so the row imports but with the wrong rate. In a journal import, a row with no tax rate imports, but the journal cannot post until one is added.
- Contact names. On bills and invoices a name that does not match an existing contact is not rejected. A new contact is created instead, which is worse, because the duplicate passes silently.
- Invoice numbers. An invoice number already in Xero is not imported.
- Headings. Renamed or deleted headings stop the import.
- Journal balance. Total debits must equal total credits before a journal can post.
The chart of accounts import shows the most detail. Its Import Summary lists accounts with errors, and View descriptions of all errors and changes gives a line number and reason for each. Line 1 is the heading row, so line 2 is the first account.
Fix errors in the Excel source, save a fresh CSV, and import again. Editing the CSV directly works for one typo, but the next import from the same source will repeat it.
When an Excel import into Xero should wait
An Excel import into Xero should wait until the settings it refers to exist. Contacts, account codes, tax rates, tracking categories and currencies come first. An import run before them either drops the values or, for contacts, creates duplicates that someone has to merge later.
Hold the import when any of these is true:
- Contacts do not match. Compare the client's names with a Xero contact export. Import or fix contacts first, then invoices and bills.
- Account codes are missing. Every AccountCode in the file should exist in the chart. Import the chart of accounts first if the client is new to Xero.
- Tracking is not set up. Xero's contacts article says tracking categories must be set up in Xero before they can be imported.
- A currency is not added. The invoice and bill articles say a foreign currency must be added in Xero first.
- Conversion balances are unsettled. The chart of accounts article says balances in that file import as conversion balances and overwrite existing ones. Leave the Balance column blank unless that is the intent.
Clients arrive in Xero from other systems, too. A firm converting a QuickBooks client should read how to convert QuickBooks Desktop to Online and what an Online to Desktop export carries to see which lists come out of QuickBooks in a usable state before mapping them to these templates.
The spreadsheet itself often starts as a pile of vendor invoices and receipts. Schema CPA reads invoices, receipts and statements and exports the rows to Excel or CSV, which the firm can then copy under Xero's headings; a direct Xero connection is on its roadmap and does not exist today. The hours calculator on the homepage estimates what keying those rows by hand costs a firm now.