Skip to content
Black Friday

50% off any plan for 6 months. Free data migration and setup. Ends Nov 30.

Claim the deal Claim the Black Friday deal
Contractor Scaler Hub7 min read

Budget vs. Actual: Compare Estimated and Actual Job Costs, Line by Line

Budget vs. actual for contractors: turn the estimate into a job budget, track actual costs on the same lines, read the variance and fix it while the job runs.

MotionOps TeamWritten for contractors, by people who run jobs
A contractor and a bookkeeper compare a printed job cost sheet with a laptop, a calculator and receipts on the desk

Budget vs. actual compares what you planned a job to cost with what it really cost, line by line. For a contractor, the estimate is the budget: the labor hours, materials, subcontractors and other costs you priced the job on. The comparison shows which line went over, by how much, and why, so you can fix the cause instead of just noticing that the job made less than it should have.

This lesson shows how to turn an estimate into a job budget, record actual costs against the same lines, read the variance, check it while the job is still running, and feed what you learn back into the next estimate. If you haven’t set up job costing yet, start with construction job costing; this lesson builds on it.

Why totals aren’t enough

“The job cost $1,800 more than we thought” doesn’t tell you what to change. Was the estimate wrong? Did the crew run slow? Did the customer get extras nobody billed? Did a price go up? Each one has a different fix, and a total can hide all four at once.

In a growing company there’s a second reason. Once you’re no longer on every job, the estimate is the only plan the crew lead has. If they can see the budget in hours for their part of the job, they can manage to it. If the only number is the contract price, they can’t.

Step 1: Turn the estimate into a job budget

Use the same cost lines you estimated with. If the estimate says “tile labor, 60 hours,” the budget says “tile labor, 60 hours,” not “labor, $2,700.”

  • Labor by phase, in hours. Demo, rough-in, framing, finish, whatever phases your trade uses. Hours are what a crew lead can control; dollars follow from them.
  • Materials, grouped the way you buy them.
  • Subcontractors, one line each.
  • Equipment, rentals and disposal.
  • Other direct costs: permits, delivery fees, anything else that belongs to this job.

Keep three budget columns: the original budget, approved changes (from signed change orders) and the revised budget. Approved changes add both price and cost. Without that column, every change order looks like an overrun.

Step 2: Record actual costs on the same lines

The comparison is only as good as the actuals:

  • Labor: timesheets on the job, ideally by phase, at your burdened hourly cost (wages plus payroll taxes, insurance and benefits).
  • Materials: every receipt and supplier invoice assigned to the job, including the small runs to the supply house.
  • Subcontractors: their invoices, against their line.
  • Rentals and other costs: on the job, not in general overhead.

Two rules make this work: costs go on the job the day they happen, and every cost has a line. A receipt that sits in a truck for three weeks, or labor booked to “shop time” because nobody knew which job it was, makes the comparison wrong.

Step 3: Read the variance

For each line:

  • Variance ($) = actual − revised budget. A positive number means over budget.
  • Variance (%) = variance ÷ revised budget.

Then write one sentence on why for every line that’s meaningfully over. Decide in advance what “meaningfully” means for you, for example more than 10% or more than $300 on a line. Below that, don’t spend time on it.

Example: a bathroom remodel

All numbers are made up to show the method. Labor is at an assumed burdened cost of $45 an hour. The contract was $29,000. A signed change order added a heated floor circuit: $600 to the price, $250 to the electrician’s cost.

Cost line Original budget Approved changes Revised budget Actual Variance Why
Demo labor 24 h, $1,080 $1,080 22 h, $990 −$90
Framing and drywall labor 30 h, $1,350 $1,350 38 h, $1,710 +$360 Water damage behind the vanity, repaired without a change order
Tile labor 60 h, $2,700 $2,700 78 h, $3,510 +$810 Herringbone floor estimated as a straight lay
Plumbing (sub) $3,200 $3,200 $3,200 $0
Electrical (sub) $1,600 +$250 $1,850 $1,850 $0
Materials $8,400 $8,400 $9,120 +$720 Extra tile for the herringbone cuts
Dumpster and rentals $650 $650 $650 $0
Total cost $18,980 +$250 $19,230 $21,030 +$1,800
Planned Actual
Price $29,600 $29,600
Gross profit $10,370 $8,570
Gross margin 35.0% 29.0%

