Life of an invoice
Volt Electric emails INV-4471 for $48,200. It is $6,150 more than is left on PO-118. Follow it through a three-way match, a hold a person approves, and into job cost, cash and WIP.
INV-4471, from the inbox to job cost
- Day 1 · AP inbox · sample data
An invoice arrives
Volt Electric emails a PDF: INV-4471, electrical material on Riverside Medical Center, billed against PO-118. Nothing in accounting knows about it yet.
AP and agents are planned. The agent steps below show how we are designing them to work, not a shipped product.
- AP agent · reads it
Read, don’t re-key
The AP agent reads the PDF (OCR) and pulls the fields a clerk would type: vendor, invoice number, PO reference and amount, $48,200. Anything it can’t read with confidence goes to a person instead of being guessed.
- Coding
Code it to the job
The PO already says where the cost belongs, so the invoice inherits it: job 24-118, cost code 26-050 Electrical. Coding at the door is what lets the job cost report see the invoice before it’s paid.
- Match leg 1 · the PO
Does it fit the commitment?
A purchase order is a commitment: money you agreed to spend before anyone billed you. What matters is what’s left on it after earlier invoices.
PO-118 remaining = $42,050 - Match leg 2 · receiving
Did it show up?
The field logged the delivery tickets against PO-118: the full quantity arrived. So this isn’t a short shipment. That’s the third document in a three-way match.
On a subcontract, this leg is different: you check the sub’s pay app against approved percent complete, not a delivery ticket.
- The mismatch
$6,150 more than is left
Everything was received, but the invoice is bigger than the commitment. That points at price or scope: a change nobody wrote into the PO, or a pricing error.
$48,200 invoice − $42,050 remaining = $6,150 over - Human in the loop
The agent proposes, a person decides
The agent proposes holding INV-4471 and shows its sources: the PDF, PO-118 and the delivery tickets. The PM approves the hold. Nothing gets paid, held or changed without that sign-off, and the decision is logged.
- Resolve
Ask Volt, then pick a path
AP tells Volt why the invoice is on hold. Two common ways out:
The extra is real: issue a change to PO-118 for $6,150, so the commitment covers it. If the owner directed the work, it belongs on a change order to the owner too. It isn’t: short-pay $42,050 and ask Volt for a credit memo.
Here, the PM confirms the extra and approves the PO change (sample).
- Before the check
Conditional lien waiver first
Before paying, collect a conditional waiver from Volt for the amount you’re about to pay. It only takes effect when the payment clears. After it clears, collect the unconditional one. Lien rules vary by state; check yours.
- Posted
One entry, every report
The invoice posts once. The same second, PO-118 draws down to zero, job cost on 26-050 goes up, the cash forecast schedules the payment and the WIP’s cost to date moves.
$42,050 + $6,150 PO change − $48,200 invoice = $0 left on PO-118 - How it happens today
Found at month-end
On a typical stack, the invoice is re-keyed into AP, coded later by someone else, and the overage surfaces at month-end reconciliation, when it’s hardest to fix.
These are common failure points, not statistics. Score your own stack.
The whole match, as a table
INV-4471 from Volt Electric on Riverside Medical Center, Job 24-118 (sample data). Each row is a step and what changed in the money.
| Step | What happens | Money |
|---|---|---|
| 1. Arrives | PDF emailed to the AP inbox | Nothing recorded yet |
| 2. Read | AP agent reads vendor, invoice number, PO reference and amount (OCR) | $48,200 invoice |
| 3. Coded | Job 24-118, cost code 26-050 Electrical, from the PO | No change |
| 4. PO check | Compared to the remaining commitment on PO-118 | $42,050 remaining |
| 5. Receiving check | Field delivery tickets show the full quantity received | No short shipment |
| 6. Mismatch | Invoice exceeds what’s left on the PO | $6,150 over |
| 7. Hold | Agent proposes a hold, the PM approves it | $48,200 held |
| 8. Resolve | Volt notified; PM approves a change to PO-118 (the other path: short-pay and credit memo) | PO-118 remaining $42,050 → $48,200 |
| 9. Lien waiver | Conditional waiver collected before payment | For the amount being paid |
| 10. Posted | Job cost, commitment, cash forecast and WIP update together | +$48,200 cost on 26-050; PO-118 remaining $0 |
How it happens today
- Shared inbox. The PDF waits in an AP inbox until someone opens it. Nobody on the job knows it arrived.
- AP entry. Vendor, invoice number, amount and PO are typed into accounting by hand.
- Coding. A PM codes it days later, after digging out the PO. The job cost report runs behind.
- Month-end. The $6,150 overage turns up at month-end reconciliation, sometimes after the check is cut.
Five terms behind the match
- 01
Three-way match
Pay an invoice only when three documents agree: the purchase order (what you agreed to buy, at what price), the receiving record (what showed up), and the invoice (what you are asked to pay). A two-way match skips receiving and only checks the invoice against the PO.
- 02
Commitment
Money you have agreed to spend but have not been billed for yet: purchase orders and subcontracts. Remaining commitment is the committed amount, plus approved changes, minus what has been invoiced against it. It is the number an invoice has to fit inside.
- 03
PO vs subcontract
A purchase order buys material or equipment, so the match checks delivery tickets. A subcontract buys work (labor, usually with material), so a sub’s invoice is a pay app: it is checked against approved percent complete on the sub’s schedule of values, not a receiving record.
- 04
Retainage on sub invoices
Subcontract pay apps usually have retainage withheld, often 10%. If INV-4471 were a sub pay app, $4,820 would be held back from the $48,200. Material POs usually carry no retainage. Your contracts decide both.
- 05
Conditional lien waiver
A waiver of lien rights that only takes effect once the stated payment clears. Collect it for the amount you are about to pay, before you pay; collect the unconditional waiver after the money lands.
Keep going
Keep exploring
Related across os.construction
- GlossaryThree-way matchAn AP control that checks an invoice against its purchase order and the receiving record before payment is approved.
- GlossaryOCR (Optical Character Recognition)Technology that reads text from scanned documents, PDFs and photos and turns it into data software can use.
- BlogThe 3-way match, explained for construction APThe textbook 3-way match is a purchase order, a receiving report and an invoice. Construction AP needs a version that works for subcontracts, progress billing, retainage and lien waivers. Here's what to match, and where it breaks.
- PlatformAI agentsAgents that draft the work and wait for a human to approve it.
- PlatformSubcontractor management (use case)How os.construction handles subcontractor management on one record.
- DocsSubcontracts and commitment changesHow subcontracts and purchase orders are structured, how commitment change orders follow owner changes, and how sub invoices, retainage and compliance are checked against the commitment.
Sample project included
Try this workflow on the sample project
Every trial workspace includes a sample project with sample data, so you can follow these steps in the app before touching a live job.
Want this on live job data?
Change orders and pay apps are live in os.construction; WIP and AP are planned. On one record, every number on this page is entered once.
14-day free trial. Pricing for paid plans isn't set yet. Talk to us. Already have an account? Sign in →
All figures are illustrative sample data, not a real project. Contract terms and state law decide how retainage, stored materials and change orders work on your job. Check both.