BillToCSV
  1. Drop bills PDF or photo, one bill per file
  2. Check totals Every line and sum proven
  3. Download for QuickBooks or Xero Import-ready CSV

Invoice to Xero CSV, with the totals already proven

Drop the supplier invoice. You get a bill import CSV in Xero column order, one row per line, with quantity × unit price and the invoice total checked before the file exists.

Free: 1 file per day, up to 10 pages, no account.

Convert bills

Drop supplier bills here

One bill per file. A stack is fine: drop them all and each one gets its own review card.

PDF, JPG or PNG, up to 40 MB each. Free: 1 file per day, up to 10 pages, no account.

No bill handy?

    What is a Xero bill import CSV?

    It is a CSV where each row is one line of a supplier bill. Rows that share an invoice number for the same contact become one bill, so the bill-level details (contact, invoice number, dates) repeat on every row of that bill.

    BillToCSV writes that file from the invoice PDF or photo, with the headers in the layout of Xero's bill import template, asterisks included. Xero wants its own headers, so do not rename or reorder them, and compare them with the template Xero offers on your import page before the first real import.

    Invoice to Xero import in five steps

    1. Drop the invoices

      PDF or photo, one bill per file. A stack is fine; each file gets its own review card.

    2. Clear the amber rows

      Green rows tie. For each amber row, look at the paper, then edit the cell or accept the row as printed. The checks rerun as you type.

    3. Fill AccountCode and TaxType

      Xero marks *AccountCode and *TaxType as required, and BillToCSV cannot see your chart of accounts or your tax rates. Under Export options, type the account code and the tax type name once; they are written on every line. Or fill the two columns in a spreadsheet.

    4. Check the date format

      Xero reads dates in your organisation's date format. The file uses DD/MM/YYYY, which suits UK, Australian and New Zealand organisations. For a US organisation, pick MM/DD/YYYY under Export options.

    5. Download and import

      Tick the bills you want and download the Xero CSV. In Xero, open the bill import (from the Bills screen; where it lives depends on your region and version), upload the file and review the draft bills before you approve them.

    Three ways to get a supplier invoice into Xero

    Typing, a generic OCR app, and BillToCSV for Xero bills
    What you compare Typing it in by handA generic OCR appBillToCSV
    Getting the invoice in Open a new bill and key every line. Fields extracted and pushed in the app's layout. A CSV in Xero's bill import column order.
    Quantity × unit price vs the amount Only if you work it out yourself. Varies by app. Ask whether it checks. Checked on every line that prints both.
    Lines vs subtotal vs total You re-add them, or Xero accepts whatever you type. Varies by app. Ask whether it re-adds the lines. Re-added, with tax, shipping and discounts included.
    A line that disagrees with the paper Found at payment time, if at all. Found when someone notices. Amber before download, and the Xero file keeps the amount the paper prints.
    AccountCode and TaxType You choose as you type. Often guessed from past bills. Blank, or the values you type once for the whole batch.

    What goes in each Xero column

    The file has these twenty-six columns, in this order, with the asterisks in the header names. Verify the column headers against your Xero import page, because vendors change them, and do not rename or reorder them in the file. A bill with several lines gets one row per line, and the bill-level columns repeat.

    The twenty-six columns of the Xero bill CSV
    ColumnWhat BillToCSV puts thereWhat you do
    *ContactName The supplier name as printed. Match your Xero contact's spelling in the review card first, or Xero may add a duplicate.
    EmailAddress, POAddressLine1 to POAddressLine4, POCity, PORegion, POPostalCode, POCountry Blank. Fill them only if you want details on a new contact.
    *InvoiceNumber The invoice number printed on the bill. Check it against the paper. Rows with the same number become one bill.
    *InvoiceDate Invoice date, DD/MM/YYYY by default. Must match your organisation's date format. US organisations: choose MM/DD/YYYY.
    *DueDate The printed due date, or the invoice date plus the days in terms such as Net 30. Check it when the bill prints neither. It should not be earlier than the invoice date.
    Total The printed bill total, repeated on every row of the bill. Compare it with the bill Xero creates.
    InventoryItemCode Blank. Fill it only if you track inventory items.
    *Description The line description. Nothing, unless the review card flagged it.
    *Quantity The quantity, or 1 when the bill prints only an amount. Nothing. Amber rows were already shown to you.
    *UnitAmount The unit price. If the printed amount disagrees with quantity × price, the amount divided by the quantity. Nothing. Xero's line then equals the paper's line.
    *AccountCode Blank, or the code you typed under Export options. Required. Use a code from your chart of accounts.
    *TaxType Blank, or the tax type you typed under Export options. Required. Use a tax type that exists in your organisation.
    TaxAmount Tax for this line: the printed line tax, or the bill's tax shared out by line amount. Blank when tax is on its own line or the bill has none.
    TrackingName1, TrackingOption1, TrackingName2, TrackingOption2 Blank. Fill them only if you use tracking categories.
    Currency ISO code read from the bill, such as USD. Blank if none was found. It matters only if multicurrency is on.

    Two columns are yours to fill: *AccountCode and *TaxType are marked required by Xero and start blank here. Type them once under Export options, then download. Run one small test import with two or three bills and compare the totals with the paper before you do a whole stack.

    Get the blank Xero template

    Questions people ask

    Does Xero import bills from a CSV?

    Yes. Xero has a bill import that reads a CSV, and it expects its own template headers. Where the import sits and what it accepts can differ by region and version, and Xero changes its screens, so open the import page in your own organisation and compare the headers with the ones here. If your region does not offer it, the review CSV is still a checked list to key from.

    Which columns does the Xero CSV have?

    Twenty-six, in this order: *ContactName, EmailAddress, POAddressLine1 to POAddressLine4, POCity, PORegion, POPostalCode, POCountry, *InvoiceNumber, *InvoiceDate, *DueDate, Total, InventoryItemCode, *Description, *Quantity, *UnitAmount, *AccountCode, *TaxType, TaxAmount, TrackingName1, TrackingOption1, TrackingName2, TrackingOption2, Currency. Verify the column headers against your Xero import page; vendors change them. The blank template shows the exact layout.

    Why are AccountCode and TaxType blank?

    Xero marks both as required, and the codes and tax types are yours: BillToCSV cannot see your chart of accounts or your tax rates, and a guess would put expenses in the wrong place. Type a code and a tax type name under Export options to write them on every line, or fill the columns in a spreadsheet. Xero will reject rows where they are empty or do not exist in your organisation.

    Which date format does Xero want?

    The format set for your organisation under its regional settings, so the file has to match it. BillToCSV writes DD/MM/YYYY by default, which is the usual format for UK, Australian and New Zealand organisations. For a US organisation, choose MM/DD/YYYY under Export options before you download. A date such as 03/04/2026 that could be read two ways is flagged on the bill so you can settle it first.

    What does the Total column do?

    It carries the printed bill total on every row of the bill, as a figure for you to check against the bill Xero creates. Xero builds the bill from the lines. If the total in Xero differs from the paper, look at the tax type and at whether Xero treats your amounts as tax exclusive or inclusive.

    What if quantity × unit price does not match the printed amount?

    Xero multiplies quantity by unit amount to get the line total, so a mismatch would silently change the bill. For a row that does not tie, BillToCSV writes the unit amount as the printed amount divided by the quantity, so the line in Xero equals the line on the paper. The row is amber on screen and the review CSV keeps the original unit price and the difference.

    How is tax handled?

    By default the printed tax is spread over the lines in proportion to their amounts, to the cent, and written to TaxAmount. Or choose Tax as its own line under Export options, and the tax becomes a row of its own. Line amounts are written before tax either way, and you still choose the TaxType. Run one test bill and compare the Xero total with the paper.

    How does Xero group the rows into bills?

    By invoice number: rows with the same *InvoiceNumber are read as the lines of one bill, so keep the contact and dates the same on every row of a bill, which this file does. Xero may refuse an invoice number it has already seen for that contact.

    Does the contact name have to match Xero?

    Match it exactly, or Xero may create a second contact for the same supplier. Edit the Supplier field in the review card to the spelling in your Xero contact list before you download.

    How many lines can one file hold?

    Xero limits the lines in one import file; a figure around 500 lines has been quoted, but confirm it on your Xero import page. For a big stack, tick a batch of bills, download, import, and then tick the next batch.

    What if the invoice does not add up?

    The failing rows turn amber and the bill starts unticked, so it is left out of the download. Edit a cell and the checks rerun, accept a row as printed, or query the supplier. A bill that does not tie is the one most likely to create a payable that differs from the paper.

    What happens to shipping, freight and discounts?

    Charges printed under the subtotal, such as shipping, handling, fees and rounding, become their own rows and are part of the total check. Discounts become rows with a negative unit amount. Test a discounted bill first, because how Xero treats negative lines can depend on your setup.

    Does BillToCSV connect to my Xero organisation?

    No. It never asks for your Xero login. It makes a file and you import it, which keeps the last step in your hands. Xero shows imported bills for review before they are approved.