# Freight and 3PL Controls in QuickBooks Enterprise

> What freight and 3PL invoice controls QuickBooks Enterprise actually enforces, what it leaves open, and where rate and fuel surcharge drift hides.

Source: https://valuexpa.com/insights/freight-and-3pl-controls-in-quickbooks-enterprise
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. For a manufacturer running freight and 3PL spend through QuickBooks Enterprise, that gap opens at a specific point: the software validates that a bill has a purchase order and a received quantity behind it, but it has no field for a lane rate, a fuel surcharge formula, or a minimum charge threshold.

That distinction, between what QuickBooks checks and what a freight contract governs, decides how much of your freight spend is actually protected and how much only looks protected because a bill got approved.

## Executive Summary

QuickBooks Enterprise enforces three-way matching: a bill can be tied to a purchase order and to a receipt, and the system will flag a quantity or a total that does not reconcile against those two documents. That control catches a carrier billing for freight that was never ordered or never received. It does not catch a carrier billing the ordered, received freight at the wrong rate.

Freight and 3PL invoices carry a second layer of terms that live entirely outside the ERP: a rate card by lane, a fuel surcharge table keyed to a published index, an accessorial schedule, and often a minimum charge per shipment. None of that is structured data QuickBooks can check a bill against, because none of it was ever entered as a QuickBooks record. The bill can match its purchase order exactly and still be wrong against the contract.

What changes this is not a QuickBooks setting. It is treating the rate card and surcharge schedule as a control surface in their own right, checked against every invoice line, separately from the three-way match QuickBooks already runs.

## 1. What does QuickBooks Enterprise actually check on a freight bill?

**QuickBooks Enterprise runs three-way matching when a bill is entered against a purchase order: it compares the billed quantity and amount to the PO and to the linked receipt, and it can hold or flag a bill where those numbers diverge beyond a set tolerance. For freight this confirms the shipment was ordered and received. It does not evaluate the rate charged per mile, per hundredweight, or per lane, because that rate never enters QuickBooks as a field the match.**

The three-way match is a quantity and total-dollar comparison. It reads the PO line, the item receipt, and the bill, and it looks for agreement across those three documents within whatever tolerance the company file allows. For a freight bill tied to a PO for inbound materials, that means QuickBooks confirms the freight line exists against an authorized order and against a received shipment.

What the match does not do is decode the invoice itself. A freight bill from a carrier or 3PL is really two numbers stacked together: a base rate and a set of accessorials and surcharges layered on top. QuickBooks records the total the bill states. It has no concept of a lane rate table, a weight break, or a surcharge index, so it cannot tell you whether the total on the bill is the total the contract actually calls for.

Many freight bills, particularly parcel and LTL, arrive without a PO at all and post directly as a vendor bill. In that path even the three-way match does not run. The bill is approved on the strength of a coded GL account and an approver's signature, with no document comparison behind it at all.

## 2. Where does the fuel surcharge sit, and does QuickBooks validate it?

**QuickBooks Enterprise stores a fuel surcharge as whatever line amount the carrier's bill states. It has no built-in reference to a diesel or fuel price index and no formula field that recalculates the surcharge from that index, so the software cannot confirm the percentage charged this month is the percentage the contract's surcharge table calls for at the current fuel price. The check has to happen outside the ERP, against the index the contract actually references.**

A typical freight contract sets the fuel surcharge as a sliding scale: a published fuel price falls in a band, and that band maps to a surcharge percentage applied to the base rate. The US Energy Information Administration publishes the diesel price most carrier contracts reference, and the surcharge is supposed to move automatically as that index moves.

QuickBooks has no mechanism to hold that table or recompute against it. It posts the surcharge line as billed. If a carrier's system does not step the surcharge down when the referenced index falls, or continues applying a surcharge band the contract retired, nothing in QuickBooks would catch it, because nothing in QuickBooks knows the band exists.

Fuel-linked input costs have moved sharply enough recently that a stale surcharge table is not a rounding error. The Producer Price Index for gasoline, tracked by the US Bureau of Labor Statistics (WPU0571, read 2026-09-06), showed a July 2026 index value of 302.759, up 37.1% year over year. A surcharge formula pegged to a moving index that large needs checking against the actual formula, not against whatever total the carrier prints.

## 3. Can QuickBooks Enterprise flag a duplicate freight bill from two different carrier references?

