Auditing MRO and Class C consumables spend in Sage Intacct

How to audit MRO and Class C consumables spend inside Sage Intacct: what the ERP enforces, what it misses, and how to build a checkable control.

Twitter LinkedIn WhatsApp
Ask AI: ChatGPT Claude Gemini Grok
Auditing MRO and Class C consumables spend in Sage Intacct

Margin drift is the gap between what a vendor contract says and what the invoice actually charges. In MRO and Class C consumables, that gap hides inside categories built for volume, not precision: fasteners, safety supplies, gloves, tape, small tools.

Sage Intacct gives an AP team dimensions, approval rules, and a purchase order match. It does not read a vendor's tiered pricing schedule or catch a catalog price that quietly moved between order and invoice. Auditing this category means building the check Sage Intacct was never designed to run.

Executive Summary

MRO and Class C consumables spend is high in transaction count and low in per-line dollar value, which is exactly why it drifts unnoticed. A single fastener line at a few cents off list price looks immaterial. Multiplied across thousands of SKUs and dozens of releases a year against a blanket order, it is not.

Sage Intacct's three-way match confirms a PO, a receipt, and an invoice agree with each other. It does not confirm any of the three agree with the contracted rate card, because the rate card lives in a vendor PDF or an Excel tab outside the system, not as an enforced price list inside it.

What changes this is treating the vendor's catalog or tiered pricing schedule as a control object, not a reference document: loading it, or a current extract of it, alongside the PO data and checking invoice unit prices against it on a schedule, rather than assuming the three-way match already did that work.

1. What does Sage Intacct actually check on an MRO invoice?

Sage Intacct's purchasing module checks that an invoice ties to an open purchase order and, where receiving is turned on, to a recorded receipt. It confirms quantity and line total agree within a configured tolerance. It does not independently verify that the unit price on the PO reflects the vendor's current contracted rate, because the PO price is entered from the last quote or catalog price the buyer had, not pulled live from a rate schedule the system enforces.

The match Sage Intacct runs is internal consistency, not contract compliance. It answers: does this invoice match what we told the vendor we'd pay? It cannot answer: does what we told the vendor we'd pay match what the contract says we should pay?

For MRO and Class C consumables, the PO price is often set once, at the start of a blanket order or annual agreement, and then never revisited line by line as hundreds of releases are issued against it. If the vendor's price list changes, or a tiered discount threshold is crossed, the PO field does not know.

Approval workflows in Sage Intacct route by dollar amount and department. A line for safety glasses can sit well below a manual-review threshold, regardless of whether the unit price is a cent or a dollar off the rate card. Volume is the risk here, and volume is what the approval threshold is built to wave through.

2. Why does Class C spend hide drift better than large capital purchases?

Class C consumables sit below the dollar thresholds that trigger manual review, negotiation, or a second look at the invoice. A fastener catalog can carry thousands of SKUs, each a small line item, so a price creeping upward on individual parts rarely crosses any single approval gate. The category's structure, low unit cost and high transaction volume, is also what keeps a stale or incorrect price from surfacing on its own without a dedicated check.

A capital equipment invoice for six figures gets read line by line before it is approved. A consumables invoice for gloves, tape, and hardware gets glanced at for the total and released, because reading a 200-line invoice against a catalog is not a task an AP clerk has time for during a normal cycle.

Rebate and tier structures compound this. A vendor agreement might specify a lower unit price once annual volume crosses a threshold. Nothing in the standard invoice process recalculates that threshold or checks whether the discount was applied on the invoices issued after it was crossed.

This is a mechanism, not a frequency claim: the category's structure, many small lines instead of few large ones, changes which controls actually reach it. Describing how the mechanism works does not require claiming how often it produces a result.

3. What should an MRO rate audit actually check line by line?

A rate audit for this category checks four things on every SKU: the unit price on the invoice against the current vendor catalog or contract price, whether a volume tier discount applies and was reflected, whether a rebate or credit memo tied to this vendor was issued and applied, and whether a minimum order or freight surcharge was added outside the agreed schedule. Each check needs the vendor's rate document as an input, not just the PO.

None of these four checks runs inside Sage Intacct by default. The system has the invoice data; it does not have the vendor's rate schedule as a structured, comparable input unless someone loads it and maintains it as data rather than a stored PDF.

Building this as a periodic export and comparison, rather than a real-time system rule, is a reasonable starting point for a team without dedicated tooling. The output is a list of lines that deviate from the rate schedule, by SKU and by vendor, ready for the AP team to dispute or credit.

  1. Unit price to catalog: Compare the invoiced unit price against the vendor's current published or contracted rate for that SKU, not the price stored on an old PO line.
  2. Volume tier trigger: Check cumulative purchase volume against the contract's discount tiers and confirm the lower rate was applied once the threshold was crossed.
  3. Rebate and credit application: Confirm any rebate or credit memo the vendor owes for the period was actually issued and posted, not left outstanding.
  4. Surcharges and minimums: Check that any minimum order fee or small-order surcharge matches what the contract allows, not an arbitrary amount added by the vendor.

4. Can you build this check inside Sage Intacct's own reporting?

