A three-way match compares three documents before an invoice is paid: the purchase order (what you agreed to buy and at what price), the receiving record or delivery ticket (what actually showed up), and the vendor invoice (what you’re being asked to pay). If quantities and prices line up within tolerance, the invoice moves to payment. If not, it goes to someone to resolve.
Why it matters
It stops the most common AP leaks: paying for material that never arrived, paying a higher unit price than agreed, and paying the same invoice twice. In construction, where deliveries land at a jobsite and paperwork lands at the office, the receiving record is often the weak link.
Worked example
INV-4471 bills $48,200 against PO-118 on Riverside Medical Center. The PO has $42,050 remaining. Delivery tickets confirm the full quantity was received, so the $6,150 gap is a price or scope issue, not a short shipment. The invoice is held until the PO is revised or the vendor issues a credit. (Illustrative sample data.)
Common mistakes
- Skipping the receiving step because the field never sends delivery tickets back to the office.
- Setting tolerances so loose that real overcharges pass through.
- Applying it to subcontract pay apps, which need a different check: percent complete against the schedule of values, plus lien waivers.
How os.construction handles it
We’re building the match to run as invoices arrive, with field receipts captured on the same record and mismatches routed to a person. Nothing gets paid without that human sign-off.