Customer B looks ordinary in a gross-margin report. Revenue is 100,000, COGS is 40,000 and gross profit is 60,000, exactly the same as Customer A.

The workload is not ordinary. B uses three times as many onboarding hours, three times as much support, more exception handling and more custom reporting. That difference only becomes visible once the management question changes. A gross-margin report can describe the accounting margin. It cannot, on its own, tell the company what will happen to resources or cash if B is repriced, redesigned or removed.

This article follows the same pair of customers through four views: reported gross margin, Cost-to-Serve, fully allocated profit and avoidable / incremental decision cost. Each view is useful. The error is to let one of them answer a question it was not built for.

Decide what the number is for

The four views can sit side by side:

Cost lensWhat it is mainly trying to answerCommon misuse
Gross MarginWhat remains after the company’s defined COGS / cost-of-revenue boundary?Treating gross margin as complete customer or product profitability
Cost-to-ServeWhich activities and resources does a customer, product, channel or service tier consume?Treating every assigned cost as immediately cash-avoidable
Fully Allocated ProfitWhat does the cost object look like after shared or corporate costs are allocated?Treating a negative allocated result as proof that exit creates value
Avoidable / Incremental EconomicsIf a specified action is taken over a specified horizon, which revenues, costs, cash flows and capacities actually change?Looking only at short-term cash and ignoring opportunity cost or longer-run capacity release

IMA’s managerial-costing guidance is useful here because it separates decision-useful costing from the cost model used for financial reporting. A management model needs to reflect the purpose of the decision and the causal consumption of resources. An allocated charge does not become avoidable simply because the report has assigned it to a customer. A pricing review, a 90-day keep-or-drop decision and long-run capacity planning can therefore use the same source data while drawing different cost boundaries. IMA: Developing an Effective Managerial Costing Model

Follow the work before judging the customer

Direct and indirect are properties of the relationship between a resource and a declared cost object. A resource can be direct to a product line yet require an activity driver when the object becomes an individual customer. IMA: Conceptual Framework for Managerial Costing

Activity-Based Costing makes that relationship explicit:

resources → activities → cost objects

For A and B, the synthetic activity data are:

ActivityRateCustomer AA costCustomer BB cost
Implementation / onboarding100 / hour40 h4,000120 h12,000
Support50 / hour80 h4,000240 h12,000
Exception handling80 / case201,600756,000
Custom reporting / operations100 / hour20 h2,00050 h5,000
Cost-to-Serve11,60035,000

The figures are illustrative units rather than observed company data. They change the customer view substantially: A moves from 60,000 gross profit to 48,400 after Cost-to-Serve, while B moves to 25,000.

  • A: 60,000 − 11,600 = 48,400
  • B: 60,000 − 35,000 = 25,000

The same modelling problem appears in businesses with very different operating drivers. Cloud costs may combine compute, tiering, egress and step pricing. Payments can depend on transaction counts, payment methods, cross-border activity, refunds and disputes. Communications services can include usage-linked network or carrier charges. Those examples are why a single average rate often hides the workload rather than explaining it. At this point B carries 35,000 of Cost-to-Serve, but the decision still depends on whether the underlying resources would disappear if B did. AWS EC2 Pricing Google Cloud Network Pricing Stripe Pricing

Capacity changes the keep-or-drop arithmetic

Kaplan and Anderson’s Time-Driven Activity-Based Costing uses two core estimates: the unit cost of supplying resource capacity, and the time or resource demand of each transaction or activity. Keeping those two estimates separate allows supplied, used and unused capacity to remain visible. Kaplan & Anderson, Time-Driven Activity-Based Costing

Take the support team. It supplies 2,500 hours of practical capacity for a period resource cost of 125,000, giving a capacity cost rate of 50 per hour. Current use is 2,250 hours, leaving 250 hours unused. B consumes 240 support hours, so the model assigns 12,000 of support capacity cost to B.

Removing B changes the utilisation profile, not necessarily the payroll. Used hours fall to 2,010 and unused capacity rises to 490:

Support capacityBefore dropping BAfter dropping B
Practical capacity2,500 h2,500 h
Used capacity2,250 h2,010 h
Unused capacity250 h490 h
Period resource cost125,000125,000

Support capacity after dropping Customer B: Used Capacity falls from 2,250 to 2,010 hours and Unused Capacity rises from 250 to 490 hours, while Practical Capacity stays at 2,500 hours and period resource cost remains 125,000.

If the team is salaried and cannot be reduced over the decision horizon, period resource cost remains 125,000. The 12,000 assigned to B has moved from used capacity into unused capacity rather than becoming a cash saving. IAS 2 also uses a capacity concept, but for inventory costing and external reporting: its normal-capacity treatment limits the amount of fixed production overhead pushed into each unit during abnormally low production or idle plant. It does not set the managerial denominator for customer Cost-to-Serve. IAS 2 Inventories

A bottleneck creates a different problem

Spare support capacity does not create the same economics as a fully committed onboarding team. If implementation is the only genuinely binding resource and there is valuable alternative demand, each hour given to B has an opportunity cost.

For a single constrained resource, OpenStax uses contribution per unit of that resource as the comparison. OpenStax: Decisions When Resources Are Constrained Using implementation/onboarding hours as the sole constraint here:

  • A: 60,000 − 4,000 support − 1,600 exceptions − 2,000 reporting = 52,400; over 40 implementation hours, that is 1,310 per constrained hour.
  • B: 60,000 − 12,000 support − 6,000 exceptions − 5,000 reporting = 37,000; over 120 implementation hours, that is about 308.33 per constrained hour.

