The crew has finished, but a time entry is on the wrong work order and a supplier credit is still missing. If you need to know how to calculate job cost, start by fixing those records rather than trusting the estimate.
Job costing after completion is a closeout task. Match the finished scope to the revenue, collect every actual cost, assign overhead once, and leave unresolved items open until the records are complete.
Lock the finished scope before counting costs
Start with the approved quote or estimate, the work order, every approved change order, and the final invoice. These documents tell you what work belongs in the comparison.
The work order should carry the job number and approved scope used by the field and office. If time or purchases sit against the wrong job, move them before calculating anything. Use the work order guide for keeping crews and invoices aligned when your job records do not share the same scope or reference number.
Do not compare costs for the original scope with revenue that includes extra work. Revenue and cost must cover the same work before you call the result final job profitability.
Set a cost cutoff
Choose the point when the job records will be reviewed. Then list anything still open:
- Missing crew time
- Supplier bills not received
- Materials waiting to be returned
- Supplier credits not posted
- Subcontractor invoices not received
- Rentals or direct expenses not entered
Do not silently omit an open item. Mark the job as awaiting cost. A finished site does not mean a finished cost record.
An estimate is an expected cost. A quote is the offered selling price for its stated scope. Actual cost comes from the records created while doing the work. If those documents are being mixed together, review how contractors separate an estimate from a quote before closing the job.
How to calculate job cost from finished records
Use this broad formula:
Actual job cost = actual direct labor + actual materials + subcontractors and equipment + other direct expenses + assigned overhead
For this closeout, work cost and job cost mean the same calculation: the costs assigned to the completed work. Every amount should lead back to a timecard, payroll record, purchase, stock withdrawal, invoice, receipt, or documented overhead method.
That is how to calculate job cost without replacing one guess with another. The estimate provides the comparison. It does not provide the actual result.
Use a simple closeout sheet to keep the buckets visible:
| Cost bucket | Estimated cost | Actual cost | Open item | Variance | Closeout note |
|---|---|---|---|---|---|
| Direct labor | [enter] | [enter] | [yes/no] | [calculate] | [cause] |
| Materials | [enter] | [enter] | [yes/no] | [calculate] | [cause] |
| Subcontractors and equipment | [enter] | [enter] | [yes/no] | [calculate] | [cause] |
| Other direct expenses | [enter] | [enter] | [yes/no] | [calculate] | [cause] |
| Assigned overhead | [enter] | [enter] | [yes/no] | [calculate] | [method] |
| Total job cost | [enter] | [enter] | [yes/no] | [calculate] | [next action] |
Keep the buckets boring. Use the same ones in the estimate and the finished-job review so the variance points to a real cause.
Pull actual labor from the job records
Start with time entries. Check the employee, date, hours, job number, and task. Correct time posted to the wrong work order. Ask about gaps while the crew still remembers the job.
Use your internal labor cost. Do not use the rate charged to the customer. The billing rate is revenue, not labor cost.
Your internal method should use your own payroll and employment-cost records. Apply it consistently. Do not invent a wage, burden percentage, or allowance during closeout because the result looks wrong.
Owner and supervisor time needs the same discipline. If the owner installed equipment or the supervisor spent time solving a problem specific to this job, record that time using the business's documented method. If supervision is already included through shared overhead, do not charge it again as direct labor.
For each labor entry, ask one blunt question: did this time happen because of this job? If yes, assign it here. If it supported several jobs or the whole business, handle it through the chosen overhead method.
Reconcile materials and outside costs
Match supplier purchases and stock withdrawals to the job. A receipt alone is not enough if the materials were later moved, returned, or left unused.
Start with what arrived. Subtract returned items and posted credits. Remove materials transferred to another job. Add stock taken from the shop, using the business's consistent recorded cost.
Check freight and other purchase costs when they can be traced to the job. Then add subcontractor bills, equipment rentals, disposal charges, paid permit costs, and other direct expenses where they apply.
A supplier credit that has not arrived stays on the open-items list. The same goes for a subcontractor invoice that is expected but missing. Cost tracking fails when the office closes the job merely because the customer invoice is ready.
Do not force every small expense into materials. Separate outside labor, rentals, and other direct costs if those buckets will help you correct the next estimate.
Assign job overhead once
Some overhead can be traced to one job. A piece of equipment hired only for that work is a direct job cost. Dedicated site supervision can also be direct when your records support it.
Shared business overhead serves several jobs. Assign it using one documented method that fits your operation. Do not choose a new method for each job. Consistency makes completed jobs comparable.
Then check for double counting. Labor burden may already include certain employment costs. A vehicle cost may already sit in shared overhead. Supervision may already be included in labor or overhead. Equipment may be charged directly through a rental record.
Put each cost in one bucket. Not two. If you cannot explain where a cost entered the calculation, stop and trace it.
Compare actual vs estimated cost by bucket
Calculate the variance for each bucket:
Cost variance = actual bucket cost − estimated bucket cost
A positive result means the job used more cost than allowed in that bucket. A negative result means it used less. Review labor, materials, outside costs, and job overhead separately before looking at the total.
A total miss does not tell you what to fix. The bucket review does.
Read the field record before blaming the estimate. Extra labor may come from an access problem, rework, a missed task, or time posted from another job. Extra materials may come from waste, a scope change, a purchasing error, or an unrecorded transfer.
Write one clear closeout note for each meaningful variance. For example: correct the labor allowance, add a material item, use a clearer exclusion, or collect a site detail before quoting. Do not write “price higher.” Record the cause.
Worked example: Close the Oak Street job without inventing profit
Oak Street is the house electrical example. All figures below are sample currency units, not contractor rates or a price list.
R. Chen's job at 14 Oak Street covered a bathroom exhaust fan, 150mm and ducted through the roof, plus four LED downlights. Estimate E-1847 showed a range of 900–1,400. Quote Q-1847 was 1,105.
The ceiling was lined, and the quote excluded chasing. Extra cable and chasing were approved on site as a 160 change order. Invoice INV-1847 was therefore 1,265.
The supplied job cost is 850, measured against the original quote. Keep that comparison together:
- Original quote: 1,105
- Job cost against that original quote: 850
- Profit:
1,105 − 850 = 255 - Margin:
255 ÷ 1,105 ≈ 23% - Markup:
255 ÷ 850 = 30%
Markup is added to cost to produce a price. Margin is profit as a share of the selling price. You can check the arithmetic with the profit margin calculator.
Do not subtract 850 from the 1,265 invoice. The costs of the 160 change order are not given. Its revenue is known, but its labor and material costs are not. The final invoice cannot support a final profit calculation until those change-order costs are complete.
That is the control to carry into every finished job. Keep original-scope revenue with original-scope cost. Keep change-order revenue with change-order cost. Combine them only when both sides are complete.
Feed the finished cost into the next quote
A finished job is not a rate card. It is evidence about a specific scope, crew, site, and set of conditions.
Use the variance to correct one or more assumptions in the next similar estimate:
- Change the labor allowance when the recorded task took longer for a repeatable reason.
- Correct the material list when an item was consistently missed.
- Keep a proven access or chasing exclusion in the quote.
- Change the overhead treatment when a cost was omitted or counted twice.
- Add a site question when an unknown condition caused the change order.
Correct the cost first. Then apply contractor markup to build the next selling price. The contractor pricing guide for labor, materials, overhead, and markup explains that next step.
Do not raise every future price because one job ran badly. Find the reason. Decide whether it will repeat. Then use the process for pricing contractor jobs without guessing to turn the corrected assumptions into a quote.
If you use Yes Foreman, keep the quote, work order, time, purchases, change orders, and invoice under the same job so the closeout follows the work that was approved.
Closeout gate before declaring the result final
Use this gate when you review how to calculate job cost for a completed job. Do not approve the result while a required record remains open.
- Scope matches the quote, work order, change orders, and invoice.
- Crew time is approved and attached to the correct job.
- Purchases, stock, returns, and credits are reconciled.
- Subcontractor, rental, and direct-expense records are complete.
- Overhead is assigned once with the documented method.
- Revenue and cost cover the same finished scope.
Pick one recently completed job. Close these six checks, record the bucket variances, and carry the first proven correction into the next similar quote.