**QuickBooks Enterprise checks for duplicate bill numbers within a single vendor record, which stops the same invoice number from posting twice under one carrier. It does not cross-reference bills across vendors or across a carrier's own multiple billing systems, so a shipment billed once under a parcel account number and again under a freight audit or accessorial account can post as two unrelated, fully paid bills.**

The built-in duplicate check works on exact or near-exact matches: same vendor, same reference number, same amount. That is a narrow net. A shipment can generate more than one bill under legitimately different reference numbers when a 3PL splits billing across a base freight system and a separate accessorial or claims system, or when a shipment moves under a broker and the underlying carrier both invoice.

QuickBooks treats each of those as an unrelated vendor bill because the reference numbers differ and, often, the vendor record itself differs. There is no shipment-level identifier, such as a bill of lading or PRO number, that the system checks across vendors to see the two bills describe the same physical move.

That gap sits alongside a separate consolidation problem, where a single company works with multiple carriers and 3PLs whose invoices never get compared against each other for the same load. See the guide on duplicate freight billing and the multi-carrier consolidation problem for how that pattern shows up specifically.

## 4. Does QuickBooks enforce a minimum charge or accessorial schedule?

**No. QuickBooks Enterprise has no field type for a minimum charge threshold, a detention rate, a liftgate fee, or any other accessorial defined in a carrier agreement. Every accessorial line on a freight bill posts as whatever the carrier billed, coded to whatever GL account the AP clerk selects, with nothing in the software comparing the charged amount to the rate the contract specifies for that accessorial.**

A freight or 3PL contract typically lists a schedule of accessorial charges separately from the base rate: detention, liftgate, residential delivery, redelivery, inside delivery, storage. Each has its own rate or formula, and many contracts also set a minimum charge per shipment regardless of weight or distance.

QuickBooks has no structured place to hold that schedule. An AP clerk entering a bill sees a total and a set of line items as the carrier presented them, and the software's only involvement is which GL account each line hits for reporting. It does not ask whether the detention fee matches the contract's detention rate or whether a shipment under the minimum still got billed at the minimum.

This is the same class of problem covered in the [accessorial charge audit](/guides/accessorial-charge-audit-the-surcharges-nobody-validates) guide, which walks through why these lines go unvalidated even when the base freight rate is checked carefully. The mechanism is identical here: the accessorial schedule is a document, not a QuickBooks record, and a document cannot be matched against a bill by software that never read it.

## 5. What would it take to check freight bills against the actual rate card?

**Checking a freight bill against its rate card means comparing each invoice line to the lane, weight break, and surcharge formula the contract specifies, which requires the rate card as structured data and a process that runs on every bill, not a sample. QuickBooks Enterprise does not hold that structure natively, so the comparison has to happen in a layer built for it, whether that is a maintained spreadsheet, a freight audit service, or software built for contract-to-invoice matching.**

None of these four pieces require replacing QuickBooks. They require a control that sits alongside it, reading the same bills QuickBooks already posts and comparing them to contract terms QuickBooks was never built to store. Some companies build this in a spreadsheet maintained by AP; it works until the rate card changes or a new lane is added and the spreadsheet lags behind.

The alternative is a dedicated audit pass, either periodic or continuous, that treats the rate card and surcharge table as the source of truth and checks every bill against it. The choice between building that check yourself and buying it is covered in build vs. buy: can you do contract-to-invoice matching in Excel?, which walks through where a manual spreadsheet holds up and where it breaks.

- **Rate card as data:** The lane rates, weight breaks, and minimum charges need to exist somewhere as structured, current values, not as a PDF filed after signature.

- **Fuel surcharge formula:** The index the contract references and the band-to-percentage mapping need to be tracked and updated as the index moves, not read off the carrier's stated total.

- **Accessorial schedule:** Each accessorial type needs its contracted rate on file so a detention or liftgate charge can be checked, not just totaled.

- **A comparison step on every bill:** The check has to run against each invoice line before payment, not as a periodic sample, because a rate error repeats on every shipment it touches until it is caught.

## 6. How much does freight rate drift actually cost, and how do you find out?

**There is no industry figure for how much freight rate drift costs a given company; it depends entirely on shipment volume, contract complexity, and how long a rate or surcharge error has been running unchecked. The reliable way to find out is to audit actual invoice lines against the actual rate card and surcharge formula for a defined period, and treat whatever that period turns up as the basis for the annual figure, not an estimate applied backward.**

Freight and trucking costs move independently of any single company's contract terms, which is exactly why a surcharge formula needs periodic checking rather than a one-time setup. 9% year over year. 1% year over year. Those are input cost movements, not a leakage rate, and they should not be read as one.

