Cost-to-serve: the data layer most enterprises don’t have

Why your most valuable customer might be losing you money, and your finance team can’t tell.

There’s a question that comes up in almost every customer-data conversation we have. The CEO asks, “who are our most profitable customers?” The CFO pulls revenue by customer, sorts descending, and reads off the top of the list.

They are not the same answer. Not even close. And in most companies, nobody can prove it either way.

The gap

Revenue is easy to track. Every ERP can do it. Cost of goods sold is also easy — finance has been allocating that since accounting was invented. What’s harder is the rest of the cost. The freight you waived. The expedites because their PO came in late. The returns. The fifteen percent rebate they negotiated in 2022 that nobody updated. The sales rep who spends three days a week on their account. The credit terms that mean you’re financing their working capital.

That entire layer — call it cost-to-serve — usually lives nowhere. It’s smeared across departments. Logistics knows about freight, sales knows about discounts, finance knows about credit, and nobody puts it together customer by customer.

Which means when the CEO asks the question, the answer they get is revenue-by-customer, which is almost never the same as profit-by-customer.

A real shape, anonymised

On one engagement — distribution, mid-market, around 800 active customers — we built the cost-to-serve layer. Took about ten weeks. Most of the time was data engineering: pulling rebates from one system, freight from another, sales-rep time-allocation from a CRM that wasn’t really tracking it, credit terms from finance.

When we ranked customers by true profitability rather than revenue, the picture was:

The top 20 percent of customers by revenue contributed about 60 percent of profit, which sounds normal. The top 20 percent by profit contributed about 110 percent of profit, because — and this is the part that lands hard — the bottom quartile of customers was actively destroying margin. Big-revenue accounts that turned out to be unprofitable once you included everything.

Not bad customers. Mostly customers who had been negotiated into a corner over years. Big discounts. Tight terms. Expedite-everything service profile. The kind of relationships where the sales team is too embarrassed to renegotiate, so nothing changes.

What changes when you have the data

Most things stay the same. The CFO doesn’t fire the bottom quartile. You can’t, usually — they’re long-standing relationships, sometimes strategic, sometimes a single customer that’s a quarter of your volume even if not your margin.

What changes is the conversation. With the data in hand:

Service tiers can be designed deliberately. Customers in the bottom quartile move to a lower-touch service model. Inside sales instead of senior reps. Standard terms instead of bespoke. The expensive treatment goes to the customers who can actually pay for it.

Pricing renegotiations have a number behind them. “We need to revisit your discount” lands differently when you can say “because at current terms, this account is contributing negative margin for the eleventh consecutive quarter.”

Sales compensation can be aligned to profit, not revenue. This sounds obvious. Most companies still pay on revenue. Once cost-to-serve exists as a number, that conversation becomes possible.

Why this isn’t more common

It’s almost always a data problem, not an analytical one. The math is straightforward. The integration is what kills it. Pulling freight from a TMS, rebates from a contract system, sales-rep time from a CRM that wasn’t tracking it, plus a clean customer master across all of them — that’s six weeks of plumbing before you even start computing anything.

Most companies have a half-built version of this layer in a spreadsheet, owned by one analyst who has been there long enough to know which files to pull and which columns to ignore. That spreadsheet is doing useful work. It’s also fragile, undocumented, and untestable. When the analyst leaves, the company loses the ability to answer the question.

Building it properly is unglamorous. It’s a data engineering project, not an analytics project. There’s no dashboard at the end that looks impressive. There’s a number, for every customer, that tells you whether they’re actually paying you to be your customer. That’s the whole product.

It also tends to be the most valuable customer data layer a company can build, because every other commercial decision — pricing, service, sales coverage, even strategic account selection — runs on top of it.

Need to know which customers are actually profitable?