Turn invoice surprises into a repeatable system: detect → classify → fix permanently
Finance/AP teams
Approving invoices
Procurement & Ops teams
Managing vendors and billing rules
Property/Facilities managers
Who request/approve work
Anyone
Who is tired of "we'll watch it next time" (and then it happens again)
Use this when:
Start with one vendor and do this:
A variance is not a "problem."
A variance is a signal that one of these is broken:
Beginner rule: If the same variance happens twice, it's a system failure, not a one-off.
You need a baseline expectation per invoice type: Fixed monthly fee (expected = contract fee), Time & materials (expected = approved hours × approved rate), Pass-throughs (expected = receipts + allowed markup).
Done looks like: Expected cost can be calculated in < 2 minutes.
For each invoice: Expected amount, Billed amount, Variance $, Variance %, Reason code (Template 2), Action (approve/partial/dispute/request docs).
Done looks like: Every variance has a code and an owner.
Ask: Why did it exceed expected? Why did we allow it to reach invoicing? Why wasn't it caught earlier? Why does the vendor think it's allowed? Why don't we have a control that prevents it?
Done looks like: You can name a fix (not just blame).
Most fixes fall into one of these buckets: Contract fix, Process fix, Vendor behavior fix, Data fix, or Internal enforcement fix. See details below.
A variance is only 'closed' when: the invoice is corrected AND the fix is implemented (contract/process/vendor behavior).
Done looks like: Repeat rate drops over 4–8 weeks.
| Date | Vendor | Site | Invoice # | Billing period | Expected $ | Billed $ | Variance $ | Variance % | Reason code | Action | Owner | Due date | Notes | |---|---|---|---|---|---:|---:|---:|---:|---|---|---|---|---|
Use 1 code per variance (pick the dominant cause): SCOPE / APPROVALS - S1: Extra work billed without Change Order ID - S2: Base scope unclear / vendor claims included work is extra - S3: Work requested without approval trail - S4: Duplicate work/rework billed PRICING - P1: Wrong rate / wrong labor category - P2: Escalator applied incorrectly - P3: Minimums/fees not in contract PASS-THROUGHS - T1: Pass-through billed without receipts/tickets - T2: Markup exceeds allowed cap - T3: Vague "materials/misc" with no detail DATA QUALITY - D1: Wrong site allocation / missing site breakdown - D2: Wrong dates/period (double billed period) - D3: Math error COMPLIANCE - C1: Invoice missing required documentation (COI, logs, photos) - C2: Noncompliant vendor billed (should be held)
Weekly Variance Review (15 minutes) 1) Top 5 variances by $ (5 min) - Vendor / invoice / variance - Reason code 2) Decisions (7 min) - Approve / partial approve / dispute - Owner + due date - What evidence is required? 3) System fixes (3 min) - Which fix are we implementing? Contract / Process / Vendor behavior / Data / Enforcement - By when?
Subject: Invoice [#] returned — missing required info Hi [Name], We reviewed invoice [#] and cannot approve the following line items: - [line item] — missing Change Order ID - [line item] — missing documentation for pass-through charges - [line item] — rate mismatch vs pricing exhibit Please revise and reissue the invoice with: 1) Change Order IDs for any extra work 2) Receipts/tickets for pass-throughs 3) Correct rates per our agreement We can approve undisputed amounts while the above is corrected. Thanks, [Name]
# of variances per vendor per month
Should drop
$ disputed and corrected before payment
Track total
% invoices requiring correction
Should drop
Repeat variance rate by reason code
Should drop
Average time to approve clean invoices
Should improve
Assumptions: You can enforce basic invoice gates.
Where this can fail: If payment happens without checklist enforcement.
v1.0 (2026-01): Latest release