Guide

How to build a TDABC model: a 7-step guide

Build a time-driven activity-based costing model from scratch. A 7-step guide with a fully worked example, real numbers and a whale curve. No surveys needed.

7 stepsWorked example: CaPIllustrative figures

Time-driven activity-based costing (TDABC) is the fastest credible way to learn what each customer, order and product really costs to serve. Robert Kaplan and Steven Anderson introduced it in Harvard Business Review in 2004, then expanded it in their 2007 book, precisely because the classic activity-based costing (ABC) of the 1980s had become too slow, too costly and too political to maintain. TDABC replaces hundreds of activity surveys with just two parameters per resource group, and it scales to thousands of transactions without breaking.

This guide shows you how to build a TDABC model from the ground up, in seven steps, using a single illustrative company we call CaP (short for Cost and Profitability). Every table below carries real, internally consistent numbers so you can see exactly how the arithmetic flows, from raw resource cost all the way to a whale curve that ranks every customer by profit. The figures for CaP are illustrative and are used here only to demonstrate the method. If you want the method itself derived from first principles before you build anything, the full reference is time-driven activity-based costing, worked out in full.

In short

Building a TDABC model takes two parameters and seven steps. First you find the capacity cost rate for each resource group (its total cost divided by the practical capacity it can actually deliver, usually about 85% of theoretical capacity). Then you write time equations that estimate how many minutes each transaction consumes. Multiply minutes by the rate, sum across every order, and you have the true cost to serve each customer and product. Rank customers by profit and you get a whale curve that reveals which accounts create value and which destroy it. With clean transactional data, a first model is built in days to weeks, not the months that classic ABC required.

Before you start: TDABC needs only two parameters

The genius of the Kaplan and Anderson method is that you do not need to interview staff about how they split their time across activities. You need only two things per resource group:

1. The capacity cost rate - the cost of supplying one minute of available capacity. 2. The time equations - simple formulas that estimate how many minutes a given transaction consumes, based on its characteristics.

What data you need (and what you do not):

  • Total cost of each resource group (from the general ledger or budget).
  • The quantity of resource supplied (people, hours, vehicles) so you can estimate practical capacity.
  • Transactional data: orders, order lines, deliveries, returns, cases, service touches. Most of this already lives in your ERP, WMS or CRM.
  • You do not need employee surveys, time sheets filled in by hand, or a workshop where everyone guesses their percentages. That is the old ABC, and it is the reason most ABC models were abandoned.
1
Step 1

Map your resource groups and their cost

Warehouse160,000Delivery232,500Account mgmt60,000Total serving cost452,500 EUR

Start by grouping the resources that do the work into a small number of resource groups (sometimes called resource pools). A resource group is a set of people and assets that share roughly the same capacity cost and perform a coherent set of tasks. Keep the number small. Three to a dozen is normal; hundreds is a warning sign.

Pull the total annual cost of each group from your ledger. Include the fully loaded cost: salaries, on-costs, supervision, the equipment and space those people use, depreciation and a fair share of support. The goal is that the sum of your resource groups equals the operating cost you are trying to explain.

CaP is a mid-size B2B distributor with revenue of EUR 4,500,000 across 10 client accounts. Its cost to serve those clients is organised into three resource groups.

Six people and their equipment do that work: two on the pick face, three drivers with their vehicles, and one person covering customer service and account management. Supervision, racking, vehicle leases and warehouse space sit inside these three cost pools, because what you want at the end is a fully loaded cost for every minute of front-line capacity.

Resource groupAnnual cost (EUR)What it includes
Warehouse and picking160,000Pickers, packers, supervision, racking, handling equipment, warehouse space
Delivery (drivers and fleet)232,500Drivers, vehicle leases, fuel, maintenance, insurance, route planning
Customer service and account management60,000Account managers, customer service desk, order chasing, claims handling
Total452,500
The result

three resource groups totalling EUR 452,500 of serving cost to explain.

2
Step 2

Calculate practical capacity (the 85% rule)

Theoretical capacityPractical capacity (used)85%Unused

This is the step most people get wrong, and getting it right is the heart of TDABC. You must divide cost not by the time people theoretically could work, but by the time they can practically deliver useful work.