What they do explain is why a surcharge table set once and left alone drifts further from the underlying cost basis the longer it goes unchecked. A margin drift diagnostic across a full portfolio typically finds leakage in the range of 1% to 3% of service vendor spend, across ValueXPA diagnostics.

The reader's own freight and 3PL spend, run against the actual contracted rates for a fixed period, is the only number that answers the question for a given company. See margin drift vs. legitimate price increases: how to tell them apart for how to separate a rate that moved for a real reason from one that simply drifted.

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](/guides/diagnostic-or-software-what-to-buy-first) and [build vs. buy: can you do contract-to-invoice matching in excel?](/guides/build-vs-buy-can-you-do-contract-to-invoice-matching-in).

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

### Does QuickBooks Enterprise catch a carrier charging the wrong lane rate?

No. QuickBooks compares the billed amount to the purchase order and receipt, not to a lane rate table. If the PO itself was cut at the wrong rate, or the freight bill posted without a PO, the wrong rate passes through unflagged.

### Can QuickBooks Enterprise track a fuel surcharge index?

QuickBooks has no field or formula for a fuel index or a surcharge band. It records whatever surcharge amount the carrier's bill states. Comparing that amount to the contract's surcharge formula has to happen outside the software.

### Will three-way matching in QuickBooks stop duplicate freight payments?

It stops an exact duplicate bill number posted twice under the same vendor. It does not catch the same shipment billed under two different reference numbers or two different vendor accounts, which is common when a 3PL splits base and accessorial billing.

### Does QuickBooks Enterprise have a field for accessorial charges like detention or liftgate?

No. Accessorial lines post as whatever the carrier billed, coded to a GL account. There is no contracted-rate field to compare a detention or liftgate charge against, so an inflated accessorial passes the same way a correct one does.

### Is freight billed without a purchase order checked at all in QuickBooks?

Not by the three-way match, which requires a linked PO and receipt to run. Parcel and LTL freight commonly posts as a direct vendor bill, approved on GL coding alone, with no document comparison behind it.

### What's the difference between a legitimate freight rate increase and margin drift?

A legitimate increase traces to a contract amendment, a published index the contract references, or a renegotiated rate card. Margin drift is a charge that diverges from what the current, signed contract terms actually specify, whether or not the total looks reasonable on its face.

### Should a manufacturer replace QuickBooks Enterprise to get freight rate controls?

Not necessarily. The gap is in the rate card and surcharge schedule sitting outside any ERP as unstructured contract terms, not in QuickBooks itself. A comparison layer that checks bills against those terms can run alongside QuickBooks without replacing it.

### How often does a fuel surcharge table need to be checked against the index?

As often as the underlying index the contract references moves, since a surcharge percentage tied to a band that has since shifted continues billing at the old rate until someone checks it against the current index value.

### Where should a manufacturer start if it suspects freight rate drift?

Pull actual invoice lines for a defined period and compare them directly to the signed rate card, surcharge formula, and accessorial schedule for that period. That comparison, not an estimate, is what establishes whether drift exists and how large it is.

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

QuickBooks Enterprise enforces three-way matching: a bill can be tied to a purchase order and to a receipt, and the system will flag a quantity or a total that does not reconcile against those two documents. That control catches a carrier billing for freight that was never ordered or never received. It does not catch a carrier billing the ordered, received freight at the wrong rate. Freight and 3PL invoices carry a second layer of terms that live entirely outside the ERP: a rate card by lane, a fuel surcharge table keyed to a published index, an accessorial schedule, and often a minimum charge per shipment. None of that is structured data QuickBooks can check a bill against, because none of it was ever entered as a QuickBooks record. The bill can match its purchase order exactly and still be wrong against the contract. What changes this is not a QuickBooks setting. It is treating the rate card and surcharge schedule as a control surface in their own right, checked against every invoice line, separately from the three-way match QuickBooks already runs.

## 1. What does QuickBooks Enterprise actually check on a freight bill?

