The work is finished, but a technician logged an afternoon to the wrong work order and a supplier credit is still missing. To know how to calculate job cost, fix the records first. Do not reuse the estimate.
Finished-job costing is a reconciliation. Match the completed scope to the right revenue. Rebuild the cost from source records. Assign overhead once. Keep the result provisional while anything is missing.
Match the completed scope to the revenue
Put the quote, work order, approved change orders, and invoice beside each other. Check that they carry the same customer, address, job number, and description of the work.
The revenue and cost must cover the same scope. Do not compare original-scope costs with an invoice that includes extra work unless the costs of that extra work are also complete.
Correct misplaced records now. A technician's afternoon recorded against the wrong work order makes one job look cheap and another look expensive. Move the time before comparing either job.
Set a closeout status for anything still unresolved:
- Crew time waiting for approval
- Supplier invoices not received
- Stock withdrawals not entered
- Materials waiting to be returned
- Supplier credits not posted
- Subcontractor or rental bills still open
A finished site can have a provisional job cost. Mark it that way. Do not let a missing cost quietly become profit.
If the office is still mixing expected and actual figures, start with the practical explanation of job costing.
How to calculate job cost from actual records
Use the completed records, not the allowance from the quote:
Actual job cost = actual direct labour + actual materials + subcontractors and equipment + other direct expenses + assigned overhead
For job order costing, create one cost record for each job number and post every cost bucket to that record.
Every amount needs a source. Use approved time entries, payroll records, purchase documents, stock records, subcontractor bills, rental records, receipts, overhead rates, and cost codes.
This is how to calculate job cost without turning the closeout into a second estimate. The estimate stays in the comparison column. It does not become evidence of what the work consumed.
Use one closeout sheet for every job:
| Cost bucket | Estimated cost | Actual cost | Open item | Variance | Record or cause |
|---|---|---|---|---|---|
| Direct labour | [enter] | [enter] | [yes/no] | [calculate] | [time or payroll record] |
| Materials | [enter] | [enter] | [yes/no] | [calculate] | [purchase or stock record] |
| Subcontractors and equipment | [enter] | [enter] | [yes/no] | [calculate] | [bill or rental record] |
| Other direct expenses | [enter] | [enter] | [yes/no] | [calculate] | [receipt or permit record] |
| Assigned overhead | [enter] | [enter] | [yes/no] | [calculate] | [allocation method] |
| Total job cost | [enter] | [enter] | [yes/no] | [calculate] | [next action] |
Keep these buckets consistent between estimating and closeout. If fuel sits in direct expenses on one job and overhead on the next, the comparison stops being useful.
Build labour cost from approved job time
Start with the time record. Check the worker, date, hours, job number, and task. Correct duplicate entries, missing time, and time attached to another job.
Calculate the internal hourly cost from the worker's payroll record:
Internal labour cost per hour = payroll cost plus included employment costs ÷ paid hours covered by those records
Then calculate the job amount:
Job labour cost = approved job hours × internal labour cost per hour
Include employment costs under the method used by your business. Count each cost once. Do not use the customer billing rate. The billing rate is selling revenue, not the cost of the worker.
Treat owner and supervisor work the same way. Time spent installing, diagnosing, or managing one job can be direct labour when it has an approved time record and job code. General supervision shared across several jobs belongs in overhead instead.
Questions about workers' compensation coverage belong with your provincial or territorial workers' compensation board. Do not guess at coverage or copy another contractor's treatment.
Reconcile materials and outside costs from source records
Begin with purchases assigned to the job. Then add materials taken from shop stock using the cost recorded by your business.
Now check where the materials ended up. When stock is returned, transferred to another job, or credited by the supplier, reverse the material cost from the original job using the amount supported by the stock record, transfer record, or supplier credit.
A purchase document does not prove that every item stayed on the job. Follow the material from purchase or stock withdrawal to installation, return, transfer, or unused stock.
Keep an expected supplier credit open until it appears in the records. The same rule applies to a subcontractor invoice or rental charge that has not arrived. Do not estimate it away merely to close the job.
Add other traceable costs where they apply. These can include subcontractors, equipment hired for the job, disposal, permits, delivery charges, and job-specific travel. Use the real record from your business. Do not create a standard allowance after the work is done.
Assign overhead once and check every bucket
Separate direct expenses from shared overhead. A rental used only for one site can be charged directly to that job. Office costs supporting many jobs need the overhead rate and cost code used by the business.
A basic allocation can be written as:
Assigned overhead = allocation base × overhead rate
The allocation base might follow labour hours, labour cost, or another method supported by your accounting records. Use the same method across completed jobs. Do not select a different method because one result looks weak.
Check for double counting before accepting the total:
- Is an employment cost already included in labour burden?
- Is vehicle cost already included in shared overhead?
- Was equipment charged directly and through overhead?
- Was supervisor time entered as direct labour and allocated again?
- Does a direct expense also appear in the material total?
One cost gets one home. Not two. If you cannot explain how an amount reached the job, trace it before closing the record.
Close the GST/HST layer before judging the job
Identify the GST/HST basis used in your accounting records. Apply that same basis to quoted revenue, the final invoice, supplier purchases, credits, and other job costs before comparing revenue with cost.
Leave job profitability provisional when the tax treatment or recoverability of an amount is unresolved. For GST/HST treatment questions, check with the Canada Revenue Agency.
This check does not replace the scope check. Revenue and cost still need to cover the same work.
Compare actual vs estimated cost by bucket
Calculate the variance separately for labour, materials, outside costs, direct expenses, and overhead:
Cost variance = actual bucket cost − estimated bucket cost
A positive variance means the actual cost exceeded the estimate for that bucket. A negative variance means it came in below. Neither result explains itself.
Read the field records. Labour might be high because access was poor, rework occurred, a task was missed in the estimate, or time was assigned from another work order. Materials might be high because of waste, an omitted item, a scope change, or an unrecorded transfer.
Write one cause and one action. Be specific:
- Add the missed fitting to the material list.
- Ask about ceiling access before quoting.
- Correct the expected installation time.
- Keep the chasing exclusion in the quote.
- Remove a duplicated overhead charge.
The actual vs estimated cost comparison should change the next decision. A note that only says the job went over gives the estimator nothing to use.
Check job profitability with matched figures
Profit requires revenue and cost for the same finished work:
Profit = matched job revenue − matched job cost
Margin and markup answer different questions:
Margin = profit ÷ selling revenue
Markup = profit ÷ cost
Markup is added to cost when building a price. Margin measures the profit left as a share of selling revenue. Mixing them can make a quote appear sound while the finished job says otherwise.
Worked example: Keep the Oak Street change order separate
Oak Street is the house electrical example. All figures are sample currency units, not a rate card.
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 ranged from 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 1,265.
The supplied job cost of 850 is measured against the original quote of 1,105:
- Profit:
1,105 − 850 = 255 - Margin:
255 ÷ 1,105 ≈ 23% - Markup:
255 ÷ 850 = 30%
Use the profit margin calculator to check the arithmetic with matched revenue and cost.
Do not subtract 850 from the 1,265 invoice. The cost of the 160 change order is not given. Its revenue is known, but the extra labour and material costs are not. Final profit on the full invoice cannot be calculated from these records.
Keep the original quote with the original-scope cost. Keep change-order revenue with change-order cost. Combine them only after both sides are complete.
Carry the proven correction into the next quote
A completed job is evidence from one scope, site, and crew. It is not a rate card.
Use the closeout note to correct the next similar estimate. Change the labour allowance when the records show a repeatable task difference. Fix the material list when an item was missed. Add a site question when access caused extra work. Keep a clear exclusion when the customer controls an unknown condition.
Correct the cost before applying markup. The labour, materials, overhead, and markup pricing framework shows how to turn those corrected costs into the next selling price.
When checking how to calculate job cost, use one job number across the approved scope, field records, costs, change orders, and invoice. If those records are split between the field and office, the field service software explainer shows what belongs in the job record.
Finished-job closeout gate
- Scope, revenue, and GST/HST basis match.
- Labour, materials, outside costs, and credits are complete.
- Overhead is assigned once.
- Any open item leaves the result provisional.
Pick one completed job now. Clear its open items, record the bucket variances, and carry the first proven correction into the next quote.