# What auditors miss in maintenance and repair

> A checklist of specific line items auditors routinely skip on maintenance and repair invoices, from PM contract scope to parts markup and warranty coverage.

Source: https://valuexpa.com/insights/what-auditors-miss-in-maintenance-and-repair
Publisher: ValueXPA (https://valuexpa.com)
Updated: 2026-09-06

---

Margin drift is the gap between what a vendor contract says and what the invoice actually charges. In maintenance and repair, that gap hides inside work orders, not headline rates, which is why a standard AP review rarely catches it.

Most invoice checks confirm a PO exists, a signature is attached, and the total matches an approved estimate. None of those three checks touch the line items below. Each one requires reading the maintenance contract and the work order side by side, and each is checkable without special software.

## Executive Summary

Maintenance and repair invoices pass standard AP review because they look complete: a work order number, a technician signature, a total that matches the estimate. The problem sits one layer down, in line items a three-way match never tests. A preventive maintenance visit gets billed as if it were reactive repair. Parts get invoiced at list price when the contract sets a discount schedule. Travel and diagnostic time get charged once in a trip fee and again inside the labor line.

The mechanism is consistent across all of it: the contract states a term, the technician's invoice does not reference that term, and the AP system has no field to check it against. Three-way matching validates that a purchase order, a receipt and an invoice agree with each other. It does not read the maintenance agreement's coverage table, discount schedule or response-time clause, because that table lives in a PDF outside the ERP entirely.

What changes it is comparing the work order description against the contract's scope and rate exhibits before the invoice is coded, not after. That single comparison catches most of the items below in one pass, and it needs no new software: it needs the contract exhibit and the work order open side by side, and someone who checks both before approval instead of after.

## 1. Is the contract's preventive maintenance scope actually being billed as preventive?

**Check whether the work order description matches the task list in the PM contract exhibit, not just the visit frequency. Contracts typically name specific tasks per visit: filter replacement, belt inspection, lubrication points, vibration readings. An invoice that bills the flat PM rate but lists a task outside that exhibit, or omits a required task while charging full price, is a scope mismatch that a rate check alone will never surface.**

Pull the PM task list from the contract exhibit and lay it next to the technician's field notes on the invoice. Contracts usually itemize what a covered visit includes: specific inspection points, replacement parts included in the flat fee, and tasks that trigger a separate charge.

The check is simple: does the work order describe the tasks the contract says are covered, and nothing billed separately that the contract already includes? A technician who replaces a filter that is part of the covered scope, then lists it as a billable part, has moved a covered cost onto the invoice.

This differs from checking that a PM visit happened on schedule. The date can be correct and the scope still wrong. The only way to catch it is reading the task list against the work order, visit by visit, not by trusting the flat-rate line total.

## 2. Does a reactive repair line quietly include work the PM contract already covers?

**When a reactive service call happens between scheduled PM visits, check whether the technician performed and billed for a task the PM contract already covers on its next scheduled pass. This shows up as a repair invoice listing lubrication, filter changes or calibration checks alongside the actual fault repair, effectively charging twice for maintenance already paid for under the service agreement's flat fee.**

A reactive call is billed separately from the PM contract because it addresses an unplanned failure. The problem starts when the technician, already on site, performs routine tasks that belong to the next scheduled PM visit and bills them as part of the emergency call.

The fix is to compare the reactive work order's task list against the PM schedule's upcoming tasks for that asset. If a lubrication or inspection item appears on both, the PM contract has already priced that work into its flat fee, and the reactive invoice should not carry it again.

This check requires knowing the asset's PM schedule, not just its service history. Without that schedule in view, the overlap is invisible because each invoice looks legitimate on its own.

## 3. Are parts on the invoice priced against the contract's discount schedule?

**Maintenance contracts frequently set a parts discount off list price, sometimes tiered by part category or volume. Verify the invoiced part price against that schedule directly, not against a general sense that pricing looks reasonable. A part billed at full manufacturer list price when the contract specifies a percentage discount is a rate violation that a total-dollar review will not flag.**

The contract's parts exhibit typically states a discount off a named price list, sometimes different for OEM parts versus aftermarket substitutes. That discount has to be applied at the line-item level, part by part, because a vendor's invoicing system defaults to list price unless someone enforces the discount.

The check: pick the part number off the invoice, find its list price from the source the contract names, and confirm the invoiced price reflects the stated discount. Do this for parts above a threshold you set, since checking every fastener is not practical.

Watch for substitute parts too. A different part number billed at the original part's price, when the contract's discount schedule applies to the substitute's own list price, understates the discount owed.

## 4. Is travel or diagnostic time billed once, or twice under different labels?

**Compare the trip charge or dispatch fee against the labor hours logged for diagnostic work. Some invoices fold diagnostic time into a flat trip charge and then bill it again as the first hour of labor, effectively charging for the same hour twice. The contract's rate exhibit should state whether diagnostic time is included in the trip fee or billed separately, and the invoice has to match whichever it says.**

A service call typically carries two time-based charges: a trip or dispatch fee covering travel to the site, and a labor rate covering the repair itself. The contract should specify which one, if either, includes initial diagnostic time.

The overlap happens when a technician logs 30 minutes of diagnosis as part of the trip charge, then starts the labor clock from arrival rather than from when the actual repair began. The invoice shows a full trip fee and a labor line that starts before repair work started.

Check the timestamps on the work order against the contract's definition of billable labor start time. If the contract states labor begins when repair work starts, not when the technician arrives, any labor billed before that point is a duplicate of the trip charge.

## 5. Does the invoice bill for work still covered under a parts or labor warranty?

**Check the service date against the warranty period for both the part installed and the labor that installed it. A repair invoice for a part failure inside its warranty window, or for labor covered under a workmanship guarantee from a prior visit, should show no charge or a reduced charge. An invoice billing full rate for both is charging for coverage already paid for.**

Warranty coverage on maintenance work comes in two forms: the part manufacturer's warranty, and the service vendor's own workmanship guarantee on labor performed. Both have a coverage window, usually stated in the contract or on the original work order for the part's installation.

The check requires two dates: when the part or labor was originally installed, and when the current invoice's repair occurred. If the second date falls inside the warranty window from the first, the repair should be covered, fully or partially, depending on the warranty's terms.

This is easy to miss because the original installation and the warranty repair often appear as unrelated invoices, months apart, reviewed by different people. Tracking installation dates against warranty terms at the asset level, not the invoice level, is what surfaces the overlap.

## 6. Are response-time and SLA terms in the contract reflected in what's billed?

**Maintenance contracts often set a guaranteed response time and a credit or penalty for missing it. Check the timestamp gap between the service request and technician arrival against that clause on every emergency or priority call. A vendor that missed the contracted response window and billed the full emergency rate anyway has both underperformed the agreement and overcharged for it.**

An SLA clause in a maintenance contract usually names a response time tied to a priority tier: emergency, urgent, routine. Emergency calls often carry a premium labor rate specifically because of the speed guarantee attached to them.

When the technician arrives outside that window, two things should happen: the credit or penalty clause should apply, and the premium rate justification weakens since the speed the premium pays for was not delivered. Neither adjustment happens automatically. It requires someone to check the request timestamp against the arrival timestamp on the work order.

This check only works if the request time is logged somewhere other than the vendor's own invoice, since the vendor has no incentive to record a late arrival against itself. A facilities ticket, an email timestamp or a phone log is enough to establish the actual request time for comparison.

For the wider pattern this sits inside, start with the [margin drift](/guides/indirect-spend-audit-categories) guide. See also [the six categories drift hides in](/guides/indirect-spend-audit-categories) and [accessorial charge audit: the surcharges nobody validates](/guides/accessorial-charge-audit-the-surcharges-nobody-validates).

## 7. Frequently Asked Questions (People Also Ask)

### What is the single fastest check to run on a maintenance invoice?

Compare the work order's task list against the PM contract's covered scope for that visit type. It catches the most common overlap, covered PM tasks billed again as reactive work, and needs only the contract exhibit and the work order, no new tooling.

### Do I need special software to catch these issues?

No. Every check described here compares two documents that already exist: the maintenance contract's scope and rate exhibits, and the technician's work order. The barrier is usually that nobody puts them side by side before approval, not a lack of tooling.

### How do I know if a parts discount schedule even applies to my contract?

Check the parts or materials exhibit in the maintenance agreement, usually a separate schedule from the labor rate table. If it names a discount percentage or a specific price list as the reference point, that schedule governs every part line on every invoice under that contract.

### Why does three-way matching miss warranty overlaps?

Three-way matching confirms a purchase order, a receipt and an invoice agree with each other on a single transaction. It has no field for a part's warranty window or a prior visit's workmanship guarantee, because those live in separate records the match never checks.

### What counts as evidence when disputing a missed SLA response time?

A timestamp from a source other than the vendor's own invoice: a facilities ticket, an internal email requesting service, or a phone log entry. The vendor's invoice alone rarely states when the request was made, only when the technician arrived.

### Is it normal for a repair invoice to include diagnostic time inside the trip charge?

That depends entirely on what the contract's rate exhibit states. Some contracts bundle diagnostic time into the trip fee; others bill it as the first labor hour. The invoice has to match whichever the contract specifies, and the contract has to be checked to know which applies.

### How far back should I check for warranty overlaps on a given asset?

Back to the warranty period stated for the part or labor in question. A part with a one-year warranty needs invoices checked for one year after its installation date; a workmanship guarantee follows whatever term the vendor's contract states for labor.

### Does this apply to both in-house maintenance vendors and third-party service contracts?

The same checks apply to any vendor billing under a maintenance agreement with a defined scope, parts schedule or SLA. The documents differ by vendor, but the method, comparing the work order against the contract exhibit, is the same regardless of who performed the work.

### Is contract complexity quietly draining your operating margin?

A small systematic drift between your negotiated contracts and your actual vendor billing compounds quietly across a year of invoices. Stop guessing at your exposure and run a targeted audit.

**[Take the Free Screener → https://valuexpa.com/margin-drift-screener](https://valuexpa.com/margin-drift-screener)**

## Executive Summary

Maintenance and repair invoices pass standard AP review because they look complete: a work order number, a technician signature, a total that matches the estimate. The problem sits one layer down, in line items a three-way match never tests. A preventive maintenance visit gets billed as if it were reactive repair. Parts get invoiced at list price when the contract sets a discount schedule. Travel and diagnostic time get charged once in a trip fee and again inside the labor line. The mechanism is consistent across all of it: the contract states a term, the technician's invoice does not reference that term, and the AP system has no field to check it against. Three-way matching validates that a purchase order, a receipt and an invoice agree with each other. It does not read the maintenance agreement's coverage table, discount schedule or response-time clause, because that table lives in a PDF outside the ERP entirely. What changes it is comparing the work order description against the contract's scope and rate exhibits before the invoice is coded, not after. That single comparison catches most of the items below in one pass, and it needs no new software: it needs the contract exhibit and the work order open side by side, and someone who checks both before approval instead of after.

## 1. Is the contract's preventive maintenance scope actually being billed as preventive?

Check whether the work order description matches the task list in the PM contract exhibit, not just the visit frequency. Contracts typically name specific tasks per visit: filter replacement, belt inspection, lubrication points, vibration readings. An invoice that bills the flat PM rate but lists a task outside that exhibit, or omits a required task while charging full price, is a scope mismatch that a rate check alone will never surface. Pull the PM task list from the contract exhibit and lay it next to the technician's field notes on the invoice. Contracts usually itemize what a covered visit includes: specific inspection points, replacement parts included in the flat fee, and tasks that trigger a separate charge. The check is simple: does the work order describe the tasks the contract says are covered, and nothing billed separately that the contract already includes? A technician who replaces a filter that is part of the covered scope, then lists it as a billable part, has moved a covered cost onto the invoice. This differs from checking that a PM visit happened on schedule. The date can be correct and the scope still wrong. The only way to catch it is reading the task list against the work order, visit by visit, not by trusting the flat-rate line total.

## 2. Does a reactive repair line quietly include work the PM contract already covers?

When a reactive service call happens between scheduled PM visits, check whether the technician performed and billed for a task the PM contract already covers on its next scheduled pass. This shows up as a repair invoice listing lubrication, filter changes or calibration checks alongside the actual fault repair, effectively charging twice for maintenance already paid for under the service agreement's flat fee. A reactive call is billed separately from the PM contract because it addresses an unplanned failure. The problem starts when the technician, already on site, performs routine tasks that belong to the next scheduled PM visit and bills them as part of the emergency call. The fix is to compare the reactive work order's task list against the PM schedule's upcoming tasks for that asset. If a lubrication or inspection item appears on both, the PM contract has already priced that work into its flat fee, and the reactive invoice should not carry it again. This check requires knowing the asset's PM schedule, not just its service history. Without that schedule in view, the overlap is invisible because each invoice looks legitimate on its own.

## 3. Are parts on the invoice priced against the contract's discount schedule?

Maintenance contracts frequently set a parts discount off list price, sometimes tiered by part category or volume. Verify the invoiced part price against that schedule directly, not against a general sense that pricing looks reasonable. A part billed at full manufacturer list price when the contract specifies a percentage discount is a rate violation that a total-dollar review will not flag. The contract's parts exhibit typically states a discount off a named price list, sometimes different for OEM parts versus aftermarket substitutes. That discount has to be applied at the line-item level, part by part, because a vendor's invoicing system defaults to list price unless someone enforces the discount. The check: pick the part number off the invoice, find its list price from the source the contract names, and confirm the invoiced price reflects the stated discount. Do this for parts above a threshold you set, since checking every fastener is not practical. Watch for substitute parts too. A different part number billed at the original part's price, when the contract's discount schedule applies to the substitute's own list price, understates the discount owed.

## 4. Is travel or diagnostic time billed once, or twice under different labels?

Compare the trip charge or dispatch fee against the labor hours logged for diagnostic work. Some invoices fold diagnostic time into a flat trip charge and then bill it again as the first hour of labor, effectively charging for the same hour twice. The contract's rate exhibit should state whether diagnostic time is included in the trip fee or billed separately, and the invoice has to match whichever it says. A service call typically carries two time-based charges: a trip or dispatch fee covering travel to the site, and a labor rate covering the repair itself. The contract should specify which one, if either, includes initial diagnostic time. The overlap happens when a technician logs 30 minutes of diagnosis as part of the trip charge, then starts the labor clock from arrival rather than from when the actual repair began. The invoice shows a full trip fee and a labor line that starts before repair work started. Check the timestamps on the work order against the contract's definition of billable labor start time. If the contract states labor begins when repair work starts, not when the technician arrives, any labor billed before that point is a duplicate of the trip charge.

## 5. Does the invoice bill for work still covered under a parts or labor warranty?

Check the service date against the warranty period for both the part installed and the labor that installed it. A repair invoice for a part failure inside its warranty window, or for labor covered under a workmanship guarantee from a prior visit, should show no charge or a reduced charge. An invoice billing full rate for both is charging for coverage already paid for. Warranty coverage on maintenance work comes in two forms: the part manufacturer's warranty, and the service vendor's own workmanship guarantee on labor performed. Both have a coverage window, usually stated in the contract or on the original work order for the part's installation. The check requires two dates: when the part or labor was originally installed, and when the current invoice's repair occurred. If the second date falls inside the warranty window from the first, the repair should be covered, fully or partially, depending on the warranty's terms. This is easy to miss because the original installation and the warranty repair often appear as unrelated invoices, months apart, reviewed by different people. Tracking installation dates against warranty terms at the asset level, not the invoice level, is what surfaces the overlap.

## 6. Are response-time and SLA terms in the contract reflected in what's billed?

Maintenance contracts often set a guaranteed response time and a credit or penalty for missing it. Check the timestamp gap between the service request and technician arrival against that clause on every emergency or priority call. A vendor that missed the contracted response window and billed the full emergency rate anyway has both underperformed the agreement and overcharged for it. An SLA clause in a maintenance contract usually names a response time tied to a priority tier: emergency, urgent, routine. Emergency calls often carry a premium labor rate specifically because of the speed guarantee attached to them. When the technician arrives outside that window, two things should happen: the credit or penalty clause should apply, and the premium rate justification weakens since the speed the premium pays for was not delivered. Neither adjustment happens automatically. It requires someone to check the request timestamp against the arrival timestamp on the work order. This check only works if the request time is logged somewhere other than the vendor's own invoice, since the vendor has no incentive to record a late arrival against itself. A facilities ticket, an email timestamp or a phone log is enough to establish the actual request time for comparison. For the wider pattern this sits inside, start with the [margin drift](/guides/indirect-spend-audit-categories) guide. See also [the six categories drift hides in](/guides/indirect-spend-audit-categories) and [accessorial charge audit: the surcharges nobody validates](/guides/accessorial-charge-audit-the-surcharges-nobody-validates).

## Common questions

### What is the single fastest check to run on a maintenance invoice?

Compare the work order's task list against the PM contract's covered scope for that visit type. It catches the most common overlap, covered PM tasks billed again as reactive work, and needs only the contract exhibit and the work order, no new tooling.

### Do I need special software to catch these issues?

No. Every check described here compares two documents that already exist: the maintenance contract's scope and rate exhibits, and the technician's work order. The barrier is usually that nobody puts them side by side before approval, not a lack of tooling.

### How do I know if a parts discount schedule even applies to my contract?

Check the parts or materials exhibit in the maintenance agreement, usually a separate schedule from the labor rate table. If it names a discount percentage or a specific price list as the reference point, that schedule governs every part line on every invoice under that contract.

### Why does three-way matching miss warranty overlaps?

Three-way matching confirms a purchase order, a receipt and an invoice agree with each other on a single transaction. It has no field for a part's warranty window or a prior visit's workmanship guarantee, because those live in separate records the match never checks.

### What counts as evidence when disputing a missed SLA response time?

A timestamp from a source other than the vendor's own invoice: a facilities ticket, an internal email requesting service, or a phone log entry. The vendor's invoice alone rarely states when the request was made, only when the technician arrived.

---

ValueXPA runs a fixed-scope Margin Drift Diagnostic that validates every service vendor invoice against contract terms, for $100M+ US industrial manufacturers and distributors. Two to four weeks. The client retains 100% of recoveries. https://valuexpa.com/contact-us
