Two customers. One buys 1,200,000 dollars a year at a 25% gross margin. The other buys 340,000 dollars at 30%. Every account review in the business treats the first one as the priority. After cost to serve, the large account returns 71,000 dollars and the small one returns 84,000. The biggest relationship in the business delivers less total contribution than an account a third its size, and nothing in the standard P&L makes that visible.
The core insight
Ask a finance team which customers are profitable and you will usually get an answer built from gross margin. It is the number the system produces, it reconciles to the P&L, and it feels like customer profitability. It is not. Gross margin measures how profitable a product is. It says nothing about how expensive a customer is to keep.
Everything that separates one customer from another sits below the gross margin line. How often they order. How small each order is. How many separate places you deliver to. How much they send back. How much account management and technical support they absorb. How long they take to pay, and what that costs you in working capital. Two customers can buy identical goods at identical prices and consume wildly different amounts of the business.
That cost is real, it is large, and in most reporting it is pooled into overhead and spread across everyone as a percentage of revenue. Averaging is precisely the wrong treatment, because it charges the average to the customer whose costs are furthest above it. The demanding account looks fine. The easy account quietly pays for it.
"Gross margin tells you whether the product was worth making. Cost to serve tells you whether the customer was worth keeping."
The framework: contribution after cost to serve
The method is one line, and the work is entirely in populating it honestly.
Contribution = Gross Margin − Cost to Serve
Cost to serve covers order handling, delivery, returns and credits, account and support time, and the financing cost of payment terms.
You do not need a full activity-based costing programme to start. You need five drivers and a defensible rate for each: cost per order processed, cost per delivery drop, credits and returns, servicing hours at a loaded rate, and the carrying cost of receivables. Rates good to plus or minus 20% are enough, because the differences between customers are usually measured in multiples, not percentages.
Work through it with two real customers
Both buy from the same catalogue. The national account negotiated a lower price and direct delivery to each of its stores. The regional account buys in full pallets, twice a month, to one address, and pays in 30 days.
That ship-to profile is the whole difference. The national account delivers into 38 separate store locations rather than a single warehouse, which is why it generates roughly 380 deliveries a year against the regional account's 26.
| Line | National account | Regional account |
|---|---|---|
| Revenue | $1,200,000 | $340,000 |
| Cost of goods | $900,000 | $238,000 |
| Gross margin | $300,000 | $102,000 |
| Gross margin % | 25.0% | 30.0% |
| Ship-to locations | 38 | 1 |
| Deliveries per year | 380 | 26 |
| Order handling at $180 | $68,400 | $4,680 |
| Delivery at $220 per drop | $83,600 | $5,720 |
| Returns and credits | $30,000 | $2,400 |
| Account and support time | $32,000 | $3,500 |
| Financing of payment terms (75 vs 45 days) | $15,000 | $1,700 |
| Cost to serve | $229,000 | $18,000 |
| Cost to serve, % of revenue | 19.1% | 5.3% |
| Contribution after cost to serve | $71,000 | $84,000 |
| Contribution % | 5.9% | 24.7% |
Illustrative figures. Rates are the kind most distributors and manufacturers can derive from existing systems in an afternoon.
The national account is 3.5 times the revenue and still delivers less total contribution than the regional account. Its gross margin percentage was 5 points lower, which anyone could see. Its cost to serve was 14 points higher, which nobody was measuring.
The driver is drop size, not price. The national account averages 3,158 dollars per delivery across 380 deliveries. The regional account averages 13,077 dollars across 26. The price concession cost 60,000 dollars a year. The delivery behaviour cost 152,000.
What actually fixes it
Once the number exists, there are only 3 levers, and they are not equally powerful.
- Price. Lifting the national account from 5.9% to a 10% contribution margin requires 49,000 dollars more, which is a 4.1% price increase. Still a hard conversation with a buyer that size, but no longer an implausible one.
- Service model. Consolidating 380 deliveries into 160, by routing store drops through a regional hub with an order minimum, saves 39,600 in handling and 48,400 in delivery. That is 88,000 dollars, which takes the same account to a 13.3% contribution margin without touching price. It also costs the customer almost nothing they value.
- Exit. Real, occasionally correct, and almost always the wrong opening move. See the limits below before you reach for it.
This is the reframe worth carrying: the recoverable money is usually in how you serve, not in what you charge. Repricing is a negotiation you might lose. Removing 220 unnecessary deliveries is an operational change the customer may not even notice.
Why experienced managers still get this wrong
These are structural failures, not careless ones, and they persist in well run finance teams.
-
1They stop at gross margin because that is where the system stops.
The ERP traces product cost to the invoice and everything else to a cost centre. Customer profitability is not hidden, it is simply never assembled, and no report will ever surface a number nobody has built.
-
2They allocate cost to serve as a flat percentage of revenue.
This is worse than not allocating at all, because it launders the problem. Spreading service cost evenly guarantees the heaviest user is charged the average, which is exactly the account you are trying to detect. Allocate on the driver, meaning orders, drops, and hours, or do not allocate.
-
3They read revenue concentration as security.
The largest account is treated as the one that cannot be risked. Often it is the one contributing least per dollar of revenue, and the fear of losing it is what funded every concession that made it unprofitable in the first place.
-
4They assume the fix has to be price.
Price is the most visible lever and the most confrontational. In most portfolios the service model holds more recoverable value and meets far less resistance, because you are removing cost the customer was never willing to pay for.
-
5They never test the revenue hole they are afraid of.
Losing 1,200,000 dollars of revenue sounds catastrophic and is the reason nobody raises the subject. Losing 71,000 dollars of contribution, while freeing the capacity behind 380 deliveries a year, is a different sentence describing the same event, provided that capacity is released or put to better use. The analysis exists to let you say the second one out loud. Check the proviso before you do: if the trucks, warehouse time and account hours stay, the loss is closer to the account's full 300,000 dollars of gross margin.
Putting it to work tomorrow
You do not need a costing system. You need one spreadsheet and a willingness to be approximately right.
- Build it for the top 20 customers only. They will carry most of the revenue and nearly all of the distortion. A full portfolio rollout is how this work dies in committee.
- Use 5 drivers and defensible rates. Orders, drops, returns, service hours, and receivable days. Rates within 20% are sufficient, because the answers differ by multiples. If you want the arithmetic done for you, the cost-to-serve calculator takes those 5 drivers and returns the contribution, with both levers priced.
- Rank by contribution percentage, not by revenue. Then look at the gap between the two rankings. That gap is the agenda for the next commercial meeting, and it is usually the first time anyone has seen it.
- Take the service lever before the price lever. For each loss-making account, cost the operational change first. Reprice only where the service model genuinely cannot move.
- Profit today
- $2.00M
- What the curve promises
- $4.20M
- What you would actually get
- $1.45M
- Customers you stop serving
- What the curve promises
- What you would actually get
- Profit today
Cost to serve is a lens, not a verdict. It misleads in 4 specific ways. If the driver rates are guessed rather than measured, you have moved opinion around and added decimal places. If a customer carries strategic value the model cannot see, such as reference status, market access, or a volume commitment that keeps a plant economic, the number is one input among several. If you treat fixed costs as though they vanish when a customer leaves, you will overstate the gain from an exit and end up with the contribution gone and the cost still there. And a single period is a snapshot, not a trajectory: a growing account absorbing setup cost looks identical to a declining one consuming service. Use it to find where value leaks, then decide with judgment.
The principle worth keeping
Revenue is not an achievement. It is a claim on your capacity, and some claims cost more than they pay.
"Before you fight to keep an account, work out what it contributes after everything it consumes. Some revenue is worth defending. Some is worth repricing. And some you should quietly want to lose, provided their costs would leave with them."
Free Excel model: Margin Bridge & Price/Volume/Mix
Once you know which accounts leak value, this separates an actual margin movement into price, volume, mix, and cost, so you can show how much of the period a single customer explains.
Related analysis and tools
Cost to serve for every account at once, sitting alongside the product decisions, so a customer you would reprice and a product you would stop making are weighed on the same page.
This article on your own numbers. Enter revenue, cost of goods and the 5 service drivers, and it returns contribution after cost to serve, then sizes the price rise and the delivery change that would close the gap.
The same failure in a different costume: a discount that lifted sales 18% while gross profit fell, because the break-even lift it needed was 60%.
If the answer to an unprofitable account is a discount to win volume, check the arithmetic first. Enter price, unit cost, and discount depth, and get the break-even lift as you type.
The portfolio version of the same argument, with a working Solver optimiser that finds the contribution-maximising price for every product inside the limits you set.
Where customer profitability belongs in the wider workflow: past describing the quarter, through diagnosis, and into the decision the numbers point to.