Most product costs are wrong in the same quiet way. A single overhead rate spreads indirect costs evenly across everything you make, so simple high-volume products carry costs they never caused, and complex low-volume ones look cheaper than they really are. The fix is not a more precise rate. It is allocating overhead by cause.
How do you allocate overhead without distorting product cost?
Stop using one plant-wide rate. Group overhead into cost pools that share a cause, then assign each pool to products using the driver that actually consumes it: setups, purchase orders, inspections, machine time. This traces cost to the work that creates it, so high-volume products stop subsidising the complex ones that quietly eat your capacity.
Why one overhead rate quietly distorts everything
A plant-wide rate answers one question: how much indirect cost per labour hour, or per machine hour, or per unit? It then applies that single answer to products that behave nothing alike. The high-runner that flows straight through the line and the small custom batch that needs three setups and a special inspection both get charged the same overhead per hour. One is overcharged, the other is undercharged, and the two errors hide each other in the total.
The distortion is not random. Volume-based rates systematically over-cost simple, high-volume products and under-cost complex, low-volume ones, because complexity consumes overhead that has nothing to do with volume. When your cost report says the runner is barely profitable and the niche product is a star, the report is usually describing the allocation method, not the business.
Start with the cause, not the spreadsheet
Before you allocate anything, ask what actually makes overhead go up. Setups drive scheduling, changeover and some maintenance. Order lines drive purchasing, receiving and invoicing. Number of components drives inspection and storage. Each of these is a cause, and each is measurable in the systems you already run: your ERP, your production records, your CRM. Allocation is only accurate when the driver you pick is the thing that genuinely triggers the cost.
This is where most models go wrong. They choose a driver because the data is easy to pull, not because it explains the cost. Direct labour hours became the default overhead driver in an era when labour dominated cost. In most operations today it explains almost nothing, yet it still carries the overhead by inertia.
Match each cost pool to its real driver
The practical method is short. Split overhead into a handful of pools that each move for the same reason. Assign a driver to each pool that measures how much of that activity a product consumes. Then the rate is simply pool cost divided by total driver quantity, applied to each product by its own consumption. You do not need dozens of pools. Four or five well-chosen ones usually remove most of the distortion.
Time-driven activity-based costing takes this one step further by expressing each activity as time and costing it at the rate of supplying capacity. That keeps the model light and makes unused capacity visible instead of burying it in product cost, which is often the single largest hidden distortion of all.
What changes when the numbers are right
Accurate overhead allocation rarely leaves the product ranking untouched. Products you believed were your margin engine turn out to be average once they carry the setups and handling they cause. Others you were tempted to drop turn out to be genuinely profitable. Pricing, product-line decisions and where you spend improvement effort all shift when the cost finally follows the cause.
Overhead does not become a decision cost until it is traced to what caused it.
The goal is not a perfect number. It is a number your team trusts enough to act on. When a plant manager can see that a product is expensive because of its setups, not because of a mysterious rate, the conversation moves from arguing about the model to fixing the driver.
You do not need a perfect model to begin
Start with the overhead pools that are large and clearly caused by something other than volume. Assign the best driver you already measure, accept that it is directional, and refine it once the ranking shifts. A rough model built on real causes beats a precise rate built on the wrong one. The distortion you remove in the first pass is almost always worth more than the precision you chase in the fifth.
If you want to see where a single rate is masking cross-subsidies in your own product costs, a structured diagnostic is the fastest way to find them. That is exactly what our overhead allocation work and our guide to the most common allocation mistakes are built to surface.
A Profitability Health Check shows you which products are over-costed, which are subsidised, and which driver is doing the damage.