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 10,000 dollars and the small one returns 84,000. The company is not being paid for its biggest relationship. It is subsidising it, 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 a weekly delivery schedule into 4 regional depots. The regional account buys in full pallets, twice a month, to one address, and pays in 30 days.
| 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% |
| Orders placed per year | 480 | 26 |
| Order handling at $180 | $86,400 | $4,680 |
| Delivery at $220 per drop | $105,600 | $5,720 |
| Returns and credits | $42,000 | $2,400 |
| Account and support time | $38,000 | $3,500 |
| Financing of payment terms | $18,000 | $1,700 |
| Cost to serve | $290,000 | $18,000 |
| Cost to serve, % of revenue | 24.2% | 5.3% |
| Contribution after cost to serve | $10,000 | $84,000 |
| Contribution % | 0.8% | 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 returns less than one eighth of the contribution. Its gross margin percentage was 5 points lower, which anyone could see. Its cost to serve was 19 points higher, which nobody was measuring.
The driver is order size, not price. The national account averages 2,500 dollars per order across 480 orders. The regional account averages 13,077 dollars across 26. The price concession cost 60,000 dollars a year. The ordering behaviour cost 192,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 0.8% to a 10% contribution margin requires 110,000 dollars more, which is a 9.2% price increase. Very few buyers of that size accept 9%.
- Service model. Consolidating 480 deliveries into 160, by moving depots to a 3 week cycle with an order minimum, saves 57,600 in handling and 70,400 in delivery. That is 128,000 dollars, which takes the same account to an 11.5% 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 320 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 10,000 dollars of contribution, while releasing 320 deliveries of capacity, is a different sentence describing the same event. The analysis exists to let you say the second one out loud.
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.
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."
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 & Tools
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.