Back to blog

Job Costing for Contractors: What Every Estimate Must Track

Compare estimated versus actual contractor job costs with a commitment register, final-cost forecast, and worked quantity, productivity, crew-mix, and rate variances.

Video: What is Construction Purchase Order Software | LiveCosts.com by LiveCosts

To compare estimated versus actual job costs, keep the same job and cost codes, reconcile posted costs and remaining commitments, and explain the difference through quantities, hours, crew mix, and rates. A total overrun tells you how much margin moved; the cost bridge below shows which estimate assumption or field condition needs review.

A contractor's estimate should become the first version of the job-cost report. If the bid says only “labor, materials, and profit,” the accounting team cannot later tell whether a missed margin came from hours, a material price change, a subcontract, or work that never made it into the price. Build the estimate with the same job ID and cost categories you will use after the contract is signed. This guide turns those categories into an estimate-to-actual review and shows how to see committed costs before the supplier invoice arrives.

Capture scope and units before dollars

Start with the customer, job ID, location, phase, drawing or scope version, takeoff quantities, units, assumed production rates, exclusions, and bid date. An estimate for 400 labor hours means little if the work behind those hours is not named. Autodesk's estimating overview distinguishes takeoffs and direct and indirect costs. A clear scope record makes later changes visible instead of allowing them to disappear inside a single “over budget” number.

For each phase, note which quantities can change. If a flooring bid assumes 2,000 square feet and the signed scope becomes 2,300, the difference belongs in a revised budget or change-order review. It should not automatically be reported as a field-crew productivity problem. Record the date and person who approved a revised quantity.

Make every cost line traceable

Use separate estimate lines for labor hours and fully burdened rates, materials with freight and expected waste, subcontractor quotes, equipment or rentals, permits and job-specific general conditions, and a stated overhead allocation. “Fully burdened” is the chosen estimating rate that includes more than base wage; document which payroll-related costs it includes so it is not confused with a take-home hourly rate. Do not put a general company overhead percentage into every job without checking what the allocation is meant to measure. Keep payroll burden in the labor rate or in a separate cost line, not both; likewise, do not count the same indirect cost in job overhead and general overhead.

Assign the job and phase or cost code on the estimate. Then require that same code on timesheets, purchase orders, supplier bills, subcontract commitments, and expense entries. Procore's cost-code explainer describes how consistent codes organize work and spending. A short stable code list is more useful than dozens of labels nobody applies consistently. Our chart-of-accounts guide explains the separate accounting categories behind the report, while TaxBowl's job-costing service focuses on turning that data into job-level decisions.

Keep budgets, purchase commitments, and actual costs separate

A budget is the cost allowance in the estimate or approved revision. A commitment records agreed purchasing scope, such as an accepted purchase order or signed subcontract. Actual cost is the amount already posted to the chosen job-cost report under your accounting policies. A supplier quote or draft order should stay identified as a purchasing assumption until accepted; a payment is a cash event, not another cost to add to a bill already recorded. Procore's committed-cost guide describes formal vendor agreements and how they differ from a budget.

Keep the total revised agreement and remaining commitment in different fields. If a $21,000 subcontract already has $8,000 posted against it, the amount still uncovered by posted actuals is $13,000. Adding $21,000 to actual cost would count that $8,000 twice. Payroll, overhead, and uncommitted finishing work still need their own forecast; an order register cannot represent every cost on a job.

Track approved change orders in a revised contract value and budget. Show pending changes in a separate column until approval, with an owner assigned to follow up. That avoids treating hoped-for revenue as earned profit. If a material substitution saves $2,000 but delays the job, update both the cost and schedule assumptions.

Build a commitment register before invoices arrive

Use one register with a row for each order or subcontract line tied to a job and cost code. Start it when the purchasing agreement is accepted, and update it during the weekly estimate-to-actual review. The following is an original management worksheet; these field names are not a required accounting standard.

