Blog Jun 7, 2026

How to Import Invoice Data into Xero from a PDF

A practical guide to importing PDF invoices into Xero. Convert your supplier PDFs to CSV and use Xero's built-in import to skip the manual data entry.

Xero handles imports better than most accounting tools, but the one thing it doesn't do natively is read a PDF supplier invoice and create a bill from it — at least not reliably enough to skip the typing.

The good news is the workaround is short. Convert the PDF to CSV, then use Xero's standard bill import. This guide shows you how, including the specific column names Xero expects and the gotchas that catch people on their first try.

Quick terminology check

Xero, like QuickBooks, uses specific words for things:

  • A bill is a supplier invoice — money you owe.
  • A sales invoice is what you send to your customers — money owed to you.
  • A purchase order is a commitment to buy before the bill arrives.

Most people searching to "import a PDF invoice into Xero" mean the first one. The workflow below is for bills. Sales invoices follow the same pattern with a different import template.

Why not just use Hubdoc?

Xero owns Hubdoc, which is included with most Xero plans. It does receipt and bill capture — you email a PDF in, it tries to extract the data, you review and push to Xero.

It's fine for low-volume work. It's slower than you'd think because each document still needs a manual review in Hubdoc before it lands in Xero, and the extraction quality on complex multi-line invoices is mixed.

For batch work — say, processing 50 invoices at month-end — the CSV import path is significantly faster. Here's how.

The workflow in 30 seconds

  1. Convert PDF invoices to CSV.
  2. Format the CSV to match Xero's bill import template.
  3. Upload to Xero via Business → Bills to pay → Import.
  4. Review and approve.

Now the detail.

Step 1: Convert the PDF to CSV

Use a PDF extraction tool that gives you a structured CSV with the fields you need:

  • Contact (supplier) name
  • Invoice number
  • Invoice date
  • Due date
  • Description (per line item)
  • Quantity
  • Unit amount
  • Account code
  • Tax rate
  • Tracking categories (optional)

If you're new to this, how to convert a PDF invoice to CSV covers the basics. For multiple invoices in one go, batch processing PDF invoices shows the bulk workflow.

Step 2: Format the CSV for Xero

Xero's bill import is specific about column names. The simplest approach is to download Xero's template first:

  1. Go to Business → Bills to pay.
  2. Click Import.
  3. Click Download template file.

You'll get a CSV with the exact column headers Xero expects. The key ones for a bill import:

  • *ContactName — supplier name (required)
  • *InvoiceNumber — invoice number (required)
  • *InvoiceDate — bill date (required)
  • *DueDate — payment due (required)
  • *Description — line item description (required)
  • *Quantity — line item quantity (required)
  • *UnitAmount — unit price (required)
  • *AccountCode — your chart of accounts code (required)
  • *TaxType — Xero's internal tax type code (required)
  • TrackingName1 / TrackingOption1 — tracking categories (optional)
  • Currency — for multi-currency accounts

The asterisks are Xero's convention for required fields, not part of the column name in your file.

Paste your extracted data into the matching columns. A few formatting rules:

Dates. Xero accepts DD/MM/YYYY or YYYY-MM-DD. Pick one and be consistent.

Tax types. This is the awkward one. Xero uses internal codes like INPUT2, OUTPUT2, NONE, etc. — not "20%" or "Standard VAT". You can find your account's tax types under Accounting → Advanced → Tax rates. If your extraction tool doesn't know your specific tax codes, leave the column blank or fill with a default — Xero will let you correct it on import.

Account codes. Use the numeric account codes from your chart of accounts (e.g. 310 for Cost of Goods Sold), not the account names.

Multiple line items per invoice. Repeat the ContactName, InvoiceNumber, InvoiceDate and DueDate on each line item row. Xero groups them into a single bill based on the matching invoice number.

Step 3: Upload to Xero

  1. Business → Bills to pay → Import.
  2. Browse to your CSV.
  3. Choose how to handle the import:
    • Draft (recommended for first-timers) — bills land as drafts so you can review before approving.
    • Awaiting Approval — go straight into the approval workflow if you have one.
  4. Click Complete import.

Xero will show you a summary: how many bills were imported, how many had errors, and which lines failed.

Step 4: Review and approve

If you imported as drafts, go to Business → Bills to pay → Draft to see what came in. Open a few and check:

  • The supplier on each bill is right.
  • The line items match the source PDF.
  • Tax has been calculated correctly.
  • Account codes are sensible.

Once you're happy, batch-approve them. Done.

Common problems and how to fix them

"Contact not found". Xero will create a new contact automatically if the ContactName doesn't exist, but only if you've allowed that in the import settings. If the contact already exists with a slightly different name (e.g. "Acme Ltd" vs "Acme Limited"), Xero treats it as a new contact and you'll end up with duplicates. Standardize names before importing.

Tax type errors. Almost always because the tax code in your CSV doesn't match any tax rate in your Xero account. Check Accounting → Advanced → Tax rates for the exact codes.

Date format errors. Open the CSV in a text editor to check the actual content (Excel sometimes reformats dates when you open and save the file). Xero is strict — wrong format = no import.

Bills splitting into multiple bills. Happens when you have multiple line items but the InvoiceNumber is slightly different on each row (a trailing space, different case). Xero groups by exact match. Clean up the CSV.

Account code not found. The code in your CSV must exist in your chart of accounts. New codes need to be added before importing.

Tracking category errors. Tracking categories must exist in Xero first. If you reference one that doesn't exist, the import fails. Set them up via Accounting → Advanced → Tracking categories.

Speeding up your monthly Xero import

The benefit of this workflow only really shows up at scale. Once you've set up the column mapping once (or saved a template), the monthly cadence becomes:

  1. Drop all supplier PDFs into a folder.
  2. Run them through a batch extractor in one shot.
  3. Open the output, do a 5-minute cleanup.
  4. Upload to Xero as drafts.
  5. Review and approve.

Twenty minutes for a hundred bills, including spot-check.

For the broader case for automation, save time on invoice data entry covers the numbers. If you work across multiple accounting platforms, the same source CSV can be reformatted for QuickBooks, FreshBooks or Sage.

A note on automation beyond CSV

Xero has a solid API. If you're doing this routinely and want to skip even the CSV upload, you can push bills directly via the API. That's worth setting up if you're processing thousands of invoices a month or running a connected app.

For most small and medium businesses, though, the CSV import is the right level of automation — it's reliable, it's flexible, and it doesn't require a developer to maintain.

Try it on your next Xero import

CsvInvoice converts PDF invoices to CSV in about 10 seconds, with structured columns that map cleanly to Xero's bill template. Browser-based, no install, no subscription. $0.29 per invoice, paid only for what you process. Files are encrypted in transit and never shared.

Convert your first invoice →

Your next month-end in Xero doesn't have to take a week.