Most companies know their total profit to the cent, yet cannot tell you which customers create it and which quietly erode it. Customer profitability analysis closes that gap by tracing revenue and cost down to the individual account. Once you can see profit per customer, pricing, service levels and sales focus stop being guesswork. Here is how to calculate it, step by step.
How do you calculate customer profitability?
Customer profitability equals the revenue a customer generates minus every cost of serving them: the direct cost of the goods or services sold, plus the cost-to-serve (sales time, support, delivery, returns and account management). Calculate it account by account, then rank customers from most to least profitable to see where your margin really comes from.
The principle is simple, but the discipline is in the detail. A customer who buys in large volumes can still lose you money once the true cost of keeping them is on the table. This guide walks through the calculation in five steps, and flags where the surprises usually hide. For the wider strategic context, see our guide to customer profitability analysis.
Start with the right revenue figure
Begin with the net revenue each customer generated over a defined period, usually a full year to smooth out seasonality. Net means after discounts, rebates, promotional allowances and credit notes, not the list price on the invoice. Many accounts look healthy at gross revenue and turn ordinary once every concession is deducted.
Pull this from your billing or ERP system at the customer level. If your data only reports revenue by product or region, you will need to map transactions back to the account before you can go further. This mapping is the foundation of everything that follows.
Assign the direct cost of what you sold
Next, subtract the direct cost of the goods or services delivered to that customer. For a product business this is cost of goods sold; for a service business it is the labour and materials consumed on their work. Contribution margin, revenue minus direct cost, is your starting point, but it is only half the picture.
Stopping here is the most common mistake. Contribution margin flatters large customers because it ignores everything that happens around the sale. The real differences between accounts appear in the next layer.
Add the cost-to-serve (where most surprises hide)
Cost-to-serve is the sum of all the activities you perform to win, keep and support a customer that are not in the product cost. Sales visits, quotes, order processing, small or frequent deliveries, returns, complaints, custom packaging, extended payment terms and dedicated account management all belong here.
The fair way to assign these costs is by the activity that actually drives them, not by spreading overhead evenly or in proportion to revenue. A customer placing fifty small orders consumes far more order-processing time than one placing five large ones, even at identical revenue. Time-driven activity-based costing does exactly this: it prices each activity at its capacity cost rate and charges each customer for the time and resources they genuinely consume.
Calculate profit per customer and rank
With all three layers in place, the arithmetic is direct: net revenue, minus direct cost, minus cost-to-serve, equals profit per customer. Do this for every account and sort the list from most to least profitable.
The pattern is remarkably consistent across industries. A minority of customers generate well above total profit, a large middle band roughly breaks even, and a tail of accounts actively destroys value. Plotting cumulative profit against ranked customers produces the whale curve, and it is usually the moment leadership realises the average margin was hiding two very different populations.
What to do with the answer
The goal is not to fire unprofitable customers. It is to understand why they are unprofitable and to act. Some can be repriced. Some can be moved to lower-cost service channels or minimum order sizes. Some are strategic and worth keeping at a loss with eyes open. What changes is that every one of those decisions is now made with a number, not a hunch.
A customer is not profitable because they buy a lot. They are profitable when what they pay exceeds everything it costs to keep them.
You do not need perfect data to start. A first pass using reasonable estimates for cost-to-serve will already separate the clear winners from the clear losers, and that alone often reshapes commercial priorities. You can refine the model from there.
A Profitability Health Check maps your customers, products and channels so you can see which accounts earn their keep and which quietly drain the result.