Xero Import Spreadsheet Validation Checklist

Catch referential and accounting errors while they are still spreadsheet rows.

Why one error at a time is the real problem

Xero's CSV import reports the row it stopped on, not every row that would fail. A file with a dozen unrelated problems can take a dozen upload attempts to clear, and each attempt risks partially importing what came before the failure. Validating the whole file first turns that into a single correction pass.

Reference checks

  • Contact names match active contacts in the target organisation, and new contacts are intended rather than typos of existing ones.
  • Account codes exist in the live chart of accounts for this organisation, not an older or different one.
  • Tax rates are ones this organisation actually has, and the tax treatment matches the account type.
  • Currency is enabled on the organisation and correct for the document.
  • Document numbers and references are not already in use, unless an update is what you intend.

Row checks

  • Required headers appear exactly once and are spelled consistently.
  • Dates parse as real dates, and due dates fall on or after invoice dates.
  • Amounts and quantities are numeric, with no stray currency symbols or thousands separators.
  • Each document's lines total the expected subtotal, tax, and gross amount.
  • Blank rows, formulas returning empty strings, and stale hidden values are removed.
  • Lines meant to belong to one invoice share the same grouping reference and sit in consecutive rows.

Update safety

Only draft and submitted documents are safe to update by number match. Treat authorised, paid, voided, and later-stage documents as read only for import purposes. If a validation pass reports that a matched document is no longer editable, correct it in Xero directly rather than forcing the import. See how to re-import Xero invoices without creating duplicates for more on this.

Validating contacts specifically

This checklist applies to invoices, bills, and contact rows alike, but a contact import has its own upsert-key question: name or contact number. See how to bulk import contacts into Xero from a spreadsheet for that case.

Safe import sequence

  1. Run a read-only validation over the whole sheet.
  2. Fix every reported cell, then validate again until clean.
  3. Push a small representative batch.
  4. Verify totals, tax, and contact matches in Xero.
  5. Continue with the rest, keeping document numbers and links in the sheet for audit.

Run these checks against live Xero data

Bulk Importer for Xero resolves references against your real organisation and reports row-level errors as cell notes before anything is written.

See Bulk Importer for Xero