From €15 to €3 per invoice: how a 40-person accounting firm cut AP costs by 80%
Results at a glance
Time saved
12h/week
Cost per unit
€15/invoice → €3/invoice
Tools
Claude API · n8n · Google Drive · Notion
Every accounting firm processes hundreds of supplier invoices every month. For this client, that meant two people spending roughly half their week opening PDFs, copying amounts into a spreadsheet, matching against purchase orders, flagging mismatches, and chasing approvals over email.
The process was accurate enough - but expensive, slow, and impossible to scale.
PDF arrives] -->|n8n monitors| B[Claude API
extract JSON] B -->|vendor · date · total · VAT| C{PO match?
within 2%} C -->|Yes - 74%| D[Auto-approve
log to Notion] C -->|No / mismatch| E[Slack button
budget owner] E -->|One click| D D -->|trigger| F[Accounting
software sync]
The problem
The team was processing around 300 invoices per month across 80+ suppliers. Each invoice required:
- Downloading the PDF from email or a shared drive
- Manually entering vendor name, invoice number, date, line items, and total into an Excel tracker
- Cross-referencing against the purchase order log
- Sending an internal Slack message to the relevant budget owner for approval
- Updating the tracker once approved, then forwarding to accounting software
Any mismatch - a different VAT rate, a missing PO number, a rounding difference - required manual back-and-forth. The average invoice took 18 minutes to fully process. At €0.80/minute for a junior accountant, that put the cost per invoice around €15.
The backlog on Fridays was a standing problem.
The solution
We built a two-stage pipeline using Claude’s PDF vision and n8n for orchestration.
Stage 1 - Extraction. n8n monitors the invoices inbox (Gmail) and a shared Google Drive folder. When a new PDF arrives, it sends it to Claude via the API with a structured extraction prompt. Claude returns a JSON object with: vendor name, invoice number, date, line items, subtotal, VAT, total, and currency. No OCR, no rigid templates - Claude reads the document the same way a person would.
Stage 2 - Matching and routing. n8n takes the extracted data and queries the purchase order log (a Notion database). If there’s a clean match within a 2% tolerance, the invoice is auto-approved and logged. If there’s a mismatch or no matching PO, n8n sends a Slack message to the relevant budget owner with the invoice details and a one-click approve/reject button. Decisions are written back to Notion and trigger the accounting software sync.
The entire pipeline runs in under 90 seconds per invoice.
Results
After four weeks in production:
- Processing cost: €15 → €3 per invoice (80% reduction)
- Time spent by the team: 12h/week → under 2h/week (spot-check reviews only)
- Auto-approval rate: 74% of invoices matched without human review
- Mismatch handling time: cut from ~25 minutes of back-and-forth to a 30-second Slack approval
- Backlog: eliminated
The two accountants now spend their Friday afternoons on higher-value work. The firm plans to extend the same pipeline to expense report processing next quarter.
What made it work
Three things were non-negotiable for the client:
Transparency. Every decision the pipeline makes is logged with the raw extracted data and the matching result. If an invoice is auto-approved, you can see exactly what Claude extracted and why it matched. No black box.
Graceful escalation. The pipeline never silently fails. Any invoice that can’t be matched with high confidence goes to a human. The automation handles the routine 74%; people handle the edge cases.
No new tools. The team already lived in Gmail, Google Drive, Notion, and Slack. The automation runs inside those tools - no new interface to learn, no change management problem.
Want a similar setup for your accounts payable process? Book a free 30-minute call to walk through your current workflow.