The seven 3PL billing errors that show up most often

Billing errors4 min read

Almost none of these are anyone cheating you. They are the ordinary output of a billing system that runs on labels typed by humans, occupancy snapshots taken on a schedule, and rate cards that live in a spreadsheet on the laptop of an account manager. Which is why they repeat.

The order below is by frequency on invoices we have looked at, not by size. The expensive ones are rarely the common ones.

1. The same charge posted twice

Two identical fee lines against the same order reference, same fee type, same amount, usually the same day. The cause is almost always mechanical: an integration retried a webhook, or someone posted a correction as a new line instead of editing the original.

The check: group by order reference plus fee type plus amount, and look for groups larger than one. Be careful about a real edge case here. Two pick fees on one order can be legitimate when the order has two items and your contract charges per item. Compare against the item count before you claim it.

2. A surcharge that quietly became permanent

An accessorial appears once, nobody asks about it, and then it appears every month. After four months it is part of your baseline and it will never be questioned again, because your own year-over-year comparison now includes it.

The check: list every fee type on this invoice that is not named in your contract, then count how many of the last six invoices contain it. Two or more in a row is worth an email. Four in a row is a rate change that was never agreed.

3. A rate above the one you were quoted

Divide amount by quantity, per fee type, and compare against your rate card. Rates drift for boring reasons: a quarterly increase applied a month early, a rate card updated for new customers and applied to everyone, a tier you were supposed to move into but did not.

The arithmetic matters more than the percentage. A pick fee moving from $0.20 to $0.23 is a 15% increase, which sounds small, and it is $2,880 a year at 8,000 orders a month.

4. Credits that were promised and never issued

Someone acknowledged a mistake in a support thread, agreed a credit, and then the credit did not appear on the next invoice. Nobody involved is acting in bad faith. The person who agreed it does not issue invoices, and the person who issues invoices never saw the thread.

The check requires you to have kept the promise somewhere. Keep a running list: date, amount, what it was for, and a link to the message. Then check each invoice after that date for a matching negative line. This is the highest recovery rate of anything on this list, because the promise is in writing and there is nothing to argue about.

5. Storage billed above what you actually stored

Storage is billed on occupancy as the warehouse system recorded it, and that record lags physical reality. Pallets consolidated on the 8th are often billed as full pallets for the whole month. Units picked down to zero mid-month can still carry a bin charge.

The check: your own end-of-period inventory snapshot against the billed units, per storage type. A gap of a few percent is normal measurement noise. A gap of thirty percent is a stale occupancy record.

6. Receiving billed above the free allowance

Most contracts include free receiving labor: a number of hours per shipment, or per month, or per pallet. Overage is billed hourly, and hourly rates on receiving labor are the highest line item per unit of time on the whole invoice.

The check: sum billed receiving hours for the period, subtract the contractual allowance, and confirm only the difference was charged. The common error is the allowance being ignored entirely rather than miscounted.

7. Peak surcharges outside the peak window

Your contract names the dates. A peak or holiday surcharge dated outside them is a date comparison, not a judgement call, which makes it the easiest finding on this list to win. It happens because peak configuration is turned on at the account level and turned off late.

Three more that are not errors but are money

  1. 1Unused monthly minimum. If you are consistently billing at 60% of your minimum, you are paying for volume you never used and your minimum is negotiable at renewal.
  2. 2Card payment surcharges. Two to three percent on the whole invoice, every month, avoidable by switching to ACH. This is not a billing error, it is a standing charge nobody looked at.
  3. 3Shipping markup above the cap. Compare billed postage against the published carrier rate for the same service and zone. Most contracts cap markup; few brands ever check whether the cap is being respected.

How to run all of this without doing it by hand

Every check above is deterministic. There is no judgement in any of them, only grouping, subtraction, and comparison against a contract you already have. That is exactly the kind of work that should not be done by a person once a month, and exactly the kind that never gets done because it is not assigned to anyone in particular.

WareAudit runs thirteen of these checks against every invoice from ShipBob or ShipHero and writes the dispute letter. If you want to run the first one yourself, start with auditing a single ShipBob invoice and see what falls out.

Have us run these checks on your invoices.

Send three invoices and get the findings in dollars, with the lines behind each one. The first audit is free.

Get a free audit