# Freight cost control: a Controller guide

> A Controller's guide to freight cost control: what to check, what close cannot catch, and how to build a defensible audit trail. Read the full guide.

Source: https://valuexpa.com/insights/freight-cost-control-a-controller-guide
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 freight, that gap hides inside accessorial codes, fuel surcharge tables and minimum charge rules that rarely match the rate sheet a carrier quoted at contract signing.

For a Controller, freight cost control is not a procurement question. It is a close question, a controls question, and an accuracy question, because freight sits inside cost of goods sold and moves gross margin whether or not anyone reconciled it against the contract.

## Executive Summary

Freight invoices are high volume, low unit value and coded fast, which makes them a weak point in the control environment even at a well-run manufacturer. Three-way matching checks the invoice against the purchase order and the receipt. It does not test whether a fuel surcharge index expired, whether an accessorial charge matches the tariff on file, or whether a minimum charge floor was applied when it should not have been.

The mechanism is structural, not a lapse by the AP team. Freight contracts live in PDFs outside the ERP. The invoice posts against a GL code, not against the rate table clause that should have governed it. Until someone matches invoice line to contract clause, the variance sits inside cost of goods sold, undetected, and shows up later as an unexplained line in the [gross margin bridge](/guides/building-a-gross-margin-bridge-that-separates-inflation-from).

What changes it is a control that tests the contract, not just the transaction: periodic invoice-to-contract audits, or a forward rule that flags a line before it posts. Both require the contract terms to exist as structured, testable rules rather than as a filed PDF.

## 1. Why does freight sit outside normal AP controls?

**Freight invoices pass three-way matching because that control checks quantity and price against a purchase order and a receipt, not against a rate card, a fuel index or an accessorial tariff. A freight invoice can match its PO exactly and still charge a rate the contract does not permit. The contract terms that would catch the error live in a carrier agreement PDF, not in the ERP, so the control that exists cannot see the term that would flag the.**

A Controller inherits a control environment built for quantity and unit price. Freight breaks that model because the variable that actually governs cost, the rate schedule, the fuel surcharge index, the accessorial code list, sits in a separate document with its own effective dates and its own exceptions.

An AP clerk coding a freight invoice sees a carrier name, a shipment reference and a total. Nothing in that view tells them which fuel index applied that week or whether the accessorial charge for a residential delivery matches what the contract permits. The invoice looks ordinary because it is coded correctly against the GL, not against the contract.

This is why freight drift survives audit cycles that catch other AP errors. The control gap is not a training issue. It is a data gap: the rule that should test the invoice does not exist inside the system doing the testing.

- **Fuel surcharge index:** Applies a published index rate that changes weekly; a stale reference point misprices every shipment coded against it until someone resets it.

- **Accessorial charge schedule:** Defines what a residential delivery, liftgate or redelivery costs; it is a separate tariff, not a GL mapping, and AP coding does not test it.

- **Minimum charge floor:** Sets a charge that applies below a weight or distance threshold; applying it above the threshold overcharges a shipment that should have been billed at the standard rate.

## 2. What does a freight invoice audit actually check?

**A freight invoice audit re-matches every line on the invoice against the specific contract clause that should have governed it: the base rate for the lane, the accessorial tariff, the fuel surcharge index and effective date, and any minimum charge floor. It is a line-by-line comparison, not a total-to-total check, because the total can be correct even when two offsetting lines inside it are both wrong.**

The audit starts with the contract, not the invoice. Every rate, tier, surcharge trigger and accessorial definition is extracted into a structured reference before a single invoice line is tested against it.

Each invoice line is then matched to the clause that applies to it: lane, weight break, accessorial type, and the surcharge index in effect on the ship date. A line that does not match its clause is a finding, whether it overcharged or undercharged, because both indicate the contract and the billing system are out of sync.

A Controller reviewing this output gets something three-way matching never produces: a reconciliation between the invoice and the actual contract terms, with each variance traced to a specific clause rather than reported as an unexplained total.

What each control layer actually tests on a freight invoice.

| Control
| Tests
| Does not test

| Three-way match
| Quantity and price against PO and receipt
| Contract rate, surcharge index, accessorial schedule

| GL coding review
| Correct account and cost center
| Whether the charge itself was contractually valid

| Freight invoice audit
| Each line against its specific contract clause
| Charges outside the scope of the audited contract

## 3. How does freight drift affect the close?

