SolarSoftwares
Book a demo

What Is Job Costing?

How we keep reviews fair

Quick answer

Job costing (also called job cost accounting) means recording the cost of each job on its own and comparing it with the estimate. It usually tracks 5 cost groups: labour, materials, subcontractors, equipment and allocated overhead. You get a margin for each job, not one company-wide figure.

Ready to see how it works?

Tell the SolarSoftwares team which tool you are considering. We reply by email to book your demo.

Book a demo
Jump to a section

Key takeaways

  • Variance is actual minus estimate, so a positive number is over. On an invented 11.2 kW roof job, the original scope ran 433 USD (3.7%) over: 12,035 against 11,602 USD.
  • Leave the change order cost in the same comparison and the job shows 1,235 USD (10.6%) over. Most of that gap is extra customer work, not an estimating error (example figures).
  • Labour caused 208 USD of the 433 USD. Rate explains 132 USD and extra hours 76 USD (example).
  • Example margin: 22.1% estimated and 19.2% actual on the original scope. With the change order priced it is 20.3%. Unpriced, 13.8%.
  • Of 6 company pages read, 3 name job costing: Jonas, Acumatica and FOUNDATION. NetSuite, Payaca and Simpro name related functions only.

To track estimate against actual per job in software, compare the best solar EPC project management software (job level) or the best solar ERP software (company-wide).

Job costing at a glance

Job costing answers one question for each job: did it make the money the estimate said it would? Wikipedia defines it as accounting that tracks costs and revenues by job.

ItemDetail
Unit of workOne job or contract, such as a roof install, a ground-mount phase or a service visit.
Cost groupsLabour, materials, subcontractors, equipment and overhead. Autodesk’s construction guide lists the same five.
Core formulasVariance = actual - estimate. Margin = (revenue - cost) / revenue.
Standard or ruleNone for solar. How to treat overhead or revenue in your accounts is a question for your accountant.
In softwareConstruction ERP, project tools and some solar suites. See the software table below or the best solar ERP software.

Why does job costing matter for installers?

Company accounts hide weak jobs inside a healthy total. Job costing shows which jobs, job types or crews lose margin. It also feeds real figures back into the next estimate.

Payaca’s blog (25 August 2026) says install businesses often cost jobs from the quote, not from what was spent. It says the gap usually opens up in materials. It is a company blog, so treat it as a view, not a measurement.

Job costing draws on several records. Part lists come from the bill of materials and bill of quantities. Hours come from crew management and the work order. Stock draws come from inventory management. When cash moves is a separate view. See cash flow analysis.

How do you cost a job? Six steps

Fix the estimate first. Record every cost against the job as it happens. Then compare by cost group.

  1. Freeze the estimate by cost group. It is the baseline, so do not rewrite it later.
  2. Code every cost to the job: timesheets, supplier invoices, subcontractor bills and equipment hire. See purchase orders for the buying side.
  3. Allocate overhead. Wikipedia describes applying overhead with a rate and an allocation base, such as direct labour hours. Autodesk says it is often a percentage of direct costs or a fixed rate per job.
  4. Log each change order at once, with its own revenue and cost. Autodesk advises documenting the financial impact right away and updating the budget.
  5. Compute variances by group, then split labour and materials as shown below.
  6. Close out by comparing actuals with the estimate, as Autodesk advises. Use the gaps to fix the next estimate.

Linking costs to your ledger is covered on accounting integration.

How do you calculate variance and margin?

Variance is actual cost minus estimated cost. Split a labour or materials variance into a price part and a quantity part. They have different fixes.

OpenStax’s managerial accounting text (section 8.3 and 8.2) gives these formulas for standard costs in manufacturing. This page applies them to job estimates, as its own adaptation. OpenStax’s hours variance uses the standard hours allowed for the actual output. Our "estimated hours" equals that only for a fixed-scope job. If scope changes, use the change order’s own column.

  • Labour rate variance = (actual rate - estimated rate) x actual hours.
  • Labour hours (efficiency) variance = (actual hours - estimated hours) x estimated rate.
  • Materials price variance = (actual price - estimated price) x actual quantity.
  • Materials quantity variance = (actual quantity - estimated quantity) x estimated price.

The two parts add up to the total. OpenStax shows favourable results as negative numbers, and so does this page. Margin divides profit by revenue. Markup divides profit by cost. Buildertrend’s page (no date shown) shows a 20% markup as a 16.7% margin. It says a true 20% margin needs a 25% markup. Quote one or the other, and name it.

Worked example: an 11.2 kW roof job, estimate against actual

Every cost group ran over the estimate, and equipment had the largest percentage gap.

All inputs are example. That includes the 14,900 USD contract price, the loaded labour rates and an overhead rate of 22 USD per labour hour. The job is 28 modules of 400 W. Change order CO-1 (example) adds 1,200 USD of revenue and 802 USD of cost. It has its own column.

Table 1. Estimate against actual by cost group (example).
Cost group (example)Estimate (USD)Actual, original scope (USD)Variance (USD and %)CO-1 cost (USD)
Labour (64 h at 38 estimated, 66 h at 40 actual, CO-1 6 h)2,4322,640+208 (+8.6%)240
Materials6,5126,563+51 (+0.8%)180
Subcontractors900960+60 (+6.7%)250
Equipment350420+70 (+20.0%)0
Overhead allocated (22 USD per labour hour)1,4081,452+44 (+3.1%)132
Total11,60212,035+433 (+3.7%)802

