Guides
Indirect spend control: a Procurement Director guide
A Procurement Director's guide to indirect spend control: contract terms, vendor performance, and where margin drift hides in service spend.
Margin drift is the gap between what a vendor contract says and what the invoice actually charges. For a Procurement Director, that gap is not an AP problem. It starts at contract negotiation and lives in every rate card, tier schedule, and not-to-exceed clause your team writes.
You own the terms. AP owns the payment. The distance between those two functions is exactly where drift accumulates, invoice after invoice, until finance asks a question you cannot answer with the tools you have today.
Executive Summary
Procurement negotiates the rate. Accounts payable pays the invoice. Almost nowhere in a typical mid-market organization does one system check the invoice against the rate that procurement negotiated. That gap is structural, not a failure of either team, and it is where margin drift lives.
The mechanism is simple: a vendor contract encodes rules, a rate card, a volume tier, a not-to-exceed cap, a rebate trigger, as static text in a document. The ERP does not read that document. It pays what the vendor invoices unless someone manually reconciles the two. As vendor count and contract complexity grow, that manual reconciliation gets harder to sustain.
What changes it is treating contract compliance as a procurement deliverable, not only a payables control. That means building vendor scorecards around contract adherence and not just delivery performance, and running a periodic invoice-to-contract audit instead of assuming AP caught it.
1. Why does contract compliance sit outside procurement's normal scorecard?
Vendor scorecards measure delivery: on-time rate, quality defects, responsiveness to escalation. They rarely measure whether the vendor billed at the rate procurement negotiated. That leaves a blind spot exactly where procurement has the most influence: the contract itself. A vendor can score well on service and still bill above the agreed rate card every month, because nothing in the scorecard checks for it.
The scorecard gap exists because delivery metrics are visible to the people who use the vendor day to day, while billing accuracy is visible only to whoever reconciles the invoice against the contract, and that is rarely the same person.
A plant manager notices a late shipment immediately. Nobody notices a surcharge applied outside its trigger window unless they pull the contract and the invoice side by side.
Adding contract adherence to the vendor scorecard changes the incentive at renewal. A vendor negotiating its next term should know that billing accuracy is measured, not assumed. That single addition moves compliance from an audit finding to a standing performance metric procurement already tracks.
2. What contract clauses create the most exposure if left unmonitored?
Four clause types create ongoing exposure once signed: rate cards that a vendor's billing system does not automatically apply, volume tiers that require a rebate or discount step-down at a threshold, surcharge schedules tied to a condition like fuel price or seasonality, and not-to-exceed caps on time-and-materials work. Each requires someone to compare a contract term against an invoice line, not just approve a total.
These clauses share a property: they are conditional. The rate depends on volume, the surcharge depends on an index, the cap depends on a running total across the term. A three-way match against a purchase order checks quantity and unit price. It does not evaluate a condition written in prose in a separate document.
A. Rate cards and volume tiers
A rate card sets the price. A volume tier changes that price once spend crosses a threshold. Both require someone to track cumulative spend against the contract, not just the current invoice, and to confirm the vendor's system stepped the rate down when it should have.
B. Surcharges and NTE caps
A surcharge schedule ties an extra charge to a condition: fuel price, peak season, expedited service. The condition can lapse while the surcharge keeps appearing on the invoice. A not-to-exceed cap on labor or project work needs a running total maintained against the contract ceiling, not verified after the fact.
3. How should Procurement structure vendor performance reviews to catch billing drift?
A quarterly business review with a strategic vendor should include a billing accuracy line alongside delivery metrics: a sample of invoices checked against the current rate card, tier status, and any active surcharge conditions. This does not require a full audit every quarter. It requires a standing agenda item so billing accuracy is discussed with the same regularity as on-time delivery and quality.
Many QBR templates were built around operational performance because that is what procurement historically had visibility into. Contract terms sat in a file, referenced at renewal and rarely between.
Adding a billing sample to the review does two things. It surfaces drift early, before it accumulates across many invoices. It also signals to the vendor that terms are actively checked, which changes behavior at the margin even before any specific error is found.
The sample does not need to be large. A handful of recent invoices checked line by line against the current contract terms, at each review, catches a stale rate or an expired surcharge before it compounds. Link this to margin drift in Industrial distribution for how the pattern shows up by category.
4. Who should own the invoice-to-contract check: procurement or AP?
Neither function owns it end to end today, which is the actual problem. Procurement holds the contract terms and negotiates changes. AP holds the invoice and the payment cycle. The check that compares the two needs input from both: procurement to confirm current terms, AP to confirm what was actually billed and paid. Assigning it solely to one side without the other's data leaves it incomplete.
AP is measured on payment speed and invoice throughput, not on catching a rate discrepancy that requires pulling a contract an AP clerk may never have seen. Procurement is measured on cost savings at negotiation, not on whether savings negotiated actually show up on the invoice later.
A workable model puts procurement in charge of maintaining a current, accessible rate table for each active vendor, and gives AP or a periodic audit function the job of checking invoices against that table. Without the current rate table, the check cannot happen accurately regardless of who is assigned it. This is also where post-acquisition vendor contract consolidation creates the largest one-time exposure, when multiple legacy contracts for the same vendor category get merged and nobody reconciles which rate table is current.
5. Can indirect spend categories be reviewed the same way as direct materials?
No. Direct materials procurement has standard cost tracking and variance reporting built into the ERP. Indirect categories, freight, contract labor, MRO, and professional services, price against contracts that live outside the ERP as PDFs, with conditional terms an ERP has no field to represent. Reviewing indirect spend requires reading the contract itself, not just running a standard cost variance report.
Direct material variance shows up automatically because the ERP was built to track standard cost against actual cost. Indirect service categories were never built into that structure the same way.
A freight contract's accessorial schedule, a staffing agency's overtime multiplier, an equipment maintenance contract's response-time penalty: none of these map to a standard cost field. They sit in a document a procurement analyst has to open and compare manually.
Each indirect category carries its own mechanism for where terms and billing diverge. Freight invoice audit in Industrial distribution, contract labor billing in Industrial distribution, and MRO spend control in Industrial distribution each work through the specific clauses relevant to that category rather than treating indirect spend as one undifferentiated pool.
6. What should Procurement ask for before signing off on a periodic compliance check?
Before agreeing that a compliance check is complete, ask for three things: which contracts were actually compared against invoices, what time period the check covered, and what the check did not test. A check that covers rate cards but not surcharge conditions has left exposure on the table, and a sign-off without knowing the scope treats a partial check as a complete one.
A compliance check described only by its outcome, no findings, is not evidence the check was thorough. It could mean the terms are clean, or it could mean the check never looked at the clauses where drift actually occurs.
Ask for the list of contracts reviewed, the invoice period covered, and a plain statement of which clause types were tested: rate card, volume tier, surcharge schedule, or NTE cap. Any clause type not on that list is untested, not confirmed clean.
This is general information, not legal advice. Where a compliance finding touches a contractual dispute or a vendor negotiation with legal implications, involve counsel before acting on it. Contract compliance in Industrial distribution and AP recovery audit in Industrial distribution describe what each type of check actually covers.
For the wider pattern this sits inside, start with the margin drift guide.
For the wider pattern this sits inside, start with the margin drift guide. See also the six categories drift hides in and margin drift vs. legitimate price increases: how to tell them apart.
Common questions
Does adding a billing accuracy line to vendor scorecards require new software?
No. A spreadsheet comparing a sample of invoices to the current rate card and contract terms works as a starting point. The requirement is a repeatable process at each review, not a specific tool.
Should procurement re-negotiate a contract every time a billing discrepancy is found?
Not necessarily. A discrepancy may be a billing error the vendor corrects with a credit memo. Renegotiation is warranted when the discrepancy reveals a clause that is ambiguous or unenforceable as written, not for a one-time invoicing mistake.
Who should maintain the master rate table for each vendor?
Procurement, since it holds the negotiated terms and knows when they change. AP or a periodic audit function then checks invoices against that table rather than maintaining its own version of the terms.
What is the difference between a three-way match and a contract compliance check?
A three-way match compares the invoice, purchase order, and receipt for quantity and unit price agreement. A contract compliance check tests conditional terms, like a volume tier or a surcharge trigger, that a purchase order does not encode.
How often should indirect spend contracts be reviewed for compliance?
There is no fixed interval that fits every contract. A practical approach ties review frequency to contract value and complexity: high-value or highly conditional contracts get checked at each quarterly business review, simpler ones less often.
Can a not-to-exceed cap be exceeded without anyone noticing?
Yes, if no one maintains a running total of billed amounts against the cap across the contract term. Each individual invoice can look reasonable while the cumulative total quietly passes the ceiling.
Does a vendor scorecard need to include every clause type in the contract?
No. Start with the clauses that carry the most exposure for that vendor category, such as rate cards and surcharges for freight, or NTE caps for staffing and project labor, rather than trying to score every clause at once.
What happens if procurement and AP disagree on what the contract says?
That disagreement is itself useful: it means the current, authoritative version of the rate table is not shared between the two functions. Resolving which document is authoritative should happen before the invoice dispute, not during it.
ValueXPA runs a fixed-scope Margin Drift Diagnostic that validates every service vendor invoice against contract terms. Two to four weeks, and you keep 100% of what is recovered.
Arrange a scoping call