All modules
Module 07 · business · intermediate
Invoice and Receipt Extractor
After this module you can turn PDF receipts and invoices into clean spreadsheet rows with AI: no manual data entry.
What it does
Upload a PDF to POST /webhook/receipt. n8n extracts the text, OpenAI pulls out vendor, invoice number, date, currency, subtotal, tax, total, category and line items, the values are cleaned and flagged for review if anything's missing, and the result is appended to an Expenses Google Sheet. Add ?dry_run=true to get the extraction without saving.
Flow
Receipt API → Has PDF? ─true─→ Extract PDF Text → Extract Receipt Data (OpenAI) → Clean Receipt → Dry Run?
└false→ 400 ├true─→ Respond
└false→ Save to Expenses → Respond
Verification status
- Upload validation (400s) and PDF text extraction: tested on n8n 2.43.6 with
assets/sample-receipt.pdf(the text reaches the AI node, which then stops on the missing OpenAI credential). - AI extraction: needs an OpenAI credential.
WITH_CREDS=1 ./test/test.shchecks 9 fields against the sample receipt. - Saving: needs Google Sheets.
WITH_CREDS=1 SAVE=1 ./test/test.sh.
Files
| File | Tier | Purpose |
|---|---|---|
| lesson.md | Free | Step-by-step build |
| workflow/starter.json | Free | Upload + PDF extraction only |
| workflow/learner.json | Learner | Finished workflow |
| workflow/business.json | Business | Business workflow (see setup guide) |
| setup-guide.md | Business | Credentials + configuration |
| assets/sample-receipt.pdf | Learner | Test receipt with known values |
| assets/expenses-template.csv | Free | Sheet header row |
| exercises.md | Learner | Practice tasks |
| solutions.md | Learner | Exercise solutions |
| notes.md | Private | Learning log |
| sell/ | Private | Offer, video script, blog post |