Short version: An overhead rate is how you charge each job its fair share of the costs that don't attach to any one job: the shop, the trucks, the office, the owner. Build it in five steps: define the overhead pool from last year's actuals, pick the allocation base that drives overhead (usually direct labor hours in a job shop or trades business), divide pool by base to get the rate, apply it to every job estimate and job cost report, and compare applied overhead to actual at year-end. The rate lives in your estimating and job reports, not in cost of goods sold.
"We're busy but we're broke" is the most common sentence I hear from job-shop and trades owners, and the cause is almost always the same: jobs are priced on materials and labor, and the shop, trucks, insurance, and office are supposed to come out of what's left. They don't. An overhead rate is how you put those costs into the price of every job before you quote it, so the margin on the estimate is the margin you actually keep.
Overhead is every cost of running the operation that can't be traced to a specific job. The pool is the annual total. Pull last year's P&L and sort every expense line into one of three buckets:
Watch the direct-labor line. If field or shop wages are sitting in operating expenses, pull them out to cost of goods sold before you build the pool, or you'll be allocating labor to itself. The chart of accounts has to separate direct from indirect labor for any of this to work.
Adjust the pool for the year ahead: known rent increases, an added truck, a planned hire. The rate is forward-looking because it's used on quotes for next year's work.
The base is the measure of activity that drives overhead. The right base is the one that, when a job uses more of it, the shop costs more to run. The candidates:
| Base | Best for | Watch out for |
|---|---|---|
| Direct labor hours | Trades, service, fabrication, any shop where people-time drives the work. The usual default. | Needs reliable time tracking by job. If hours aren't captured, the rate is applied to a guess. |
| Direct labor dollars | Shops where wage rates vary a lot by job type and higher-skill work also consumes more overhead. | A raise changes the allocation even though the shop cost didn't. Rate expressed as a percentage. |
| Machine hours | Equipment-heavy work: CNC, printing, routing, large-format, where the machine is the bottleneck and the main cost. | Needs machine time by job, which few small shops log. Often used for one department and labor hours for the rest. |
| Direct cost (materials + labor) | Quick and crude; common in construction as a flat percentage. | Allocates more overhead to material-heavy jobs that didn't use the shop much. Distorts pricing on big-material work. |
For most job shops and trades businesses, direct labor hours is the answer. If you have one department that's clearly machine-driven, give it its own rate on machine hours. Don't build five departmental rates for a twelve-person shop; the precision is fake and nobody will maintain it.
Rate = overhead pool ÷ expected base. Use the hours you expect to bill to jobs, not the hours you'll pay for. The difference matters.
| Line | Amount |
|---|---|
| Overhead pool (production + G&A), adjusted for next year | $486,000 |
| Direct labor headcount | 6 people |
| Paid hours per person (52 weeks × 40) | 2,080 |
| Less PTO, holidays, training, shop cleanup, idle time (~22%) | (458) |
| Productive hours per person | 1,622 |
| Total productive direct labor hours | 6 × 1,622 = 9,732 |
| Overhead rate | $486,000 ÷ 9,732 = $49.94 per direct labor hour |
Call it $50. If the shop had used paid hours (12,480) instead of productive hours, the rate would be $38.94, and every job would be under-recovering overhead by about $11 an hour. That one mistake, using paid hours instead of productive hours, is the most common reason a calculated rate doesn't cover the shop.
Now the fully loaded labor cost per hour:
Average direct wage $28.00
Labor burden (taxes, WC, benefits ~24%) 6.72
Overhead rate 50.00
------
Fully loaded cost per labor hour $84.72
That's the number that goes into estimating. A job you quote at $75 an hour for labor is losing money before materials, and the P&L will confirm it at year-end, just too late to do anything about it.
The rate is applied in two places:
At year-end, compare overhead applied (hours × rate) to actual overhead spent. The difference is over- or under-applied overhead, and it tells you something:
For the books, the difference is usually closed to cost of goods sold at year-end if you've been applying overhead through the ledger. For the business, the point is the recalculation: new pool, new productive hours, new rate, every January. A rate that hasn't been recalculated in three years is wrong in a direction you can't see.
The owner's test: add up a year of labor hours on invoices and multiply by the overhead rate. If that's less than what the shop actually cost to run, you've been paying the difference out of profit, every job, all year.
Building the pool, choosing the base, and setting up job costing so estimated-versus-actual actually works is a standard first project for a fractional controller.
The Contractor Job Costing & WIP Schedule workbook covers the layer underneath this one. Its Labor Burden tab takes your actual employer tax, workers comp, benefit and unbillable-hour rates and returns a fully burdened hourly rate, which is the wage-plus-burden figure you add the overhead rate to. It also carries estimate versus actual by cost type, job margin against what you bid, and a percentage-of-completion WIP schedule. What it deliberately does not do is allocate the overhead pool into job cost, for the reason above: applied overhead belongs in estimating and in an entry that offsets to a contra account, not reclassified into COGS. Build the rate here, cost the labor there.
The amount of indirect cost (shop, equipment, vehicles, insurance, office) charged to each unit of activity, usually each direct labor hour. It's calculated as the annual overhead pool divided by the expected productive direct labor hours, and it's added to wages and burden to get a fully loaded cost per hour for estimating and job costing.
Total next year's expected overhead costs (every cost not traceable to a specific job), then divide by the productive direct labor hours you expect to charge to jobs, which is paid hours minus PTO, holidays, training, and idle time. Using paid hours instead of productive hours understates the rate.
No. Keep actual overhead in operating expenses so gross margin reflects direct costs only. Apply overhead to jobs through estimating and job cost reports, or through an applied-overhead entry that offsets to a contra account, rather than reclassifying actual overhead into COGS.
It varies too much by shop to generalize usefully. Fully loaded labor cost commonly runs two to three times the base wage once burden and overhead are included, which is why a wage of $28 an hour can need a billing rate well above $100. Calculate yours from your own numbers.
Annually, as part of budgeting, and any time the business changes materially: a new location, a big equipment purchase, a significant change in headcount. Compare applied overhead to actual at year-end to see how far off the current rate was.
General guidance on cost allocation for management purposes, not accounting, tax, or legal advice. Overhead treatment for tax inventory costing (Section 263A and related rules) follows different requirements; confirm with your preparer.
Practitioner guides on controller-grade books, the close, and cleaner reporting. One email per guide. Unsubscribe in a click.