← Back to all posts Implementation & approach

Job costing: from estimate to actual cost (with calculator)

Job costing shows what an order, project or production run actually cost, compared to your estimate. This pillar explains how to set up job costing, how to break the difference down into volume, budget and material variance, and how to automate it in Odoo. Includes an interactive calculator that works out the variance by cause for you.

Also in: Nederlands Deutsch

Short answer: job costing is establishing after the fact what an order, project or production run actually cost, compared to the estimate you made in advance. The value is not in the total amount, but in the difference and its cause: did you work more hours than budgeted (volume variance), were those hours more expensive than your rate (budget variance), or did the material get out of hand? Whoever knows that per order calculates more sharply next time. Below we explain the principle, with a calculator that splits the variance for you straight away, and we show how you automate it in Odoo.

Estimate and job costing: two sides of the same order

Every order starts with an estimate: you assess the hours, the material and the other costs, add your overhead markup on top and arrive at a price. That estimate is your plan, and often your standard cost as well.

Job costing is the reckoning with reality. You collect the actual hours logged, the actual material consumption and the actual rates, and put those next to the estimate. The difference is your learning moment:

  • If the order structurally overruns on hours, you are calculating too tightly, or your process is stuttering.
  • If the rates are higher than planned, your hourly rate is outdated or you are running below your normal capacity.
  • If the material does not add up, there is waste in it, or your purchase price has gone up.

Without job costing you do know at the end of the year whether your business made a profit, but not on which orders and why. That is the difference between a result that happens to you and a result that you steer.

Work it out yourself

Fill in your estimate and actual cost. The tool calculates the result on the order and splits the difference into the three causes that together add up exactly to the total.

Estimate

What you calculated up front (the standard cost).

Standard rate incl. overhead absorption.

Actual

What the order actually cost.

Estimate € 0
Actual € 0
Result on the order € 0

The variance, split by cause:

  • Volume variance (hours) € 0 More or fewer hours than estimated, at the standard rate.
  • Rate/budget variance € 0 Each hour dearer or cheaper than the standard rate.
  • Material variance € 0 Actual material used versus the estimate.

Illustrative model. A negative result means the order cost more than estimated. In a real manufacturing ledger these three variances roll out of your postings automatically, per order.

What you see happening above is the core of cost analysis: the total difference between estimate and actual cost falls apart exactly into three explainable pieces. That “exactly” is no coincidence but an arithmetic identity, and that is precisely why it is usable: every euro of variance has an address.

The difference broken down: volume, budget and material

The three variances from the tool are the standard language of cost accounting.

  • Volume variance (hours). (actual hours − calculated hours) × standard cost. This isolates the quantity of work: did you need more or fewer hours than planned? Valued at the standard cost, so that a rate change does not cloud the picture.
  • Budget or rate variance. actual hours × (actual rate − standard cost). This isolates the price of an hour: did each hour worked turn out more expensive or cheaper than your standard cost? A higher actual rate often points to undercapacity, overtime or an outdated rate.
  • Material variance. actual material − calculated material. Waste, price increase or an overly optimistic material calculation.

This split comes straight from the cost accounting textbooks (whoever has worked through Boekhouden Geboekstaafd part 3 will recognise the volume and budget variance). It works for a production run just as well as for a construction project, an installation job or a consulting assignment: everywhere you calculate in advance and register hours and material afterwards.

Job costing per sector

The principle is universal, the implementation differs per sector:

  • Production. Job costing per production order, with material, machine hours and surcharges. If you want to have that balance out on your balance sheet (work in progress, standard cost, variance account), you end up at real manufacturing accounting.
  • Construction and installation. Job costing per project or per specification: budgeted versus spent man-hours and material, with additional and reduced work. See also software for construction companies and software for field service installers.
  • Project organisations and service providers. Job costing based on logged hours against a rate, often the determining factor for your margin.

Automating job costing in Odoo

The pitfall of job costing is that it becomes a loose exercise: afterwards putting hours from one system and costs from another side by side in a spreadsheet. Then the job costing is always too late and never complete.

Better is job costing that rolls out of your administration itself. In Odoo that works like this:

  1. Estimate as standard cost. You record the calculated cost price as the standard cost on the product or the project budget.
  2. Registration where the work happens. Hours on the work order or the project, material via stock movements, machine costs via work centers. Record once, at the place where it arises.
  3. The difference posts itself. On completion, the difference between actual costs and standard cost lands on a variance account, directly analysable per order and per customer via the cost analysis.

For production companies that want to carry this through to the operation step and onto the balance sheet, we have worked out the full posting flow in a separate demo: manufacturing accounting in Odoo. There you see how work in progress, coverage accounts and the variance posting land neatly on the trial balance.

Frequently asked questions

What is job costing? Establishing after the fact what an order, project or production run actually cost: all the hours, materials and costs spent, set against the estimate.

What is the difference between an estimate and job costing? An estimate is the cost price budgeted in advance (that you quote with); job costing is the actual cost price after the fact. The difference you split into volume, budget and material variance.

How do you calculate job costing? Actual hours times actual rate, plus actual material, minus the estimate. Split the difference by cause (hours, rate, material), as the calculator above does.

What is a volume variance and a budget variance? The volume variance comes from more or fewer hours than budgeted (at standard cost); the budget variance from a deviating hourly rate. Together with the material variance they explain the whole difference.

Can you automate job costing in Odoo? Yes, by working with a standard cost and registering hours and material on the order; the difference then posts itself automatically on a variance account, analysable per order and customer.


Want job costing to roll out of your system instead of out of a spreadsheet? Book a free Odoo scan - then we walk through your calculation, hours and material registration and show where job costing can happen automatically.


Read more: Calculating cost price: direct and indirect costs · Manufacturing accounting in Odoo · Odoo for manufacturing companies · Software for construction companies · Software for field service installers · What does an Odoo implementation cost? · The TARGET method

Frequently asked questions

What is job costing?

Job costing is establishing after the fact what an order, project or production run actually cost: all the actual hours, materials and costs spent on it. You put that outcome next to the estimate (the pre-budgeted cost price) to see whether your calculation was right and where the difference came from.

What is the difference between an estimate and job costing?

An estimate is the cost price calculated in advance that you quote and plan with; job costing is the actual cost price after the fact. The difference between the two is your calculation variance, and it can be split into a volume variance (more or fewer hours than budgeted), a budget or rate variance (each hour more expensive or cheaper than planned) and a material variance.

How do you calculate job costing?

Add up all the actual costs per order: actual hours times the actual hourly rate, plus actual material and other direct costs. Subtract that from the estimate (calculated hours times standard cost plus calculated material). Then split the difference by cause so you know whether it was down to the hours, the rate or the material.

What is a volume variance and a budget variance?

The volume variance is the part of the calculation variance caused by working more or fewer hours than calculated, valued at the standard cost. The budget or rate variance is caused by each hour worked turning out more expensive or cheaper than the standard cost. Together with the material variance they explain the full difference between the estimate and the actual cost.

Can you automate job costing in Odoo?

Yes. When you work with a standard cost in Odoo and register hours and material on the production order or the project, job costing rolls out of your postings automatically: the difference with the standard cost lands on a variance account, analysable per order and per customer. For production with work in progress per operation step, you see this back in the manufacturing accounting.

Recognize this from your own setup?

A 30-min scan turns hunches into a concrete view, what stays standard Odoo, what becomes custom, what doesn’t need code at all.

Get in touch ← Back to blog