Next, split three of the lines. The rail line is one materials item: 36 lengths at 14.50 USD estimated, 40 at 15.20 USD actual (example).

Table 2. Variance split (example).
Variance part (example)WorkingResult (USD)
Labour rate(40 - 38) x 66 h+132
Labour hours(66 - 64) x 38+76
Rail price(15.20 - 14.50) x 40 = 0.70 x 40+28
Rail quantity(40 - 36) x 14.50+58
Overhead, from extra hours(66 - 64) x 22+44

The rail line is 86 USD over. Cable and fittings came in 35 USD under, so net materials are 51 USD over. A net figure can hide a line that is wrong. The 44 USD of overhead is not extra cash spent. It shows up only because each of the two extra labour hours carries 22 USD.

Table 3. Margin for five cases (example).
Case (example)Revenue (USD)Cost (USD)Profit (USD)Margin
Estimate14,90011,6023,29822.1%
Actual, original scope14,90012,0352,86519.2%
CO-1 alone1,20080239833.2%
Whole job, CO-1 priced16,10012,8373,26320.3%
Whole job, CO-1 not priced14,90012,8372,06313.8%
Two charts of an invented solar job showing margin falling from estimate to actual and recovering with a priced change order

Figure 1. On an example job, an unpriced change order cuts margin to 13.8%, but pricing it lifts the job to 20.3%, against 19.2% on the original scope alone.

  • Change orders need their own column. Without it, the headline overrun (1,235 USD, 10.6%) blames the estimate for extra scope.
  • The overhead rate sets the margin level but barely moves the points lost. At 0, 22 and 44 USD per hour (example), the estimated margin is 31.6%, 22.1% and 12.7%. The loss on the original scope is 2.6, 2.9 and 3.2 points.
  • The 33.2% on CO-1 is one example job, not a benchmark. It depends on how the change order was priced and on its overhead share. The 22.1% estimated margin equals a 28.4% markup on cost.

Check your own job

Enter your price, estimate, actual and change order figures. It opens with the example job above. It then prints the variance table, the labour split and four margins.

If the calculator does not load, open the job cost variance and margin calculator on its own page.

Open the calculator on its own page

How solar software handles job costing

Of the three solar-focused companies, only Jonas names job costing on the page we read. Payaca and Simpro name related functions only. The table covers six company pages read in October 2026, one page each. "Yes" means the page names job costing. "Partly" means it names related functions but not job costing. Companies may document more elsewhere. The ERP page explains what these systems cover.

SoftwareJob costingBudgets and change ordersPage read
Jonas ConstructionYesBudgets: named. Change orders: named.Energy and solar contractors page. Last modified 4 December 2025 per metadata.
AcumaticaYesBudgets: named. Change orders: named.Construction ERP page. Last modified 6 April 2026 per metadata.
FOUNDATIONYesBudgets: named. Change orders: named.FOUNDATION modules guide. Shows 10 September 2026.
Oracle NetSuitePartlyBudgets: named. Change orders: Not stated.NetSuite modules page. Dated 13 February 2026.
PayacaPartlyBudgets: Not stated. Change orders: Not stated.UK features page lists "Project costing" under Finance and reporting. No date shown, copyright 2026.
SimproPartlyBudgets: Not stated. Change orders: Not stated.Solar and renewable page names contract profitability reports and cost tracking by phase, not job costing. No date shown.

Not stated: the page we cite does not say. Acumatica, FOUNDATION and NetSuite are general or construction tools, not solar-specific. For ranked tools, read the best solar ERP software and best solar EPC project management software lists. For ERP scope and licence wording, read ERP.

Common mistakes with job costing

FAQs

What is the difference between a budget and job costing?

The budget is the plan. Job costing records what each job actually cost and compares it with that plan. Without the estimate frozen as a baseline, the comparison means little.

How do you calculate job margin?

Subtract total job cost from revenue, then divide by revenue. In our example case, 14,900 USD of revenue less 11,602 USD of estimated cost leaves 3,298 USD, or 22.1%. Say whether overhead is in the cost.

Is allocated overhead a real cost on a job?

It is a share of company costs, not extra cash spent on that job. In our example only 44 USD of the 433 USD variance came from overhead. That came from two extra labour hours.

How do change orders affect job margin?

An unpriced change order adds cost with no revenue. In this example’s job it cut the margin to 13.8%. Priced at 1,200 USD, the whole job ended at 20.3%.

Is job costing the same as project costing?

Mostly yes: the practice is the same and companies use both terms. Payaca’s features page lists "Project costing", while Jonas and Acumatica name "Job Costing". That is why the table rates Payaca Partly.

What is a good job margin for a solar installer?

We found no sourced benchmark, so we give no figure. Compare each job with your own recent margin for the same job type, with overhead treated the same way each time.

Next step: run one closed job through the calculator above, then check whether your current system can split change orders from the original scope. If not, start with the best solar EPC project management software or the best solar ERP software.

Sources

Last updated 30 October 2026. Next scheduled review: 30 January 2027.

See the software on your shortlist.

Tell the SolarSoftwares team what you want in your solar software.

Your request goes by email to the SolarSoftwares team. A demo time is set only after we reply.