A full-time employee is paid for, say, 8 hours a day, but nobody picks orders or drives for 8 productive hours. There are breaks, training, meetings, set-up, cleaning, arrivals and departures. Kaplan and Anderson recommend taking practical capacity at roughly 80% to 85% of theoretical capacity for people, and around 85% for equipment, to leave realistic room for downtime and maintenance.

CaP uses practical capacity = 85% of theoretical.

CaP counts a full resource-year at 110,000 theoretical minutes. Two pickers give 220,000, three drivers give 330,000, and one service and account manager gives 110,000. Apply the 85% rule to each.

Resource groupTheoretical capacity (min/yr)x 85% = Practical capacity (min/yr)
Warehouse and picking220,000187,000
Delivery (drivers and fleet)330,000280,500
Customer service and account management110,00093,500

Why not 100%? Because if you divide cost by theoretical capacity you will understate the true cost of every minute, and the "missing" cost vanishes. Dividing by practical capacity does something powerful: any capacity you supply but do not use shows up explicitly as the cost of unused capacity. That number is a management signal, not a cost to be smeared across customers. This single discipline is what separates a credible TDABC model from a misleading one.

The result

practical capacities of 187,000, 280,500 and 93,500 minutes per year.

3
Step 3

Compute the capacity cost rate

CostEUR/Minutesmin=Rate/min

Now the first of the two parameters falls out with one division:

Capacity cost rate = total cost of the resource group / practical capacity of that group.

This gives you the cost of a single minute of available capacity.

Resource groupCost (EUR)/ Practical capacity (min)= Rate (EUR/min)
Warehouse and picking160,000187,0000.856
Delivery (drivers and fleet)232,500280,5000.829
Customer service and account management60,00093,5000.642
The result

three capacity cost rates - EUR 0.856, EUR 0.829 and EUR 0.642 per minute. These three rates will price everything that follows.

4
Step 4

Write the time equations

Time equation =Fixed+Variable+Conditional

The second parameter is the time equation: a formula that predicts how many minutes a transaction consumes from a given resource group, as a function of the transaction's characteristics. This is where TDABC absorbs real-world complexity. Instead of forcing every order into one average, you add a term for each thing that genuinely drives time, including conditional terms that only fire when a special condition is present (a return, a hazardous item, a manual order, a fragile drop).

CaP uses three time equations.

Warehouse pick time (minutes per order)

Pick time = 4 + (1.5 x order lines) + (6 x return lines)
  • 4 minutes is the fixed set-up to handle any order: retrieve, stage, confirm.
  • 1.5 minutes is added for every order line picked.
  • 6 minutes is a conditional term: it only adds time when a line is a return, which is far more labour-intensive than a normal pick.

Delivery time (minutes per drop)

Drop time = travel minutes + 1.5 + (0.33 x cases)
  • travel minutes is the route time to reach the customer (from the routing system).
  • 1.5 minutes is the fixed park-and-unload time at every drop.
  • 0.33 minutes is added per case delivered.

Account management time (minutes per customer per year)

Account time = monthly minutes by service intensity x 12
  • Each customer is tagged with a service intensity (light, standard, heavy) that maps to a number of minutes per month; multiply by 12 for the annual figure.

The logic to remember: fixed terms capture the cost of simply showing up; variable terms capture volume; conditional terms capture the expensive exceptions that averages hide. Kaplan and Anderson stress that this is what lets one equation cover thousands of varied transactions without a separate cost pool for each.

The service intensity ladder. CaP tags every account light, standard or heavy, and each tag maps to a fixed number of minutes per month:

  • light 180 minutes a month: an account that orders and rarely calls.
  • standard 600 minutes a month.
  • heavy 1,200 minutes a month: weekly reviews, promotions, claims.

One more convention keeps the model readable: CaP makes one delivery drop per order, so order counts and drop counts are the same number.

The result

three time equations ready to run over the data.

5
Step 5

Assign cost to orders, customers and products

One orderWarehouse rateDelivery rateAccount rateCost to serve43,312 EUR

Now you run the engine. For every transaction, the time equations produce minutes; multiply each block of minutes by its capacity cost rate; sum across all of a customer's orders, deliveries and service touches; and you have that customer's cost to serve.

Worked detail for one customer, Online pure-play G, shows how a small account can quietly destroy value:

