Most contractors know revenue by job type to the dollar and margin by job type not at all. Working it out means pulling supply house receipts, timesheets and payroll rates into a spreadsheet nobody keeps up past March. Job costing is the habit, ideally automated, of attaching every real cost to the job that caused it, so the margin is known the week the job closes instead of guessed at year end.
Job costing in plain English
Every job has a price and a cost. The price is on the invoice. The cost is scattered: parts pulled from the truck, equipment on a purchase order, three people's hours over two days, a permit paid online, a crane rental. Job costing gathers those pieces onto the job so you can subtract them from the price.
A useful test for what belongs on the job comes from the federal cost principles used for government contracts: costs "specifically identified" with a particular cost objective are direct costs of it.1 If the cost happened because of this job, it goes on this job. If it would have happened anyway, it is overhead and stays out.
What goes into the cost of a job?
| Cost bucket | What it includes | Where the number comes from |
|---|---|---|
| Labor | Drive and on-job time for every person, at their burdened rate | Job statuses or timesheets × payroll rates |
| Materials | Parts and supplies used, at your cost | Truck stock usage, invoice lines, supply house receipts |
| Equipment | Units, coils, water heaters, panels | Purchase orders at received cost |
| Subcontractors | Electrician on a heat pump job, crane, concrete pad | Subcontractor bills tagged to the job |
| Permits and fees | Permits, inspections, disposal, recovery fees | Receipts tagged to the job |
| Other direct | Equipment rental, materials bought for this job only | Receipts tagged to the job |
Why burdened labor matters
A technician paid $32 an hour costs the business well over $32 an hour. The Bureau of Labor Statistics reports that private employers spent $46.89 per hour worked on total compensation in June 2026, with $14.07 of that, or 30.0%, going to benefits on top of $32.82 in wages.2 Those are all-industry averages; your workers' comp class and benefits will set your own figure. Use a burdened rate per person, or labor will be understated on every job.
How do you calculate job profit?
Metric
Job gross profit and margin
What a single job contributed after its own direct costs, in dollars and as a share of its revenue.
Job profit = revenue − (labor + materials + equipment + subcontractors + other direct) · Margin = job profit ÷ revenue × 100
Where the numbers come from: Invoice subtotal after discounts and before tax; the cost buckets in the table above.
A worked example: estimated vs actual on an install
Made-up numbers for a heat pump replacement:
| Estimated | Actual | Difference | |
|---|---|---|---|
| Revenue | $9,400 | $9,400 | $0 |
| Equipment and materials | $4,100 | $4,350 | +$250 |
| Labor (burdened) | $1,150 | $1,610 | +$460 |
| Permit | $0 | $220 | +$220 |
| Total cost | $5,250 | $6,180 | +$930 |
| Gross profit | $4,150 | $3,220 | −$930 |
| Margin | 44% | 34% | −10 points |
The customer paid the same price, and the job lost ten points of margin. Each line has a lesson. Labor ran four extra crew hours, so the estimate template needs more time for this kind of install. Materials came in $250 over, so line sets and pads should be priced from current supplier cost. The permit was simply forgotten, so it needs a line in the estimate. Without job costing, the shop would keep selling this install at 44% on paper and earning 34% in reality.
Common job costing mistakes
- Wage instead of burdened rate. The most common reason jobs look better than they are.
- Missing costs treated as zero. A part with no cost on the invoice line is not free. Flag it rather than letting it inflate the margin.
- Counting the same part twice. A part on a purchase order that was also pulled from stock and also typed on the invoice can end up costed three times. Pick one source per item.
- Return trips booked as new jobs. A callback's labor belongs to the original job. See the real cost of a callback.
- Only looking at totals. A 40% blended margin can hide installs at 25% behind service at 55%. Review by job type.
Job costing vs job pricing vs gross margin
| Job pricing | Job costing | |
|---|---|---|
| When | Before the work, on the estimate | During and after the work |
| Question | What should we charge? | What did it actually cost us? |
| Inputs | Price book, estimated hours, supplier cost | Stock used, POs, timesheets, receipts |
| Output | A price | Actual gross profit and margin |
| Feeds back into | Next estimate | The price book and estimate templates |
Gross margin is the result job costing produces, one job at a time and rolled up by job type, technician or business unit.
A weekly job costing review
- Every install closed this week: estimated vs actual by cost bucket
- Jobs under your margin floor, with the reason for each
- Jobs with missing costs or missing labor rates
- Margin by job type for the month to date
- One change to the price book or an estimate template, if a pattern showed up
How job costing works in TradesWork
Job costing in TradesWork builds the cost as the job happens, from records you already create. Materials come from stock used on the job, invoice lines not taken from stock, and purchase orders at received cost, de-duplicated so nothing counts twice. Labor is drive and on-job time times each person's burdened rate, provisional until the week's timesheets are approved. Optional mileage and a flat commission percentage can be added, along with direct costs such as subcontractors, permits and equipment rental.
Each job's Job costing card shows estimated vs actual when the job came from a sold estimate. Missing costs and missing labor rates show as unknown rather than $0. Invoices under your margin floor, 25% by default, are flagged for review. Two honest limits: commissions and spiffs from performance pay plans aren't part of job cost yet, and there's no project budget, WIP schedule or progress billing for construction-style jobs.
Footnotes
-
Federal Acquisition Regulation 31.202, Direct costs, via Acquisition.gov, checked October 2026. https://www.acquisition.gov/far/31.202 ↩
-
U.S. Bureau of Labor Statistics, Employer Costs for Employee Compensation, June 2026, private industry workers. https://www.bls.gov/news.release/ecec.nr0.htm ↩