Register fieldWhat the reviewer needs
Identity and scopeJob, phase, cost type, vendor, order or subcontract ID, and the work or quantity covered.
Approval evidenceAccepted order or signed subcontract, date, approver, and a link to the source record. Label draft and disputed items separately.
Revised agreementOriginal agreed value plus documented approved additions, less approved reductions or cancellations.
Matched actual costPosted bill or cost entry IDs and the amount attributed to this agreement, using the same as-of date as the job report.
Remaining commitmentRevised agreement less matched actual cost. Investigate a negative result; do not hide it by forcing the balance to zero.
Delivery and timingReceived quantity or completed scope, unbilled work, expected remaining delivery, and expected payment dates.
Review trailLast review date, unresolved discrepancy, named owner, and follow-up date.

Match invoices against the register as they post. Compare quantity, price, freight, and scope with the purchasing record; update the remaining balance instead of creating a second forecast for the same work. A partially invoiced order remains visible for the uninvoiced portion. Close a balance only after confirming that the fulfilled scope has matched posted cost and no uninvoiced or unposted amount remains, or after documenting a cancellation or release that removes the obligation. An old order can still represent real exposure.

Intuit's current purchase-order instructions describe connecting an accepted purchase order to a bill or expense and running open-order reports. The documented purchase-order feature is available in QuickBooks Online Plus and Advanced. Check your edition and workflow before relying on a software report as the entire register. The IRS recordkeeping guidance explains why supporting invoices, receipts, and payment records should support entries in the books; the commitment worksheet supplements those records.

A mid-job forecast that catches the cost before final billing

For the original hypothetical $100,000 fixed-price job used below, assume an $80,000 original cost budget and no approved customer price change. At this review date, posted actuals total $32,000. The materials agreement is $33,000, the subcontract is $21,000, and equipment and permits total $6,000. Their matched actuals are $12,000, $8,000, and $2,000 respectively. Labor and allocated overhead have no purchase commitment in this example.

Cost categoryOriginal budgetPosted actualsRemaining commitmentsOther cost to finishForecast final cost
Labor$16,000$8,000$0$10,000$18,000
Materials$30,000$12,000$21,000$0$33,000
Subcontractors$20,000$8,000$13,000$0$21,000
Equipment and permits$6,000$2,000$4,000$0$6,000
Allocated overhead$8,000$2,000$0$6,000$8,000
Total$80,000$32,000$38,000$16,000$86,000

Forecast final cost = posted actuals + remaining commitments + other cost to finish. Here that is $32,000 + $38,000 + $16,000 = $86,000. The agreement totals are $60,000, but $22,000 of those agreements is already in actuals, leaving $38,000. Using $32,000 + $60,000 + $16,000 would produce $108,000 and overstate cost by $22,000. The $48,000 difference between budget and posted actuals is not free purchasing capacity: the current forecast requires $54,000 more cost, putting the job $6,000 over budget.

The $10,000 labor forecast represents 250 remaining hours at the same $40 burdened rate; the $8,000 already posted represents 200 hours. Forecast profit is $100,000 less $86,000, or $14,000, and forecast margin is 14%. That gives the owner an early reason to check material buyout and subcontract changes before the final bills arrive. It is a forecast, not completed-job earnings.

Flag received materials, performed subcontract work, and unposted time separately for accounting review. If $3,000 of unbilled work is already covered within the $38,000 remaining commitments, do not add it again as other cost to finish. If accounting later posts that same $3,000, actuals rise to $35,000 and remaining commitments fall to $35,000; forecast cost stays $86,000. Work outside the existing agreement belongs in a separately identified forecast or change review. Recognition, accruals, inventory treatment, and tax deductions depend on the firm's actual rules and facts.

Use the register in a weekly owner review

  1. Set one as-of date and reconcile posted actuals to the job report.
  2. Ask purchasing and field leads for new agreements, delivered but unbilled work, cancellations, and approved or pending changes.
  3. For each posted cost associated with an agreement, match it to the agreement it reduces; keep labor and overhead reconciled separately. Inspect stale open balances and invoices that exceed the agreement.
  4. Update remaining labor hours, overhead, and other work not covered by agreements, checking each item appears once.
  5. Compare forecast final cost with the revised budget, assign an owner to each variance, and update expected payment timing for cash planning.

The SBA's finance guidance emphasizes bookkeeping and understanding business finances. Apply that discipline by keeping the cost forecast alongside a payment calendar: $38,000 of remaining commitments does not mean $38,000 is due this week. Payment terms, unpaid posted bills, deposits, retainage, and customer collections need their own cash review. For coding or unposted-cost cleanup, use our month-end job-cost audit.

