Aug 19, 2026

Why your TMS profitability report can't find billing leaks

The per-load profitability report is your TMS's own answer to its own math: carrier cost on one side, customer revenue on the other, margin in the middle. It is the right report for asking how a lane performed — and the wrong one for asking whether every charge you paid was billed on.

What the margin report actually is

Every mainstream TMS ships some version of it: one row per load, total carrier cost, total customer revenue, margin in dollars or percent. Both numbers are totals — the join between the payable side and the receivable side has already been done, and the charge lines that produced each total are collapsed away.

That compression is the point. The report exists to rank lanes, customers, and reps by contribution — not to test whether the two sides agree line by line.

A missed billback doesn't look like anything

Two common shapes. A driver sits at a receiver and the carrier bills $320 of detention, which your team approves and pays — but the customer is invoiced $195 of it, because the accessorial was keyed from memory instead of the rate confirmation. A carrier pays a $150 lumper at the dock and adds it to the settlement; on the customer side it never gets billed at all.

On the margin report neither event is a flag or a missing line. Those loads simply made $125 and $150 less than they should have — and margin varies load to load anyway, with fuel, spot-versus-contract pricing, and lane mix moving it constantly. At load grain, “we under-billed this one” and “this one was just tight” are the same number.

The report inherits the error

The margin report is computed from the same records that produced the invoice. If the process dropped the lumper billback — it never made it from the rate confirmation onto the invoice — then the report's revenue total was computed without it too. The report doesn't disagree with the mistake; it repeats it, and shows a smaller, internally consistent margin.

This isn't a defect in any particular TMS. It's a property of any report built downstream of the join: a check has to compare the inputs, and the margin report only shows the output.

What checking actually requires

Line-level review needs the two sides before the join: the carrier-pay register (every payable line — linehaul, fuel, detention, lumper) and the customer-invoice register (every billed line), each carrying the load or PRO number, matched line by line. Paid-but-never-billed shows up as a payable line with no receivable partner; under-billed shows up as a matched pair with a gap. Neither is visible in a one-row-per-load view.

How to get those two files out of each mainstream TMS is documented, system by system, in the companion guide.

Sources: How to get settlement and invoice data out of your TMS