**Freight drift posts through cost of goods sold as if it were a legitimate cost, so it does not appear as an error anywhere in the close process. It surfaces later, if at all, as an unexplained gap in the gross margin bridge that inflation and volume cannot fully account for. A Controller reconciling margin variance without a contract-level freight test is reconciling around a gap the close cannot see.**

Close procedures test that transactions are recorded completely and accurately against their supporting documents. A freight invoice that matches its own PO and its own GL code passes every one of those tests, because the documents being compared to each other are both wrong in the same direction.

The result is a cost that is real, paid and recorded correctly, but not contractually valid. It does not fail an accrual test, a cutoff test or a reconciliation. It fails a test the close does not run: invoice against contract clause.

For a Controller building a gross margin bridge, this is the residual that will not separate into a labeled driver. Isolating it earlier, before it accumulates across a reporting period, keeps that bridge from carrying a line item nobody can explain to the board.

### A. What the close catches

Standard close procedures confirm that a freight invoice was received, coded to the right period, and posted at the amount on the invoice. They confirm internal consistency: does the recorded entry match its supporting document. That is a necessary test and it is not sufficient for freight, because the supporting document itself can carry a rate the contract does not permit.

### B. What it does not catch

Nothing in a standard close tests the invoice against the carrier contract. There is no step that asks whether the fuel surcharge index was current on the ship date, or whether an accessorial charge matches the tariff filed with the contract. That comparison requires the contract terms in structured form, which most close checklists do not include.

## 4. Can freight cost control be handled inside the ERP alone?

**An ERP enforces the rules it is configured with, and most ERPs are configured with GL mappings and PO tolerances, not with carrier contract clauses. Loading a rate card, a surcharge index and an accessorial schedule into the ERP as enforceable rules is possible, but someone has to extract those terms from the contract PDF first. Without that step, the ERP has nothing to check the invoice against beyond its own prior postings.**

This is a sequencing question more than a technology question. A system configured to enforce contract rules before those rules have been extracted and verified will enforce whatever was guessed, which can be worse than enforcing nothing because it creates false confidence.

The extraction work, turning a carrier agreement's accessorial schedule and rate tiers into a structured, testable rule set, is where most of the effort sits. Once it exists, it can support either a periodic audit or a forward control inside the ERP or a dedicated tool.

A Controller evaluating options should ask which approach names the specific contracts and clauses being enforced, not which platform runs the check. A vague answer on that point is the tell that the rules were never actually verified against the contract.

- **Contract extraction:** Converts rate cards, surcharge indices and accessorial schedules from PDF into structured, testable data.

- **Retrospective audit:** Tests invoices already paid against the extracted rules, surfacing recoverable overcharges and credit memo candidates.

- **Forward enforcement:** Tests each new invoice against the same rules before or immediately after posting, so drift does not reaccumulate.

## 5. Which freight charges deserve the closest review?

**Base linehaul rates, fuel surcharges, accessorial charges and minimum charge floors each carry a distinct failure mode and each requires its own test against the contract. None of them is inherently the largest or the most frequent finding; each is a separate mechanism that drifts from its contract clause in a different way and needs a separate check rather than a single total-level review.**

A base linehaul rate drifts when a lane's negotiated rate is superseded by a general rate increase the carrier applied without a corresponding contract amendment. The invoice charges the new number; the contract still states the old one.

A fuel surcharge drifts when the index or the effective date used on the invoice does not match what the contract specifies, often because the surcharge table was not updated when the underlying index changed.

An accessorial charge drifts when a code is applied that the contract does not define, or applied at a rate different from the filed tariff. A minimum charge floor drifts when it is applied to a shipment that exceeds the threshold it was designed to cover.

Each of these needs its own line-by-line test against its own clause. Reviewing only the invoice total will not surface any of them, because offsetting errors can leave the total looking ordinary.

## 6. What should a Controller ask before signing off on freight spend?

**Before sign-off, a Controller should confirm the current carrier contract terms are on file and current, that a sample of invoices has been tested line by line against those terms rather than just against the PO, and that any variance found has a documented disposition: credit memo requested, contract amendment needed, or accepted as a valid rate change. General information here is not legal advice on contract enforcement.**

Sign-off on a functional total is different from sign-off on a control. A Controller can confirm the freight total ties to the GL and still have no basis for saying the total is correct against contract, because those are two different questions answered by two different tests.