QuickBooks Enterprise runs three-way matching when a bill is entered against a purchase order: it compares the billed quantity and amount to the PO and to the linked receipt, and it can hold or flag a bill where those numbers diverge beyond a set tolerance. For freight this confirms the shipment was ordered and received. It does not evaluate the rate charged per mile, per hundredweight, or per lane, because that rate never enters QuickBooks as a field the match. The three-way match is a quantity and total-dollar comparison. It reads the PO line, the item receipt, and the bill, and it looks for agreement across those three documents within whatever tolerance the company file allows. For a freight bill tied to a PO for inbound materials, that means QuickBooks confirms the freight line exists against an authorized order and against a received shipment. What the match does not do is decode the invoice itself. A freight bill from a carrier or 3PL is really two numbers stacked together: a base rate and a set of accessorials and surcharges layered on top. QuickBooks records the total the bill states. It has no concept of a lane rate table, a weight break, or a surcharge index, so it cannot tell you whether the total on the bill is the total the contract actually calls for. Many freight bills, particularly parcel and LTL, arrive without a PO at all and post directly as a vendor bill. In that path even the three-way match does not run. The bill is approved on the strength of a coded GL account and an approver's signature, with no document comparison behind it at all.

## 2. Where does the fuel surcharge sit, and does QuickBooks validate it?

QuickBooks Enterprise stores a fuel surcharge as whatever line amount the carrier's bill states. It has no built-in reference to a diesel or fuel price index and no formula field that recalculates the surcharge from that index, so the software cannot confirm the percentage charged this month is the percentage the contract's surcharge table calls for at the current fuel price. The check has to happen outside the ERP, against the index the contract actually references. A typical freight contract sets the fuel surcharge as a sliding scale: a published fuel price falls in a band, and that band maps to a surcharge percentage applied to the base rate. The US Energy Information Administration publishes the diesel price most carrier contracts reference, and the surcharge is supposed to move automatically as that index moves. QuickBooks has no mechanism to hold that table or recompute against it. It posts the surcharge line as billed. If a carrier's system does not step the surcharge down when the referenced index falls, or continues applying a surcharge band the contract retired, nothing in QuickBooks would catch it, because nothing in QuickBooks knows the band exists. Fuel-linked input costs have moved sharply enough recently that a stale surcharge table is not a rounding error. The Producer Price Index for gasoline, tracked by the US Bureau of Labor Statistics (WPU0571, read 2026-09-06), showed a July 2026 index value of 302.759, up 37.1% year over year. A surcharge formula pegged to a moving index that large needs checking against the actual formula, not against whatever total the carrier prints.

## 3. Can QuickBooks Enterprise flag a duplicate freight bill from two different carrier references?

QuickBooks Enterprise checks for duplicate bill numbers within a single vendor record, which stops the same invoice number from posting twice under one carrier. It does not cross-reference bills across vendors or across a carrier's own multiple billing systems, so a shipment billed once under a parcel account number and again under a freight audit or accessorial account can post as two unrelated, fully paid bills. The built-in duplicate check works on exact or near-exact matches: same vendor, same reference number, same amount. That is a narrow net. A shipment can generate more than one bill under legitimately different reference numbers when a 3PL splits billing across a base freight system and a separate accessorial or claims system, or when a shipment moves under a broker and the underlying carrier both invoice. QuickBooks treats each of those as an unrelated vendor bill because the reference numbers differ and, often, the vendor record itself differs. There is no shipment-level identifier, such as a bill of lading or PRO number, that the system checks across vendors to see the two bills describe the same physical move. That gap sits alongside a separate consolidation problem, where a single company works with multiple carriers and 3PLs whose invoices never get compared against each other for the same load. See the guide on duplicate freight billing and the multi-carrier consolidation problem for how that pattern shows up specifically.

## 4. Does QuickBooks enforce a minimum charge or accessorial schedule?

No. QuickBooks Enterprise has no field type for a minimum charge threshold, a detention rate, a liftgate fee, or any other accessorial defined in a carrier agreement. Every accessorial line on a freight bill posts as whatever the carrier billed, coded to whatever GL account the AP clerk selects, with nothing in the software comparing the charged amount to the rate the contract specifies for that accessorial. A freight or 3PL contract typically lists a schedule of accessorial charges separately from the base rate: detention, liftgate, residential delivery, redelivery, inside delivery, storage. Each has its own rate or formula, and many contracts also set a minimum charge per shipment regardless of weight or distance. QuickBooks has no structured place to hold that schedule. An AP clerk entering a bill sees a total and a set of line items as the carrier presented them, and the software's only involvement is which GL account each line hits for reporting. It does not ask whether the detention fee matches the contract's detention rate or whether a shipment under the minimum still got billed at the minimum. This is the same class of problem covered in the [accessorial charge audit](/guides/accessorial-charge-audit-the-surcharges-nobody-validates) guide, which walks through why these lines go unvalidated even when the base freight rate is checked carefully. The mechanism is identical here: the accessorial schedule is a document, not a QuickBooks record, and a document cannot be matched against a bill by software that never read it.

