Skip to main content
Business Finance

Activity-Based Costing: Example and Steps

Activity-based costing explained with a worked example: identify activities, pick cost drivers, calculate rates and see which products or clients profit.

By Invoice Creator Editorial Team 9 min read

Activity-based costing (ABC) assigns overhead to products, services or clients according to the activities each one actually consumes, rather than spreading it evenly by labor hours or revenue. It answers a question a single overhead rate cannot: which customers and products are really profitable once the hidden work behind them is counted. For small businesses with a mix of simple and demanding work, the answer is often surprising.

This guide explains how ABC works, how it differs from traditional costing, and how to run it in five steps. It ends with a worked example for a small packaging company and notes on applying the same approach to a service firm's client list.

Why traditional overhead allocation can mislead you

Traditional costing applies one plant-wide or company-wide overhead rate, usually per direct labor hour or per machine hour. That works when overhead rises with volume. It fails when overhead is driven by complexity: number of orders, setups, product variants, revisions or support requests.

Under a single rate, high-volume simple products absorb too much overhead, and low-volume complex products absorb too little. The business then underprices complex work and overprices its bread-and-butter items, sometimes losing the very customers who were most profitable. If you already calculate an overhead rate as described in our overhead costs guide, ABC is the next level of precision.

FeatureTraditional costingActivity-based costing
Overhead poolsOne (or one per department)Several, one per activity
Allocation baseLabor hours, machine hours or salesCost drivers: orders, setups, tickets, invoices
Effort to maintainLowModerate to high
Accuracy for diverse productsLowHigh
Best forFew, similar products or servicesMany products, variants or very different clients

How to do activity-based costing in 5 steps

  1. Identify the main activities. List the things your team does that consume overhead: purchasing, receiving, machine setups, quality checks, order processing, shipping, customer support, invoicing and collections. Five to eight activities are plenty for a small business.
  2. Assign overhead costs to each activity. Split salaries by the share of time staff spend on each activity (a short interview or a two-week time log is enough). Assign software, equipment and space costs to the activities that use them.
  3. Choose a cost driver for each activity. Pick a countable measure that moves with the cost: number of purchase orders, setups, inspections, orders, support tickets or invoices.
  4. Calculate an activity rate. Activity rate = activity cost pool / total driver volume. For example, $36,000 of order processing cost / 4,500 orders = $8 per order.
  5. Assign costs to products or clients. Multiply each product's or client's driver usage by the activity rate, then add direct materials and direct labor to get full cost.

This is the classic two-stage model popularized by Robert Kaplan and Robin Cooper. Professor James R. Martin's free ABC analysis notes on Management And Accounting Web also show how to separate the cost of unused capacity, which is useful when an activity is staffed for more volume than it handles.

Worked example: activity-based costing for two product lines

The figures are illustrative. A small packaging company makes standard shipping boxes and custom printed boxes. Annual overhead is $240,000. Under traditional costing it allocates overhead at $24 per direct labor hour, based on 10,000 labor hours.

Standard boxesCustom printed boxes
Units sold200,00020,000
Revenue$300,000$110,000
Direct materials + labor$170,000$45,000
Direct labor hours8,0002,000
Overhead under traditional rate ($24/hr)$192,000$48,000
Profit (traditional)-$62,000$17,000

On these numbers, management might drop standard boxes and push custom work. Now the ABC analysis. Overhead is split into four activities:

ActivityCost poolDriverTotal driver volumeRate
Machine setups$84,000Setups420$200 per setup
Design and proofing$60,000Design jobs300$200 per job
Order processing and invoicing$36,000Orders1,800$20 per order
Machine running$60,000Machine hours6,000$10 per hour

Driver usage by product line:

DriverStandardCustomStandard overheadCustom overhead
Setups60360$12,000$72,000
Design jobs0300$0$60,000
Orders6001,200$12,000$24,000
Machine hours4,8001,200$48,000$12,000
Total overhead$72,000$168,000

Profit under ABC: standard boxes $300,000 - $170,000 - $72,000 = $58,000; custom boxes $110,000 - $45,000 - $168,000 = -$103,000. The picture has flipped. Custom work, with its many small orders, setups and design proofs, is consuming most of the overhead. The fix is not necessarily to drop custom boxes but to price them properly: a setup fee, a design fee and a minimum order quantity would recover the activity costs. Our guide to cost-plus pricing shows how to build those fees into a quote.

Activity-based costing for service businesses and client profitability

ABC is just as useful for agencies, consultancies, bookkeepers and IT providers, where overhead is mainly non-billable staff time. Typical activities and drivers:

  • Client onboarding: number of new clients or projects
  • Revisions and change requests: number of revision rounds
  • Meetings and status calls: meeting hours
  • Reporting: number of reports produced
  • Invoicing and collections: number of invoices and number of reminders sent

Run the numbers per client and you may find that a $2,000-a-month retainer client who needs weekly calls, three revision rounds and two payment reminders every month earns less than a $1,200 client who pays on time. That insight supports clearer scope, revision limits, retainer minimums or stricter payment terms. See our guide to raising prices for how to communicate the change, and unit economics for tying client profit back to acquisition cost.

Choosing good cost drivers

A cost driver works when three things are true: the data already exists in your systems, the cost really changes when the driver changes, and staff agree it is fair. Invoice counts come from your invoicing tool, orders from your sales system, and support tickets from your helpdesk. If you have to invent a new tracking process just to measure a driver, the activity probably is not worth a separate pool.

Watch out for activities that are batch-level rather than unit-level. A machine setup costs the same whether the run is 50 boxes or 5,000, which is exactly why small runs look cheap under traditional costing and expensive under ABC.