The practical version of this is periodic: pull a sample of freight invoices, extract the governing contract clauses, and test each line. Where a carrier relationship changes rates frequently, the sample needs refreshing on the same cadence or it goes stale.

Where the audit finds a pattern, a repeated accessorial misapplication, a surcharge table that was never updated, that is a controls finding independent of the dollar recovery, and it belongs in the same documentation as any other control gap identified during the period.

For the wider pattern this sits inside, start with the [margin drift](/guides/cfo-agenda-mid-market-manufacturing) guide. See also [the six categories drift hides in](/guides/indirect-spend-audit-categories) and [margin drift vs. legitimate price increases: how to tell them apart](/guides/margin-drift-vs-legitimate-price-increases-how-to-tell-them).

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

### Does three-way matching catch freight overcharges?

No. Three-way matching checks the invoice against the purchase order and the receipt for quantity and price. It does not test the invoice against the carrier contract's rate card, fuel surcharge index or accessorial schedule, which is where freight drift actually originates.

### Where does freight drift show up if the close doesn't catch it?

It posts through cost of goods sold as a normal cost and typically surfaces later as an unexplained variance in a gross margin bridge, one that inflation, volume and mix cannot fully explain, because it was never isolated as a contract compliance issue at the point of posting.

### What is the difference between a rate audit and a freight invoice audit?

A rate audit usually checks that the invoiced rate matches a quoted or contracted base rate. A freight invoice audit goes further, testing accessorial charges, fuel surcharge index and effective date, and minimum charge floors line by line against the governing contract clause.

### Can a Controller do this review without extracting the contract into structured data?

Not reliably. Comparing an invoice to a contract clause requires knowing what that clause says on the invoice's ship date. Without the rate card, surcharge schedule and accessorial tariff in structured, referenceable form, the comparison has to be done manually, invoice by invoice, which does not scale.

### Is freight the biggest source of margin drift for a manufacturer?

There is no dataset that ranks drift by category across manufacturers, so that comparison cannot be made responsibly. What can be said is that freight has its own specific failure mechanisms, distinct from labor or MRO, and each needs its own contract-level test.

### How often should freight contracts be re-tested against invoices?

The right cadence depends on how often the carrier relationship changes rates and how much freight spend moves through it. A relationship with frequent general rate increases or surcharge table updates needs more frequent sampling than a stable, fixed-rate lane.

### What documentation should a freight audit finding include?

The specific invoice line, the contract clause it should have matched, the variance amount, and a disposition: credit memo requested, contract amendment needed, or accepted as a legitimate rate change. That trail is what supports both recovery and any related controls disclosure.

### Does a freight invoice audit replace the need for forward controls?

No. A retrospective audit tests invoices already paid and can recover overcharges already incurred. A forward control tests each new invoice before or as it posts, so the same drift does not reaccumulate. The two are complementary, not substitutes for each other.

### Should legal review the freight contract terms used in an audit?

This guide provides general information on operational controls, not legal advice. Where a freight contract's terms are ambiguous or disputed, that interpretation question should go to legal or contract counsel before a finding is treated as a confirmed overcharge.

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

Freight invoices are high volume, low unit value and coded fast, which makes them a weak point in the control environment even at a well-run manufacturer. Three-way matching checks the invoice against the purchase order and the receipt. It does not test whether a fuel surcharge index expired, whether an accessorial charge matches the tariff on file, or whether a minimum charge floor was applied when it should not have been. The mechanism is structural, not a lapse by the AP team. Freight contracts live in PDFs outside the ERP. The invoice posts against a GL code, not against the rate table clause that should have governed it. Until someone matches invoice line to contract clause, the variance sits inside cost of goods sold, undetected, and shows up later as an unexplained line in the [gross margin bridge](/guides/building-a-gross-margin-bridge-that-separates-inflation-from). What changes it is a control that tests the contract, not just the transaction: periodic invoice-to-contract audits, or a forward rule that flags a line before it posts. Both require the contract terms to exist as structured, testable rules rather than as a filed PDF.

## 1. Why does freight sit outside normal AP controls?

