Turn a stack of supplier bills into a QuickBooks or Xero import that already adds up
Drop the PDFs and photos. BillToCSV multiplies every line, re-adds the subtotal and tax, and turns anything that does not tie amber before it reaches your books.
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?
Code saved · enter a new one to replace
Review before you download
Jump to downloadsDownload
Bills that do not tie start unticked so they cannot slip into your books. Fix or accept their amber rows, or tick them to include them anyway.
This download includes a bill that was converted only in part, so the file names end in -partial.
The Account column is left blank on purpose: only you know your chart of accounts. Map it in the import, or type a name under Export options. Verify the column headers against your QuickBooks or Xero import page, because vendors change them. Blank templates.
What is a bill import CSV?
A bill import CSV is a spreadsheet with one row per bill line that QuickBooks Online or Xero reads to create supplier bills in bulk, instead of you keying each one.
BillToCSV builds that file from a supplier's PDF or photo, and it proves the arithmetic first: quantity × unit price equals the line amount, the lines add up to the subtotal, and subtotal plus tax equals the invoice total. A bill that fails a check is flagged before the import can create a bill that disagrees with the paper.
See it work on two sample bills
Both bills below were run through the same code that reads your files, while this page was built. The first ties on every check. The second has a 7% tax line and one line where the printed amount is $2.00 more than quantity times price, so that row turns amber and the bill is held back.
A clean 4-line bill Sample
Every check tiesOffice supplies, Net 30, no tax. Every line multiplies out and the lines add up to the total.
- Supplier
- Harbor Point Office Supply
- Invoice no.
- HP-20417
- Invoice date
- 2026-10-14
- Due date
- 2026-11-13 (Net 30)
- Total
- 329.73 USD
- Every line multiplies out
- Lines add to the subtotal
- Subtotal + tax = total
| # | Description | Qty | Unit price | Amount | Qty × price | Status |
|---|---|---|---|---|---|---|
| 1 | Copy paper, 8.5 x 11, case of 10 reams | 5 | 38.40 | 192.00 | 192.00 | Ties |
| 2 | Ballpoint pens, box of 12 | 3 | 6.25 | 18.75 | 18.75 | Ties |
| 3 | Stapler, heavy duty | 2 | 14.99 | 29.98 | 29.98 | Ties |
| 4 | Toner cartridge, black | 1 | 89.00 | 89.00 | 89.00 | Ties |
| Lines add to | 329.73 |
|---|---|
| Printed subtotal | 329.73 |
| Printed total | 329.73 |
| Subtotal + tax | 329.73 ties |
What the reader extracted from this bill
## Harbor Point Office Supply 418 Wharf Road, Portland, ME 04101 INVOICE | Invoice No. | HP-20417 | |---|---| | Invoice Date | 14 Oct 2026 | | Terms | Net 30 | | PO Number | 88213 | Bill To: Alder & Finch Design LLC | Qty | Description | Unit Price | Amount | |---:|---|---:|---:| | 5 | Copy paper, 8.5 x 11, case of 10 reams | $38.40 | $192.00 | | 3 | Ballpoint pens, box of 12 | $6.25 | $18.75 | | 2 | Stapler, heavy duty | $14.99 | $29.98 | | 1 | Toner cartridge, black | $89.00 | $89.00 | Subtotal: $329.73 Total: $329.73
The QuickBooks CSV the code produced from it
BillNo,Supplier,BillDate,DueDate,Terms,Location,Memo,Account,LineDescription,LineAmount,LineTaxCode,LineTaxAmount,Currency HP-20417,Harbor Point Office Supply,10/14/2026,11/13/2026,Net 30,,PO 88213,,"Copy paper, 8.5 x 11, case of 10 reams",192.00,,,USD HP-20417,Harbor Point Office Supply,10/14/2026,11/13/2026,Net 30,,PO 88213,,"Ballpoint pens, box of 12",18.75,,,USD HP-20417,Harbor Point Office Supply,10/14/2026,11/13/2026,Net 30,,PO 88213,,"Stapler, heavy duty",29.98,,,USD HP-20417,Harbor Point Office Supply,10/14/2026,11/13/2026,Net 30,,PO 88213,,"Toner cartridge, black",89.00,,,USD
A bill with 7% tax and one bad line Sample
Needs a look: off by 2.00Janitorial supplies with a 7% sales tax line. On line 3 the printed amount is $2.00 more than quantity times price.
- Supplier
- Northgate Janitorial Supply
- Invoice no.
- NG-55120
- Invoice date
- 2026-10-21
- Due date
- 2026-11-05 (Net 15)
- Total
- 334.91 USD
- 1 line does not multiply outoff by 2.00
- Lines add to the subtotal
- Subtotal + tax = total
| # | Description | Qty | Unit price | Amount | Qty × price | Status |
|---|---|---|---|---|---|---|
| 1 | Nitrile gloves, box of 100 | 6 | 9.50 | 57.00 | 57.00 | Ties |
| 2 | Trash liners 33 gal, case | 4 | 24.75 | 99.00 | 99.00 | Ties |
| 3 | Floor cleaner, 5 gal pail | 2 | 41.50 | 85.00 | 83.00 | Check |
| 2 × 41.50 = 83.00, but the amount printed is 85.00 (off by 2.00). | ||||||
| 4 | Microfiber cloths, 12 pack | 10 | 7.20 | 72.00 | 72.00 | Ties |
| Lines add to | 313.00 |
|---|---|
| Printed subtotal | 313.00 |
| Sales Tax (7%) | 21.91 |
| Printed total | 334.91 |
| Subtotal + tax | 334.91 ties |
What the reader extracted from this bill
# Northgate Janitorial Supply Invoice Number: NG-55120 Invoice Date: 10/21/2026 Payment Terms: Net 15 Customer PO: 4471 | Item | Qty | Price | Total | |---|---:|---:|---:| | Nitrile gloves, box of 100 | 6 | 9.50 | 57.00 | | Trash liners 33 gal, case | 4 | 24.75 | 99.00 | | Floor cleaner, 5 gal pail | 2 | 41.50 | 85.00 | | Microfiber cloths, 12 pack | 10 | 7.20 | 72.00 | Subtotal $313.00 Sales Tax (7%) $21.91 Total $334.91
The QuickBooks CSV the code produced from it
BillNo,Supplier,BillDate,DueDate,Terms,Location,Memo,Account,LineDescription,LineAmount,LineTaxCode,LineTaxAmount,Currency NG-55120,Northgate Janitorial Supply,10/21/2026,11/05/2026,Net 15,,PO 4471,,"Nitrile gloves, box of 100",57.00,,3.99,USD NG-55120,Northgate Janitorial Supply,10/21/2026,11/05/2026,Net 15,,PO 4471,,"Trash liners 33 gal, case",99.00,,6.93,USD NG-55120,Northgate Janitorial Supply,10/21/2026,11/05/2026,Net 15,,PO 4471,,"Floor cleaner, 5 gal pail",85.00,,5.95,USD NG-55120,Northgate Janitorial Supply,10/21/2026,11/05/2026,Net 15,,PO 4471,,"Microfiber cloths, 12 pack",72.00,,5.04,USD
From stack to import in four steps
-
Drop the bills
Add PDFs or photos, one bill per file. Drop the whole stack; each file gets its own review card.
-
Read the amber rows
Green rows tie. Amber rows show the exact numbers that disagree, for example 2 × 41.50 = 83.00 while the bill says 85.00.
-
Fix or accept
Edit any cell and the checks rerun on the spot, or accept a row as printed when the supplier's figure is the one you will pay.
-
Download and import
Take the QuickBooks CSV or the Xero CSV (plus a review CSV for your files), fill the Account column, and run your import.
Typing, a generic OCR app, or BillToCSV
| What you compare | Typing it in by hand | A generic OCR app | BillToCSV |
|---|---|---|---|
| Effort per bill | Every field and line keyed by you. | Fields filled in; you open each bill to confirm them. | Upload, scan the amber rows, download. |
| Does quantity × unit price equal the amount? | Only if you stop and work it out. | Varies by app. Ask whether it checks. | Checked on every line that has a quantity and a unit price. |
| Do the lines add to the subtotal and total? | You re-add them, or trust the paper. | Varies by app. Ask whether it re-adds the lines. | Always re-added: lines to subtotal, subtotal plus tax to total. |
| A misread or mistyped digit | Your risk on every keystroke. | Silent unless the app cross-checks. | Usually breaks a sum, so the row turns amber. A misread that still adds up is not caught. |
| What you get | Bills typed straight into the bill screen. | Fields in the app's own layout. | A CSV in QuickBooks Online or Xero import column order, plus a review CSV. |
| What you still decide | Everything. | Whether to trust the extraction. | The amber rows and the Account column. |
Questions people ask
What does BillToCSV do?
It reads a supplier bill from a PDF or photo, pulls out the supplier, invoice number, dates, terms, currency, line items, tax and total, checks the arithmetic, and gives you a CSV laid out for the QuickBooks Online or Xero bill import. It does not connect to your books. You import the file yourself.
What exactly gets checked?
Three things. Each line: quantity × unit price must equal the line amount to within $0.01 after rounding. The lines must add up to the printed subtotal. Subtotal plus tax plus any shipping or discount lines must equal the printed total.
Anything that fails turns amber with the numbers shown. If a bill prints no subtotal or no total, that check is marked not applicable instead of passed.
Is it free?
Yes, to try. The free allowance is 1 file per day, up to 10 pages, no account. Pro and Team plans raise the limits.
Which files can I upload, and how big?
PDF, JPG and PNG, one bill per file, up to 40 MB each. Photos read best when they are flat, bright and show the whole page. Other file types, such as HEIC, Word or Excel files, are not accepted.
Can I convert many bills at once?
Yes. Drop a stack and every file gets its own review card. On the free allowance only the first file of the day converts, and the rest are listed as not converted so nothing is dropped silently. On paid plans each converted file counts as one bill.
Why is the Account column blank?
Account (QuickBooks) and account code (Xero) depend on your chart of accounts, which BillToCSV cannot see. Guessing would post expenses to the wrong place, so the column is left blank. Type a name under Export options to fill it on every line, or map it during the import.
What happens when a bill does not add up?
The failing rows turn amber and the bill starts unticked, so it is not in your download unless you tick it. You can edit a cell (the checks rerun), accept a row as printed, or leave the bill out and query the supplier.
Does it import into QuickBooks or Xero for me?
No. It produces a file and you import it. That keeps your accounting login out of this site. Verify the column headers against your QuickBooks or Xero import page, because vendors change them. The blank templates show the layouts used here.
Are my files kept?
Files are processed in memory and deleted after conversion. Pages that need a second look may be sent to Google's Gemini API, where Google may keep them for up to 55 days under its terms. Uploads are not used for training. Details are on the privacy page.
How accurate is reading a scan or a photo?
OCR can misread digits, especially on faded, creased or skewed pages. A misread usually breaks one of the three checks, which is why the row turns amber, but a misread that still adds up cannot be caught. Compare the amounts with the paper for scanned and photographed bills.
Which currencies and number formats are understood?
Dollar, pound and euro symbols and common ISO codes are recognised, and both 1,234.56 and 1.234,56 number formats. A bare $ is read as USD, so change the Currency column if the bill is really CAD, AUD or NZD.
How are dates and due dates read?
Formats such as 2026-10-14, 14 Oct 2026 and 10/14/2026 are read. A date like 03/04/2026 could be March 4 or April 3; it is read as MM/DD/YYYY for dollar bills and flagged. Terms such as Net 30 become a due date counted from the invoice date.