Convert an Invoice PDF to Excel

Line items as rows, money as numbers you can sum, and the tax summary kept out of the grid instead of wrecking it. The invoice is read on your device and never uploaded.

Quick answer:

Open the PDF table extractor, drop the invoice in and press Extract tables. Most invoices hold two tables — the line items and a subtotal/VAT/total block — so press ✂ Choose table and take the line items; read as one grid they interfere with each other. Set Extraction to Financial and the money columns become real numbers, brackets become negatives and a VAT rate becomes a fraction. Nothing is uploaded, which matters for a document carrying a supplier's pricing.

Can I get just the line items?
Yes. Press ✂ Choose table and take the list of lines rather than the subtotal and VAT block — read as one grid the two tables interfere with each other.
Does it check the invoice adds up?
No, and it says so rather than guessing. An invoice has no running balance to check against. Put =B2*C2 down the lines and a SUM against the printed subtotal — that takes ten seconds and is exact.
How are credit notes handled?
As negatives. A figure printed (1,250.00) becomes -1250 in Financial extraction, so a mixed ledger of invoices and credits sums correctly instead of adding a refund to the total.
Does it know an invoice from a quotation?
Yes. A type has to print its own name before it is considered, so a quotation carrying every commercial word an invoice has is never called one. Fifteen test documents, including five written to fool it, all correct.
Is the invoice uploaded?
No — it is read and converted in your browser. That matters for a document carrying a supplier's negotiated pricing.
🧾 Open the PDF table extractor

Runs in your browser. No account, no upload, no watermark.

Three steps

  1. Drop the invoice in and press Extract tables. It is read on your machine — a supplier invoice carries their pricing and your purchasing history, which is not something to hand to a website.
  2. Pick the line-item table. Most invoices hold more than one table, and the one you want is the list of lines rather than the tax summary. Press ✂ Choose table and take it.
  3. Set Extraction to Financial so the money columns become numbers, then download.

An invoice is not a statement, and the difference decides everything

A statement carries a running balance, so it proves itself: every row moves the balance and the arithmetic has to close. An invoice does not. It has quantities, unit prices, line totals, a subtotal, tax and a total — a structure that is checkable, but not by the same sum, and not without assuming which column is which.

So on an invoice the balance check declines and says so rather than inventing a verdict. In our test set every invoice, quotation, delivery note, purchase order and receipt declined: 11 of 13 documents refused to check at all, and there were 0 false alarms across the lot. Being told your invoice does not balance, by a converter that has misunderstood your columns, would be worse than being told nothing.

What you can do in about ten seconds, once the table is in a sheet, is check it yourself — and this is the genuinely useful habit:

Invoices put two tables on one page

Almost every invoice does: the line items, and then a smaller block at the bottom right holding subtotal, VAT and total. Read as a single grid they interfere with each other — the narrow block's columns force extra columns onto the wide one, and both sets of headings end up in the wrong place.

Measured on a page with a three-column table above a five-column one, reading the whole page gives eleven rows of six columns with both headings misplaced; taking the two separately gives a clean 5 × 3 and a clean 5 × 5. Stacked tables and side-by-side ones are both detected automatically and offered as choices, and you can always drag a box round any area instead.

The label block at the top is not a table either

Invoice number, invoice date, due date, your reference, the supplier's address — these are labelled values, not rows of the line-item table, and they belong beside it rather than in it. The extractor keeps them in the sheet rather than discarding them, but they are not part of the grid you will be summing, and the cleanest result comes from picking the line-item table and copying the header fields across by hand into their own columns.

This matters more than it sounds when you are building one spreadsheet out of many invoices: the invoice number and supplier have to become columns repeated on every line, or the rows lose their provenance the moment you sort them.

Building one sheet out of many invoices

Each PDF is extracted on its own — there is no batch upload here, because there is no upload at all. The practical routine, which is what people actually want when they search for this:

  1. Extract the first invoice, download or copy it, and paste it into your workbook.
  2. Add three columns of your own at the left: supplier, invoice number, invoice date. Fill them down across that invoice's lines.
  3. Extract the next one and paste it underneath. Because the line-item columns are consistent, the block stacks cleanly.
  4. When they are all in, put a filter over the header row. You can now sum by supplier, by month or by item without ever opening the PDFs again.