Freight invoices pass three-way matching because that control checks quantity and price against a purchase order and a receipt, not against a rate card, a fuel index or an accessorial tariff. A freight invoice can match its PO exactly and still charge a rate the contract does not permit. The contract terms that would catch the error live in a carrier agreement PDF, not in the ERP, so the control that exists cannot see the term that would flag the. A Controller inherits a control environment built for quantity and unit price. Freight breaks that model because the variable that actually governs cost, the rate schedule, the fuel surcharge index, the accessorial code list, sits in a separate document with its own effective dates and its own exceptions. An AP clerk coding a freight invoice sees a carrier name, a shipment reference and a total. Nothing in that view tells them which fuel index applied that week or whether the accessorial charge for a residential delivery matches what the contract permits. The invoice looks ordinary because it is coded correctly against the GL, not against the contract. This is why freight drift survives audit cycles that catch other AP errors. The control gap is not a training issue. It is a data gap: the rule that should test the invoice does not exist inside the system doing the testing. - Fuel surcharge index: Applies a published index rate that changes weekly; a stale reference point misprices every shipment coded against it until someone resets it. - Accessorial charge schedule: Defines what a residential delivery, liftgate or redelivery costs; it is a separate tariff, not a GL mapping, and AP coding does not test it. - Minimum charge floor: Sets a charge that applies below a weight or distance threshold; applying it above the threshold overcharges a shipment that should have been billed at the standard rate.

## 2. What does a freight invoice audit actually check?

A freight invoice audit re-matches every line on the invoice against the specific contract clause that should have governed it: the base rate for the lane, the accessorial tariff, the fuel surcharge index and effective date, and any minimum charge floor. It is a line-by-line comparison, not a total-to-total check, because the total can be correct even when two offsetting lines inside it are both wrong. The audit starts with the contract, not the invoice. Every rate, tier, surcharge trigger and accessorial definition is extracted into a structured reference before a single invoice line is tested against it. Each invoice line is then matched to the clause that applies to it: lane, weight break, accessorial type, and the surcharge index in effect on the ship date. A line that does not match its clause is a finding, whether it overcharged or undercharged, because both indicate the contract and the billing system are out of sync. A Controller reviewing this output gets something three-way matching never produces: a reconciliation between the invoice and the actual contract terms, with each variance traced to a specific clause rather than reported as an unexplained total. What each control layer actually tests on a freight invoice. | Control | Tests | Does not test | | --- | --- | --- | | Three-way match | Quantity and price against PO and receipt | Contract rate, surcharge index, accessorial schedule | | GL coding review | Correct account and cost center | Whether the charge itself was contractually valid | | Freight invoice audit | Each line against its specific contract clause | Charges outside the scope of the audited contract |

## 3. How does freight drift affect the close?

Freight drift posts through cost of goods sold as if it were a legitimate cost, so it does not appear as an error anywhere in the close process. It surfaces later, if at all, as an unexplained gap in the gross margin bridge that inflation and volume cannot fully account for. A Controller reconciling margin variance without a contract-level freight test is reconciling around a gap the close cannot see. Close procedures test that transactions are recorded completely and accurately against their supporting documents. A freight invoice that matches its own PO and its own GL code passes every one of those tests, because the documents being compared to each other are both wrong in the same direction. The result is a cost that is real, paid and recorded correctly, but not contractually valid. It does not fail an accrual test, a cutoff test or a reconciliation. It fails a test the close does not run: invoice against contract clause. For a Controller building a gross margin bridge, this is the residual that will not separate into a labeled driver. Isolating it earlier, before it accumulates across a reporting period, keeps that bridge from carrying a line item nobody can explain to the board. ### A. What the close catches Standard close procedures confirm that a freight invoice was received, coded to the right period, and posted at the amount on the invoice. They confirm internal consistency: does the recorded entry match its supporting document. That is a necessary test and it is not sufficient for freight, because the supporting document itself can carry a rate the contract does not permit. ### B. What it does not catch Nothing in a standard close tests the invoice against the carrier contract. There is no step that asks whether the fuel surcharge index was current on the ship date, or whether an accessorial charge matches the tariff filed with the contract. That comparison requires the contract terms in structured form, which most close checklists do not include.

## 4. Can freight cost control be handled inside the ERP alone?

