Home/Agents/Bookkeeping
AP Bookkeeper · Production · v2.4

Invoice in, GL posted — in 90 seconds, audit-chained.

An AI bookkeeper that watches your accounts-payable inbox, extracts invoice fields against vendor history (RAG over MongoDB Atlas Vector Search), categorizes against your chart of accounts, posts to QuickBooks or Xero, and escalates exceptions to WhatsApp. $0.50 per invoice categorized. Nothing else.

  • $0.50per invoice categorized
  • $2per exception resolved
  • $5per new vendor onboarded
  • $0per skipped or duplicate
How it runs

The loop, end to end.

01

Ingest

Gmail push or webhook delivers the invoice (PDF, image, or HTML email). The agent extracts vendor, line items, amount, due date, PO reference, and tax fields via Claude vision + structured output.

02

Match

RAG lookup against your vendor history: prior invoices, contract terms, GL coding patterns, PO records. Returns confidence score. Below threshold → exception. Above → continue.

03

Post

Posts to QuickBooks Online or Xero with correct GL account, class, and tax treatment. Attaches the original PDF. Marks PO as matched if applicable.

04

Escalate

Variances (amount mismatch, unknown vendor, missing PO) get a WhatsApp message to the controller with the proposed coding + a one-tap approve/reject. Audit chain records the decision.

Inside the agent loop

The tools Claude actually calls.

→ tool_use: gmail.fetch_attachment(message_id='gm_9a1c', kind='pdf')
← invoice.pdf (382 KB)
→ tool_use: claude_sonnet.extract_invoice(pdf=...)
← {vendor: 'Acme Corp', amount: 12450.00, po: 'PO-4421', due: '2026-07-15'}
→ tool_use: rag.vendor_lookup(name='Acme Corp', tenant='cust_482')
← 14 prior invoices, 94% match confidence on GL=5240 (software)
→ tool_use: quickbooks.match_po(po='PO-4421')
← matched, amount within 0.3% tolerance
→ tool_use: quickbooks.create_bill(vendor='Acme Corp', amount=12450, gl=5240, po='PO-4421')
← bill_id 'qb_7f3a' created
→ tool_use: outcome_ledger.record(event='invoice_categorized', value=0.50)
→ tool_use: audit_chain.append(event='qb.create_bill', actor='agent.bookkeeper', tenant='cust_482')

Real tool-call sequence from a recent production run. Names redacted.

Integrations included

Native MCP. No custom wrappers.

  • QuickBooks Online
  • Xero
  • Sage Intacct
  • NetSuite (Q3 2026)
  • Gmail / Outlook attachment ingestion
  • Bill.com
  • Ramp / Brex receipts
  • Slack approval routing
  • WhatsApp Business API
  • MongoDB Atlas Vector Search (RAG)
  • DocuSign for new vendor W-9s
  • Custom ERP via webhook
What this agent will NOT do
  • Bank reconciliation (separate scope — ask)
  • Payroll (use a payroll provider; we sync the journal entries)
  • Tax filing (we prep the data; your CPA files)
Before · After

Your bookkeeping-agent process, redrawn.

Before

Manual AP: 8 steps, 3 humans, 3 days

  1. 01
    Invoice arrives in shared inbox
    👤 Inbox owner · 0 min
  2. 02
    Forward to AP clerk
    👤 Inbox owner · 5 min
  3. 03
    Open PDF, extract fields manually
    👤 AP clerk · 4 min
  4. 04
    Search ERP for matching PO
    👤 AP clerk · 3 min
  5. 05
    Determine GL account, class, tax
    👤 AP clerk · 2 min
  6. 06
    Post to QuickBooks / Xero
    👤 AP clerk · 2 min
  7. 07
    Route for approval if over threshold
    👤 Controller · 1 day
  8. 08
    File the PDF, mark done
    👤 AP clerk · 1 min
Total time
3 days
Handoffs
4
Humans
3
After · with rpa-automate

Agentic AP: 3 steps, 1 approval, 90s

  1. 01
    Invoice arrives → agent extracts fields via Claude vision
    🤖 Bookkeeping agent · 8 sec
  2. 02
    RAG match against vendor history, PO records, prior GL coding
    🤖 Bookkeeping agent · 12 sec
  3. 03
    Post to QuickBooks / Xero — or escalate variance to WhatsApp
    🤖 Bookkeeping agent · 60 sec
Total time
90 seconds
Handoffs
1
Humans
1
ROI · bookkeeping-agent

Do the math with your numbers.

invoices
$
In-house monthly cost
$4,800
400 × $12
With rpa-automate
$200
400 × $0.50 / invoice
You save
$4,600
96% cheaper / month

Assumes linear scaling and no ramp-up. Real deployments hit steady-state around week 3–4.

Also see: Automate Accounts Payable — the same math from a process-first angle, for buyers thinking "we need to fix our accounts payable process" before shopping for an agent.

FAQ

What confidence threshold do you use for auto-post?

Default is 90% on GL coding match against your vendor history. Below that, the agent escalates via WhatsApp with its best guess pre-filled. You can lower the threshold once you've built trust — most customers move to 80% after 60 days.

Can it handle a new vendor we've never invoiced before?

Yes. With no vendor history, the agent uses your chart-of-accounts descriptions and the invoice line items to propose GL coding via Claude Sonnet — and always escalates the first invoice from a new vendor for approval. After 2-3 approved invoices, it learns the pattern.

Will it post duplicate invoices?

No. Deduplication runs on invoice number + vendor + amount + date. Duplicates are dropped without a charge — you don't pay for re-runs of the same invoice.

What about three-way matching?

Yes. If you have POs in QuickBooks/Xero, the agent matches invoice → PO → receipt (if you use receiving). Configurable tolerance (default 2%).

Is this just RPA with an AI sticker?

No. Traditional RPA fails on unstructured invoices and new vendors. This is a real agent — it reasons about the invoice in context of vendor history and your COA, calls multiple tools, decides when to escalate. See /rpa-vs-agentic-ai for the technical distinction.

Want to see it run on your data?

A $0 outcome audit takes 3 minutes. We'll show you the outcome math, the integrations, and what week-one looks like — with your real systems.

Book the audit →