Bulk Import Invoices into Xero from a Spreadsheet

Xero has no native spreadsheet invoice import, and its CSV import stops at the first bad row.

Why Xero's own import falls short

Xero accepts a CSV for invoices, but the format is narrow and unforgiving. It exposes a limited set of fields, gives little detail when a row is wrong, and abandons the run rather than reporting every problem at once. For a file of any size that means repeated upload attempts, each one surfacing a single new error.

The fix is to validate the whole sheet against your live Xero organisation first, correct everything in one pass, and only then write.

Lay out one row per invoice line

Multi-line invoices are built from consecutive rows sharing a document reference. Keep these as separate columns:

  • Contact name, invoice date, and due date.
  • Description, quantity, unit amount, and account code per line.
  • Tax rate, currency, and an invoice number or reference to group lines.

Use one currency convention throughout and avoid formulas that resolve to empty strings, which read as blank cells rather than as zero.

Validate before anything is written

  1. Resolve every contact against the organisation's live contact list.
  2. Check account codes and tax rates against the live chart of accounts, not a copy pasted from an old file.
  3. Confirm dates parse, amounts are numeric, and each document's lines total what you expect.
  4. Check document numbers that already exist, so an import updates rather than duplicates.

A validation pass should change nothing in Xero. Errors belong on the offending cells, so you can fix the sheet and run it again.

Push a small batch first

Import two or three documents, then open them in Xero and check totals, tax treatment, contact match, and the assigned document numbers. Once one batch is right, the rest of the validated rows will behave the same way. Keep the returned document numbers and links in the sheet as audit evidence.

Know what can safely be updated

Only draft and submitted documents should ever be updated by a number match. Once a document is authorised, paid, or later in its lifecycle, an import must leave it alone. If you need to correct an authorised invoice, do it in Xero, not through a bulk import. See how to re-import Xero invoices without creating duplicates for the full breakdown of what makes a re-import safe.

Importing bills or contacts instead?

Bills use a different template with a supplier field and expense-account tax rates, not the invoice fields covered here. See how to bulk import bills into Xero from a spreadsheet. Building or cleaning up the contact list first? See how to bulk import contacts into Xero from a spreadsheet.

Validate against your live Xero organisation

Bulk Importer for Xero checks every row against your real chart of accounts, tax rates, currencies, and contacts before creating invoices, bills, or contacts.

See Bulk Importer for Xero