An ERP enforces the rules it is configured with, and most ERPs are configured with GL mappings and PO tolerances, not with carrier contract clauses. Loading a rate card, a surcharge index and an accessorial schedule into the ERP as enforceable rules is possible, but someone has to extract those terms from the contract PDF first. Without that step, the ERP has nothing to check the invoice against beyond its own prior postings. This is a sequencing question more than a technology question. A system configured to enforce contract rules before those rules have been extracted and verified will enforce whatever was guessed, which can be worse than enforcing nothing because it creates false confidence. The extraction work, turning a carrier agreement's accessorial schedule and rate tiers into a structured, testable rule set, is where most of the effort sits. Once it exists, it can support either a periodic audit or a forward control inside the ERP or a dedicated tool. A Controller evaluating options should ask which approach names the specific contracts and clauses being enforced, not which platform runs the check. A vague answer on that point is the tell that the rules were never actually verified against the contract. - Contract extraction: Converts rate cards, surcharge indices and accessorial schedules from PDF into structured, testable data. - Retrospective audit: Tests invoices already paid against the extracted rules, surfacing recoverable overcharges and credit memo candidates. - Forward enforcement: Tests each new invoice against the same rules before or immediately after posting, so drift does not reaccumulate.

## 5. Which freight charges deserve the closest review?

Base linehaul rates, fuel surcharges, accessorial charges and minimum charge floors each carry a distinct failure mode and each requires its own test against the contract. None of them is inherently the largest or the most frequent finding; each is a separate mechanism that drifts from its contract clause in a different way and needs a separate check rather than a single total-level review. A base linehaul rate drifts when a lane's negotiated rate is superseded by a general rate increase the carrier applied without a corresponding contract amendment. The invoice charges the new number; the contract still states the old one. A fuel surcharge drifts when the index or the effective date used on the invoice does not match what the contract specifies, often because the surcharge table was not updated when the underlying index changed. An accessorial charge drifts when a code is applied that the contract does not define, or applied at a rate different from the filed tariff. A minimum charge floor drifts when it is applied to a shipment that exceeds the threshold it was designed to cover. Each of these needs its own line-by-line test against its own clause. Reviewing only the invoice total will not surface any of them, because offsetting errors can leave the total looking ordinary.

## 6. What should a Controller ask before signing off on freight spend?

Before sign-off, a Controller should confirm the current carrier contract terms are on file and current, that a sample of invoices has been tested line by line against those terms rather than just against the PO, and that any variance found has a documented disposition: credit memo requested, contract amendment needed, or accepted as a valid rate change. General information here is not legal advice on contract enforcement. Sign-off on a functional total is different from sign-off on a control. A Controller can confirm the freight total ties to the GL and still have no basis for saying the total is correct against contract, because those are two different questions answered by two different tests. The practical version of this is periodic: pull a sample of freight invoices, extract the governing contract clauses, and test each line. Where a carrier relationship changes rates frequently, the sample needs refreshing on the same cadence or it goes stale. Where the audit finds a pattern, a repeated accessorial misapplication, a surcharge table that was never updated, that is a controls finding independent of the dollar recovery, and it belongs in the same documentation as any other control gap identified during the period. For the wider pattern this sits inside, start with the [margin drift](/guides/cfo-agenda-mid-market-manufacturing) guide. See also [the six categories drift hides in](/guides/indirect-spend-audit-categories) and [margin drift vs. legitimate price increases: how to tell them apart](/guides/margin-drift-vs-legitimate-price-increases-how-to-tell-them).

## Common questions

### Does three-way matching catch freight overcharges?

No. Three-way matching checks the invoice against the purchase order and the receipt for quantity and price. It does not test the invoice against the carrier contract's rate card, fuel surcharge index or accessorial schedule, which is where freight drift actually originates.

### Where does freight drift show up if the close doesn't catch it?

It posts through cost of goods sold as a normal cost and typically surfaces later as an unexplained variance in a gross margin bridge, one that inflation, volume and mix cannot fully explain, because it was never isolated as a contract compliance issue at the point of posting.

### What is the difference between a rate audit and a freight invoice audit?

A rate audit usually checks that the invoiced rate matches a quoted or contracted base rate. A freight invoice audit goes further, testing accessorial charges, fuel surcharge index and effective date, and minimum charge floors line by line against the governing contract clause.

### Can a Controller do this review without extracting the contract into structured data?

Not reliably. Comparing an invoice to a contract clause requires knowing what that clause says on the invoice's ship date. Without the rate card, surcharge schedule and accessorial tariff in structured, referenceable form, the comparison has to be done manually, invoice by invoice, which does not scale.

### Is freight the biggest source of margin drift for a manufacturer?

There is no dataset that ranks drift by category across manufacturers, so that comparison cannot be made responsibly. What can be said is that freight has its own specific failure mechanisms, distinct from labor or MRO, and each needs its own contract-level test.

---

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