Sage Intacct's report writer and dimensions can group and filter purchasing data by vendor, item, and GL account, which is useful for finding spend concentration. It cannot compare an invoice line against an external rate schedule, because that schedule does not exist as a table inside the system. Building the check means exporting invoice and PO detail out of Sage Intacct and joining it, outside the ERP, against the vendor's rate document.

This is not a criticism of the software. Sage Intacct was built to record and route transactions accurately against the data it holds, and it does that well. A vendor's tiered pricing schedule, printed on paper or emailed as a spreadsheet update twice a year, is simply not data the ERP holds.

A workable pattern: export purchasing detail by vendor and SKU on a recurring cycle, maintain the vendor's current rate schedule as a maintained spreadsheet or table, and join the two to flag variances above a chosen tolerance. This is manual work, and it scales poorly past a handful of MRO vendors, but it is the honest floor of what the ERP alone provides.

Whether that manual process is worth automating, and at what point, is a separate question from whether the check needs to exist. It does, regardless of tooling.

5. How does input cost movement affect an MRO rate audit?

MRO parts often track a supplier's input costs, particularly general-purpose machinery and equipment components, so a rate increase that looks arbitrary on an invoice may track a real cost shift. The US Bureau of Labor Statistics Producer Price Index for machinery and equipment, general purpose (series WPU114), read 2026-09-25, showed an August 2026 index value of 380.808, up 5.5% year over year. A rate audit should check whether an increase matches that movement or exceeds it.

The distinction matters for how a dispute is framed. An increase that tracks the underlying PPI series is a cost pass-through the contract likely anticipated, through an escalation clause or an annual repricing provision. An increase that exceeds it, applied without the contractual trigger that allows it, is a compliance question, not a market one.

This is why the rate check needs the contract's escalation language alongside the price comparison. A vendor is entitled to raise prices when the agreement says so. The audit's job is confirming the increase matches both the market basis cited and the contractual mechanism that permits it, not simply flagging every increase as an error.

6. Should a Sage Intacct shop handle this with the diagnostic or with software?

Start with a diagnostic when you cannot yet say which MRO vendors or SKU categories are actually drifting, because a forward control configured before you know the answer enforces whichever rules you guessed. A one-time review of vendor rate schedules against 12 to 18 months of MRO invoices, across ValueXPA diagnostics, identifies where the real leakage sits, category by category, before any ongoing system is built to watch it.

A periodic audit tests history against the contract; a forward control tests the next invoice as it arrives. Buying the second before finishing the first means configuring rules against a guess rather than a finding.

The two are not competitors. Margin drift across a full diagnostic typically runs 1% to 3% of service vendor spend, across ValueXPA diagnostics.

A diagnostic scoped to a specific ERP and spend category produces a specific list of vendors and SKUs worth watching going forward, which is what a forward-looking control needs to be built around in the first place.

For the wider pattern this sits inside, start with the margin drift guide. See also build vs. buy: can you do contract-to-invoice matching in excel? and margin drift diagnostic for infor cloudsuite syteline.

7. Frequently Asked Questions (People Also Ask)

Does Sage Intacct enforce vendor rate cards automatically?

No. Sage Intacct matches an invoice to its own PO and receipt, confirming internal consistency. It has no built-in table for a vendor's tiered pricing schedule, so it cannot flag an invoice that is internally consistent but priced above the contracted rate.

How do you catch a stale price on a blanket PO?

Compare the PO's unit price against the vendor's current catalog or contract rate on a recurring schedule, rather than assuming the price entered at PO creation stays accurate. A blanket order can run for months without anyone revisiting the underlying rate.

What documentation does an MRO rate audit need from the vendor?

The current published or contracted price list, the tier or volume discount schedule if one exists, and any documented minimum order or surcharge terms. Without these as structured inputs, an invoice cannot be checked against anything but itself.

Can Sage Intacct's dimensions substitute for a rate audit?

Dimensions let you group and filter spend by vendor, item, or GL account, which helps you find where spend concentrates. They do not compare a price to a contracted rate, so they narrow where to look without answering whether a price is correct.

Is a Producer Price Index a substitute for a vendor's own price increase notice?

No. The PPI series shows whether an increase is consistent with broader input cost movement in a category. It does not replace the contract's escalation clause, which is the actual test for whether a given increase was permitted.

Why does a PO match miss a rebate that was never applied?

A three-way match checks that an invoice ties to its PO and receipt. It does not track whether a volume threshold in a rebate agreement was crossed or whether the resulting credit was ever issued, because that calculation sits outside the matched documents.

How often should a vendor's rate schedule be re-checked against invoices?

On a recurring cycle tied to how often the vendor's pricing changes, which for MRO categories is typically documented in the contract itself. The exact cadence should be set by the vendor agreement's terms, not assumed.

What is the difference between a purchase order price and a contracted rate?

A PO price is whatever was entered when the order was created, often copied from an old quote. A contracted rate is what the vendor agreement actually specifies for that SKU today, including any tier discount. The two can diverge without any system flagging it.

Does this audit apply only to Sage Intacct, or to other ERPs too?

The mechanism is the same across ERPs: purchasing systems match internal documents to each other, not to an external rate schedule. Sage Intacct is used here as the specific example because its matching logic and reporting limits are concrete and checkable.

Margin Drift Resources