TL;DR
3-way matching compares invoices, purchase orders, and goods receipts to ensure you only pay for what you ordered and received. Manual matching takes 30-45 minutes per invoice. AI agents do it in under 60 seconds with higher accuracy. The key: AI understands context, so it can match items even when descriptions don’t match exactly.
3-way matching is the foundation of accounts payable controls. Done right, it prevents:
- Paying for goods you didn’t receive
- Paying prices higher than agreed
- Paying duplicate invoices
- Paying for quantities you didn’t order
Done poorly—or skipped due to time pressure—it leads to overpayments, fraud exposure, and audit findings.
Most companies do it poorly. Not because they don’t care, but because they don’t have time to do it right.
What Gets Matched
A 3-way match compares three documents:
1. Purchase Order (PO)
What you agreed to buy:
- Vendor
- Items/services
- Quantities
- Unit prices
- Total amount
- Delivery date
- Payment terms
2. Goods Receipt (GR)
What you actually received:
- Vendor/carrier
- Items received
- Quantities received
- Condition
- Receipt date
- Receiver signature
3. Invoice
What the vendor says you owe:
- Vendor
- Items billed
- Quantities billed
- Unit prices
- Total amount
- Invoice date
- Payment terms
A successful match means all three documents agree: you ordered it, you received it, and the invoice reflects what you ordered and received.
Why Manual Matching Is Painful
Let’s walk through a manual match:
Step 1: Find the PO (5 minutes) Invoice references PO-39847. Open ERP, search for PO. Not found. Check invoice again—maybe it’s 39847A or PO39847 or 039847. Try variations until you find it.
Step 2: Find the receipt (5 minutes) PO shows multiple receipts. Which one matches this invoice? Check dates, quantities. Cross-reference receiver notes.
Step 3: Compare header info (5 minutes) Does the vendor name on the invoice match the PO? (Grainger vs. W.W. Grainger vs. Grainger Industrial Supply). Are payment terms the same?
Step 4: Compare line items (20 minutes) This is where it gets ugly:
- PO line 1: “Widget Type A, 100 units @ $5.00”
- Invoice line 1: “Type A Widgets (100) - $500.00”
- Receipt line 1: “Widgets, A-Type, qty 100”
Are these the same? Probably. But you need to verify each line, check for missing items, identify any extras, and calculate variances.
Step 5: Handle discrepancies (10+ minutes) Invoice total is $5,127. PO total is $5,000. Why? Shipping? Price increase? Extra items? Dig through to find the variance, decide if it’s acceptable, document the decision.
Total time: 45+ minutes
Now multiply by 500 invoices per month.
How AI Agents Match
The same invoice takes an AI agent under 60 seconds:
Document Understanding The agent reads all three documents—not by looking for data in specific fields, but by understanding the content. It identifies key information regardless of format or layout.
Fuzzy Matching The agent knows that “Widget Type A,” “Type A Widget,” and “A-Type Widgets” are the same thing. It matches on meaning, not exact text.
Unit Conversion PO says “1 dozen @ $60.” Invoice says “12 each @ $5.” The agent recognizes this is equivalent.
Tolerance Rules Invoice is 2% over PO? Within tolerance, auto-approve. Invoice is 15% over? Flag for review with explanation.
Variance Explanation When there’s a discrepancy, the agent doesn’t just flag it—it explains it. “Invoice includes $127 shipping charge not on original PO. Shipping charges from this vendor typically range $100-150. Recommend: Approve.”
Match Outcomes
AI agents categorize matches into clear outcomes:
Perfect Match
All three documents agree exactly. Auto-approve.
Match Within Tolerance
Minor variances within configured thresholds. Auto-approve with notation.
Partial Match
Some line items match, others don’t. Common scenarios:
- Partial shipment (received 80 of 100 units)
- Back-order (remaining units coming)
- Substitution (different item sent)
Agent matches what it can, flags discrepancies with context.
No Match
Can’t find corresponding PO or receipt. Agent attempts to:
- Find similar POs (same vendor, similar amount, similar items)
- Check for blanket POs that might apply
- Identify as non-PO invoice requiring special approval
Duplicate
Invoice appears to be a duplicate of previously processed invoice. Agent provides comparison and asks for confirmation.
Edge Cases AI Handles
Blanket POs
Long-term contracts with periodic invoicing against a blanket PO. Agent:
- Tracks cumulative invoiced amount
- Monitors remaining balance
- Alerts when approaching PO limit
- Handles releases/call-offs
Multiple Receipts per PO
Large orders shipped in multiple deliveries. Agent:
- Matches invoice to specific receipt(s)
- Handles partial invoices against partial receipts
- Tracks remaining open amounts
Multiple Invoices per Receipt
Single delivery invoiced separately (e.g., goods vs. freight). Agent:
- Links related invoices
- Ensures no double-payment
- Tracks total cost against PO
Service POs
No physical receipt for services. Agent:
- Matches to service completion confirmation
- Checks for time/milestone billing terms
- Validates against approved service hours
Returns and Credits
Goods returned, credit expected. Agent:
- Links credit memo to original invoice
- Applies credit to payment calculation
- Tracks pending credits
The Accuracy Difference
Manual matching accuracy: 92-96%
- Humans miss things, especially under time pressure
- Similar invoices can slip through as different
- Variances get approved without scrutiny
AI agent accuracy: 99%+
- Consistent processing regardless of volume
- Never gets tired or rushed
- Flags anything unusual for review
The 4-7% accuracy difference matters. On $10M in annual payables, that’s $400K-700K in potential overpayments, duplicate payments, or fraud exposure.
Implementation
Adding AI matching to your process:
Week 1: Connect Systems
- Link to ERP (PO and receipt data)
- Link to invoice capture (incoming invoices)
- Configure basic matching rules
Week 2: Configure Tolerances
- Price tolerance (e.g., 2%)
- Quantity tolerance (e.g., 5%)
- Vendor-specific rules
- Category-specific rules
Week 3: Shadow Mode
- Agent matches all invoices
- Humans verify matches
- Refine rules based on results
Week 4: Go Live
- Auto-approve matches within tolerance
- Route exceptions to humans
- Monitor and adjust
ProcIndex’s AP Agent handles 3-way matching automatically. See it in action