Notes · Job costing

How to build an overhead rate for a contractor or trades business

Short version: An overhead rate charges each job its fair share of the costs that do not 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 base that drives it (usually direct labor hours), divide pool by base, apply the rate to every estimate and job cost report, and compare applied to actual at year-end. The rate lives in 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 contractors and trades owners, and the cause is almost always the same. Jobs get priced on materials and labor, and the shop, trucks, insurance, and office are supposed to come out of what is left. They do not. An overhead rate puts those costs into the price of every job before you quote it, so the margin on the estimate is the margin you keep.

The same method applies to a developer with an in-house construction crew or property management arm. Without it, project returns are overstated.

Step 1: define the overhead pool

Overhead is every cost of running the operation that cannot be traced to a specific job. Pull last year's P&L and sort every expense line into one of three buckets:

  • Direct cost (not overhead): materials, direct labor and its burden, subcontractors, job-specific equipment rental, permits.
  • Production overhead (in the pool): shop rent and utilities, small tools, equipment depreciation and repairs, vehicles, supervision, indirect labor, production software, safety costs, general liability and property insurance.
  • General and administrative (your call): owner's salary, office staff, accounting and legal, marketing. Some companies put G&A in the pool; some add it as a markup on top. Either works if you are consistent. Under a few million in revenue, one combined rate is simpler and harder to misapply.

Watch the direct labor line. If field wages are sitting in operating expenses, move them to cost of goods sold before you build the pool, or you will allocate labor to itself. Then adjust the pool for next year: known rent increases, an added truck, a planned hire. The rate is forward-looking because it prices next year's work.

Step 2: pick the allocation base

The base is the measure of activity that drives overhead. The right one is the measure where, when a job uses more of it, the company costs more to run.

Allocation bases compared
BaseBest forWatch out for
Direct labor hoursTrades, service, fabrication: anywhere people-time drives the work. The usual default.Needs reliable time tracking by job. Without it, the rate is applied to a guess.
Direct labor dollarsCompanies where wage rates vary a lot by job type.A raise changes the allocation even though overhead did not change.
Machine hoursEquipment-heavy work where the machine is the bottleneck.Needs machine time by job, which few small operations log.
Direct cost (materials + labor)Quick and crude. Common in construction as a flat percentage.Loads overhead onto material-heavy jobs that barely used the shop.

For most contractors and trades businesses, direct labor hours is the answer. Do not build five departmental rates for a twelve-person company. The precision is fake and nobody will maintain it.

Step 3: do the math

Rate = overhead pool divided by expected base. Use the hours you expect to bill to jobs, not the hours you will pay for. The difference matters.

Worked example: eight-person company (illustrative, not a benchmark)
LineAmount
Overhead pool, adjusted for next year$486,000
Direct labor headcount6 people
Paid hours per person (52 weeks x 40)2,080
Less PTO, holidays, training, cleanup, idle time (about 22%)(458)
Productive hours per person1,622
Total productive direct labor hours6 x 1,622 = 9,732
Overhead rate$486,000 / 9,732 = $49.94 per labor hour

Call it $50. Had this company used paid hours (12,480), the rate would be $38.94, and every job would under-recover overhead by about $11 an hour. Using paid hours instead of productive hours is the most common reason a calculated rate does not cover the company.

Average direct wage                 $28.00
Labor burden (taxes, WC, ~24%)        6.72
Overhead rate                        50.00
                                    ------
Fully loaded cost per labor hour    $84.72

That is the number that goes into estimating. Labor quoted at $75 an hour loses money before materials, and the P&L will confirm it at year-end, too late to act.

Step 4: apply it

  • Estimating. Every estimate carries labor hours times the fully loaded rate, plus materials and subs with their own markup, plus profit. Now the profit line is real profit.
  • Job cost reporting. In QuickBooks, a monthly journal entry can debit an applied-overhead account in job costs and credit an offsetting account in operating expenses. That shows job profitability after overhead without moving actual overhead into cost of goods sold. Many companies apply the rate only in estimating and a job-margin report, which is fine if someone actually compares estimated to actual by job.

Step 5: true it up

At year-end, compare overhead applied (hours x rate) to actual overhead spent.

  • Under-applied (actual higher than applied): the pool grew or productive hours came in below plan. Next year's rate goes up, and this year's job margins were overstated.
  • Over-applied (applied higher than actual): you ran leaner or busier than planned. Margins were understated. The rate can come down, or you can hold it and keep the cushion.

Then recalculate every year: new pool, new productive hours, new rate. A rate that has not been touched in three years is wrong in a direction you cannot see.

The owner's test: add up a year of labor hours on invoices and multiply by the overhead rate. If that is less than what the company actually cost to run, you have been paying the difference out of profit, every job, all year.

Common mistakes

  • Using paid hours as the base instead of productive hours
  • Leaving the owner's field time out of direct labor while including the owner's salary in the pool
  • Letting direct labor sit in operating expenses so it gets allocated to itself
  • Building departmental rates for a company too small to track them
  • Pushing actual overhead into cost of goods sold so job margin looks right and gross margin stops meaning anything
  • Never recalculating

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.

Common questions

What is an overhead rate?

The amount of indirect cost (shop, equipment, vehicles, insurance, office) charged to each unit of activity, usually each direct labor hour. It is the annual overhead pool divided by expected productive direct labor hours, added to wages and burden to get a fully loaded cost per hour for estimating and job costing.

How do I calculate an overhead rate per labor hour?

Total next year's expected overhead, then divide by the productive direct labor hours you expect to charge to jobs: paid hours minus PTO, holidays, training, and idle time. Using paid hours instead of productive hours understates the rate.

Should overhead be included in cost of goods sold?

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.

How often should I recalculate the overhead rate?

Annually, as part of budgeting, and any time the business changes materially: a new location, a large equipment purchase, a significant change in headcount. Compare applied overhead to actual at year-end to see how far off the current rate was.

Next step

Start with a free 30-minute consultation

Send last month's P&L and balance sheet. I'll tell you the two things I'd fix first. No pitch deck.

Pick a time on my calendar