Resource groupDriver volume (per year)Minutes (from equation)x Rate (EUR/min)= Cost (EUR)
Warehouse and picking1,400 tiny orders of 2 lines, 320 return lines11,7200.85610,032
Delivery (drivers and fleet)1,400 drops, 6 cases each, 24 min travel38,4720.82931,893
Customer service and account managementlight intensity, 180 min a month2,1600.6421,387
Cost to serve, Online pure-play G43,312

Online pure-play G generates a gross profit of only EUR 46,800 (revenue EUR 260,000 at 18% gross margin), but its cost to serve is EUR 43,312. That leaves a net profit of just EUR 3,488, a 1.3% net margin. The driver is structural: 1,400 tiny orders a year, 320 return lines, and only 6 cases per delivery drop. The customer looks fine on gross margin and is almost worthless on net. Only TDABC surfaces that.

Before the costs, here are the driver volumes the equations run on. Every figure in the next table comes from these seven columns and the three rates, so you can reproduce any line of it with a calculator.

ClientOrders and dropsLines per orderReturn linesCases per dropTravel min per dropService intensity
National Retail A950243803032heavy
Regional Chain B780183002028heavy
Wholesaler C26030905045standard
Contract H20026604440standard
Foodservice D1,15082601020heavy
Online pure-play G1,4002320624light
Convenience E9005140615light
Independent F7006110516light
Small accounts I8004130318standard
New account J400570420standard

Run the same engine over all 10 accounts and the full picture emerges:

ClientRevenue (EUR)Gross margin %Cost to serve (EUR)Gross profit (EUR)Net profit (EUR)Net %
National Retail A1,350,00021%77,905283,500205,59515.2%
Regional Chain B820,00023%54,827188,600133,77316.3%
Wholesaler C640,00025%29,569160,000130,43120.4%
Contract H520,00024%21,580124,800103,22019.9%
Foodservice D410,00020%49,97482,00032,0267.8%
Online pure-play G260,00018%43,31246,8003,4881.3%
Convenience E190,00016%24,75430,4005,6463.0%
Independent F145,00017%20,85524,6503,7952.6%
Small accounts I95,00015%25,72714,250-11,477-12.1%
New account J70,00016%16,48611,200-5,286-7.6%
Total4,500,000364,989966,200601,21113.4%
Step 5b

Reconcile to the cost base: resources used against resources supplied. The ten accounts consumed 452,931 of the 561,000 practical minutes CaP supplies, which is 80.7% of them. The other 108,069 minutes were paid for and not sold. Valued at the same three rates, they cost 87,511 EUR. That number belongs on the management report, not on a customer. Spreading it across the ten accounts would make every one of them look worse than it is, and that is exactly what traditional absorption costing does.

Resource groupCost pool (EUR)Practical capacity (min)Minutes usedMinutes unusedCost assigned (EUR)Cost of unused capacity (EUR)
Warehouse and picking160,000187,000154,93032,070132,62227,378
Delivery (drivers and fleet)232,500280,500219,52160,979181,98350,517
Customer service and account management60,00093,50078,48015,02050,3849,616
Total452,500561,000452,931108,069364,98987,511

Read the last column as the pool less what the accounts absorbed. Warehouse supplies 160,000 EUR of capacity, the ten accounts absorbed 132,622 of it, and 27,378 stayed on the shelf. The assigned column adds up to 364,989, which is the cost to serve total in the table above.

Now the model closes. Gross profit of 966,200, less the 364,989 of resource the ten accounts actually used, leaves 601,211. Take off the 87,511 of unused capacity and CaP's operating profit is 513,700, or 11.4% of revenue. Used plus unused is 452,500, which is the cost base from Step 1 to the euro. A TDABC model that cannot close this loop is not finished, and the gap is usually the most interesting number on the page, because it is capacity you are paying for and nobody is buying.

The result

a total cost to serve of EUR 364,989 and a net profit of EUR 601,211 (13.4% net margin) - with two accounts now visibly in the red.

6
Step 6

Build the whale curve

Peak 617,974Tail -16,763Most profitableLeast

Rank the customers from most to least profitable, then plot the cumulative net profit. The line climbs steeply through the good accounts, flattens as the marginal ones add little, peaks, and then bends downward as the loss-makers eat into the total. The shape resembles a whale surfacing, which is why it is called a whale curve.

