# Auditing freight and 3PL spend in Business Central

> How to audit freight and 3PL invoices in Dynamics 365 Business Central against carrier contracts, rate cards, and accessorial terms. Read the full guide.

Source: https://valuexpa.com/insights/how-do-you-audit-freight-and-3pl-spend-in-dynamics-365
Publisher: ValueXPA (https://valuexpa.com)
Updated: 2026-10-22

---

Margin drift is the gap between what a vendor contract says and what the invoice actually charges. In freight and 3PL spend, that gap shows up as a fuel surcharge calculated off the wrong index, an accessorial fee with no matching contract clause, or a minimum charge applied to a shipment that should have cleared it.

Dynamics 365 Business Central posts freight invoices through purchase order and vendor ledger workflows built for goods receipt, not for carrier rate schedules. That mismatch is the reason freight drift survives standard AP review inside the system for months before anyone notices it on a bill.

## Executive Summary

Freight and 3PL invoices carry variable charges (fuel surcharges, accessorials, minimum charges, detention fees) that change shipment to shipment, while Business Central's purchase order matching was built to compare a static PO line to a receipt. The two do not line up, and that mismatch is where freight margin drift accumulates unseen.

The mechanism is specific: three-way matching in Business Central checks quantity and unit price against a purchase order and a receipt. It has no field for a carrier's fuel surcharge index, no rule for a minimum charge threshold, and no way to flag an accessorial that has no clause in the underlying contract. Every one of those checks has to happen outside the ERP, against the actual carrier agreement, or it does not happen at all.

What changes it is treating the carrier contract, not the purchase order, as the reference document. That means pulling invoice-level detail out of Business Central, lining it up against rate cards and accessorial schedules line by line, and building a control that can catch a stale surcharge before it becomes a pattern rather than after.

## 1. What does freight and 3PL spend actually cover in Business Central?

**Freight and 3PL spend in Business Central typically posts through the Purchases module as vendor invoices tied to a purchase order, a blanket order, or a direct vendor ledger entry with no PO at all. It includes line-haul charges, fuel surcharges, accessorials (detention, liftgate, residential delivery), minimum charges, and third-party logistics management fees. None of these charge types has a dedicated field distinguishing it from a standard purchase price, which is the first reason freight drift is hard to see.**

A standard PO line in Business Central holds a quantity and a unit price. A freight invoice holds a base rate plus a set of variable add-ons that depend on lane, weight, fuel index, and accessorial triggers named in the carrier contract, not in the PO.

When a carrier invoice is entered, most of that variable detail gets summarized into one or two G/L lines coded to a freight expense account. The line-item detail that would let anyone check the fuel surcharge math or the accessorial trigger is on the carrier's own invoice backup, not in Business Central.

That is not a data entry failure. It is a structural gap between what the ERP was built to track and what a freight contract actually prices.

## 2. How does Business Central handle freight invoice matching today?

**Business Central's three-way matching compares an invoice against a purchase order and a receipt on quantity and unit price. For freight, the PO price is usually a placeholder or an estimate entered before the shipment moved, and the receipt confirms delivery, not the accessorial and surcharge math behind the final charge. The match can clear cleanly while the invoice still overstates the fuel surcharge or bills an accessorial the contract does not support.**

This is a description of what the control does, not a gap unique to Business Central. Three-way matching everywhere tests quantity received against quantity billed and price against a stored reference price. It was designed for goods, where price is fixed at order time.

A freight rate card is conditional: the fuel surcharge moves with a published index, a minimum charge applies below a weight threshold, an accessorial applies only if a listed condition is met. None of that conditional logic lives in the PO price field the match is checking.

So an invoice can pass three-way matching in Business Central and still bill against a stale surcharge percentage, a minimum charge on a shipment that should have cleared it, or an accessorial with no contract basis at all.

## 3. Where does margin drift hide in Business Central freight data?

**Freight margin drift in Business Central hides in the fields the system treats as free text or as a single summarized G/L line: the fuel surcharge rate applied at invoice time, the accessorial code and its justification, and the minimum charge threshold compared to actual weight or volume. Because none of these are structured, enforced fields, an incorrect value posts exactly like a correct one and clears review the same way.**

None of these four patterns shows up as an exception in a standard Business Central report. Each posts as a normal freight expense line, coded correctly to the right G/L account and the right vendor, which is exactly why they pass unnoticed through a review built to catch coding errors rather than contract mismatches.

Finding them requires comparing invoice detail against the contract document line by line, not scanning the general ledger for anomalies. The ledger has no anomaly to show.

- **Fuel surcharge drift:** A surcharge percentage that was correct when first set up keeps posting after the underlying index moves, because nothing in the ERP checks it against the carrier's published schedule.

- **Accessorial creep:** Detention, liftgate, or redelivery fees post without a matching clause in the signed contract, because the invoice line looks ordinary against a generic freight expense account.

- **Minimum charge misapplication:** A minimum charge applies to a shipment that should have cleared the threshold, and the summarized G/L posting hides the weight or volume figure that would show the error.

- **Rate card version mismatch:** A renegotiated rate card takes effect on paper before it takes effect on the invoices, and the gap between the two dates goes unbilled or, more often, undercorrected.

## 4. How do rising freight rates change what an audit should check?

**When underlying freight rates move sharply, a fuel surcharge or base rate error compounds faster and is harder to spot by eye, because a real increase and an incorrect one look identical on the invoice. The US Bureau of Labor Statistics' Producer Price Index for truck transportation of freight (series WPU3012) stood at 177.458 in August 2026, up 14.3% year over year, read September 25, 2026, which is the scale of movement an audit has to distinguish from.**

The BLS index for general freight trucking, long-distance truckload (series PCU484121484121) read 207.644 in August 2026, up 13.9% year over year, read September 25, 2026. Gasoline, tracked separately (series WPU0571), read 319.584 in August 2026, up 46.5% year over year, read September 25, 2026.

These figures describe the market, not any single carrier's invoice. Their purpose in an audit is as a reference point: a fuel surcharge change that tracks a published index is explainable. A fuel surcharge change with no index behind it, or one that outpaces the index it claims to follow, is not.

Business Central has no field that stores a fuel index value against an invoice line, so this comparison happens outside the ERP, against the carrier's own surcharge schedule and the published index, every time.

## 5. What should a freight and 3PL audit in Business Central actually check?

**A freight and 3PL audit in Business Central pulls invoice-level detail (not the summarized G/L posting) and checks it against three documents: the signed carrier rate card, the accessorial schedule, and the fuel surcharge formula on file. Each invoice line gets tested against the clause that should govern it, not against the PO price the ERP already matched, because the PO price was never the real contract reference in the first place.**

The fuel surcharge check compares the percentage applied on each invoice against the carrier's published surcharge formula for that invoice date, not against last quarter's rate. Minimum charge checks compare billed weight or volume against the contract threshold, using the shipment detail on the carrier's invoice backup rather than the summarized Business Central posting.

### A. Rate card reconciliation

Pull base rates by lane and weight break from the current signed rate card, then compare against what actually posted, line by line, for a defined period. A rate that predates the current card's effective date is a finding, not an estimate.

### B. Accessorial validation

List every accessorial code that posted against the freight expense account for the period, then check each one against a clause in the contract that authorizes it. A code with no matching clause is a finding regardless of the dollar amount.

## 6. Should you fix this in Business Central or run a separate audit first?

**Fixing this inside Business Central means building custom fields or approval workflows for surcharge and accessorial logic the ERP was never designed to hold, before knowing which contracts and carriers are actually driving the leakage. Running the audit first identifies which rate cards, lanes, and accessorial clauses are worth building a control around, so the configuration work that follows fixes a known problem instead of a guessed one.**

This is a sequencing question, not a software question. A control built before the specific drift is known enforces whatever rules were guessed at configuration time, and freight contracts are renegotiated often enough that a guessed rule goes stale quickly.

An audit that reviews 12 to 18 months of posted freight invoices against the actual carrier contracts on file produces a list: which lanes drift, which accessorials lack a contract basis, which surcharge formulas are out of date. That list is what a Business Central customization, or a separate enforcement layer, should be built against.

The same sequencing question applies beyond freight. See diagnostic or software: what to buy first for the general version of this decision, and build vs. buy: can you do contract-to-invoice matching in Excel for what the manual version of this audit actually requires in practice.

For the wider pattern this sits inside, start with the [margin drift](/insights/best-invoice-validation-software-smb) guide. See also [diagnostic or software: what to buy first](/insights/diagnostic-or-software-what-to-buy-first) and [build vs. buy: can you do contract-to-invoice matching in excel?](/insights/build-vs-buy-can-you-do-contract-to-invoice-matching-in).

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

### Does Business Central check freight invoices against the carrier contract automatically?

No. Business Central's three-way match checks an invoice against a purchase order and a receipt on quantity and price. It has no field for a fuel surcharge formula, an accessorial clause, or a minimum charge threshold, so none of those are checked automatically against the underlying carrier contract.

### Where do freight accessorial charges show up in Business Central?

They typically post to the same freight expense G/L account as the base rate, summarized into one or two lines per invoice. The accessorial code and its justification usually exist only on the carrier's invoice backup, not as a structured field in Business Central.

### Can a fuel surcharge error pass Business Central's invoice matching?

Yes. Three-way matching tests the invoice against the PO price and the received quantity. A fuel surcharge calculated off a stale index or an outdated percentage can match the PO price it was set against and still clear review, because the surcharge formula itself is never compared to the carrier's published schedule.

### What documents does a freight audit need beyond Business Central data?

The signed carrier rate card by lane and weight break, the accessorial schedule naming which fees apply under which conditions, and the fuel surcharge formula on file with each carrier. Business Central invoice detail is the starting point; the contract documents are the reference the invoices get checked against.

### Is a minimum charge violation visible in standard Business Central reports?

Not directly. Standard freight expense reports in Business Central summarize by G/L account and vendor, not by shipment weight against a contract's minimum charge threshold. Confirming a minimum charge violation requires the shipment-level detail from the carrier's invoice, compared against the contract clause.

### Should freight rate cards be added as custom fields in Business Central?

That depends on how often the rate cards change and how many carriers are involved. Before building custom fields or workflows, it helps to know which carriers and lanes actually show drift, which an audit of posted invoices against current contracts identifies first.

### How often should a freight and 3PL audit run in Business Central?

The right cadence depends on contract renewal frequency and carrier count, which vary by company. A first pass typically reviews 12 to 18 months of posted invoices to establish a baseline before deciding how often to repeat the check.

### Does this apply to 3PL management fees as well as carrier freight charges?

Yes. A 3PL management fee is usually structured against a rate schedule or a percentage-of-spend formula in the service contract, the same kind of conditional term that a PO-based match in Business Central cannot test against a static price field.

### What is the legal status of a fuel surcharge based on a published index?

A surcharge tied to a named index is only enforceable as written in the contract clause that defines it. This is general information, not legal advice; confirm surcharge and accessorial enforceability against your specific carrier agreement.

### How do rising diesel and freight costs affect audit priority?

When freight-related indices move sharply, as the BLS producer price data for truck transportation and fuel show for August 2026, a real rate increase and an incorrect one look similar on an invoice. That makes checking the surcharge formula against the published index, not just the invoice total, more useful during periods of rapid movement.

### 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 and 3PL invoices carry variable charges (fuel surcharges, accessorials, minimum charges, detention fees) that change shipment to shipment, while Business Central's purchase order matching was built to compare a static PO line to a receipt. The two do not line up, and that mismatch is where freight margin drift accumulates unseen. The mechanism is specific: three-way matching in Business Central checks quantity and unit price against a purchase order and a receipt. It has no field for a carrier's fuel surcharge index, no rule for a minimum charge threshold, and no way to flag an accessorial that has no clause in the underlying contract. Every one of those checks has to happen outside the ERP, against the actual carrier agreement, or it does not happen at all. What changes it is treating the carrier contract, not the purchase order, as the reference document. That means pulling invoice-level detail out of Business Central, lining it up against rate cards and accessorial schedules line by line, and building a control that can catch a stale surcharge before it becomes a pattern rather than after.

## 1. What does freight and 3PL spend actually cover in Business Central?

Freight and 3PL spend in Business Central typically posts through the Purchases module as vendor invoices tied to a purchase order, a blanket order, or a direct vendor ledger entry with no PO at all. It includes line-haul charges, fuel surcharges, accessorials (detention, liftgate, residential delivery), minimum charges, and third-party logistics management fees. None of these charge types has a dedicated field distinguishing it from a standard purchase price, which is the first reason freight drift is hard to see. A standard PO line in Business Central holds a quantity and a unit price. A freight invoice holds a base rate plus a set of variable add-ons that depend on lane, weight, fuel index, and accessorial triggers named in the carrier contract, not in the PO. When a carrier invoice is entered, most of that variable detail gets summarized into one or two G/L lines coded to a freight expense account. The line-item detail that would let anyone check the fuel surcharge math or the accessorial trigger is on the carrier's own invoice backup, not in Business Central. That is not a data entry failure. It is a structural gap between what the ERP was built to track and what a freight contract actually prices.

## 2. How does Business Central handle freight invoice matching today?

Business Central's three-way matching compares an invoice against a purchase order and a receipt on quantity and unit price. For freight, the PO price is usually a placeholder or an estimate entered before the shipment moved, and the receipt confirms delivery, not the accessorial and surcharge math behind the final charge. The match can clear cleanly while the invoice still overstates the fuel surcharge or bills an accessorial the contract does not support. This is a description of what the control does, not a gap unique to Business Central. Three-way matching everywhere tests quantity received against quantity billed and price against a stored reference price. It was designed for goods, where price is fixed at order time. A freight rate card is conditional: the fuel surcharge moves with a published index, a minimum charge applies below a weight threshold, an accessorial applies only if a listed condition is met. None of that conditional logic lives in the PO price field the match is checking. So an invoice can pass three-way matching in Business Central and still bill against a stale surcharge percentage, a minimum charge on a shipment that should have cleared it, or an accessorial with no contract basis at all.

## 3. Where does margin drift hide in Business Central freight data?

Freight margin drift in Business Central hides in the fields the system treats as free text or as a single summarized G/L line: the fuel surcharge rate applied at invoice time, the accessorial code and its justification, and the minimum charge threshold compared to actual weight or volume. Because none of these are structured, enforced fields, an incorrect value posts exactly like a correct one and clears review the same way. None of these four patterns shows up as an exception in a standard Business Central report. Each posts as a normal freight expense line, coded correctly to the right G/L account and the right vendor, which is exactly why they pass unnoticed through a review built to catch coding errors rather than contract mismatches. Finding them requires comparing invoice detail against the contract document line by line, not scanning the general ledger for anomalies. The ledger has no anomaly to show. - Fuel surcharge drift: A surcharge percentage that was correct when first set up keeps posting after the underlying index moves, because nothing in the ERP checks it against the carrier's published schedule. - Accessorial creep: Detention, liftgate, or redelivery fees post without a matching clause in the signed contract, because the invoice line looks ordinary against a generic freight expense account. - Minimum charge misapplication: A minimum charge applies to a shipment that should have cleared the threshold, and the summarized G/L posting hides the weight or volume figure that would show the error. - Rate card version mismatch: A renegotiated rate card takes effect on paper before it takes effect on the invoices, and the gap between the two dates goes unbilled or, more often, undercorrected.

## 4. How do rising freight rates change what an audit should check?

When underlying freight rates move sharply, a fuel surcharge or base rate error compounds faster and is harder to spot by eye, because a real increase and an incorrect one look identical on the invoice. The US Bureau of Labor Statistics' Producer Price Index for truck transportation of freight (series WPU3012) stood at 177.458 in August 2026, up 14.3% year over year, read September 25, 2026, which is the scale of movement an audit has to distinguish from. The BLS index for general freight trucking, long-distance truckload (series PCU484121484121) read 207.644 in August 2026, up 13.9% year over year, read September 25, 2026. Gasoline, tracked separately (series WPU0571), read 319.584 in August 2026, up 46.5% year over year, read September 25, 2026. These figures describe the market, not any single carrier's invoice. Their purpose in an audit is as a reference point: a fuel surcharge change that tracks a published index is explainable. A fuel surcharge change with no index behind it, or one that outpaces the index it claims to follow, is not. Business Central has no field that stores a fuel index value against an invoice line, so this comparison happens outside the ERP, against the carrier's own surcharge schedule and the published index, every time.

## 5. What should a freight and 3PL audit in Business Central actually check?

A freight and 3PL audit in Business Central pulls invoice-level detail (not the summarized G/L posting) and checks it against three documents: the signed carrier rate card, the accessorial schedule, and the fuel surcharge formula on file. Each invoice line gets tested against the clause that should govern it, not against the PO price the ERP already matched, because the PO price was never the real contract reference in the first place. The fuel surcharge check compares the percentage applied on each invoice against the carrier's published surcharge formula for that invoice date, not against last quarter's rate. Minimum charge checks compare billed weight or volume against the contract threshold, using the shipment detail on the carrier's invoice backup rather than the summarized Business Central posting. ### A. Rate card reconciliation Pull base rates by lane and weight break from the current signed rate card, then compare against what actually posted, line by line, for a defined period. A rate that predates the current card's effective date is a finding, not an estimate. ### B. Accessorial validation List every accessorial code that posted against the freight expense account for the period, then check each one against a clause in the contract that authorizes it. A code with no matching clause is a finding regardless of the dollar amount.

## 6. Should you fix this in Business Central or run a separate audit first?

Fixing this inside Business Central means building custom fields or approval workflows for surcharge and accessorial logic the ERP was never designed to hold, before knowing which contracts and carriers are actually driving the leakage. Running the audit first identifies which rate cards, lanes, and accessorial clauses are worth building a control around, so the configuration work that follows fixes a known problem instead of a guessed one. This is a sequencing question, not a software question. A control built before the specific drift is known enforces whatever rules were guessed at configuration time, and freight contracts are renegotiated often enough that a guessed rule goes stale quickly. An audit that reviews 12 to 18 months of posted freight invoices against the actual carrier contracts on file produces a list: which lanes drift, which accessorials lack a contract basis, which surcharge formulas are out of date. That list is what a Business Central customization, or a separate enforcement layer, should be built against. The same sequencing question applies beyond freight. See diagnostic or software: what to buy first for the general version of this decision, and build vs. buy: can you do contract-to-invoice matching in Excel for what the manual version of this audit actually requires in practice. For the wider pattern this sits inside, start with the [margin drift](/insights/best-invoice-validation-software-smb) guide. See also [diagnostic or software: what to buy first](/insights/diagnostic-or-software-what-to-buy-first) and [build vs. buy: can you do contract-to-invoice matching in excel?](/insights/build-vs-buy-can-you-do-contract-to-invoice-matching-in).

## Common questions

### Does Business Central check freight invoices against the carrier contract automatically?

No. Business Central's three-way match checks an invoice against a purchase order and a receipt on quantity and price. It has no field for a fuel surcharge formula, an accessorial clause, or a minimum charge threshold, so none of those are checked automatically against the underlying carrier contract.

### Where do freight accessorial charges show up in Business Central?

They typically post to the same freight expense G/L account as the base rate, summarized into one or two lines per invoice. The accessorial code and its justification usually exist only on the carrier's invoice backup, not as a structured field in Business Central.

### Can a fuel surcharge error pass Business Central's invoice matching?

Yes. Three-way matching tests the invoice against the PO price and the received quantity. A fuel surcharge calculated off a stale index or an outdated percentage can match the PO price it was set against and still clear review, because the surcharge formula itself is never compared to the carrier's published schedule.

### What documents does a freight audit need beyond Business Central data?

The signed carrier rate card by lane and weight break, the accessorial schedule naming which fees apply under which conditions, and the fuel surcharge formula on file with each carrier. Business Central invoice detail is the starting point; the contract documents are the reference the invoices get checked against.

### Is a minimum charge violation visible in standard Business Central reports?

Not directly. Standard freight expense reports in Business Central summarize by G/L account and vendor, not by shipment weight against a contract's minimum charge threshold. Confirming a minimum charge violation requires the shipment-level detail from the carrier's invoice, compared against the contract clause.

---

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
