Three-way matching
Three-way matching is the procurement control that prevents over-payment, fraud and clerical errors. The three documents matched are:
- Purchase Order (what you ordered)
- Goods Receipt (what was delivered)
- Invoice (what you're billed for)
If they all agree, the invoice is auto-cleared for payment. If they don't, an exception is raised.
How matching runs
When a vendor invoice arrives:
- Procurement → Invoices → New invoice (or auto-imported via vendor portal).
- The system matches the invoice against the PO and goods receipt.
- If everything matches → Approved for payment.
- If not → Exception — Procurement reviews.
Common exceptions
| Exception | Cause |
|---|---|
| Over-billed | Invoice charges more than the PO total |
| Under-delivered, fully billed | Vendor billed for more than delivered |
| Price mismatch per line | Unit price on invoice doesn't match PO |
| Not on PO | Invoice has lines that weren't on any PO |
| No goods receipt | Invoice received but goods not yet recorded |
Resolving exceptions
For each exception:
- Open the invoice.
- Read the matching report (which lines disagree).
- Choose:
- Accept variance — small differences accepted with a reason.
- Reject invoice — return to vendor with explanation.
- Create supplementary PO — for legitimately added items.
Tolerance settings
Small price variances are common. Set tolerance under Admin → Procurement Settings:
- Per-line variance allowance — e.g. 2% or $50.
- Total invoice variance allowance.
Within tolerance → auto-approved. Outside → exception raised.
Audit trail
Every match decision is logged:
- Auto-approved at $X variance, by which rule.
- Manually accepted by [User] with reason "[Reason]".
- Rejected, returned to vendor.
This is the audit material for regulators or external auditors.