RankClientNet profit (EUR)Cumulative profit (EUR)
1National Retail A205,595205,595
2Regional Chain B133,773339,368
3Wholesaler C130,431469,799
4Contract H103,220573,019
5Foodservice D32,026605,045
6Convenience E5,646610,691
7Independent F3,795614,486
8Online pure-play G3,488617,974 (peak)
9New account J-5,286612,688
10Small accounts I-11,477601,211 (final)

Cumulative profit peaks at EUR 617,974 after the eighth account (Online pure-play G), then the loss-making tail (Small accounts I and New account J) drags it back down to the reported EUR 601,211. The tail destroys EUR 16,763 of profit that the rest of the business has already earned.

Note what this means commercially: 2 of 10 accounts are loss-making (20% of the customer base), they represent only about 4% of revenue, yet they actively destroy value. This is the pattern Kaplan documented again and again: a small group of customers can quietly erase a large slice of profit, and it is invisible at gross-margin level because every one of these accounts shows a positive gross margin.

The result

a whale curve peaking at EUR 617,974 with a tail that costs EUR 16,763.

7
Step 7

Decide and act

Reprice the tailReduce cost to serveRe-mix the bookProfit recovered16,763 EUR

A model that only describes is half a model. The point of TDABC is to change decisions. There are three levers, and the right move is usually a blend of all three rather than firing customers.

Lever 1 - Reprice the tail. The loss-makers (Small accounts I, New account J) and the near-zero accounts (Independent F, Convenience E, Online pure-play G) are loss-making because of how they buy, not whether they should be served. CaP would introduce a small-order surcharge, a minimum order value, or a delivery charge below a case threshold, so that price reflects the cost driven.

Lever 2 - Reduce the cost to serve. Many of those costs are self-inflicted by ordering patterns. CaP would consolidate Online pure-play G's 1,400 tiny orders into fewer, fuller drops, move it to a lower-cost delivery slot, and tackle the 320 return lines at source (better product data, fewer wrong picks). Each minute removed flows straight back to net profit at the capacity cost rate.

Lever 3 - Re-mix. CaP knows precisely what a profitable account looks like (Wholesaler C and Contract H, both close to 20% net). It would steer sales and marketing toward that profile and away from chasing revenue that arrives with a negative tail.

The result

a concrete plan to recover the EUR 16,763 destroyed by the tail and to protect the EUR 513,700 the business actually earns - the difference between revenue chased and profit kept.

Common mistakes to avoid

  • Costing at actual use, not practical capacity. If you divide cost by the minutes actually consumed, every model balances perfectly and tells you nothing, because unused capacity is hidden. Always divide by practical capacity (the ~85% rule) so idle capacity surfaces as its own line.
  • Going back to surveys. The moment you start asking staff to estimate percentages of their time across activities, you have rebuilt classic ABC and inherited all its cost and decay. Use observed times and time equations instead.
  • Stopping at gross margin. Every loss-making CaP account had a healthy gross margin. Gross margin tells you about the product; net margin after cost to serve tells you about the customer. Stop too early and you will protect exactly the wrong accounts.
  • Too many cost pools. Hundreds of activity pools made ABC unmaintainable. TDABC deliberately uses a handful of resource groups plus time equations to absorb variety. If your model has dozens of pools, simplify.

How long does it take?

With clean transactional data already sitting in your ERP, WMS and CRM, a first working TDABC model is a matter of days to a few weeks, not months. The heavy lifting is gathering resource-group costs, agreeing practical capacity, and writing a handful of time equations. By contrast, a classic ABC build, with its activity surveys and hundreds of cost pools, routinely took months and then decayed because nobody wanted to re-survey. That speed advantage is exactly why Kaplan and Anderson created the time-driven approach. The model is also cheap to refresh: when costs or volumes change, you update two parameters, not the whole architecture.

FAQ

How do you build a TDABC model?

You build it in seven steps: map your resource groups and their cost; calculate practical capacity at roughly 85% of theoretical; compute each group's capacity cost rate (cost divided by practical capacity); write time equations that estimate minutes per transaction; run those equations over your transactional data to assign cost to orders, customers and products; rank customers into a whale curve; then act on the tail. The whole model rests on just two parameters per resource group: the capacity cost rate and the time equations.

What data do you need for TDABC?

