How to import invoices into QuickBooks Online or Xero from a CSV

If you issue invoices outside your accounting software, whether from a billing tool, a spreadsheet or a practice-management system, at some point they need to get into the books. Retyping them is slow and error-prone. Both QuickBooks Online and Xero can import sales invoices from a CSV file, as long as the file is laid out the way they expect.

This guide goes through both layouts column by column. They're the same layouts Branded Invoices exports, so you can compare against its demo file. Software changes, so check the current template in your own file before a big import.

How invoice imports work

  • One row per invoice line. An invoice with three lines is three rows. Rows with the same invoice number are combined into one invoice.
  • Invoice-level fields repeat on every row: customer, invoice number, dates.
  • Amounts are before tax. You supply the price and a tax code, and the software calculates or checks the tax.
  • Codes must already exist in the file. Tax codes, account codes, and in QuickBooks the products and services, need to match what's set up in the company you're importing into.

The Xero layout

Xero's sales invoice template uses these columns, in this order. Columns marked with an asterisk are required.

ColumnWhat goes in it
*ContactNameThe customer, spelled exactly as the existing contact. A new spelling creates a new contact.
EmailAddressOptional. Used if a new contact is created.
POAddressLine1–4, POCity, PORegion, POPostalCode, POCountryOptional postal address for new contacts. Leave blank for existing ones.
*InvoiceNumberThe same on every line of one invoice.
ReferenceOptional: a PO number or period, shown on the invoice.
*InvoiceDate, *DueDateIn the date format of your file. Watch for day/month order.
InventoryItemCodeOptional item code, if you use Xero items.
*DescriptionThe line description.
*QuantityHours, units or 1 for a fixed fee.
*UnitAmountPrice per unit, before tax.
DiscountOptional line discount.
*AccountCodeThe revenue account, e.g. 200, which is the sales account in many Xero charts. Check yours.
*TaxTypeThe tax rate's name in your file, e.g. "HST on Sales" in a Canadian file.
TrackingName1, TrackingOption1, TrackingName2, TrackingOption2Optional tracking categories, such as department or region.
CurrencyFor multi-currency files, e.g. CAD.
BrandingThemeOptional: which invoice template to use.

During the import, Xero asks whether the amounts are tax exclusive or tax inclusive. For a file like the one above, choose tax exclusive.

The QuickBooks Online layout

QuickBooks Online's invoice import maps your columns to its fields during the import. A file with these headings maps cleanly:

ColumnWhat goes in it
InvoiceNoThe same on every line of one invoice.
CustomerThe customer's display name, exactly as in QuickBooks.
InvoiceDate, DueDateIn your file's date format.
TermsA term that exists in QuickBooks, e.g. Net 30.
MemoOptional message on the invoice.
Item(Product/Service)A product or service name that exists in QuickBooks.
ItemDescriptionThe line description.
ItemQuantity, ItemRateQuantity and price per unit, before tax.
ItemAmountQuantity × rate, before tax.
ItemTaxCodeThe tax code's name in your file, e.g. "HST ON" in a Canadian file.
ItemTaxAmountThe tax on the line.

If you want QuickBooks to keep your own invoice numbers, check that custom transaction numbers are turned on in its sales settings before importing.

A worked example

A fictional consultancy, Fernhill Advisory, has one invoice to import: INV-1042 to Larch Street Bakery Ltd., two lines, Ontario HST at 13%, issued October 31 and due November 30. In Xero, the two rows look like this (blank optional columns left out):

*ContactName*InvoiceNumberReference*InvoiceDate*DueDate*Description*Quantity*UnitAmount*AccountCode*TaxTypeCurrency
Larch Street Bakery Ltd.INV-1042PO 447110/31/202611/30/2026Pricing strategy workshop, Oct 812400.00200HST on SalesCAD
Larch Street Bakery Ltd.INV-1042PO 447110/31/202611/30/2026Follow-up advisory, Oct 9–316175.00200HST on SalesCAD

And in QuickBooks Online:

InvoiceNoCustomerInvoiceDateDueDateTermsItem(Product/Service)ItemDescriptionItemQuantityItemRateItemAmountItemTaxCodeItemTaxAmount
INV-1042Larch Street Bakery Ltd.10/31/202611/30/2026Net 30WorkshopPricing strategy workshop, Oct 812400.002400.00HST ON312.00
INV-1042Larch Street Bakery Ltd.10/31/202611/30/2026Net 30Advisory hoursFollow-up advisory, Oct 9–316175.001050.00HST ON136.50

Either way, the result is one invoice with a subtotal of $3,450.00, HST of $448.50 and a total of $3,898.50. The tax codes "HST on Sales" and "HST ON" and the account code 200 are examples from Canadian files. Yours may be named differently, and a UK or Australian file will use different codes again.

Before you import

  1. Match every customer name to an existing contact or customer, character for character.
  2. Copy tax codes from the file itself, not from a template or another client's file.
  3. Check the revenue account codes (Xero) or products and services (QuickBooks) exist.
  4. Check the date format. 03/11/2026 is March 11 in one file and November 3 in another.
  5. Use plain numbers: no currency symbols or thousands separators in amount columns.
  6. Save as CSV in UTF-8, so accented names come through.

After you import

  • Compare totals: number of invoices, subtotal, tax and total against your source.
  • Open one invoice of each type and check the lines, tax and account.
  • Look for duplicate contacts created by a name that didn't match.
  • Check the status. Imported invoices may arrive as drafts that need approving before they count.
  • Lock the source. Once a batch is imported, don't edit those invoices in the source system; issue a credit note instead, so the two never disagree.

Common mistakes

  • Tax-inclusive amounts in a tax-exclusive import. Every invoice comes out too high.
  • A tax code from a different region or file. The import fails, or worse, succeeds with the wrong tax.
  • Different invoice-level fields on different rows. If two rows of one invoice have different dates or customers, the import rejects or splits it.
  • Importing the whole month first. Test with two or three invoices before importing fifty.

Getting the invoice right in the first place matters too. See What to put on a professional services invoice.

Frequently asked questions

Can you import invoices into QuickBooks Online from a CSV?

Yes. QuickBooks Online has an invoice import in its Import data tool. Each row is one invoice line, with columns for the invoice number, customer, dates, terms, product or service, description, quantity, rate, amount, tax code and tax amount. Rows sharing an invoice number become a single invoice.

How do I import invoices into Xero?

Use the sales invoice import in Xero's Invoices area and upload a CSV in Xero's template layout. Required columns are marked with an asterisk, including contact name, invoice number, invoice date, due date, description, quantity, unit amount, account code and tax type. Each row is one line of an invoice.

Why does my invoice import fail on tax codes?

Because tax codes are specific to each company file and region. A Canadian Xero file might use 'HST on Sales', a UK one '20% (VAT on Income)'; QuickBooks Online codes differ again. The value in the CSV must match a tax code that exists in the file you're importing into, spelled exactly the same way.

Should invoice CSV amounts include tax?

Usually not. Give the price before tax and the tax code, and let the accounting software calculate the tax. Xero asks during import whether amounts are tax exclusive or inclusive, so make sure the setting matches your file.