# How to audit staffing invoices against MSA rate cards

> A step-by-step method for auditing contract labor and staffing invoices against master service agreements, timesheets, and rate cards. Read the full guide.

Source: https://valuexpa.com/insights/how-to-audit-contract-labor-and-staffing-invoices-step-by
Publisher: ValueXPA (https://valuexpa.com)
Updated: 2026-09-05

---

Margin drift is the gap between what a vendor contract says and what the invoice actually charges. In contract labor and staffing, that gap hides inside approved timesheets: the hours look right, the invoice still doesn't match the rate the master service agreement set.

This guide walks through the audit itself, in order: what to pull, what to match, and where staffing invoices diverge from contract terms. It assumes you already have the master service agreement and rate card in hand.

## Executive Summary

Staffing invoices pass AP review when the control checks the wrong thing. A three-way match confirms hours worked equal hours billed. It does not confirm that the bill rate matches the master service agreement, that a markup escalation was applied correctly, or that a volume rebate accrued last quarter was ever paid out. The invoice can be arithmetically correct and contractually wrong at the same time.

The fix is a separate pass that treats the contract, not the timesheet, as the source of truth. That means pulling the current rate card, the SOW or job order for each role, and the invoice line detail, then matching all three before the invoice clears. Bureau of Labor Statistics data, Employment services PPI, read 2026-09-05, shows the July 2026 index up 5.3% year over year. That is the kind of legitimate cost movement a rate audit has to distinguish from a charge that was never authorized.

What changes this is a repeatable sequence run on every invoice cycle, not a one-time cleanup. The sections below give that sequence in order: document collection, rate matching, headcount and role verification, markup and overtime checks, rebate reconciliation, and what to do with what you find.

## 1. What documents do you need before you start the audit?

**You need four documents before checking a single invoice line: the master service agreement, the current rate card or fee schedule, the SOW or job order for each role placed, and the invoice detail broken out by employee and week. Without all four, a mismatch cannot be distinguished from a legitimate rate change, and the audit becomes a guess instead of a match.**

Start with the master service agreement itself, not a summary of it. MSAs for staffing routinely carry an appendix with the actual bill rates by role, a markup percentage over pay rate, and escalation language tied to a schedule or an index. That appendix is the rate card. If your vendor sends a separate rate card, confirm it is the current one; staffing vendors update these more often than the MSA gets amended, and an old copy will make correct invoices look wrong.

Next, the SOW or job order for each placed role. This is where the specific bill rate, overtime terms, and any premium for shift or location get set, sometimes overriding the MSA's default.

Finally, invoice detail at the line level: employee name or ID, role, hours by category (regular, overtime, holiday), and the rate applied to each. A summary invoice with only a total cannot be audited; request the backup before starting.

- **Master service agreement:** The governing contract, including any rate appendix and escalation clause.

- **Current rate card:** The vendor's fee schedule as it stands today, confirmed against the MSA appendix.

- **SOW or job order:** Role-specific terms that can override the MSA default rate.

- **Line-level invoice detail:** Hours by category and the rate applied to each, per employee.

## 2. How do you match the bill rate on the invoice to the contract?

**Take each unique role and location combination on the invoice and look up its contracted bill rate in the rate card or SOW. Compare that rate to the rate actually billed for every week in the invoice period, not just the first. A rate that started correctly and drifted upward partway through the period is the pattern this step exists to catch.**

Build a simple lookup: role, location, contracted rate, effective date range. Match the invoice's billed rate against it line by line. Where the invoice rate is higher, check whether an escalation clause justifies it and whether the escalation was applied on the date the contract specifies, not earlier.

An escalation tied to a published index, like the Bureau of Labor Statistics Employment services Producer Price Index, is a legitimate reason a bill rate moves. The July 2026 reading of that index was up 5.3% year over year (read 2026-09-05). A vendor invoking that kind of movement is not necessarily wrong; the audit's job is to confirm the contract actually ties the rate to that basis, and that the increase matches what the clause specifies rather than exceeding it.

Where the invoice rate is higher and no escalation clause applies, that is a rate deviation, not a cost increase, and it should be tracked separately from anything the vendor can point to a contract clause for.

## 3. How do you confirm the headcount and roles billed are the ones you approved?

**Cross-check every billed employee against your own approved requisition or job order list, not against the vendor's own roster. Confirm the role classification on the invoice matches the classification you approved: a vendor billing a worker at a senior rate for a role requisitioned at a junior level produces a correct-looking invoice for the wrong headcount.**

Staffing agencies sometimes place a candidate at a higher skill classification than the requisition called for, particularly when a junior candidate is unavailable and a more senior one fills the seat temporarily. If the bill rate follows the higher classification without your sign-off, that is an unapproved substitution, and it should be flagged even if the work itself was acceptable.

Also confirm the invoice does not carry anyone past their assignment end date. A worker whose contract or job order ended in one billing period sometimes continues appearing on the next invoice, especially where staffing agencies batch-process large rosters.

This check works best against your own requisition log, kept separately from anything the vendor provides. Relying on the vendor's roster as the source of truth for who should be billed defeats the purpose of the check.

## 4. How do you audit overtime and markup calculations on staffing invoices?

**Recalculate overtime and markup independently rather than trusting the invoice's math. Confirm the pay rate underlying the markup, the markup percentage itself against the MSA, and the overtime multiplier and threshold against both the MSA and applicable labor law, then compare your recalculation to the vendor's total for every line.**

A staffing bill rate is pay rate plus a markup percentage. Errors show up in either component: a markup applied at a higher percentage than the MSA specifies, or a pay rate that does not match what the worker actually earns, inflating the markup base.

Overtime compounds this. If the MSA sets an overtime multiplier and a weekly hour threshold, apply both independently and compare to what was billed. One error pattern is billing overtime on a daily basis when the contract specifies a weekly threshold, or applying the markup percentage on top of the overtime rate when the contract prices overtime as a flat multiplier of the straight bill rate.

Do this recalculation on a sample large enough to be meaningful, and expand it to every line if the sample turns up an error. A miscalculated formula in a vendor's billing system can repeat across every invoice until it is caught, which is what makes this check worth the time even on invoices that look routine.

What to recompute independently on each staffing invoice line, and against what reference.

| Component
| Recompute from
| Compare against

| Pay rate
| Payroll backup or vendor statement
| Worker's actual compensation

| Markup percentage
| Pay rate x contracted markup
| MSA markup clause

| Overtime multiplier
| MSA overtime clause
| Hours billed as overtime

| Overtime threshold
| Daily vs. weekly hour count
| MSA-specified threshold

## 5. Where do unapplied rebates hide in staffing agreements?

**Many staffing MSAs include a volume rebate or tiered discount once spend crosses a threshold in a quarter or year. These rebates are not self-reporting: the vendor invoices at the standard rate all period and is contractually obligated to true up separately, and that true-up step is where the credit goes unclaimed.**

Pull the rebate or volume discount clause from the MSA and note the threshold, the measurement period, and whether the rebate applies retroactively to all spend in the period or only to spend above the threshold. Then total your actual spend with that vendor for the period and check it against the threshold independently of anything the vendor has reported.

If spend crossed the threshold and no credit memo appears in the AP record, that is an unapplied rebate, not a rate error, and it is worth tracking on its own line because the remedy is a credit request rather than a rate correction going forward.

This check is easy to skip because it requires spend data the vendor does not surface on any single invoice. It has to be run against your own AP ledger, aggregated across the full measurement period.

## 6. What do you do once the audit finds a discrepancy?

**Separate every finding into one of three categories before raising it with the vendor: a rate applied above contract with no escalation basis, an unapproved role substitution or headcount error, or an unclaimed rebate. Each category has a different remedy and a different owner, and bundling them into one dispute slows resolution on all three.**

For rate deviations, request the invoice be reissued at the contracted rate, with the escalation clause or its absence documented in the request. For headcount or role errors, involve whoever manages the requisition relationship, since the fix may require a conversation about the placement itself rather than just the invoice. For unclaimed rebates, request a credit memo referencing the specific measurement period and the spend total that triggered it.

Whatever you find, log it against the specific contract clause it violates, not just as a dollar amount. A log that says which clause failed is what lets you fix the control, not just the invoice: if the same clause produces a second finding next quarter, the fix belongs in how invoices are checked before payment, not in another after-the-fact dispute.

This is also the point at which a one-time audit and a standing control diverge: a single pass finds what already happened, [a repeatable process run every cycle](/guides/continuous-enforcement-vs-periodic-audit-choosing-a-cadence) is what stops it from happening again.

For the wider pattern this sits inside, start with the [margin drift](/guides/contract-compliance-controls-p2p) guide. See also [n-way invoice matching explained](/guides/n-way-invoice-matching-explained) and [price file governance: why annual uploads create twelve months of drift](/guides/price-file-governance-why-annual-uploads-create-twelve).

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

### What is the difference between a rate audit and a three-way match on staffing invoices?

A three-way match confirms the invoice, purchase order, and timesheet agree on hours. It does not check whether the bill rate on those hours matches the master service agreement. A rate audit is a separate step that compares the invoice's rate line by line against the contracted rate card and SOW.

### Can a staffing vendor raise its bill rate mid-contract?

Only if the master service agreement contains an escalation clause tying the rate to a specific basis, such as a published index or a stated schedule. The audit's job is to confirm the clause exists, that the increase applied on the date specified, and that it matches what the clause allows rather than exceeding it.

### What counts as an unapproved role substitution?

It is when a staffing agency places or bills a worker at a higher skill classification than the requisition specified, without your sign-off. The invoice can look correct on its own terms while billing for a role you never approved at that level.

### How do I know if a staffing rebate was ever paid?

Check your AP ledger for a credit memo referencing the rebate's measurement period. Because rebates require the vendor to true up separately from standard invoicing, the absence of that credit memo, once your own spend total crosses the contracted threshold, is the sign it was never applied.

### Should overtime be checked against the MSA or against labor law?

Both. The MSA sets the multiplier and the markup treatment on overtime hours; applicable labor law sets the minimum threshold and rate the contract cannot fall below. The audit recalculates against both and compares the result to what the vendor billed.

### What documents should I request from a staffing vendor if the invoice only shows a total?

Request line-level backup: employee name or ID, role, hours by category, and the rate applied to each line. A summary invoice with a single total cannot be matched against a rate card or SOW, so this detail is a precondition for the audit, not an optional extra.

### Does a legitimate cost index increase mean the vendor's rate increase is automatically valid?

No. The audit still has to confirm the contract ties the rate to that specific index, that the increase was applied on the date the clause specifies, and that the size of the increase matches the clause rather than exceeding it. An index moving up is not, by itself, authorization for any particular rate change.

### How often should staffing invoices be audited this way?

As a repeatable step in every invoice cycle rather than a one-time cleanup. A single pass finds what already happened; running the same sequence on every cycle is what catches a drifted rate or an unclaimed rebate before it compounds.

### 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

Staffing invoices pass AP review when the control checks the wrong thing. A three-way match confirms hours worked equal hours billed. It does not confirm that the bill rate matches the master service agreement, that a markup escalation was applied correctly, or that a volume rebate accrued last quarter was ever paid out. The invoice can be arithmetically correct and contractually wrong at the same time. The fix is a separate pass that treats the contract, not the timesheet, as the source of truth. That means pulling the current rate card, the SOW or job order for each role, and the invoice line detail, then matching all three before the invoice clears. Bureau of Labor Statistics data, Employment services PPI, read 2026-09-05, shows the July 2026 index up 5.3% year over year. That is the kind of legitimate cost movement a rate audit has to distinguish from a charge that was never authorized. What changes this is a repeatable sequence run on every invoice cycle, not a one-time cleanup. The sections below give that sequence in order: document collection, rate matching, headcount and role verification, markup and overtime checks, rebate reconciliation, and what to do with what you find.

## 1. What documents do you need before you start the audit?

You need four documents before checking a single invoice line: the master service agreement, the current rate card or fee schedule, the SOW or job order for each role placed, and the invoice detail broken out by employee and week. Without all four, a mismatch cannot be distinguished from a legitimate rate change, and the audit becomes a guess instead of a match. Start with the master service agreement itself, not a summary of it. MSAs for staffing routinely carry an appendix with the actual bill rates by role, a markup percentage over pay rate, and escalation language tied to a schedule or an index. That appendix is the rate card. If your vendor sends a separate rate card, confirm it is the current one; staffing vendors update these more often than the MSA gets amended, and an old copy will make correct invoices look wrong. Next, the SOW or job order for each placed role. This is where the specific bill rate, overtime terms, and any premium for shift or location get set, sometimes overriding the MSA's default. Finally, invoice detail at the line level: employee name or ID, role, hours by category (regular, overtime, holiday), and the rate applied to each. A summary invoice with only a total cannot be audited; request the backup before starting. 1. Master service agreement: The governing contract, including any rate appendix and escalation clause. 2. Current rate card: The vendor's fee schedule as it stands today, confirmed against the MSA appendix. 3. SOW or job order: Role-specific terms that can override the MSA default rate. 4. Line-level invoice detail: Hours by category and the rate applied to each, per employee.

## 2. How do you match the bill rate on the invoice to the contract?

Take each unique role and location combination on the invoice and look up its contracted bill rate in the rate card or SOW. Compare that rate to the rate actually billed for every week in the invoice period, not just the first. A rate that started correctly and drifted upward partway through the period is the pattern this step exists to catch. Build a simple lookup: role, location, contracted rate, effective date range. Match the invoice's billed rate against it line by line. Where the invoice rate is higher, check whether an escalation clause justifies it and whether the escalation was applied on the date the contract specifies, not earlier. An escalation tied to a published index, like the Bureau of Labor Statistics Employment services Producer Price Index, is a legitimate reason a bill rate moves. The July 2026 reading of that index was up 5.3% year over year (read 2026-09-05). A vendor invoking that kind of movement is not necessarily wrong; the audit's job is to confirm the contract actually ties the rate to that basis, and that the increase matches what the clause specifies rather than exceeding it. Where the invoice rate is higher and no escalation clause applies, that is a rate deviation, not a cost increase, and it should be tracked separately from anything the vendor can point to a contract clause for.

## 3. How do you confirm the headcount and roles billed are the ones you approved?

Cross-check every billed employee against your own approved requisition or job order list, not against the vendor's own roster. Confirm the role classification on the invoice matches the classification you approved: a vendor billing a worker at a senior rate for a role requisitioned at a junior level produces a correct-looking invoice for the wrong headcount. Staffing agencies sometimes place a candidate at a higher skill classification than the requisition called for, particularly when a junior candidate is unavailable and a more senior one fills the seat temporarily. If the bill rate follows the higher classification without your sign-off, that is an unapproved substitution, and it should be flagged even if the work itself was acceptable. Also confirm the invoice does not carry anyone past their assignment end date. A worker whose contract or job order ended in one billing period sometimes continues appearing on the next invoice, especially where staffing agencies batch-process large rosters. This check works best against your own requisition log, kept separately from anything the vendor provides. Relying on the vendor's roster as the source of truth for who should be billed defeats the purpose of the check.

## 4. How do you audit overtime and markup calculations on staffing invoices?

Recalculate overtime and markup independently rather than trusting the invoice's math. Confirm the pay rate underlying the markup, the markup percentage itself against the MSA, and the overtime multiplier and threshold against both the MSA and applicable labor law, then compare your recalculation to the vendor's total for every line. A staffing bill rate is pay rate plus a markup percentage. Errors show up in either component: a markup applied at a higher percentage than the MSA specifies, or a pay rate that does not match what the worker actually earns, inflating the markup base. Overtime compounds this. If the MSA sets an overtime multiplier and a weekly hour threshold, apply both independently and compare to what was billed. One error pattern is billing overtime on a daily basis when the contract specifies a weekly threshold, or applying the markup percentage on top of the overtime rate when the contract prices overtime as a flat multiplier of the straight bill rate. Do this recalculation on a sample large enough to be meaningful, and expand it to every line if the sample turns up an error. A miscalculated formula in a vendor's billing system can repeat across every invoice until it is caught, which is what makes this check worth the time even on invoices that look routine. What to recompute independently on each staffing invoice line, and against what reference. | Component | Recompute from | Compare against | | --- | --- | --- | | Pay rate | Payroll backup or vendor statement | Worker's actual compensation | | Markup percentage | Pay rate x contracted markup | MSA markup clause | | Overtime multiplier | MSA overtime clause | Hours billed as overtime | | Overtime threshold | Daily vs. weekly hour count | MSA-specified threshold |

## 5. Where do unapplied rebates hide in staffing agreements?

Many staffing MSAs include a volume rebate or tiered discount once spend crosses a threshold in a quarter or year. These rebates are not self-reporting: the vendor invoices at the standard rate all period and is contractually obligated to true up separately, and that true-up step is where the credit goes unclaimed. Pull the rebate or volume discount clause from the MSA and note the threshold, the measurement period, and whether the rebate applies retroactively to all spend in the period or only to spend above the threshold. Then total your actual spend with that vendor for the period and check it against the threshold independently of anything the vendor has reported. If spend crossed the threshold and no credit memo appears in the AP record, that is an unapplied rebate, not a rate error, and it is worth tracking on its own line because the remedy is a credit request rather than a rate correction going forward. This check is easy to skip because it requires spend data the vendor does not surface on any single invoice. It has to be run against your own AP ledger, aggregated across the full measurement period.

## 6. What do you do once the audit finds a discrepancy?

Separate every finding into one of three categories before raising it with the vendor: a rate applied above contract with no escalation basis, an unapproved role substitution or headcount error, or an unclaimed rebate. Each category has a different remedy and a different owner, and bundling them into one dispute slows resolution on all three. For rate deviations, request the invoice be reissued at the contracted rate, with the escalation clause or its absence documented in the request. For headcount or role errors, involve whoever manages the requisition relationship, since the fix may require a conversation about the placement itself rather than just the invoice. For unclaimed rebates, request a credit memo referencing the specific measurement period and the spend total that triggered it. Whatever you find, log it against the specific contract clause it violates, not just as a dollar amount. A log that says which clause failed is what lets you fix the control, not just the invoice: if the same clause produces a second finding next quarter, the fix belongs in how invoices are checked before payment, not in another after-the-fact dispute. This is also the point at which a one-time audit and a standing control diverge: a single pass finds what already happened, [a repeatable process run every cycle](/guides/continuous-enforcement-vs-periodic-audit-choosing-a-cadence) is what stops it from happening again. For the wider pattern this sits inside, start with the [margin drift](/guides/contract-compliance-controls-p2p) guide. See also [n-way invoice matching explained](/guides/n-way-invoice-matching-explained) and [price file governance: why annual uploads create twelve months of drift](/guides/price-file-governance-why-annual-uploads-create-twelve).

## Common questions

### What is the difference between a rate audit and a three-way match on staffing invoices?

A three-way match confirms the invoice, purchase order, and timesheet agree on hours. It does not check whether the bill rate on those hours matches the master service agreement. A rate audit is a separate step that compares the invoice's rate line by line against the contracted rate card and SOW.

### Can a staffing vendor raise its bill rate mid-contract?

Only if the master service agreement contains an escalation clause tying the rate to a specific basis, such as a published index or a stated schedule. The audit's job is to confirm the clause exists, that the increase applied on the date specified, and that it matches what the clause allows rather than exceeding it.

### What counts as an unapproved role substitution?

It is when a staffing agency places or bills a worker at a higher skill classification than the requisition specified, without your sign-off. The invoice can look correct on its own terms while billing for a role you never approved at that level.

### How do I know if a staffing rebate was ever paid?

Check your AP ledger for a credit memo referencing the rebate's measurement period. Because rebates require the vendor to true up separately from standard invoicing, the absence of that credit memo, once your own spend total crosses the contracted threshold, is the sign it was never applied.

### Should overtime be checked against the MSA or against labor law?

Both. The MSA sets the multiplier and the markup treatment on overtime hours; applicable labor law sets the minimum threshold and rate the contract cannot fall below. The audit recalculates against both and compares the result to what the vendor billed.

---

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