The total cost of each resource group, the quantity of resource supplied (so you can estimate practical capacity), and transactional data such as orders, order lines, deliveries, returns and cases. Most of this already exists in your ERP, warehouse and CRM systems. Critically, you do not need employee time-allocation surveys, which is what made classic ABC slow and political.

How long does a TDABC model take to build?

With clean data, a first model takes days to a few weeks. Classic ABC, by comparison, often took months and then went stale because it relied on repeated surveys. TDABC is also faster to maintain, because you update only the capacity cost rate and the time equations when things change.

What is a capacity cost rate?

It is the cost of supplying one minute (or hour) of available capacity from a resource group. You calculate it by dividing the group's total cost by its practical capacity, not its theoretical capacity. Using practical capacity (about 85% of theoretical) means any capacity you pay for but do not use shows up explicitly as the cost of unused capacity, rather than being hidden inside customer costs.

How many cost pools do you need for TDABC?

Far fewer than classic ABC. You group resources into a small number of resource groups, typically a handful and rarely more than a dozen, then let time equations absorb the variety within each group. If your model is sprawling into dozens or hundreds of pools, you have drifted back toward the old ABC that TDABC was designed to replace.

Why is practical capacity set at 85%?

Because no team or asset works productively for 100% of paid time. Breaks, training, meetings, set-up, downtime and maintenance all consume capacity. Kaplan and Anderson recommend roughly 80% to 85% of theoretical capacity as a realistic default, which keeps the capacity cost rate honest and surfaces unused capacity as a management signal.

References

Sources

Canonical works behind this method. Each opens in a new tab.

  1. Paper
    Time-Driven Activity-Based CostingKaplan, R. S. & Anderson, S. R. (2004). Harvard Business Review 82(11).
    The founding article defining TDABC and its two-parameter model.
  2. Book
    Time-Driven Activity-Based Costing: A Simpler and More Powerful Path to Higher ProfitsKaplan, R. S. & Anderson, S. R. (2007). Harvard Business School Press.
    Book-length treatment of TDABC with implementation cases.
  3. Book
    Cost & Effect: Using Integrated Cost Systems to Drive Profitability and PerformanceKaplan, R. S. & Cooper, R. (1998). Harvard Business School Press.
    Comprehensive framework linking ABC to product and customer profitability.
  4. Paper
    Cost modeling in logistics using time-driven ABC: Experiences from a wholesalerEveraert, P., Bruggeman, W., Sarens, G., Anderson, S. R. & Levant, Y. (2008). International Journal of Physical Distribution & Logistics Management 38(3).
    Peer-reviewed real-company time equations validating the method in logistics.
  5. Paper
    Profit Priorities from Activity-Based CostingCooper, R. & Kaplan, R. S. (1991). Harvard Business Review 69(3).
    Shows how ABC reveals unprofitable customers and products hidden by averaging.

Proof

A distributor in New Zealand. €1.335M of cost-to-serve made visible, then halved, and 830 loss-making customers brought down to 295.

Read the case study →

Who you would be talking to

Miguel Guimarães, Founding Partner

Cost and profitability practitioner for 25+ years. Presented the Damco cost-to-serve case at Managing for Profit (Amsterdam RAI, December 2009), on the same programme as Robert S. Kaplan.

Call +351 910 313 731

Workshops20-21 Oct · Online, ZoomReserve a seat

Miguel Guimarães

Reviewed by

Miguel Guimarães

Founding Partner, Cost and Profitability Consulting

More than 150 Time-Driven ABC engagements across 11 sectors since 2010, working within the Kaplan and Anderson framework.

About the author →

Published

M
Ask us anything
usually replies in minutes
Hi. I can answer the quick questions about cost, method and timing right here. For anything specific to your business, I'll connect you with a CostCtrl specialist on WhatsApp.
Free. No bot loops. Straight to a specialist.
Most read
  1. 1Time-driven activity-based costing: ABC made simple and scalable
  2. 2Cost-to-Serve Analysis
  3. 3The Whale Curve
  4. 4TDABC vs ABC
  5. 5Make-or-Buy and Relevant Costs
  6. 6Cost-Volume-Profit (CVP) and Break-Even Analysis
  7. 7Customer Profitability Analysis
  8. 8Methods & Frameworks: how we cost, defensibly
  9. 9TDABC for Financial Services
  10. 10How to calculate cost to serve, step by step