---
title: "The customer profitability no report shows"
url: "https://obserbi.com/blog/customer-profitability-no-report-shows"
description: "Revenue per customer is in every report. Cost to serve is scattered across returns, terms, late payments and support time, so the best customer may be the least profitable."
---

# The customer profitability no report shows

October 20, 2026·4 min read·Editorial team

A brass balance scale with a single large brass coin on one pan and a heap of small weights, a cut tag and a loose coil of twine on the other, in amber light against black

Picture the sales review at a components manufacturer in the week after quarter-end. The slide everyone waits for is the top-ten customer list, ranked by revenue. The same name has held first place for three years, and the account manager who owns it is thanked, again, in front of the room. Nobody disputes the ranking. The numbers come straight from the ERP.

Two floors down, three people know things that are not on the slide. The warehouse lead knows this customer’s orders are split into small, urgent deliveries with special labelling. The credit controller knows the customer pays on day sixty against thirty-day terms, every time. The quality engineer knows most of this quarter’s returns carry the same customer number. None of them was asked, and none has a way to put a number on it.

The ranking is correct and the conclusion drawn from it is probably wrong. The largest customer by revenue may be among the least profitable after the cost of serving it, and nothing in the standard reporting pack would ever show that.

## The real cause: revenue sits in one table, cost to serve sits in six

Revenue per customer is the easiest number in the company: one field on one invoice table. Gross margin per customer is harder but usually available, because the ERP carries a standard cost against each item sold.

The cost of serving a customer is a different kind of number. It is not recorded anywhere as a cost of that customer. It is a returns document in quality, a credit note in finance, a non-standard payment term in the customer master, a freight invoice from a carrier, an hour in a service ticket, and a pricing agreement in a filing cabinet. Each exists. Each lives in a system that does not know the others exist. So the figure that would change the ranking is never computed, and the ranking stands.

## Where the standard view fails

**Returns and credit notes are booked against revenue, not against the customer.** A credit note reduces sales in the month it is issued. Its cause, the rework, the second shipment, the quality engineer’s afternoon, is spread across cost centres that no customer report touches. The customer who generates the most credit notes looks slightly smaller, not expensive.

**Special terms live in the customer master, which nobody reads for margin.** Extended payment terms, consignment stock, year-end rebates, free freight above a threshold: each sits in a configuration field or a contract. The rebate is accrued at year-end as one line, and nobody traces it back to the customer whose volume triggered it.

**Payment delay is treated as a treasury problem.** A customer who pays thirty days late costs real money in financing and in the collector’s time. That cost appears in interest expense and in overheads. The customer’s account shows an on-time invoice and a late receipt, and the margin report never meets either.

**Small orders cost the same to process as large ones.** Picking, packing, dispatch paperwork and invoicing have a fixed cost per order that no standard cost captures. A customer who places many small orders consumes that fixed cost many times over, and the product margin on each line looks identical to a customer who orders once a month.

**Support time is not costed at all.** Technical queries, spec changes, expedited deliveries, visits to resolve a complaint: these hours exist in a ticketing system or in nobody’s system. In most service-heavy accounts they are the largest unrecorded cost.

## What to do instead

**Decide what cost to serve means in your company before anyone computes it.** This is the step that cannot be delegated to a model. Which activities count, what an hour of support costs, how a rebate is attributed, whether late payment is charged at the overdraft rate: these are business definitions. An AI CFO that has not been given them will either guess or stay silent, and silence is the better of the two.

**Then assemble it from the systems that already hold the pieces.** Credit notes and returns from the ERP, linked to customer number. Days-to-pay from the receivables ledger. Order count and size from sales documents. Freight from carrier invoices. Rebates and terms from the customer master. Most of this is read-only access and a joining key; it needs persistence more than intelligence.

**Report margin after cost to serve beside revenue, per customer, every month.** Not once as a project. The ranking moves, and the point is to see it move: a customer whose cost to serve is rising is sending a signal before the margin disappears.

**Keep the method visible.** A number that re-orders the top-ten list will be challenged by the people who own those accounts, and it should be. Every component has to be shown with the result, or the argument becomes about the model instead of about the customer.

**Treat the outcome as a conversation about terms, not a verdict on the customer.** The customer in the opening scene is not a customer to fire. It is a customer whose terms were set when the relationship was smaller. Minimum order quantities, a surcharge on urgent split deliveries, payment terms enforced, or a price that reflects the service level: these are negotiations, and the number gives the account manager something to negotiate with.

## A test you can run this week

Take your ten largest customers by revenue over the last twelve months. For each, collect four numbers from the ERP and the receivables ledger: total credit notes issued, median days from due date to payment, number of orders, and gross margin.

Then estimate, roughly and openly, a cost per order and a cost per day of late payment, subtract them and the credit notes from the gross margin, and re-rank the ten.

If the order changes, especially if the top of the list moves, you have found a cost that your reporting has never shown and a conversation that is overdue with at least one account. If the order holds, you have confirmed the ranking with a method you can defend.

A number like this cannot be computed once and left; terms, behaviour and volumes all move. Re-assembling it every night from read-only ERP data, with the method attached, is the kind of controlling work [ObserBI](https://obserbi.com/) is being built to do. The next question, once the number exists, is what the business can afford to change, the subject of [the article on affordability](https://obserbi.com/blog/can-we-afford-it-answer-should-already-exist); the one before it is a clean customer master, as described in [the article on ERP master data](https://obserbi.com/blog/erp-master-data-before-ai).

-   customer profitability
-   cost to serve
-   margin
-   commercial terms
-   controlling

## Keep reading

-   [Where to run the finance model so the data stays home](https://obserbi.com/blog/where-to-run-the-finance-model)
-   [The board asks: can we afford it? The answer should already exist](https://obserbi.com/blog/can-we-afford-it-answer-should-already-exist)