Extract PDF Invoice Data Into a Spreadsheet Automatically (No Typing)
By Automate Basics
Loading guide…
By Automate Basics
For a one-off, paste the invoice PDF into ChatGPT or Claude and ask for a clean table of the fields you need, then copy it into your spreadsheet. For invoices that arrive every week, build a pipeline in n8n, Make, or Power Automate that watches a folder or inbox, reads each PDF, and appends a row to Sheets or Excel. Always check the total and tax against the PDF before trusting the row.
A spreadsheet where each invoice is one tidy row: supplier, invoice number, date, due date, subtotal, tax, and total. No more opening a PDF, squinting at it, and retyping numbers into cells. You get two routes here. One is a 30-second paste for the invoice sitting in front of you right now. The other is a pipeline that watches a folder or inbox and fills the sheet on its own, so invoices that arrive every week land as rows without you touching them.
For a single invoice, you don't need any setup. Open ChatGPT or Claude, attach the PDF, and ask for exactly the columns you want back. Keep the prompt specific so the output drops straight into your sheet:
Read this invoice and return a table with: supplier, invoice number, invoice date, due date, subtotal, tax, total. One row. Use YYYY-MM-DD dates and plain numbers, no currency symbols.
You get a clean table in seconds. Copy it, paste it into your spreadsheet, and you're done. Have ten invoices this month? Attach them all at once (both tools take multiple files) and add one line: "Return one row per invoice, plus a column for the source filename." Now ten minutes of retyping is one paste, with a filename column to audit each row against its PDF.
The paste method is great until invoices show up constantly and the copy-paste itself becomes the chore. Once you're handling them weekly, or several suppliers email PDFs to one address, it's worth wiring a pipeline that runs without you. The shape is always the same three moves: a trigger (a new file in a folder, or a new email with a PDF), a read step (AI pulls the fields), and an append step (a new row in Sheets or Excel). Build it once and every future invoice files itself.
Decide where invoices land. Two common setups:
In n8n, Make, or Power Automate, the first node is this trigger. Power Automate fits well if you're on Microsoft 365, since it reads Outlook and OneDrive natively. n8n fits if you want to own the workflow and point it anywhere. Start with whichever storage your invoices already use.
Add a step that sends the PDF to an AI model and asks for the fields. This is the same instruction as the one-off, written once and reused for every invoice:
Extract supplier, invoice number, invoice date, due date, subtotal, tax, total. Return only JSON with those keys. Dates as YYYY-MM-DD, numbers with no symbols. If a field is missing, use null.
Asking for JSON (a simple structured format of key-value pairs) matters here: the next step needs named fields it can map to columns, not a paragraph. If your PDFs are text-based, the model reads them directly. For scans, add an OCR step before this one so the AI receives clean text.
Add the final step: Append row to a Google Sheet (Sheets node / Power Automate "Add a row") or Add row to an Excel table on OneDrive. Map each JSON field from Step 2 to its column: supplier to Supplier, total to Total, and so on. Include the filename or email subject in a column so every row traces back to its source. Run a test with one real invoice and watch the row appear. That single successful run is the moment the chore turns into infrastructure.
AI reads invoices well, but "well" is not "always," so never let a number reach your books unverified. Add a lightweight check before you trust a row:
The quiet failure mode here isn't a wrong supplier, it's a number read in the wrong format: an invoice from Germany may write the total as 1.234,56 while your sheet expects 1234.56. Tell the AI your format explicitly ("decimal point for cents, no thousands separators") and flag any total far larger or smaller than typical. This keeps human eyes only where judgment is needed.
Grab the most recent invoice PDF in your inbox. Open ChatGPT or Claude, attach it, and run the one-off prompt above. Paste the result into a fresh spreadsheet with your headers. That single round trip shows you exactly how clean the output is and which fields need a second look. Once you trust it on a handful of real invoices, you'll know precisely what to wire into the n8n, Make, or Power Automate pipeline, and the typing is gone for good.
Drag your three most recent invoices through the manual version first: paste, extract, check against the PDF. Once you trust the extraction on real invoices, pick your trigger and automate it.
That’s the whole lesson. Try it on a real task while it is fresh, then come back for the next one.
The same corner of the library, one job further on.