Leak 08 · Freight & Cost-to-Serve - Freight recovery leakage
You pay the carrier $100 and bill the customer $60, or nothing. Across every shipment in a year, the gap is often a six-figure line that never appears on any report.
What is it?
Every shipment has two freight numbers: what the carrier charged you, and what you charged the customer. They are recorded in different places, by different people, at different times. The carrier invoice arrives weeks after the order was invoiced. Nobody compares the two.
The gap comes from many small decisions. A CSR waives freight to close an order. A customer’s “free freight over $500” term is applied to a $300 order. The ERP freight table has not been updated since the last carrier rate increase. A rush shipment goes out at next-day rates and is billed at ground. Residential, liftgate, and fuel surcharges are paid but never passed through.
None of these look like a leak on the day. Together they mean the distributor is quietly paying to deliver its own products.
Where does it occur?
At order entry, where the freight charge is set or waived; in shipping, where the actual service level is chosen; and in accounts payable, where the carrier invoice is approved without being matched to the order it belongs to.
- Family
- Freight & Cost-to-Serve
- Primary owner
- Operations Manager / CFO
- Secondary owners
- Customer Service Manager, Sales Managers, Shipping
- Primary impact
- Gross margin
- Typical data source
- Carrier invoices, ERP order freight charges, customer terms
- Detection difficulty
- 30-day measurability
Ask yourself
What percentage of the outbound freight you pay carriers do you bill back to customers?
Yes, partially, no, or don’t know. “Don’t know” is the most useful answer, because it points at the test below.
What does it look like?
Warning signs. None of these proves the leak exists. They tell you where to look.
- Freight expense growing faster than shipments or revenue.
- Freight revenue on the P&L well below freight expense, with no policy that explains the gap.
- Freight charged as a flat estimate that has not been reviewed in years.
- CSRs able to zero the freight field without approval.
- Carrier surcharges (fuel, residential, liftgate, address correction) approved in AP but absent from customer invoices.
- Free-freight thresholds applied inconsistently or to customers who never agreed to them.
What data do I need?
The minimum viable set. Most of it is already in your ERP.
| Field | Example |
|---|---|
| Order or invoice number | SO-44120 |
| Customer | Acme Manufacturing |
| Ship date | 5/2/2026 |
| Freight charged to customer | $18.00 |
| Freight terms on the order | Prepaid & add / Free over $500 / Collect |
| Carrier and service level | UPS Ground |
| Carrier invoice amount, including surcharges | $31.40 |
| Tracking or PRO number, to match the two | 1Z… |
| Order value | $412.00 |
The initial check
Start with a small sample. Gathering the exports, agreements, or observations is separate from running the check; agree that work with the person who owns the records.
- 1Pull last month’s total outbound carrier spend from AP, and last month’s total freight billed to customers from the sales ledger.
- 2Divide the second by the first. That is your freight recovery rate.
- 3Now take one week of shipments and match each carrier charge to the order it shipped. Sort by the difference between what you paid and what you billed.
- 4Look at the top twenty gaps. Note the freight term on the order and who set the charge.
Freight recovery rate = freight billed to customers ÷ freight paid to carriers
Then ask one question: Of the twenty largest gaps, how many were a deliberate commercial decision, and how many were nobody’s decision?
The 30-day test
Match a full month of carrier invoices to orders at the shipment level using tracking numbers. For each shipment, record what was paid, what was billed, the freight term, the service level, and any surcharges. Then classify each gap.
| Cause of gap | Shipments | Paid | Billed | Gap |
|---|---|---|---|---|
| Term honored correctly (free freight earned) | 640 | $9,800 | $0 | $9,800 |
| Free freight below the threshold | 210 | $3,900 | $0 | $3,900 |
| Flat charge below actual cost | 1,150 | $21,300 | $13,100 | $8,200 |
| Surcharges not passed through | 380 | $2,700 | $0 | $2,700 |
| Expedited service billed as ground | 55 | $2,900 | $600 | $2,300 |
| Waived by CSR, no reason recorded | 140 | $2,400 | $0 | $2,400 |
Hypothetical distributor, one month. Fictional numbers.
The first row is not a leak. It is a commercial term you chose, and it belongs in the price. Every row below it is a candidate. In this example, about $19,500 a month is leaking for reasons that range from a stale rate table to nobody being asked.
Look separately at which customers and which CSRs account for the waived and below-threshold rows. The distribution is rarely even.
How much could it be costing us?
A conservative range, not a headline. The goal is a number management can trust enough to investigate.
Annual carrier spend × (target recovery rate − current recovery rate) × realistic recovery rate
Worked example
- • $520,000 annual outbound carrier spend
- • Current recovery rate of 48%
- • A realistic target of 70%, after honoring genuine free-freight terms
- • Assume 60% of the gap can be closed without losing orders
$520,000 × (70% − 48%) × 60% ≈ $68,600 per year
The target rate depends on your market. Some distributors run at 90% recovery, some at 40% by design. The leak is the difference between what you decided and what is happening.
Common root causes
Fixes fall into three layers. Not every problem needs software, and almost none needs AI first.
- Process
- No freight policy, or one that is not written down, so every order is a judgment call. Nobody reconciles carrier invoices to orders.
- Data
- Freight paid and freight billed live in different systems with no shared key. The ERP freight table reflects rates from two carrier increases ago.
- Technology
- Order entry cannot calculate the actual freight cost at the moment the charge is set, and nothing flags a waived charge for review.
What should we do?
Start with the simplest intervention that could solve it. Move down the list only if the one above is not enough.
Level 1
Visibility
A monthly freight recovery rate, and a report of waived and below-cost freight by customer and CSR.
Level 2
Policy and guardrails
A written freight policy: who gets free freight, at what threshold, and who can waive it. Waivers require a reason code.
Level 3
Rate table maintenance
Update the ERP freight estimate each time a carrier rate changes, and add surcharge pass-through rules.
Level 4
Workflow intervention
Show the estimated actual freight cost in the order-entry screen and warn when the charge is below it.
Level 5
Automated reconciliation
Match every carrier invoice line to its shipment automatically, flag gaps by cause, and queue disputes and rebills for review.
Where AI helps
- Reading carrier invoices and surcharge detail in whatever format they arrive.
- Matching shipments to orders when tracking numbers are missing or mistyped.
- Classifying the cause of each gap for the review queue.
Where AI probably doesn’t
If your recovery rate is 45% because there is no freight policy, write the policy. The rate table and the reconciliation report will do more than any model.
Before you call it a leak
- Free freight that a customer earned under an agreed term is a cost of the price, not a leak. Separate it before measuring.
- Inbound freight, transfers, and drop-ship freight follow different rules. Keep the test to outbound customer shipments.
- Carrier invoices contain errors too. A gap may be a carrier overcharge worth disputing rather than a customer undercharge.
ERP note. Most ERPs store the freight charged on the order. The carrier’s actual charge usually lives only in AP or the carrier’s portal. The match key is the tracking number, which many ERPs store in a shipment record if the shipping system writes it back.
Think this might be happening in your business?
Turn the finding into a next step.
If the numbers say there is something there, send us what you found and we will help you decide whether it is worth a full investigation. No transaction files needed for that conversation.
Related leaks
- Leak 09 · FreightUnprofitable emergency deliveriesA driver spends two hours delivering a $90 part because the customer’s line is down. It was the right call once. It is now a habit nobody prices.
- Leak 11 · FreightExpediting costs not passed throughThe customer needs it Friday. Purchasing pays a supplier expedite fee and overnight freight. The sales order still shows the standard price and ground freight.
- Leak 06 · PricingSmall orders priced below their cost-to-serveA $40 order with $12 of gross profit costs $25 to pick, pack, invoice, and deliver. Multiply by thousands of orders a year.
- Leak 13 · FreightLow-value orders below economic minimumA minimum exists on paper. A third of orders are below it. Each one is handled, delivered, and invoiced at a loss.
Let’s start with one thing.
What would better performance look like?
Bring a result you want to improve, a symptom, or a workflow you already understand. You do not need to know the bottleneck yet. We’ll help choose what to investigate first.
No transaction files needed for the first conversation.