Free tool
Invoice PDF to CSV converter that checks the totals
Pull the line items out of a text-based invoice PDF in your browser, then check that quantity times price matches each amount, that the lines add up to the subtotal, and that the subtotal, tax and shipping add up to the total.
No paid links on this page: vendor links go straight to the vendor. Affiliate policy.
Invoice PDF to CSV, with total check
Runs entirely in your browser. The PDF is read on your device and never uploaded.
Text-based PDFs only. Invoices exported from accounting or billing software have a text layer and work. Scans and phone photos are images; the free tool cannot read them and will say so.
Why check the arithmetic
An invoice carries its own answer key. Each line has a quantity, a unit price and an amount, and the amounts must add up to the subtotal; the subtotal plus tax and shipping, minus any discount, must equal the total. If a converter misreads one digit, drops a row, or pulls a "Delivery" line into the wrong place, at least one of these sums stops matching.
This tool runs three checks and says which ones it ran:
- Each line: quantity x unit price equals the amount, to the cent (a one-cent rounding difference is allowed).
- Line items against the subtotal: the extracted amounts add up to the printed subtotal.
- Subtotal to total: subtotal + tax + shipping - discount equals the printed total. If the invoice prints no subtotal, the sum of the lines stands in for it, and the page says so.
If the invoice prints no totals at all, the result reads "unverified". A green result means the numbers are consistent with each other. It does not prove the invoice is right: if the vendor's own arithmetic is wrong, you get a yellow result, which is the useful outcome.
What it extracts
| Column | What it holds |
|---|---|
| Invoice number, Invoice date | Read from labels such as "Invoice No", "Invoice #" and "Invoice date". Dates are copied as printed, not reformatted. |
| Line | The row number |
| Description | The item text; a description wrapped over two lines is joined |
| Quantity, Unit price | When the invoice prints them |
| Amount | The line total |
| Check | ok, review or not checked |
After the lines, the CSV carries the invoice's own Subtotal, Discount, Shipping, Tax, Total and Amount due rows, marked invoice total line, so the file is self-contained.
How the extraction works
- Text, not pixels. pdf.js reads the text layer of each page. Nothing is uploaded; pdf.js is fetched once from a public CDN and runs on your device. It is the same reader as in the statement PDF to CSV tool.
- Lines and cells. Text at the same height becomes a line, and text close together becomes one cell.
- The totals block. A line whose label says subtotal, discount, shipping, tax (several tax lines are added up), total or amount due, with a money amount in the last cell, belongs to the totals. A delivery line that also has a quantity and a unit price is treated as a line item instead.
- The line items. If the invoice has a header row (Description, Qty, Price, Amount), the table starts under it. Without one, the table is found from the shape of the rows: a text description followed by one to three number cells, with the amount last. The page warns you when it had to guess.
What it cannot do
- Scanned or photographed invoices are images with no text to read. The tool says so. Extracting them needs OCR.
- Amounts printed without cents ("1,200") are not read as money, so that row is missed. Amounts need a decimal part or a currency symbol.
- Decimal-comma invoices ("1.200,00") are not supported yet.
- Tables with extra columns (SKU, tax rate or discount per line, units of measure) are only read when the extra cells are plain numbers in the order quantity, price, amount. Other layouts can drop rows, which the subtotal check usually catches.
- Two invoices in one PDF are read as one.
- Hours, rates and "x" notation ("10 h @ 150.00") are not parsed into quantity and price; the amount is kept and the line is marked "not checked".
- Tested on hand-written layouts. The automated tests use invoices we laid out ourselves, so there is no accuracy rate for real-world invoices yet and none is claimed here. The check result is the honest answer for your own file. If a layout fails, the test set grows from it.
If you handle many invoices
- One recurring layout. A rules-based parser such as Docparser lets you define the layout once and run it on every PDF automatically. The setup only pays off at volume.
- Scans and mixed formats. You need OCR. DocuClipper is built for bank statements; check whether it supports invoices before you rely on it for them. Whatever you use, apply the same sums to its output.
- A handful a month. Use the free tool, read the check, and enter the rest by hand if it fails.
For statements instead of invoices, see the bank statement PDF to CSV converter, which checks every row against the running balance, and the method for how StatementBench measures accuracy.
Also available as Markdown.