invoices accounts-payable n8n claude document-processing

From €15 to €3 per invoice: how a 40-person accounting firm cut AP costs by 80%

15 April 2026 ·Accounting ·40 people ·3 min read

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.

graph LR A[Gmail / Drive
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:

  1. Downloading the PDF from email or a shared drive
  2. Manually entering vendor name, invoice number, date, line items, and total into an Excel tracker
  3. Cross-referencing against the purchase order log
  4. Sending an internal Slack message to the relevant budget owner for approval
  5. 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.