Your Estimated vs Actual Costs Never Match — Is the Job Really Making Money?
Share
This question about estimated vs actual job costs comes up again and again on Jobber community: Can jobber track budget hours vs actual hours for a job. The short answer is yes. Most field-service platforms let you tag every hour and every receipt to a job, then print a report that lines up budget against reality. The harder question is what to do when the actual side of the report keeps bleeding red while your bank account still looks full.
Cash in the door is not profit. Profit is the gap between what you bid and what you spent to deliver. If you only find that gap after the final invoice is paid, it is too late to fix it. You need a system that shows you the variance while the job is still open.
How do you know if a job is actually profitable?
You compare the job's final costs against its estimated costs, line by line, and you check the variance before the job closes so you still have time to react. That is the whole idea behind job costing for contractors. Most tradespeople look at the customer payment and the checking balance. That tells you cash flow, not profit. Profit is the estimate you approved minus the actual costs you incurred to deliver it.
I see this constantly. A contractor finishes a kitchen remodel, deposits the final check, and thinks the job was golden. The customer paid $40,000. Then we pull the actuals. The direct costs came in at $38,500. The crew worked sixty hours more than estimated. The tile order required a second rush shipment. The plumber had to come back for a callback. The contractor earned less per hour than his lead carpenter. Without an estimated vs actual report, that shock arrives months later.
What numbers belong in an estimated vs actual report?
Direct costs only. Labor hours, labor dollars, materials, subcontractor fees, permits, and equipment rental tied specifically to that job. Overhead stays separate until you deliberately allocate it. Tracking these direct costs by job also satisfies the IRS recordkeeping requirement under §6001 to keep books that clearly reflect income. When every receipt is tied to a job, you have the documentation to defend every deduction as ordinary and necessary under §162 if you are ever asked.
- Labor hours: every hour spent on-site or on job-related tasks in the shop.
- Labor dollars: those hours multiplied by the fully loaded rate, not just the base wage. Include workers compensation, payroll taxes, and any benefits.
- Materials: every stick, screw, and gallon purchased for that job. Split shipping and tax across the job if they are direct.
- Subcontractors: the full amount paid to electricians, plumbers, or other trades for work on that specific project.
- Permits and rentals: dumpster fees, lift rentals, permit costs, and anything else you would not have spent if the job did not exist.
Keep overhead like office rent, advertising, and your own administrative time out of the direct job cost unless you have a clear, consistent allocation method. Mixing overhead into direct costs makes your jobs look less profitable than they are and hides the real problem.
| Cost Category | Estimated | Actual | Variance |
|---|---|---|---|
| Labor Hours | 120 hrs | 155 hrs | +35 hrs |
| Labor Cost (loaded) | $7,200 | $9,300 | +$2,100 |
| Materials | $5,500 | $6,150 | +$650 |
| Subcontractor | $4,000 | $4,000 | $0 |
| Permits & Rental | $800 | $950 | +$150 |
| Total Direct Cost | $17,500 | $20,400 | +$2,900 |
In that example, the job was bid at $24,000. The estimate showed a $6,500 gross profit. The actuals show a $3,600 gross profit. The $2,900 variance came from labor overrun and material creep. That is information you want in week two, not week six.
Why do estimated costs and actual costs drift apart?
Labor is almost always the biggest leak. Crews run long. Tasks get reassigned. A lead spends three hours driving for a special order because the yard shipped the wrong trim. You bid forty hours. The reality is fifty-five. That fifteen-hour overrun adds up fast. Your loaded rate is sixty dollars an hour. The damage is nine hundred dollars you never priced into the bid.
Materials are second. Prices move fast. If you bid in January and buy in March, lumber or copper might have shifted. Then there is waste. You cut a board wrong and grab another. Small, but it adds up. If you are not tracking job-specific material receipts against the original takeoff, you will not see it.
Scope creep kills the rest. The homeowner asks for an extra outlet. You oblige because it takes twenty minutes. You forget to write a change order. Do that three times and you have donated a day of labor. Change orders should be documented before the work happens, not remembered at the end. For more on protecting your bid from input inflation, see how to handle rising material costs in your bids.
How do you track budget hours against actual hours?
Use your software's job-costing module to tag every time card and every material receipt to the job code, then run a variance report weekly. If you are on paper, create a simple log: estimated hours in the left column, actual hours in the right, updated every Friday. The goal is not perfection. The goal is early warning.
Tag time by task if you can. Framing hours should not hide inside a generic labor bucket. When framing went ten hours over but trim came in two hours under, you know where to adjust the template. If everything is dumped into one line, all you learn is that the job was over in total. That does not help you bid the next one.
Loaded labor rates matter. If you estimate labor at twenty-five dollars an hour because that is the base wage, your number is already off. Your true cost with taxes and insurance is forty dollars. That means your estimate is fiction before the job starts. Build the fully loaded rate into your bid. If you need a refresher on markup methods, read our markup vs margin guide for contractors.
Does your accounting method change what you see?
It changes the timing, not the math. Cash basis shows money when it moves in or out of the account. Accrual basis shows costs when they are incurred, whether you have paid the bill or not. For job costing, accrual paints a truer picture of where you stand mid-project. You can see that the lumber bill is sitting in accounts payable even if the check has not cleared.
If you are purely cash basis, a job can look amazing in week three because the customer paid a big deposit and you have not yet paid the sub. Then week five arrives, the bills hit, and the profit vanishes. Accrual smooths that out. If you are unsure which method fits your operation, see our breakdown of cash vs accrual accounting for contractors.
Should you price the next job using actuals from the last one?
Yes, but only after you strip out one-time surprises. A single blown job is a data point, not a new standard. If a shipment was lost and you paid overnight freight, that cost belongs in a separate line called job-specific variance, not your permanent labor or material rate.
Update your estimating template every quarter. Move the averages from your last five jobs into the template. If framing consistently runs ten percent over, raise the framing hours in your next bid. If material waste is steady at four percent, build that into your next bid as contingency. Do not pretend it will not happen. Over time your estimated vs actual variances should shrink to a narrow band. If they keep growing, your pricing strategy is broken, not your fieldwork. Our guide on how to bid job costs walks through building numbers that survive reality.
What should you do when a job goes over budget?
Find the variance source before you bill the final invoice. Swallowing the overrun is a choice. Passing it to the customer requires documentation. If you have signed change orders, invoice them immediately. If the overrun is your mistake, price the next job to recover it. Do not try to hide it with vague accounting.
I recommend a job post-mortem the week after closeout. Pull the estimated vs actual report. Circle the two biggest variances. Ask the crew why they happened. Write the answers down. That five-minute habit is worth more than any spreadsheet because it turns one bad job into a better bid next time.
If you regularly hear that your price is too high, but your actuals show you are barely clearing ten percent gross profit, the problem is not your price. The problem is your cost structure or your scope control. We covered how to handle price pushback in "Your Price Is Too High" — How to Handle It.
Practical job-costing tips in your inbox
Join our newsletter for plain-English tax strategy you can actually use. No spam; unsubscribe anytime.
What other questions do contractors ask about estimated vs actual costs?
How often should I run an estimated vs actual report?
Can I deduct cost overruns on my taxes?
What is the biggest mistake contractors make with estimated vs actual tracking?
Should I include my own salary in the job actuals?
Want a second set of eyes on your job costing before you price the next bid? We help contractors build estimated vs actual systems that show true profit per job, not just cash in the door. Book a meeting with our team here.