Where suppliers use different column orders — some put quantity first, some the description — paste each one into a scratch sheet first and reorder the columns before it joins the master block. It is duller than a promised one-click import, and it is the thing that makes the result trustworthy.

Knowing an invoice from a quotation

Drop an invoice in and the page labels it. Six kinds are recognised — invoice, bank statement, purchase order, receipt, payslip and financial report — and anything else is left alone rather than forced into a category. The label never changes what was extracted; it changes what the page suggests next.

The hard part is refusing, not recognising. A quotation carries every commercial word an invoice has — unit price, subtotal, VAT, total — and never prints the word invoice. A delivery note has the entire structural vocabulary of a purchase order. A remittance advice lists invoice numbers. So a type has to name itself before it is considered at all, then clear a score floor, then beat the runner-up by a margin.

Tested against 15 documents including five written specifically to fool it: 15 correct, none given the wrong label, and none left unlabelled that should have been labelled. Remove the self-naming gate and the delivery note becomes a purchase order at any threshold, because its vocabulary simply is one's.

It reads printed English phrases, so an unlabelled French or German invoice is a missing label rather than a failed conversion — the table still comes out.

Tax lines, credit notes and currency symbols

Matching invoices against orders, and ageing what is owed

Two things people are usually doing with a folder of extracted invoices, both of which need columns rather than pictures:

Three-way matching

Purchasing teams reconcile three documents: the purchase order (what was agreed), the goods received note (what turned up) and the invoice (what is being charged). Once the line items of all three are in a sheet, the comparison is a lookup rather than a squint — match on the item code, then flag any row where the invoiced quantity or unit price differs from the order. A discrepancy of one unit or a few pence per item is invisible on paper and obvious in a column of differences.

Our extractor labels purchase orders and delivery notes separately from invoices, and refusing to confuse them is the part that took the work: a delivery note has the entire structural vocabulary of an order without ever calling itself one.

Ageing what is outstanding

With the invoice date and due date extracted as real dates, an aged creditors view is one formula: =TODAY()-E2 for days outstanding, then bucket it into 30, 60 and 90 days. Doing that across a folder of PDFs is the entire reason to extract them at all — no individual invoice tells you anything about your exposure, and the pile of them tells you everything.

Worth knowing: a due date is frequently printed as terms rather than a date — "net 30", "payable 30 days from invoice". That is text, and correctly extracted as text; the due date it implies is yours to compute from the invoice date.

Check whether the invoice is a hybrid before you extract it

This can skip the whole job, and hardly anyone looks. A growing share of business invoices are hybrid e-invoices: an ordinary-looking PDF with a machine-readable XML file embedded inside it as an attachment. The XML carries every field — supplier, line items, quantities, unit prices, tax rates, totals — as data rather than as printed text, so there is nothing to infer and nothing to get wrong.

The formats you will meet are Factur-X in France, ZUGFeRD in Germany (the same specification under two names), and documents exchanged over the PEPPOL network across much of Europe. Mandates are pushing this forward year by year, so the proportion of your supplier invoices carrying an attachment is rising whether or not anyone mentioned it.

How to tell: open the PDF in a reader and look for an attachments or paperclip panel. A file named something like factur-x.xml or zugferd-invoice.xml means the data is right there. Save it and hand it to whatever you use for accounts — most bookkeeping software imports these directly, and the result is exact rather than inferred.

We do not read the attachment, and this page says so rather than implying it. Extracting the printed table is the right answer when there is no attachment, which is still the overwhelming majority of invoices in circulation — and the only answer for a scan, a supplier portal print-out or anything older than the mandates.

Scanned and emailed invoices

Supplier invoices arrive as scans constantly — printed, signed, scanned back, forwarded. Tick Read scanned pages (OCR) and the characters are recognised in your browser; the invoice is not sent anywhere, which matters when it contains negotiated pricing.

Cells that cannot be what their column is are marked ⚠ before you download. On deliberately corrupted figures that check flagged 6 of 6 with no false alarms, and it raised nothing on 6 correctly extracted typed pages. Its limit is honest: it catches about one OCR mistake in five, because the rest are in description text where there is nothing to check against. The quantity × price arithmetic above is what catches the rest.