Common mistakes with activity-based costing

  • Too many activities. Twenty pools for a ten-person business creates work without changing decisions. Start with the few largest.
  • Guessing time splits. A short time log beats a manager's guess.
  • Allocating costs that no activity drives, such as owner salary or audit fees, by a fake driver. Keep these as a separate business-sustaining cost.
  • Treating ABC results as the price. ABC tells you cost; price still depends on market, value and competitors. Compare with value-based pricing.
  • Never updating. Automation changes activity costs. If you switch to automated reminders, the collections pool shrinks.

ABC vs other costing methods

ABC is about how overhead is spread. It sits alongside other costing choices rather than replacing them. Job costing tracks costs per project and can use ABC rates for its overhead line. Absorption vs variable costing is a separate decision about whether fixed production overhead goes into inventory at all. And contribution margin analysis ignores fixed overhead entirely to focus on short-term decisions. Many small businesses use contribution margin for quick calls and ABC once a year to check whether product lines and clients pull their weight.

A lighter version: time-driven ABC for small teams

Full ABC asks staff to estimate what share of their time goes to each activity, which can feel like guesswork and needs repeating whenever work patterns change. Kaplan and Anderson's time-driven variation is simpler and suits small businesses well. You need just two numbers:

  1. Cost per minute of capacity. Take the total cost of a team or department (salaries, burden, software, space) and divide by the practical minutes the team is available to work. A three-person admin team costing $180,000 a year with about 300,000 practical minutes costs $0.60 per minute.
  2. Minutes per activity. Estimate how long each activity takes: 6 minutes to create and send an invoice, 15 minutes to chase an overdue one, 45 minutes to onboard a new client.

Each activity's cost is simply minutes times cost per minute: an invoice costs $3.60 to produce, each reminder $9.00, and onboarding $27.00. Multiply by each client's volumes and you have client-level costs without any interviews. The method also shows unused capacity: if the activities you count add up to only 240,000 minutes, a fifth of the team's cost is idle time, which is a staffing question rather than a client pricing one.

Time-driven ABC is also easy to update. When you automate invoice reminders, change the minutes per reminder and every client's cost updates at once.

What to do if ABC shows a big client is unprofitable

Do not drop the client on the first analysis. Check the data, then work through the options in order: reduce the activities they consume (fewer meetings, consolidated monthly invoicing, self-service reporting), charge for the activities separately, raise the base price at renewal, and only then consider ending the relationship. Remember that some overhead will not disappear if the client leaves; if the admin team stays the same size, dropping the client may cut revenue more than cost. Compare the client's revenue with the costs that would genuinely go away, which is the contribution margin view of the same decision.

Using ABC results in pricing and invoicing

Once you know the cost of an activity, you can make it visible to clients instead of absorbing it. Common examples:

  • A setup or onboarding fee as a separate invoice line
  • A per-revision charge after an included number of rounds
  • A small-order or rush fee
  • Bundled pricing that includes a fixed number of reports or meetings

Separate line items also make discussions easier: a client who wants a discount can choose to drop an activity rather than squeeze your margin. You can list these fees clearly in the free invoice generator.

Activity-based costing takes a few days to set up and an hour or two a year to maintain, and it often pays for itself the first time it stops you from underpricing complex work. When your new fees are ready, build itemized invoices in our free invoice generator: no sign-up, and you can download each invoice as a PDF immediately.

Frequently asked questions

What is activity-based costing in simple terms?

Activity-based costing (ABC) assigns overhead to products, services or customers based on the activities they actually use, instead of spreading it evenly by labor hours or sales. You group overhead into activities like order processing, setups or customer support, find what drives each one, and charge each product or client for its share. The result is a more accurate cost per product or client, which often reveals that small, complex accounts are far less profitable than they look.

What is a cost driver in activity-based costing?

A cost driver is the measurable factor that causes an activity's cost to rise or fall. For order processing it might be the number of orders; for machine setups, the number of setups; for customer support, the number of tickets or support hours; for invoicing, the number of invoices. A good driver is easy to count from existing records and moves in step with the cost. If the cost does not change when the driver changes, choose a different driver.

What are the disadvantages of activity-based costing?

ABC takes more time and data than a single overhead rate. You need to interview staff about how they spend their time, track driver volumes and update rates periodically. For a business with one main product or very similar clients, the extra precision may not change any decisions. Some costs, like the owner's general management time, do not have a clear driver and still have to be allocated somewhat arbitrarily. ABC also is not used for external financial statements without adjustment.

Is activity-based costing allowed under GAAP?

ABC can be used to assign manufacturing overhead to inventory under GAAP, as long as the costs included are inventoriable production costs. Many companies, however, use ABC mainly for internal decisions such as pricing, product mix and client profitability, and include non-manufacturing costs like sales and support that GAAP does not allow in inventory. In that case, the ABC figures are a management report, while the financial statements still follow standard absorption costing rules.

Can a service business use activity-based costing?

Yes, and service firms often benefit most because their overhead is mostly people's time. An agency, accounting practice or IT support company can identify activities such as onboarding, revisions, meetings, reporting and invoicing, then measure how much of each activity every client consumes. The analysis frequently shows that a few demanding clients absorb a large share of non-billable time, which supports repricing, minimum fees or tighter scope.

How often should activity rates be updated?

Most small businesses update activity rates once a year as part of budgeting, and again if something changes significantly, such as new software that automates invoicing or a new location. Between updates, you only need to count driver volumes for each product or client. Avoid recalculating rates every month, since normal fluctuations in volume will make costs jump around and confuse pricing decisions.

IC

Invoice Creator Editorial Team

Guides on invoicing, cash flow and small-business finance from Invoice Creator, operated by Next Software Development Company. Content is reviewed for accuracy against the fields our own invoice generator produces.

Try the invoice generator

Related reading