PDF invoices to Excel: one checked table, not copy-paste
Moving PDF invoices to Excel sounds like a small job. You have a folder of PDF invoices. Each supplier uses its own layout, its own labels and its own way of writing dates and amounts. You need one table: invoice number, date, supplier, net, VAT, total. And you need to trust it.
Copying by hand works for five invoices. At fifty, the mistakes start: a comma read as a thousands separator, a date flipped, a total that never added up in the first place.
Three ways to do it
| Way | Good for | Watch out for |
|---|---|---|
| Excel “Get Data → From PDF” (Excel for Microsoft 365 on Windows) | a few invoices with clean tables | every layout needs its own steps; nothing checks the totals |
| An online converter | a one-off file | where your invoices are sent and stored; the output still has to be checked |
| A small script | many invoices, different suppliers, every month | it has to be set up once for your layouts |
If you get a few invoices a month from one supplier, Excel is enough. Once there are several suppliers and it happens every month, a script pays off: you set the rules once and rerun them.
What a good result looks like
One row per PDF, the same columns for every supplier, dates in one format (2026-09-03), amounts as plain numbers (1240.00), and one more column: needs review.
That last column matters most. A good process does not guess. If an invoice has no number, or net plus VAT is not equal to the total, the row stays as printed and is flagged. A person decides.
How the script approach works
- Read the text from each PDF. Invoices made by accounting software contain real text, so a library such as
pypdfcan read it. - Find each field by its labels. The same field has many names:
Invoice No:,Facture n°,Rechnungsnummer;Subtotal,Total HT,Nettobetrag. You keep a short list of labels per field. - Normalise numbers and dates.
1,240.00,1 240,00 €and180,00 EURare all amounts;14/09/2026and22.09.2026are both dates. Agree on the day/month order before you start. - Check the arithmetic. Net plus VAT must equal the total, to the cent.
- Flag, don’t fix. Missing number, unreadable date, a total that doesn’t add up — the row goes to the review list.
A minimal version of steps 1 and 4:
from pypdf import PdfReader
def pdf_text(path):
return "\n".join(page.extract_text() or "" for page in PdfReader(path).pages)
def totals_ok(net, vat, total):
return round(net + vat, 2) == round(total, 2)
What we saw on a test set
We built a small demo on six made-up invoices from three suppliers, with English, French and German labels. Two of them had planted problems: one total did not match its lines, one invoice had no number. The script produced one table with four clean rows and flagged exactly those two for review.
It is a test on invented data, not a promise about your invoices. Real folders bring their own surprises, which is why the review column exists.
Common traps when moving PDF invoices to Excel
- Decimal comma or decimal point.
1.240,00and1,240.00are the same amount;1,240can be either. Decide the rule per supplier. - Day and month.
03/04/2026is 3 April in France and 4 March in the US. Agree the order before you run anything. - Several VAT rates on one invoice. One net and one VAT column are not enough; keep a line per rate or a total with a note.
- Credit notes. They should come out as negative amounts, not as a second invoice that doubles your spend.
- Currency. If a supplier invoices in another currency, keep the currency column and convert later, never silently.
A five-minute check before you trust the table
- The number of rows equals the number of PDFs.
- The sum of the total column matches what your accounting or bank shows for the same period.
- No invoice number appears twice.
- Open three random invoices and compare them with their rows.
- Every row in the review list has a decision: fixed by hand, or confirmed as it is.
Limits to know
- Scans are pictures. They need text recognition (OCR) first, and recognised digits need checking.
- New layouts need their labels added. Usually quick, but someone has to do it.
- Unusual number formats (three digits after a comma, for example) must be agreed, not guessed.
Doing it yourself or handing it over
If you are comfortable with Python, the steps above are enough to start. You can see the demo on made-up invoices on our work page. If you would rather send a folder and get back a checked table with a list of what needs your eye, that is our Documents into data service. When the files are confidential, the processing can stay on your computer or ours in the EU — see private AI without the cloud.
Questions
Can scanned invoices be read the same way?
Not directly. A scan is a picture of paper, so the text has to be recognised first (OCR). After that the same rules apply, but every recognised number deserves a check.
What happens when an invoice has no number or the totals don't add up?
It should not be fixed silently. The row stays as printed and is flagged for a person to decide.
Do the invoices leave my computer?
With a script, no: it runs where your files are. With an online converter, check where the files are sent and kept — invoices hold client data.