The gross margin on your monthly report is a list-price fiction. It is accurate about the two numbers it was given — what you sold it for and what you paid for it — and silent about the seven other things that came off the same transaction. Those seven live in five different systems, which is the only reason nobody adds them up.
The number on the report and the number in the bank
Every operator who has run a distribution business for more than a few years knows the feeling. The margin line on the monthly pack looks healthy. It has looked healthy for years. And yet the bank balance behaves like a business with much thinner margins than that, and nobody can say exactly why.
The usual explanations get wheeled out. Freight is up. One big customer is squeezing us. Somebody is discounting too hard. Each of those is probably true and none of them is the answer, because the answer is not one thing. It is seven small things, each individually defensible, each sitting in a different system, and none of them visible on the report that says your margin is healthy.
Here is the shape of it before the detail.
The seven leaks
Each of these is a real deduction against a real sale. Take them in order; the first one is usually the largest, and the last one is the one nobody has ever measured.
1. Off-invoice discounts and price overrides
This is the gap between the price on your list and the price on the invoice. It arrives in three ways: a rep authorised to go below list and using the whole authority every time, a negotiated arrangement agreed three years ago that nobody has revisited since, and the override keyed at order entry because the buyer pushed and the order needed to ship.
To spot it, pull a year of invoice lines next to the list price for that item on that date, and look at the spread by rep and by customer. The spread matters more than the average: a handful of accounts almost always carry most of it, and they are rarely the accounts anyone suspects.
What you need: invoice lines with item, customer, date and price charged — plus the price list as it stood on that date. The second half is the part most businesses do not have. Where it lives: invoices in your ERP, the price list in a spreadsheet, and the reason for the exception in whoever’s memory did the deal.
2. Unbilled or under-billed freight
Carrier spend you paid and never recovered. A free-freight threshold set when fuel cost less. The “just get it there” order that went out next-day air on your account. The second shipment you sent because the first one short-shipped, which was your fault, which does not make the freight free.
To spot it, put carrier invoices by shipment next to freight billed on the matching customer invoice. Do it by customer rather than in total — the aggregate number tells you there is a problem and the by-customer number tells you where.
What you need: carrier invoices carrying a reference that ties back to a shipment, and freight charged per invoice. Where it lives: carrier portals or PDFs in a mailbox, shipments in your ERP or WMS, what was billed in your accounting system. Three places, which is exactly why this one goes unmeasured for years.
3. Rebates and allowances
Volume rebates, co-op, marketing allowances, growth incentives. Earned across a year, paid in arrears, and accrued either roughly or not at all.
To spot it, compare what you accrued last year to what you actually paid out. If the payout is larger than the accrual, every margin-by-customer report you looked at during that year was overstated, and the customers it overstated most are the ones on the richest agreements.
What you need: the agreement terms per customer, revenue by customer for the measurement period, and the payments made. Where it lives: agreements as PDFs on a shared drive, revenue in your ERP, payments in QuickBooks, Xero or Sage. The terms are almost never in the same system as the revenue they are calculated on.
4. Returns and credits
The credit memo is the visible part. The invisible part is the handling around it: inspection, restocking, scrap, the replacement shipped at your cost, and the hour somebody spent working out whose fault it was.
To spot it, look at credits as a share of sales by customer and by item, then sort by reason code — assuming your reason codes are filled in with something other than the first option in the dropdown.
What you need: credit memos linked to the original invoice, with a reason attached. Where it lives: credit memos in your ERP; the actual reasons, where they exist, in RMA notes or an email thread.
5. Payment terms and late payment
Money you have earned and are lending to your customer. Every day between shipping the goods and banking the cash is a day you are financing somebody else’s working capital, and it has a price whether or not anyone charges you for it.
The arithmetic is the one piece of this article worth memorising: revenue × days to pay ÷ 365 × cost of capital. That is what carrying your receivables costs you in a year. The input that matters is days to pay — your real days, measured from your aging, not the terms printed on the invoice.
What you need: invoice date, payment date and amount by customer, and a cost of capital from whoever manages your line of credit. Where it lives: the aging report in your ERP or accounting system; the cost of capital in your head, or your bank’s.
6. Small-order cost to serve
There is a floor under every order. Somebody picks it, somebody packs it, paperwork gets produced, an invoice goes out, and often a phone call happens. None of that cost cares how small the order is. Below a certain order value you are paying for the privilege of shipping.
To spot it, count your orders by value band. The question is not what your average order value is — it is how many orders a year sit below the value where the handling pays for itself, and which customers send them.
What you need: order count and order value from your order history, and an honest estimate of what handling one order costs. The estimate is yours to make; nobody can hand it to you. Where it lives: order history in your ERP or your commerce platform; the handling cost nowhere, until you work it out.
7. Price-list lag behind cost increases
Your supplier raised cost in March. Your price list moved in August. Everything you sold in between went out at last year’s margin, and the report never flagged it, because the report compares the price you charged to the cost in the item master — which also moved in August.
To spot it, put the last cost change date next to the last price change date for each item, and sort by revenue. The gap, measured in months and multiplied by what you shipped in those months, is the leak.
What you need: cost history and price-list history, both with dates. Where it lives: your ERP item master if it keeps cost history — many do not — and otherwise supplier letters in an inbox and a spreadsheet with a version number in the filename.
Run it on your own numbers
Seven leaks, five systems, and no report that adds them together. Until somebody builds that report, the next best thing is to estimate each leak once, deliberately, and see what the total does to your margin. Every field below is yours to change, and the ones you are least sure about are the ones worth arguing over.
Two outputs usually start the useful conversation. The first is the biggest-leak line, which is almost never the leak people walk in expecting. The second is what a single point of margin is worth to you in a year — because that figure turns “we should look at freight recovery sometime” into a number you can put against the cost of actually doing it.
Why your ERP cannot show you this
It is worth being precise about this, because it is not a failure of your software. Your ERP reports margin correctly on the data it owns. The problem is that it does not own the data.
Freight recovery needs carrier invoices, which arrive as PDFs. Rebates need agreement terms, which are PDFs on a shared drive. Price-list lag needs a history of what your list price used to be, which most systems overwrite. Cost to serve needs an estimate nobody has made. Terms cost needs a cost of capital that lives outside every system you own. Your ERP is being asked a question about five systems while holding one of them.
Which is why the fix is not a better report inside the ERP. It is a small, boring data layer that pulls those five sources into one place, applies your definitions of margin — your definitions, written down and agreed — and then answers the question the same way every month. That is what the true margin by SKU and customer view exists to do.
The agreeing-definitions part is the hard part, and it is not a technical problem. Two people in your business will disagree about whether rebate accruals belong in customer margin. Settle it once, write it down, and then every month after that is arithmetic.
What you do with it once you can see it
The reason to measure true margin by customer is not to produce a league table. It is to stop spending your scarcest resource — your sales team’s attention — in proportion to revenue rather than in proportion to profit.
Once the quadrant exists, the actions are unglamorous and obvious. The “Fix” accounts get a conversation about freight terms, order minimums or payment terms before they get a price increase, because in most cases the leak is not the price. The “Protect” accounts get named, so that the next time somebody offers a discount to hold the business, the person approving it knows what they are holding. And the smallest accounts get served through whatever channel costs least, rather than through a rep.
None of that requires a reorganisation. It requires knowing which customer is in which box, and having it recalculated every month without somebody spending four days in a spreadsheet to do it.
Checklist: can you measure your real margin?
Work down this list. Every item you can tick is a leak you could quantify this quarter rather than next year.
- Your invoice lines carry item, customer, date and price charged. This is the foundation for leaks one, four and seven. If invoice detail has been archived away or summarised, start there.
- You can reconstruct an old price list. Not the current one — the one in force last March. If your system overwrites prices, keep a dated copy from now on, even if it is a monthly spreadsheet export.
- Carrier invoices tie to shipments. A reference number on the carrier invoice that matches something in your ERP or WMS. Without it, freight recovery is guesswork.
- Rebate agreements exist somewhere findable. One folder, one naming convention, current versions. If finding a customer’s rebate terms takes more than a minute, nobody will check them against revenue.
- Your aging report is trusted. Real days to pay by customer, with disputed invoices identifiable, so leak five is measured rather than assumed.
- Somebody has estimated what handling one order costs. Pick, pack, paperwork, invoice. A rough number you have argued about beats a precise number nobody owns.
- There is one agreed definition of customer margin. Written down, including what is in and what is out. This is the item most businesses skip and the one that makes every other item usable.
- One person owns the number. Not a committee, and not whoever happens to be free at month end.
Where to go next
If the calculator pointed at a leak you had not been watching, the next question is whether you want it measured once or measured every month. Measured once is a project. Measured every month is a different thing — a defined view that pulls from your ERP, your accounting system, your carrier invoices and your rebate terms, applies the definitions you agreed, and puts the same answer in front of you on the same day each month. That is what the AI Reporting & Dashboards page describes, including how the definitions get agreed before anything gets built.
If you would rather talk it through than read another page, a working session is a conversation about your five systems and which leak is worth chasing first — not a demo.
And if you want the shortest route to a prioritised answer, the Agent Opportunity Assessment takes about three minutes, asks about a dozen questions about how your business actually runs, and comes back with the three agents that would pay off first — using the arithmetic from your own answers, the same way the waterfall above does.