Six points of margin went missing. The line-by-line view shows where:

  • $1,530 of the $1,800 has one cause: the herringbone pattern was priced like a straight lay, so both tile labor and tile material ran over. That’s an estimating problem. The fix is an estimating rule for patterned tile, not a talk with the crew.
  • $360 is unbilled work: real damage, repaired without a change order. That’s a process problem. The fix is the change order rule, which the crew lead already had.
  • The electrical line shows why the revised budget matters: compared with the original budget, it would look $250 over when the customer paid for it.

Step 4: Check while the job is running

A comparison after the job closes teaches you something for the next one. A comparison during the job can still save this one.

For jobs longer than a week, check at fixed points, for example at the end of each phase or every Friday. The quickest check is hours used vs. work done for each labor phase:

Phase Budget hours Hours used so far Work done Signal
Tile 60 42 About half Heading for about 84 hours. Find out why now

If tile is half done and 70% of the hours are gone, there’s still time to act: check the layout, move a more experienced setter onto it, or, if the scope really changed, write the change order before the work is finished.

Ask the crew lead, not just the numbers. They often know why a phase is running long before the timesheets show it.

Step 5: Sort every variance into one of five causes

Cause Looks like The fix is in
Estimate was wrong The same line runs over on similar jobs Your estimating assumptions and price list
Scope changed without a change order Extra work with no matching price The change order process
Productivity Waiting for materials, inspections or other trades; rework; a new crew learning Scheduling, readiness and training
Price changed Materials or subs cost more than when you estimated Price updates and how long a quote stays valid
Recording error Costs on the wrong job or line, missing receipts How and when costs are recorded

After a few months, count the causes. If most of your overruns trace back to the estimate, the field isn’t the problem. If most are unbilled scope, no amount of estimating will fix it.

Step 6: Feed it back into the next estimate

The comparison only pays off if it changes something:

  • Update the assumption behind the miss. In the example: patterned tile gets its own labor rate and a higher waste factor.
  • Review closed jobs once a month, not one at a time. A list of the month’s jobs with planned and actual gross margin shows patterns no single job can: one job type that always runs long, one crew that’s always on budget.
  • Share the results with the estimator and the crew leads. The estimator learns what the field really takes. The crew lead sees that the budget is a real number, not a guess from the office.

Your next action

  1. Pick one job starting in the next two weeks.
  2. Turn its estimate into a budget with labor in hours by phase, plus materials, subs and other costs, and give the crew lead the labor hours for their phases.
  3. Check hours used vs. work done once a week while it runs.
  4. When it closes, fill in the actual column, write one sentence for every line over your threshold, and sort each one by cause.

Free tools: the Budget vs. Actual Job Cost Worksheet spreadsheet has the cost lines from this lesson and calculates the variance and the margin for you. For the actual cost of a labor hour, use the labor burden calculator.

What to review:

  • Planned vs. actual gross margin on every closed job
  • Which cost lines go over most often
  • How many overruns trace back to the estimate vs. the field vs. unbilled scope

Next lesson: find where margin leaks between the estimate and the invoice, across all your jobs, not just one.

Where MotionOps helps

In MotionOps, actual costs land on the job as the work happens:

  • Job Costing: compares each job’s revenue with its actual labor and material costs, and shows the profit margin.
  • GPS Time Tracking and Team Member Timesheets & Approval: crews clock in and out, with the location shown on a map, and field managers review and approve timesheets from the mobile app.
  • Field Expense Tracking and AI Receipt Capture: purchases, returns, tools and rentals are recorded against the job, with receipts scanned to prefill the cost.
  • Change Order Requests: change orders are managed inside the work order, so approved changes are part of the job’s record.

Related: construction job costing and construction profit margins. See plans and pricing, or book a MotionOps demo.

Contractor Scaler Hub: Grow Profit, Not Just Revenue, lesson 2 of 5

Written by MotionOps Team

We build MotionOps with contractors, and we write down what we learn from them: pricing, crews, cash and the paperwork that protects the job.

Send it to your crew

Done reading?
Try it on a real job.

See MotionOps run one of your own jobs, from the first estimate to the last payment, with a real person walking you through it.

1:1 onboarding on every planWe move your data for youA real person, not a ticket

Rather pick a time yourself? Book a demo on our calendar

Rather talk now? (855) 739-1133

Book a 20-minute demoPick a time. Bobby will show you MotionOps on your kind of jobs.

Before you go

Rather have Bobby call you?

Leave your name, number and a good time. He’ll call, show you around and answer your questions.