That result makes B expensive in scarce implementation capacity, but only under the stated conditions. If implementation is not binding, if there is no worthwhile alternative demand, or if several constraints and contractual obligations interact, the ratio is not a complete ranking rule.

Time determines how much cost can actually leave

A team can be fixed over one horizon and adjustable over another. Support might handle 10,000 to 12,000 tickets without hiring, add another team above that threshold, then retain the team for a while even after ticket volume falls. Cost behaviour therefore needs a driver, a relevant range and a time period. OpenStax: Cost Behaviour

The empirical cost-stickiness literature gives a useful warning against symmetrical assumptions. Anderson, Banker and Janakiraman studied 7,629 firms and found that, in their sample, SG&A rose by about 0.55% for a 1% rise in sales but fell by only about 0.35% for a 1% fall in sales. Those are sample findings, not universal forecasting coefficients. Anderson, Banker & Janakiraman, Are Selling, General, and Administrative Costs “Sticky”?

For B, a 90-day decision may leave almost all salaried support and implementation capacity in place. Over twelve months, attrition, hiring freezes, tooling changes, team consolidation or facilities decisions may release part of that capacity. The same assigned cost can therefore have very different avoidability depending on the horizon.

Read allocated profit as a signal, then test avoidability

Add corporate and shared-services cost to the customer report, allocated by revenue. A and B have equal revenue, so each receives 30,000:

LensCustomer ACustomer B
Gross Profit60,00060,000
Less Cost-to-Serve(11,600)(35,000)
Profit before shared allocation48,40025,000
Shared allocation(30,000)(30,000)
Fully Allocated Profit18,400(5,000)

The fully allocated view has done something useful: it has identified B as a customer worth investigating. Pricing, support demand, service entitlements and custom work now deserve attention. The report has not yet shown that dropping B creates 5,000 of value.

For a 90-day keep-or-drop decision, the avoidability table looks different:

B itemAssigned amount90-day avoidable cash
Implementation capacity12,0000
Support capacity12,0000
Outsourced exception handling6,0006,000
Custom reporting / operations capacity5,0000
Shared corporate allocation30,0000
Total immediately avoidable cost6,000

Removing B gives up 60,000 of gross profit and saves 6,000 of near-term cash cost. Before any opportunity-cost effects, the near-term change is −54,000. OpenStax’s keep-or-discontinue framework uses the same relevant-cost boundary: compare lost contribution with costs that are genuinely avoidable rather than with a fully allocated segment result. OpenStax: Keep or Discontinue

90-day keep/drop test: losing 60,000 of Gross Profit and adding back 6,000 of Immediately avoidable cash produces a −54,000 near-term change; Fully Allocated Profit of −5,000 remains contextual only.

Allocation still has jobs to do. A managerial cost model may allocate for resource accountability or pricing discipline; external reporting follows its accounting framework; tax and transfer pricing use a separate arm’s-length framework for intra-group services. The allocation key should be read with that purpose attached.

OECD Transfer Pricing Guidelines Chapter VII, for example, discusses consistent allocation keys for low-value intra-group services that reflect the nature of the service and expected benefit. Depending on the service, examples include headcount, users, vehicles, transactions or assets. This is useful evidence for disciplined allocation design, while remaining tax transfer-pricing guidance rather than a universal rule for internal managerial costing. OECD Transfer Pricing Guidelines 2022

Reconcile period changes before explaining them

Suppose customer profitability falls next quarter. A bridge can first reconcile the movement across volume or customer count, customer or service mix, Cost-to-Serve intensity, capacity utilisation, and relevant FX, scope, timing or allocation-method changes. The method and cost-object definitions need to stay stable, and the components should add from the starting total to the ending total.

That produces arithmetic attribution, not causal proof. If support hours and customer mix both move, the bridge can show how much each contributes to the reported change. Evidence about the business mechanism still has to come from elsewhere.

Work the levers before the exit decision

Under the current 90-day assumptions, the avoidable-cost arithmetic does not support an immediate exit. Management can work the case in a much smaller loop.

First, fix the decision and horizon. If the question is renewal or pricing, analyse B as a customer; if the question is capacity planning, identify the resource that is actually constrained. Then use the Cost-to-Serve detail to target the workload that can change: onboarding, support, exception handling or custom reporting. Finally, separate resources that can be released from capacity that would merely become idle, and add opportunity cost only where a genuine bottleneck and worthwhile alternative demand exist.

That leaves several practical actions before termination: reprice B, reduce exception demand, standardise custom reporting, redesign onboarding or support, or redeploy scarce implementation capacity. A longer horizon may eventually make support, implementation or shared capacity removable. If it does, rerun the economics with that new horizon rather than extending the 90-day answer by assumption.

The allocation key should also remain labelled with its purpose. A key designed for accountability, pricing discipline, external reporting or tax compliance can inform the decision without being allowed to decide it automatically.

What would actually change if B left?

B’s Fully Allocated Profit is −5,000. Its currently modelled 90-day avoidable cash is only 6,000. Those figures can coexist because they answer different questions.

For the exit decision, the remaining tests are concrete: which resources and cash flows change within the chosen horizon, whether a real bottleneck creates opportunity cost, and whether any capacity can actually be released. Until those conditions change, the allocated loss is a warning to investigate, not proof that exit creates value.

References