A digitally issued invoice — the kind generated by accounting software and emailed as a PDF — has a real text layer and needs no OCR at all. Try extracting first; the page will tell you if there is no text to read.

Where to go next

Frequently Asked Questions

Open the PDF table extractor, drop the invoice in and press Extract tables. Most invoices hold more than one table, so press Choose table and take the line-item list rather than the tax summary. Set Extraction to Financial and the money columns become numbers you can sum. It all happens in your browser, so the invoice is never uploaded.
Because an invoice has no running balance to check against. A statement proves itself — every row moves the balance — while an invoice has quantities, unit prices, a subtotal and tax, which cannot be checked without assuming which column is which. So the check declines and says so rather than inventing a verdict: 11 of 13 non-statement documents in our test set declined, with 0 false alarms. Check it yourself in the sheet with =B2*C2 down the lines and =SUM() against the printed subtotal.
Use Choose table. Almost every invoice puts the line items in one table and subtotal, VAT and total in a smaller block, and read as one grid they interfere with each other. Measured on a page with a three-column table above a five-column one, the whole page gives eleven rows of six columns with both headings misplaced; taken separately they give a clean 5 by 3 and a clean 5 by 5. Stacked and side-by-side tables are both detected and offered.
Not in one press — each PDF is extracted on its own, because nothing is uploaded and there is no batch queue on a server. The routine that works is to extract each invoice, paste it under the last, and add your own supplier, invoice number and invoice date columns filled down across each block. Then a filter over the header row lets you sum by supplier or by month without opening the PDFs again.
They land in the sheet, but not as columns — on the invoice they are labelled values in a block at the top, not rows of the line-item table. For a spreadsheet you are going to sort or filter, copy them into columns of their own and fill them down the invoice's lines, otherwise the rows lose their provenance as soon as you sort.
A figure in brackets becomes a negative number, which is the accounting convention every spreadsheet expects: (1,250.00) becomes -1250. So a mixed ledger of invoices and credit notes sums correctly instead of adding a refund to the total. A percentage such as 20% becomes 0.2, which is what a spreadsheet means by twenty percent.
Yes, and refusing is the hard part. A quotation carries every commercial word an invoice has and never prints the word invoice, so a type must name itself before it is considered at all, then clear a score floor and beat the runner-up by a margin. Tested against 15 documents including five written to fool it — a quotation, a delivery note, a remittance advice, a supplier's statement of account and an invoice that talks like a bank — all 15 were correct with none mislabelled.
Tick Read scanned pages (OCR) before extracting; the recognition runs in your browser, so an invoice with negotiated pricing on it never leaves your machine. Cells that cannot be what their column is are marked before you download — on deliberately corrupted figures that check flagged 6 of 6 with no false alarms — but it catches roughly one OCR mistake in five overall, so check the line totals arithmetically as well.
Extract the PDF, then press Choose table and take the list of lines rather than the subtotal and VAT block. That gives you description, quantity, unit price and line total as columns you can sum. Set Extraction to Financial first so the money columns arrive as numbers rather than text — a column of text sums to zero without complaining.
Yes, and they are recognised as their own types rather than being called invoices. That distinction took real work: a delivery note has the entire structural vocabulary of a purchase order and never names itself one, so a type has to print its own name before it is considered at all. The extraction is the same either way; the label changes what the page suggests next.
Yes — set Format to CSV. Worth knowing that most accounting imports want one row per line item with the invoice number repeated on every row, which is not how an invoice prints it: the number is a labelled value in the header block, not a column. Add it as a column of your own and fill it down that invoice's lines before importing.
The table extraction does — columns come from the layout, not the words. What is English-only is the document labelling and the money-column naming, so a French or German invoice extracts correctly but is not labelled as an invoice. If the pages are scanned rather than digital, recognition is English-only too and will read another language badly rather than refusing.
Yes. Credit notes usually print their figures in brackets, and in Financial extraction (1,250.00) becomes -1250 — the accounting convention every spreadsheet expects. That is what lets a mixed ledger of invoices and credits sum correctly instead of adding a refund to the total.
The invoice is read and converted by your own browser and is never uploaded, which matters more than it sounds for this document: a supplier invoice carries negotiated pricing and, taken together, a picture of your purchasing. There is no account, no queue and no copy left anywhere.

Related Tools