A worked margin check

Consider a hypothetical fixed-price job bid at $100,000. The estimate includes 400 labor hours at a documented $40 burdened rate ($16,000), $30,000 of materials, $20,000 of subcontractors, $6,000 of equipment and permits, and $8,000 of allocated overhead. Estimated cost is $80,000, so estimated profit is $20,000 and estimated margin is 20% of the contract price.

At completion, assume labor is 450 hours at the same $40 rate ($18,000), materials are $33,000, subcontractors are $21,000, and the other two categories remain $6,000 and $8,000. Final cost is $86,000. Profit is $14,000 and margin is 14%. The $6,000 unfavorable change breaks into $2,000 of labor, $3,000 of materials, and $1,000 of subcontractors. That diagnosis is more actionable than “the job missed by six points.” It also shows why margin and markup should not be mixed; our profit-margin guide walks through that denominator.

This is a management illustration, not a statement about when revenue or cost must be recognized for tax or financial reporting. Your accountant should apply the appropriate accounting and tax rules to the contract's facts.

Compare the same scope before calling a cost overrun

Estimated versus actual job costs should answer two questions: how far did cost move, and why? For a completed phase, use cost variance = actual cost − estimated cost; in this guide a positive result means cost exceeded the estimate. Variance percentage uses estimated cost as its denominator. If a phase was estimated at $8,000 and finishes at $11,050, the increase is $3,050, or 38.125%. Keep the dollar result when an estimated line is zero because a percentage would be undefined.

On an active phase, comparing posted bills with its entire original budget can make unfinished work look favorable. Record installed quantity or completed work, hours used, and remaining work alongside the costs. Then compare the hours and material usage with the estimate allowance for that completed quantity. Keep the final forecast comparison in the job report above; use the following bridge to diagnose its drivers. Procore's cost-reporting guide describes original budgets, approved changes, forecasts to complete, and estimated cost at completion.

Preserve the original bid and an approved revised budget. Show separately how approved scope changes moved the allowance, and how performance against that revised scope moved cost. A revised allowance is an internal cost expectation; it does not establish a customer's obligation to pay. Unapproved scope still needs a named owner and a documented change review.

An original labor cost bridge: quantity, productivity, mix, and rate

The following separate hypothetical flooring phase is not another part of the $100,000 job above. It is a diagnostic worksheet with all work completed and all associated labor cost available. The bid assumed 1,000 square feet at 0.20 labor hours per square foot: 200 hours. The planned crew mix was 60% skilled hours at a $50 burdened rate and 40% helper hours at $25, giving a $40 weighted rate and an $8,000 labor estimate. These rates are invented for the example, not market wage benchmarks.

The completed scope is 1,100 square feet. Actual time is 250 hours: 175 skilled hours and 75 helper hours, a 70%/30% mix. Actual burdened rates are $52 and $26. Actual cost is (175 × $52) + (75 × $26) = $11,050. To explain the $3,050 difference, change one assumption at a time in the fixed order below. All four movements are unfavorable in this example.

Bridge stepCalculationCost movementRunning cost
Original estimate200 hours × $40 planned weighted rateStarting point$8,000
Completed quantity(1,100 − 1,000) sq. ft. × 0.20 hours × $40+$800$8,800
Hours for that quantity(250 actual hours − 220 allowed hours) × $40+$1,200$10,000
Crew mix at planned rates(175 × $50 + 75 × $25) − (250 × $40)+$625$10,625
Rate changes at actual mix175 × ($52 − $50) + 75 × ($26 − $25)+$425$11,050

The first $800 reflects more installed scope at the original assumptions. The next $1,200 reflects 30 hours beyond the 220 hours allowed for that quantity. Actual hours per square foot were 250 ÷ 1,100, or about 0.227, versus the estimated 0.20. Crew mix added $625 because a larger share of actual hours used the higher planned rate. Rate changes added $425. The check is $800 + $1,200 + $625 + $425 = $3,050, exactly matching actual cost less the original estimate.