## 5. What would it take to check freight bills against the actual rate card?

Checking a freight bill against its rate card means comparing each invoice line to the lane, weight break, and surcharge formula the contract specifies, which requires the rate card as structured data and a process that runs on every bill, not a sample. QuickBooks Enterprise does not hold that structure natively, so the comparison has to happen in a layer built for it, whether that is a maintained spreadsheet, a freight audit service, or software built for contract-to-invoice matching. None of these four pieces require replacing QuickBooks. They require a control that sits alongside it, reading the same bills QuickBooks already posts and comparing them to contract terms QuickBooks was never built to store. Some companies build this in a spreadsheet maintained by AP; it works until the rate card changes or a new lane is added and the spreadsheet lags behind. The alternative is a dedicated audit pass, either periodic or continuous, that treats the rate card and surcharge table as the source of truth and checks every bill against it. The choice between building that check yourself and buying it is covered in build vs. buy: can you do contract-to-invoice matching in Excel?, which walks through where a manual spreadsheet holds up and where it breaks. - Rate card as data: The lane rates, weight breaks, and minimum charges need to exist somewhere as structured, current values, not as a PDF filed after signature. - Fuel surcharge formula: The index the contract references and the band-to-percentage mapping need to be tracked and updated as the index moves, not read off the carrier's stated total. - Accessorial schedule: Each accessorial type needs its contracted rate on file so a detention or liftgate charge can be checked, not just totaled. - A comparison step on every bill: The check has to run against each invoice line before payment, not as a periodic sample, because a rate error repeats on every shipment it touches until it is caught.

## 6. How much does freight rate drift actually cost, and how do you find out?

There is no industry figure for how much freight rate drift costs a given company; it depends entirely on shipment volume, contract complexity, and how long a rate or surcharge error has been running unchecked. The reliable way to find out is to audit actual invoice lines against the actual rate card and surcharge formula for a defined period, and treat whatever that period turns up as the basis for the annual figure, not an estimate applied backward. Freight and trucking costs move independently of any single company's contract terms, which is exactly why a surcharge formula needs periodic checking rather than a one-time setup. 9% year over year. 1% year over year. Those are input cost movements, not a leakage rate, and they should not be read as one. What they do explain is why a surcharge table set once and left alone drifts further from the underlying cost basis the longer it goes unchecked. A margin drift diagnostic across a full portfolio typically finds leakage in the range of 1% to 3% of service vendor spend, across ValueXPA diagnostics. The reader's own freight and 3PL spend, run against the actual contracted rates for a fixed period, is the only number that answers the question for a given company. See margin drift vs. legitimate price increases: how to tell them apart for how to separate a rate that moved for a real reason from one that simply drifted. 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](/guides/diagnostic-or-software-what-to-buy-first) and [build vs. buy: can you do contract-to-invoice matching in excel?](/guides/build-vs-buy-can-you-do-contract-to-invoice-matching-in).

## Common questions

### Does QuickBooks Enterprise catch a carrier charging the wrong lane rate?

No. QuickBooks compares the billed amount to the purchase order and receipt, not to a lane rate table. If the PO itself was cut at the wrong rate, or the freight bill posted without a PO, the wrong rate passes through unflagged.

### Can QuickBooks Enterprise track a fuel surcharge index?

QuickBooks has no field or formula for a fuel index or a surcharge band. It records whatever surcharge amount the carrier's bill states. Comparing that amount to the contract's surcharge formula has to happen outside the software.

### Will three-way matching in QuickBooks stop duplicate freight payments?

It stops an exact duplicate bill number posted twice under the same vendor. It does not catch the same shipment billed under two different reference numbers or two different vendor accounts, which is common when a 3PL splits base and accessorial billing.

### Does QuickBooks Enterprise have a field for accessorial charges like detention or liftgate?

No. Accessorial lines post as whatever the carrier billed, coded to a GL account. There is no contracted-rate field to compare a detention or liftgate charge against, so an inflated accessorial passes the same way a correct one does.

### Is freight billed without a purchase order checked at all in QuickBooks?

Not by the three-way match, which requires a linked PO and receipt to run. Parcel and LTL freight commonly posts as a direct vendor bill, approved on GL coding alone, with no document comparison behind it.

---

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
