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.

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

Warehouse480,000Delivery620,000Account mgmt240,000Total serving cost1,340,000 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.

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

three resource groups totalling EUR 1,340,000 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.

Resource groupTheoretical capacity (min/yr)x 85% = Practical capacity (min/yr)
Warehouse and picking660,000561,000
Delivery (drivers and fleet)880,000748,000
Customer service and account management440,000374,000

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 561,000, 748,000 and 374,000 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 picking480,000561,0000.856
Delivery (drivers and fleet)620,000748,0000.829
Customer service and account management240,000374,0000.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 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, 320 return linesfrom pick equation0.85610,032
Delivery (drivers and fleet)many drops, only 6 cases eachfrom drop equation0.82931,893
Customer service and account managementstandard intensityfrom account equation0.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.

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%23,626283,500259,87419.2%
Regional Chain B820,00023%17,143188,600171,45720.9%
Wholesaler C640,00025%14,448160,000145,55222.7%
Contract H520,00024%10,270124,800114,53022.0%
Foodservice D410,00020%29,10582,00052,89512.9%
Online pure-play G260,00018%43,31246,8003,4881.3%
Convenience E190,00016%26,31730,4004,0832.1%
Independent F145,00017%23,39124,6501,2590.9%
Small accounts I95,00015%24,47214,250-10,222-10.8%
New account J70,00016%17,18711,200-5,987-8.6%
Total4,500,000229,271966,200736,92916.4%
The result

a total cost to serve of EUR 229,271 and a net profit of EUR 736,929 (16.4% net margin) - with two accounts now visibly in the red.

6
Step 6

Build the whale curve

Peak 753,137Tail -16,208Most 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 A259,874259,874
2Regional Chain B171,457431,331
3Wholesaler C145,552576,883
4Contract H114,530691,413
5Foodservice D52,895744,308
6Convenience E4,083748,391
7Online pure-play G3,488751,879
8Independent F1,259753,137 (peak)
9Small accounts I-10,222742,915
10New account J-5,987736,929 (final)

Cumulative profit peaks at EUR 753,137 after the eighth account (Independent F), then the loss-making tail (Small accounts I and New account J) drags it back down to the reported EUR 736,929. The tail destroys EUR 16,208 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 753,137 with a tail that costs EUR 16,208.

7
Step 7

Decide and act

Reprice the tailReduce cost to serveRe-mix the bookProfit recovered16,208 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 above 22% 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,208 destroyed by the tail and to protect the EUR 736,929 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.

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 hand you to Miguel on WhatsApp.
Free. No bot loops. Straight to a person.