Revenue ranking and profitability ranking are frequently inversely correlated. The customer at the top of the sales report is often not the customer at the top of the margin report — and in most mid-market businesses, nobody has ever checked.
Every business knows what it charges. Rather fewer know what it costs them to deliver, customer by customer, at the level of granularity where decisions are actually made.
Gross margin by product is a solved problem in most finance functions. Cost to serve is not, because the costs that vary between customers are precisely the ones the general ledger is worst at attributing: order complexity, delivery requirements, returns handling, support intensity, payment behaviour, and the quiet tax of exceptions.
None of those appear on an invoice. All of them consume margin.
The customer nobody wants to examine
There is a recognisable pattern in mid-market businesses. A large customer, won years ago, is treated as strategically untouchable. They negotiate hard on price. They order in awkward quantities, frequently, at short notice. They require bespoke reporting. They pay late. They generate a disproportionate share of support tickets and credit notes.
They are also, usually, at the top of the revenue table — which is why nobody asks the question.
When the analysis is finally done, the finding is rarely that the customer is loss-making. It is more often that they are marginally profitable while consuming the operational capacity of an account three times their size. The opportunity cost is the real number, and it is invisible without the analysis.
Revenue tells you who is big. Cost to serve tells you who is worth being big with.
Why the mid-market specifically struggles with this
This is not a sophistication problem. It is a structural one, and it has three parts.
The data sits in different systems that were never designed to be joined. Order data is in the ERP, delivery data in a logistics platform or a haulier’s portal, support data in a helpdesk, payment behaviour in the ledger. Each is accurate. None shares a customer identifier that survives the join without manual reconciliation.
The cost allocations are inherited rather than designed. Overhead is spread on revenue or headcount because that is how it was done when the business was smaller and the distortion was immaterial. At £15m it was a rounding error. At £120m it is a strategy.
Nobody owns the number. Finance owns cost. Sales owns revenue. Operations owns delivery. Cost to serve sits across all three, which in practice means it sits with none of them.
What the analysis actually involves
The instinct is to build the complete model — every customer, every cost pool, fully allocated. That instinct is why so many of these exercises are started and abandoned.
The pragmatic route is narrower. Take the top twenty customers by revenue, which in most mid-market businesses covers between 60 and 80 per cent of turnover. Attribute only the costs that genuinely vary between them, and be honest that the rest is overhead which will be allocated crudely. Accept a number that is directionally right within a fortnight rather than precisely right in nine months.
The first pass is not intended to be an accounting deliverable. It is intended to answer one question: are we surprised? In our experience the answer is yes in the substantial majority of cases, and the surprise is usually concentrated in three or four accounts.
What a first-pass cost-to-serve exercise needs
- Twelve months of order-level data, not summarised monthly totals — the variation is the point
- Delivery and returns data joined to the same customer identifier, however manually
- Support contacts and credit notes by account, which are usually the largest hidden variable
- Days-sales-outstanding by customer, because working capital is a real cost and is rarely charged for
- A named owner with authority to act on the answer, agreed before the work starts
What changes once you have it
The value is not the analysis. It is the set of conversations that become possible afterwards, all of which were previously unavailable because they rested on an unknown.
Pricing stops being a percentage uplift applied uniformly and becomes specific: this account is priced correctly, that one is not, and here is the evidence rather than the assertion. Renegotiation becomes a discussion about behaviour — order patterns, delivery windows, payment terms — rather than a blunt request for a higher price, which is a far easier conversation to win.
Service design changes too. If the cost is driven by exceptions, the answer may be to remove the exceptions rather than charge for them. That is an operating model change, and it usually benefits every other customer at the same time.
Most usefully, growth decisions acquire a filter. A business that knows its cost to serve can say which kind of new customer it wants, and decline the kind it does not. Very few mid-market businesses can do that with a straight face today.
The reason this is worth doing before anything else
Transformation programmes are frequently justified on efficiency — we will take cost out, we will automate this process, we will consolidate that platform. The business case rests on cost assumptions that, on inspection, were never measured at the level the case requires.
Cost to serve is the foundation those cases stand on. It is unglamorous, it is largely a data-joining exercise, and it is the difference between a transformation programme that can prove its value and one that merely asserts it.
It is also, for most mid-market businesses, a matter of weeks rather than quarters. The reason it has not been done is not difficulty. It is that nobody has been asked to own it.