Workflow Automation · Read + Write
Invoice 3-way match
Automate
Rep · High
Reason · Medium
The problem
Accounts payable triple-checks each invoice against the PO and goods-receipt — by hand. Long lead times, late payments, missed early-pay discounts.
The AI approach
Extract fields from invoice + PO + GR with IDP. Match line-by-line under tolerance rules. Auto-pay matches; route exceptions to AP.
The outcome
~85% touchless
Match cycle from days → minutes. Exceptions are the only cases AP touches. Early-pay discounts captured.
Try itInput → Process → Output
Input — PO + GR + invoice
Purchase OrderPO-8821
| vendor | Tipa V Co. |
| item · pipe-4" | 120 × 35฿ = 4,200 |
Goods ReceiptGR-3441
| received | 120 units |
| condition | OK |
InvoiceINV-7710
| vendor | Tipa V Co. |
| billed | 120 × 35฿ = 4,200 |
Process — AI pipeline
1Extract fields from each docReadGenerative
2Normalise to common schemaRulesSymbolic
3Apply 3-way match rules (qty / price / total)RulesSymbolic
4Route: auto-pay or AP exceptionWriteSymbolic
Output — match decision
Click Run demo to extract from all 3 docs and apply the matching rules.
Match decision PASS · auto-pay
| Rule | PO | GR | Invoice | Result |
| Vendor on approved list | Tipa V | Tipa V | Tipa V | ✓ |
| Qty (GR ≤ PO) | 120 | 120 | 120 | ✓ |
| Price (invoice = PO) | 35฿ | — | 35฿ | ✓ |
| Total within ±2% | 4,200 | 4,200 | 4,200 | ✓ |
Auto-routed to AP system: Approve & schedule payment T+30. Early-pay discount captured: ₿84.
Three AI types in this use case
SymbolicThe matching rules: qty(GR) ≤ qty(PO); price(invoice) = price(PO); total(invoice) within ±2% of GR×price; vendor must be on approved list.
PredictiveOCR text detection on each doc (scanned or PDF); document-type classifier.
GenerativeVision-LLM extracts free-form fields (vendor name variations, multi-line addresses) into the schema.
The stack
- OCR · Textract / DocAI
- Vision-LLM · for free-form fields
- Schema · Pydantic
- Rules engine · Drools / custom · ERP API
When this works
- Vendors send structured invoices (not handwritten or photo-of-receipt)
- Master data is clean (vendor, item, GL accounts)
- Tolerance bands are codified, not in someone's head
When it fails
- Partial deliveries split across multiple GRs — many-to-many matching
- Currency / VAT edge cases — rules engine misses local quirks
- Auto-pay turned on for high-value invoices — fraud risk
- Vendor changes packing UOM mid-contract — quantities mismatch