This is an original sequential management bridge. ACCA's standard-hour explanation supports calculating expected hours for actual output; its performance-management worked answers distinguish labor rate from efficiency effects. The four-step order here is our stated convention. A different order can assign interaction effects differently while reconciling to the same total. Do not combine this split with another full labor-rate or efficiency variance, which would double count effects.

A bridge identifies where to investigate; it does not prove the cause. The extra hours may reflect difficult substrate, waiting for materials, rework, or an unrealistic bid assumption. A skilled crew can cost more per hour and still reduce total hours or defects. Use the time records, site notes, scope version, and payroll burden calculation to decide what happened before changing staffing or blaming a crew.

Separate material quantity from waste and price

For the same flooring phase, suppose the material estimate allowed 1,050 square feet of material for 1,000 installed square feet, a 5% allowance, at $10 per material square foot. Estimated material cost is $10,500. The completed work is 1,100 square feet, so the original allowance would permit 1,155 material square feet. Assume the phase actually consumed 1,210 material square feet at $11 each, with no returns, reusable leftover stock, or separate freight in this simplified example. Actual material cost is $13,310.

Material driverCalculationCost movement
More installed quantity at the original allowance(1,155 − 1,050) × $10+$1,050
Consumption beyond that allowance(1,210 − 1,155) × $10+$550
Unit price on actual consumption1,210 × ($11 − $10)+$1,210
Total difference$13,310 actual − $10,500 estimate+$2,810

The 55 material square feet above the allowance need a usage review; they are not automatically proven waste. Layout cuts, damage, incorrect takeoff assumptions, and unrecorded transfers can produce similar numbers. Purchasing quantity and installed or consumed quantity are different measures. Reconcile receipts, returns, stock remaining, and transfers before using invoices as a consumption measure. If freight is separate, compare it separately; do not add it again if it is already included in the unit price.

Turn each variance into the next estimating decision

DriverEvidence to inspectDecision to record
Scope quantityTakeoff, drawing versions, installed quantity, approved change recordCorrect the takeoff or budget and follow up on the customer change.
Hours and productivityTime by phase, daily installed output, waiting and rework notesUpdate the production assumption for comparable work or resolve the field constraint.
Crew mix and ratesHours by role, approved rates, burden components, overtime detailRevise the planned mix or rate assumption with the field lead.
Material consumption and priceReceipts, returns, remaining stock, invoice unit prices, freightAdjust the documented allowance, purchasing assumption, or handling process.

Close the review with one owner, one correction, and a date. Save the original estimate, the scope-adjusted allowance, actual quantity and hours, the reconciled variance, and the evidence behind the correction. Transfer a lesson to the next bid only when the work and site conditions are comparable. For an unfinished phase, use the supported current assumptions to reforecast remaining quantity, hours, and purchases; do not assume the full job is complete because its latest invoices have posted.

Five questions at the estimate handoff

  • Can the field lead see the quantities, labor-hour assumptions, exclusions, and approved scope version behind the bid?
  • Will time and bills carry the same job and phase codes as the estimate?
  • Are signed purchase orders and subcontracts visible before their invoices arrive?
  • Who approves changes to price, scope, or budget, and where are pending changes held?
  • At what forecast margin or cost variance will the owner review the job before it finishes?

A useful estimate is therefore a starting control document, not just a sales price. When the same categories follow the job through completion, the owner can fix a pricing assumption, a purchasing problem, or a production issue before the next bid repeats it. For help building that reporting cadence, talk with TaxBowl.

Before the first job report, give estimators, field crews, and bookkeepers the same short coding dictionary. Our contractor cost-code setup guide shows how to separate work phases from labor, materials, subcontractors, and equipment and pilot the list on an active job.

Sources and scope

The Autodesk estimating overview supports the takeoff and cost-component framework. Procore's job-costing guide, cost-code explainer, and committed-cost guide inform the operational terms. These are industry workflow sources, not authority for contract tax treatment. The numbers above are original hypothetical assumptions, not client results. The register, review steps, and forecast are TaxBowl management examples. IRS guidance supports recordkeeping, SBA supports general finance discipline, and Intuit documents its software workflow; none establishes a tax deduction from signing a purchase order.

For the actual reported result, follow the construction job gross-profit calculation. It aligns revenue and cost cutoffs, separates margin from markup, and explains why retainage changes cash rather than the assumed recognized profit.