# How do you audit freight and 3PL spend in Sage Intacct?

> Sage Intacct posts freight and 3PL invoices to the GL; it does not test them against a rate card. Here is what an audit has to check separately.

Source: https://valuexpa.com/insights/how-do-you-audit-freight-and-3pl-spend-in-sage-intacct
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, it shows up as a fuel surcharge that never resets, an accessorial charge with no matching activity, or a rate applied off the wrong lane.

Sage Intacct records what a carrier billed. It does not know what the contract said the carrier was allowed to bill. Auditing freight and 3PL spend inside Sage Intacct means pulling the invoice history out of the GL and testing it against a document Sage Intacct never opens: the carrier rate agreement.

## Executive Summary

[Sage Intacct's dimensions and AP workflows](/insights/freight-and-3pl-controls-in-quickbooks-enterprise) will tell you which vendor, which GL account, and which approval path a freight invoice traveled. None of that tells you whether the rate on the invoice matches the rate the carrier agreed to, whether a fuel surcharge still tracks its index, or whether an accessorial charge corresponds to an actual detention, redelivery, or liftgate event. Those checks require the rate card, the surcharge schedule, and the accessorial tariff, none of which live in the ERP.

The mechanism behind freight drift is straightforward. A rate card is negotiated once. A carrier's own tariffs and fuel indices move continuously. 5% year over year, both read September 25, 2026. When the input costs behind a surcharge move that fast, a surcharge formula set up correctly a year ago can now be charging against a stale reference point, and nothing in Sage Intacct flags the mismatch.

What changes this is testing every freight line against its contract terms on a schedule, not relying on the ERP's approval workflow to catch a rate error it was never built to detect.

## 1. What does Sage Intacct actually check on a freight invoice?

**Sage Intacct checks that a freight invoice has a valid vendor record, routes to the correct GL account and dimension, and clears whatever approval workflow finance configured. It can enforce a purchase order match if one exists. It does not read a carrier rate agreement, a fuel surcharge index, or an accessorial tariff, because none of those documents live inside the ERP. The invoice can be fully approved and posted while still charging a rate the contract does not allow.**

Sage Intacct's dimension structure is genuinely useful for freight spend. You can tag invoices by carrier, lane, location, and department, and pull a clean report of total freight cost by any of those cuts. That reporting answers how much did we spend and where it went.

It does not answer whether the amount charged was correct. The approval workflow tests whether the right person signed off, not whether the number they signed off on matched the contract. A controller approving forty freight invoices a week is checking coding and total, not re-deriving each rate from the underlying agreement.

This is not a Sage Intacct shortcoming specifically. [Three-way matching in any ERP](/insights/for-infor-syteline) checks the invoice against a purchase order and a receipt. It does not test a fuel surcharge's expiration condition or a minimum charge floor, because those terms live in a contract PDF, not a PO line.

## 2. Where does freight and 3PL drift actually come from?

**Freight and 3PL drift accumulates at the points where a carrier's billing system and your contract diverge without anyone reconciling them: a fuel surcharge formula that stops updating, an accessorial charge billed without a matching event, a rate applied off the wrong lane or equipment type, and a volume tier or minimum commitment that never gets checked against actual shipment counts. Each is a distinct mechanism, not a single recurring error.**

These four mechanisms behave differently and need to be tested separately rather than lumped into one generic rate check. A stale surcharge formula and a misapplied lane rate leave different traces in the invoice detail.

### A. Fuel surcharge drift

A fuel surcharge is usually set as a formula tied to a published index, stepping up or down as diesel or gasoline prices move. The formula gets configured once, often at contract signing, and then left alone. If the index reference or the step table is not revisited, the surcharge can keep charging against an outdated baseline long after the underlying fuel cost has moved. Given how far fuel input costs have moved this year, per BLS PPI data cited above, a stale surcharge reference is a meaningful gap, not a rounding error.

### B. Accessorial and rate card drift

Accessorial charges, detention, liftgate, redelivery, residential delivery, are billed per event. Testing them means matching each charge to a corresponding activity record, which Sage Intacct does not store. Rate card drift happens when an invoice bills a lane or equipment rate that does not match the negotiated schedule, often because a carrier's billing system defaults to a published tariff rate when a negotiated rate is not properly loaded on their side.

## 3. How do you build a freight rate card test outside the ERP?

**Export freight invoice detail from Sage Intacct by vendor and GL account for the audit period, then build a reference table from the carrier rate agreements covering base rate by lane and equipment type, the fuel surcharge formula and its index source, and the accessorial tariff. Match each invoice line against that reference table, flag any line where the billed rate, surcharge, or accessorial charge does not reconcile, and route flagged lines to the carrier for credit.**

The export from Sage Intacct is the easy part. Pull invoice line detail, not just invoice totals, for every freight and 3PL vendor over the period you are testing, and keep the GL and dimension tags so you can trace a finding back to a location or department.

The harder part is building the reference table, because carrier rate agreements are contract PDFs with rate schedules, surcharge formulas, and accessorial tariffs stated in different formats from one carrier to the next. There is no shortcut for reading them and normalizing the terms into a structure you can match against line items.

Once the reference table exists, the matching logic itself is mechanical: base rate against lane and equipment, surcharge percentage against the current index value, accessorial charge against a logged event. A line that fails any of the three tests gets flagged for review before it goes to a carrier for credit.

## 4. What does a freight and 3PL finding actually recover?

**A confirmed freight finding recovers in two ways: a credit memo for the specific overcharge, applied retroactively for whatever look-back period the carrier agreement allows, and a corrected rate or surcharge formula going forward so the same error stops repeating on every future invoice. The forward correction is usually worth more over time than the retroactive credit, because it stops the drift from accumulating again next quarter.**

A single flagged invoice line is worth pursuing on its own, but the real value is in the pattern behind it. If one invoice billed a stale fuel surcharge formula, every invoice from that carrier since the formula went stale is carrying the same error, and the retroactive credit should cover the full look-back window the contract allows, not just the invoice that happened to get sampled.

The forward fix matters more. Getting the carrier to correct the surcharge formula, reload the correct rate card, or fix the accessorial billing code stops the leak going forward. Without that correction, the same audit finds the same error again next year, and the recovery becomes a recurring negotiation instead of a one-time correction.

## 5. Can you run this audit with Sage Intacct's own reporting tools?

**Sage Intacct's reporting tools can produce the invoice-side half of the audit: spend by carrier, by lane, by GL account, over any period. They cannot produce the contract-side half, because rate cards, surcharge formulas, and accessorial tariffs are not data Sage Intacct stores or was designed to hold. The matching between the two sides has to happen in a separate structure, whether that is a spreadsheet or a purpose-built tool.**

This is not a criticism of Sage Intacct as an accounting platform. It was built to record transactions accurately and report on them, and it does both well. Contract terms are a different kind of data, unstructured, vendor-specific, and stored as documents rather than fields, and no general ledger system is designed to ingest and test against that kind of source.

A spreadsheet can hold the reference table and do the matching for a defined audit period. It works, with enough discipline to keep the rate card data current as contracts renew. Where it breaks down is scale and repetition: a one-time reconciliation across a few carriers is very different from testing every freight invoice every month, indefinitely, as new lanes and carriers get added.

## 6. Should you audit freight before or after other spend categories?

**Freight is a reasonable category to test first when it is a large share of indirect spend and priced with variable components like fuel surcharges, because those are exactly the terms most prone to drift between renewal and today. That is a scoping decision based on the size and structure of your own freight spend, not a rule that freight always leaks more than contract labor, MRO, or IT services.**

There is no dataset here that ranks spend categories by how much they leak, and none should be implied. What can be said honestly is structural: freight contracts typically carry more variable pricing components, base rate, fuel surcharge, accessorial tariff, than a flat-rate maintenance contract, and more variable components means more places for a formula to go stale.

If freight is a small share of your indirect spend, starting elsewhere makes more sense regardless of that structural point. The right starting category is the one where your own spend concentration and contract complexity overlap, and that is a question about your data, not a general ranking across categories.

For the wider pattern this sits inside, start with the [margin drift](/insights/best-invoice-validation-software-smb) guide.

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

### Does Sage Intacct flag a fuel surcharge that is calculated wrong?

No. Sage Intacct records the surcharge amount on the invoice as billed. It has no field for the surcharge formula or the fuel index it should be tracking, so it cannot compare the billed amount against what the formula should currently produce. That comparison has to happen against the carrier agreement separately.

### Can Sage Intacct's purchase order matching catch a freight overcharge?

Only if a PO with the correct rate exists for that shipment, which is uncommon for freight. Most freight invoices are matched to a blanket vendor record rather than a shipment-specific PO, so the three-way match confirms the vendor and GL coding but not the rate.

### What documents do I need before I can test freight invoices against contract terms?

The carrier rate agreement with base rates by lane and equipment type, the fuel surcharge schedule and its index source, and any accessorial tariff sheet. Without all three, you can only test the base rate and will miss surcharge and accessorial drift entirely.

### How far back can I recover a freight overcharge?

The look-back period depends on the terms in the specific carrier agreement and applicable statute of limitations, not on Sage Intacct's data retention. This is general information, not legal advice; confirm the applicable window with counsel or the contract itself before filing a claim.

### Is a 3PL invoice audited differently from a direct carrier invoice?

The mechanism is similar, matching billed charges against contract terms, but a 3PL invoice often bundles multiple underlying carrier charges into one line, so the reference table needs the 3PL's own rate agreement plus visibility into what it is passing through from underlying carriers.

### Does a fuel surcharge formula ever need to be renegotiated, not just corrected?

Sometimes. If the index or step table specified in the contract itself is outdated, correcting the calculation to match the contract still leaves an outdated contract term in place. That is a renegotiation question for the next contract cycle, separate from the invoice-level correction.

### Can I build this audit in a spreadsheet instead of buying software?

Yes, for a defined period and a manageable number of carriers. The spreadsheet holds the reference table and does the line-by-line matching. It works with discipline to keep the rate card data current; it becomes harder to sustain as a continuous, monthly check across a growing carrier list.

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

A freight bill audit typically checks math and duplicate billing on individual invoices. A rate card audit goes further, testing whether the negotiated rate, surcharge formula, and accessorial terms in the contract are the ones actually being billed, which catches drift a bill audit alone would miss.

### Does Sage Intacct's dimension reporting help identify which carriers to audit first?

Yes. Dimension tags by carrier and location let you rank carriers by total spend, which is a reasonable way to prioritize which rate agreements to pull and test first, even though the dimension data itself cannot tell you which carrier is overcharging.

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

[Sage Intacct's dimensions and AP workflows](/insights/freight-and-3pl-controls-in-quickbooks-enterprise) will tell you which vendor, which GL account, and which approval path a freight invoice traveled. None of that tells you whether the rate on the invoice matches the rate the carrier agreed to, whether a fuel surcharge still tracks its index, or whether an accessorial charge corresponds to an actual detention, redelivery, or liftgate event. Those checks require the rate card, the surcharge schedule, and the accessorial tariff, none of which live in the ERP. The mechanism behind freight drift is straightforward. A rate card is negotiated once. A carrier's own tariffs and fuel indices move continuously. 5% year over year, both read September 25, 2026. When the input costs behind a surcharge move that fast, a surcharge formula set up correctly a year ago can now be charging against a stale reference point, and nothing in Sage Intacct flags the mismatch. What changes this is testing every freight line against its contract terms on a schedule, not relying on the ERP's approval workflow to catch a rate error it was never built to detect.

## 1. What does Sage Intacct actually check on a freight invoice?

Sage Intacct checks that a freight invoice has a valid vendor record, routes to the correct GL account and dimension, and clears whatever approval workflow finance configured. It can enforce a purchase order match if one exists. It does not read a carrier rate agreement, a fuel surcharge index, or an accessorial tariff, because none of those documents live inside the ERP. The invoice can be fully approved and posted while still charging a rate the contract does not allow. Sage Intacct's dimension structure is genuinely useful for freight spend. You can tag invoices by carrier, lane, location, and department, and pull a clean report of total freight cost by any of those cuts. That reporting answers how much did we spend and where it went. It does not answer whether the amount charged was correct. The approval workflow tests whether the right person signed off, not whether the number they signed off on matched the contract. A controller approving forty freight invoices a week is checking coding and total, not re-deriving each rate from the underlying agreement. This is not a Sage Intacct shortcoming specifically. [Three-way matching in any ERP](/insights/for-infor-syteline) checks the invoice against a purchase order and a receipt. It does not test a fuel surcharge's expiration condition or a minimum charge floor, because those terms live in a contract PDF, not a PO line.

## 2. Where does freight and 3PL drift actually come from?

Freight and 3PL drift accumulates at the points where a carrier's billing system and your contract diverge without anyone reconciling them: a fuel surcharge formula that stops updating, an accessorial charge billed without a matching event, a rate applied off the wrong lane or equipment type, and a volume tier or minimum commitment that never gets checked against actual shipment counts. Each is a distinct mechanism, not a single recurring error. These four mechanisms behave differently and need to be tested separately rather than lumped into one generic rate check. A stale surcharge formula and a misapplied lane rate leave different traces in the invoice detail. ### A. Fuel surcharge drift A fuel surcharge is usually set as a formula tied to a published index, stepping up or down as diesel or gasoline prices move. The formula gets configured once, often at contract signing, and then left alone. If the index reference or the step table is not revisited, the surcharge can keep charging against an outdated baseline long after the underlying fuel cost has moved. Given how far fuel input costs have moved this year, per BLS PPI data cited above, a stale surcharge reference is a meaningful gap, not a rounding error. ### B. Accessorial and rate card drift Accessorial charges, detention, liftgate, redelivery, residential delivery, are billed per event. Testing them means matching each charge to a corresponding activity record, which Sage Intacct does not store. Rate card drift happens when an invoice bills a lane or equipment rate that does not match the negotiated schedule, often because a carrier's billing system defaults to a published tariff rate when a negotiated rate is not properly loaded on their side.

## 3. How do you build a freight rate card test outside the ERP?

Export freight invoice detail from Sage Intacct by vendor and GL account for the audit period, then build a reference table from the carrier rate agreements covering base rate by lane and equipment type, the fuel surcharge formula and its index source, and the accessorial tariff. Match each invoice line against that reference table, flag any line where the billed rate, surcharge, or accessorial charge does not reconcile, and route flagged lines to the carrier for credit. The export from Sage Intacct is the easy part. Pull invoice line detail, not just invoice totals, for every freight and 3PL vendor over the period you are testing, and keep the GL and dimension tags so you can trace a finding back to a location or department. The harder part is building the reference table, because carrier rate agreements are contract PDFs with rate schedules, surcharge formulas, and accessorial tariffs stated in different formats from one carrier to the next. There is no shortcut for reading them and normalizing the terms into a structure you can match against line items. Once the reference table exists, the matching logic itself is mechanical: base rate against lane and equipment, surcharge percentage against the current index value, accessorial charge against a logged event. A line that fails any of the three tests gets flagged for review before it goes to a carrier for credit.

## 4. What does a freight and 3PL finding actually recover?

A confirmed freight finding recovers in two ways: a credit memo for the specific overcharge, applied retroactively for whatever look-back period the carrier agreement allows, and a corrected rate or surcharge formula going forward so the same error stops repeating on every future invoice. The forward correction is usually worth more over time than the retroactive credit, because it stops the drift from accumulating again next quarter. A single flagged invoice line is worth pursuing on its own, but the real value is in the pattern behind it. If one invoice billed a stale fuel surcharge formula, every invoice from that carrier since the formula went stale is carrying the same error, and the retroactive credit should cover the full look-back window the contract allows, not just the invoice that happened to get sampled. The forward fix matters more. Getting the carrier to correct the surcharge formula, reload the correct rate card, or fix the accessorial billing code stops the leak going forward. Without that correction, the same audit finds the same error again next year, and the recovery becomes a recurring negotiation instead of a one-time correction.

## 5. Can you run this audit with Sage Intacct's own reporting tools?

Sage Intacct's reporting tools can produce the invoice-side half of the audit: spend by carrier, by lane, by GL account, over any period. They cannot produce the contract-side half, because rate cards, surcharge formulas, and accessorial tariffs are not data Sage Intacct stores or was designed to hold. The matching between the two sides has to happen in a separate structure, whether that is a spreadsheet or a purpose-built tool. This is not a criticism of Sage Intacct as an accounting platform. It was built to record transactions accurately and report on them, and it does both well. Contract terms are a different kind of data, unstructured, vendor-specific, and stored as documents rather than fields, and no general ledger system is designed to ingest and test against that kind of source. A spreadsheet can hold the reference table and do the matching for a defined audit period. It works, with enough discipline to keep the rate card data current as contracts renew. Where it breaks down is scale and repetition: a one-time reconciliation across a few carriers is very different from testing every freight invoice every month, indefinitely, as new lanes and carriers get added.

## 6. Should you audit freight before or after other spend categories?

Freight is a reasonable category to test first when it is a large share of indirect spend and priced with variable components like fuel surcharges, because those are exactly the terms most prone to drift between renewal and today. That is a scoping decision based on the size and structure of your own freight spend, not a rule that freight always leaks more than contract labor, MRO, or IT services. There is no dataset here that ranks spend categories by how much they leak, and none should be implied. What can be said honestly is structural: freight contracts typically carry more variable pricing components, base rate, fuel surcharge, accessorial tariff, than a flat-rate maintenance contract, and more variable components means more places for a formula to go stale. If freight is a small share of your indirect spend, starting elsewhere makes more sense regardless of that structural point. The right starting category is the one where your own spend concentration and contract complexity overlap, and that is a question about your data, not a general ranking across categories. For the wider pattern this sits inside, start with the [margin drift](/insights/best-invoice-validation-software-smb) guide.

## Common questions

### Does Sage Intacct flag a fuel surcharge that is calculated wrong?

No. Sage Intacct records the surcharge amount on the invoice as billed. It has no field for the surcharge formula or the fuel index it should be tracking, so it cannot compare the billed amount against what the formula should currently produce. That comparison has to happen against the carrier agreement separately.

### Can Sage Intacct's purchase order matching catch a freight overcharge?

Only if a PO with the correct rate exists for that shipment, which is uncommon for freight. Most freight invoices are matched to a blanket vendor record rather than a shipment-specific PO, so the three-way match confirms the vendor and GL coding but not the rate.

### What documents do I need before I can test freight invoices against contract terms?

The carrier rate agreement with base rates by lane and equipment type, the fuel surcharge schedule and its index source, and any accessorial tariff sheet. Without all three, you can only test the base rate and will miss surcharge and accessorial drift entirely.

### How far back can I recover a freight overcharge?

The look-back period depends on the terms in the specific carrier agreement and applicable statute of limitations, not on Sage Intacct's data retention. This is general information, not legal advice; confirm the applicable window with counsel or the contract itself before filing a claim.

### Is a 3PL invoice audited differently from a direct carrier invoice?

The mechanism is similar, matching billed charges against contract terms, but a 3PL invoice often bundles multiple underlying carrier charges into one line, so the reference table needs the 3PL's own rate agreement plus visibility into what it is passing through from underlying carriers.

---

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
