Why Your Quote Doesn't Match the Invoice

Why Your Quote Doesn't Match the Invoice

By Dan LepperNovember 2025

A quote and an invoice disagree for a short list of repeatable reasons. Most of them are decided before the freight moves.

The gap between what you quoted and what got billed is not random. It comes from a short list of causes, and they repeat.

Once you can name them, most stop happening. That’s the useful part — this isn’t a tolerance you accept, it’s a set of specific failures with specific fixes.

1. The freight wasn’t what the quote said it was

The biggest single cause, and it isn’t really a rating problem.

Weight estimated rather than measured. Dimensions that excluded the pallet, or the overhang. A class inherited from a shipper who set it years ago. Any of those and the carrier’s terminal will correct it, and the correction is the difference.

Nothing in a rating engine fixes this, because the engine faithfully priced what it was told. The fix is capturing real dimensions and calculating class from density rather than accepting whatever was on the last BOL.

2. The rate came from one source and that source was incomplete

This one is invisible, which is why it persists.

Most quoting runs off a single feed — a carrier API, a consolidator, or a rate table loaded once and never revisited. Single-source rating has a specific failure mode: when the feed doesn’t know about something, you don’t get an error. You get a number that looks authoritative.

We onboarded a Canadian LTL carrier’s rating API not long ago. Their published accessorial list didn’t match what actually prices — the real codes lived in a vocabulary nobody documents. We only found it because every code gets tested against live quotes rather than trusted from documentation.

If you rate the same shipment more than one way — a direct carrier API, your own loaded contract, and internal logic on top of a base tariff — disagreement between them is a signal. With one source there’s nothing to disagree with.

3. Accessorials that were never in the quote

Liftgate, residential, limited access, appointment, redelivery. Each is a real service, each is billable, and none of them were mentioned by the person who tendered the load, because they don’t think of an address as a set of service requirements.

The address usually predicts them. Validating the destination and looking up what kind of facility it is catches most of this before the number leaves.

4. The shipment crossed a threshold nobody checked

LTL tariffs have cliffs. Cross one and the pricing model changes rather than scaling.

The linear foot rule is the common one — occupy more than a set number of feet of trailer and most carriers stop rating it as LTL and reprice it as a volume or partial move. Cubic capacity rules do something similar. Weight breaks work the other way, where adding weight can lower the rate because you move into a better band.

These aren’t edge cases and they aren’t in a rate you got by entering weight and a zip code.

5. Fuel moved, or was calculated off a different base

Fuel is a percentage, indexed weekly, and applied to the linehaul and often to some accessorials. A quote given Thursday and a shipment tendered the following Wednesday can price differently for no other reason.

Worse, fuel can be calculated off the gross rate or the net rate depending on the carrier and the agreement. Same percentage, materially different dollars. If you’ve never confirmed which base each of your carriers uses, that’s worth an afternoon.

6. The discount tier moved under you

Discounts are tiered by weight band, by service, sometimes by lane. Your freight profile drifts, and the effective discount you’re actually realising separates from the headline number in your agreement.

Nothing announces this. It shows up as a slow widening of the gap between quoted and billed across many shipments rather than one dramatic miss, which is precisely why it survives so long.

The pattern

Look at that list and something stands out: five of the six are decided before the freight moves. Only fuel timing is genuinely outside your control.

Which means the gap between quote and invoice is mostly a quoting problem wearing a billing problem’s clothes. The invoice is where you notice it. It isn’t where it happened.

What closing the gap actually requires

Rate the same shipment more than one way. Direct carrier APIs, your own contracts and blankets, and internal rating logic on a base tariff — reconciled into one quote, with disagreement treated as a signal rather than noise.

Price the last twenty percent, not just the linehaul. Accessorial triggers, volume and linear-foot rules, and carrier-specific quirks are where a quote and an invoice separate. A rate that ignores them is a rate for a simpler shipment than the one you have.

Use the same engine for rating and for checking. If the thing that quoted the load is also the thing that checks the carrier’s numbers against it, a deviation is detectable automatically. If quoting and auditing run on different logic, every comparison is manual and most never happen.

Check while the freight still exists. A discrepancy caught in transit can be verified on a dock. The same one caught at settlement is an argument about a document.


The short version: your quote and your invoice disagree for about six reasons, five of which are settled before pickup. Fix those and the sixth is a rounding error.

That’s what the hybrid rating engine is built to do — rate from multiple sources and reconcile them — and why the same engine audits the load in transit.

So here’s the question worth sitting with: on your last mismatch, do you know which of the six it was?


Seeing this on your own freight?

Send us the load that went wrong. We will walk you through where the number moved and when the system would have caught it.

Book a walkthrough