Skip to main content
IoTFlows Logo
IoTFlows Logo
Shopping Cart

Job costing with machine and labor hours

Job cost is measured machine and labor hours at burdened rates, plus material and scrap. Work one job, quoted against actual, and fix the jobs that lose money.

Mahmoud Parto, Co-founder and CEO

10 min read

Updated

You see the real cost and margin of every job by pricing the hours it actually took, not the hours its routing estimated. Job cost is measured machine hours times a machine rate, plus operator labor hours times a labor rate, plus material, plus scrap and rework. Subtract it from the job’s price to get the real margin, and compare each term with the quote to see where the margin went.

This guide is for owners and plant managers whose job costs still come from routing standards. It works one hypothetical job through by hand, quoted against actual, and ends with what to do when a job loses money.

Key takeaways

  • A job costed from its routing hours always shows its quoted margin, because that cost is the quote again.
  • Job cost is machine hours times a machine rate, plus labor hours times a labor rate, plus material, scrap and rework.
  • Machine hours come from the machine, labor hours from operator sessions, and material, price and the quote from the ERP.
  • Scrapped parts add only their material and any rework done away from the machine, since measured hours already include making them.
  • When a job loses money, find the cost term that overran, then requote, re-route or drop the job.

Why do routing hours make every job look alike?#

Routing hours make every job look alike because a cost built from the routing is the quote again. If a job’s machine and labor hours come from the routing’s setup and run times, its cost equals the quoted cost and its margin equals the quoted margin, whatever happened on the floor.

Definition

Job costing is a costing method that collects the machine, labor, material and scrap costs of each job on its own, so every job’s actual cost can be set against its price and against the cost assumed when it was quoted.

A job is an order for a quantity of a part, and each operation of it on one machine is a task, as the glossary entry for job and task defines them.

Cost accounting calls the routing’s hours standard hours: “the expected number of hours used at the actual production output.”[2] The labor time variance is the actual hours minus the standard hours, times the standard rate per hour.[2]

When nobody records actual hours per job, that variance still happens. It lands in one plant-wide total at month end instead of on the job that caused it.

For example, two jobs quoted at a 22% margin both show 22% at standard. Measured, one made 30% because it ran on a mill with a pallet changer, and the other lost 5% to a setup that took three times its estimate. In the month-end totals the gain on the first hides the loss on the second, so nobody requotes the loser.

The job cost formula#

Job cost has four terms: two kinds of hours you measure and price at rates you set, and two costs your ERP and your operators record.

Job cost =

Machine hours × Machine rate + Labor hours × Labor rate + Material + Scrap and rework

Job margin =

(Price − Job cost)
÷
(Price)
  • Machine hours are the hours the machine was committed to the job, setup included, measured rather than estimated.
  • Machine rate is what an hour of that machine costs to own and run: depreciation, financing, floor space, power, tooling and maintenance, plus its share of plant overhead.
  • Labor hours are the hours operators spent on the job, from their own start and stop records.
  • Labor rate is wages, benefits and the overhead that supports the operator. Manufacturing employers paid $48.62 an hour in wages and benefits in June 2026, before any overhead.[3]
  • Material is the stock issued to the job for its good parts.
  • Scrap and rework is the material in scrapped parts, plus any rework done away from the machine.

Where does each input come from?#

Each input has one owner: the machine records its hours, the operator records labor, scrap and rework, and the ERP holds material, price and the quote. A job cost is only as good as the weakest of those records.

InputSourceCaptured byWatch for
Machine hoursThe machineMachine state, tied to the jobStops inside the job
Labor hoursOperator sessionsStart and stop at the machineOne operator on two machines
ScrapThe operatorScrap logged with a reasonScrap found days later
ReworkOperator or inspectorRework logged against the jobBench time on no machine
MaterialThe ERPStock issued to the jobRemnants returned to stock
Price and quoteThe ERPSales order and routingPrice changed after the quote
One owner per input. When two systems both edit a number, nobody knows which one is right.

Machine hours need a join between machine time and the job, and an operator starting the job at the machine makes the most reliable one. The guide to connecting machine data to your ERP compares the three ways to make that join. Count elapsed hours on the job, stops included, so a 3-hour wait for material lands on the job that waited.

Labor hours come from the operator’s sessions on the job, never from machine time. An operator who tends two lathes at once would otherwise be charged twice, once on each job.

Scrap is logged against the job when it happens, with a reason, as in logging scrap during a job. Scrap found at final inspection a week later still belongs to the job that made it.

Material, price and the quote stay in the ERP, which already owns them. A material cost retyped into a spreadsheet goes stale the first time the ERP price changes.

Each term of the job cost comes from the system that owns it. Sample data.

Work one job through, quoted against actual#

The job below is quoted at a 22.2% margin and earns 6.9%, and the four terms show which hours took the difference. The rates are hypothetical, chosen for round arithmetic.

Worked example

Job 25-0412: 200 aluminum manifold blocks

  • Price: $40 a part, so $8,000 for the job. Material: one $12 blank a part, so $2,400.
  • Rates, hypothetical for this example: $90 per machine hour and $45 per labor hour.
  • Quoted machine hours: OP10 on a Haas VF-2 is 1.0 h setup plus 200 × 5.7 min = 19.0 h, so 20.0 h. OP20 on a CNC lathe is 0.5 h plus 200 × 2.85 min = 9.5 h, so 10.0 h. Total 30.0 h.
  • Quoted labor hours: 20.0 h on OP10, where the operator stays at the mill, and 5.0 h on OP20, where one operator tends two lathes. Total 25.0 h.
  • Measured machine hours: OP10 took 26.0 h (2.0 h setup, 21.0 h running, 3.0 h stopped). OP20 took 11.0 h. Total 37.0 h.
  • Measured labor hours: 27.0 h on OP10, including 1.0 h of first-article inspection, and 6.0 h on OP20. Total 33.0 h.
  • Scrap and rework: 8 parts scrapped at OP20 and remade from new blanks, 8 × $12 = $96, and 12 parts deburred at the bench, 3.0 h × $45 = $135. Total $231.

Way 1, sum the actual terms: 37.0 × $90 = $3,330 machine, 33.0 × $45 = $1,485 labor, $2,400 material and $231 scrap and rework. Job cost is $3,330 + $1,485 + $2,400 + $231 = $7,446.

Way 2, start from the quote: 30.0 × $90 + 25.0 × $45 + $2,400 = $2,700 + $1,125 + $2,400 = $6,225. Add the variances: (37.0 − 30.0) × $90 = $630, (33.0 − 25.0) × $45 = $360, and $231 of scrap and rework. Job cost is $6,225 + $630 + $360 + $231 = $7,446.

Margin = ($8,000 − $7,446) ÷ $8,000 = 6.9%, against 22.2% quoted
CostQuotedActualVariance
Machine30.0 h, $2,70037.0 h, $3,330+$630
Labor25.0 h, $1,12533.0 h, $1,485+$360
Material$2,400$2,400$0
Scrap and rework$0$231+$231
Job cost$6,225$7,446+$1,221
Margin22.2%6.9%−15.3 points
Hypothetical rates of $90 per machine hour and $45 per labor hour. Price $8,000 for 200 parts.

Machine hours carry more than half the gap, $630 of $1,221. On OP10 they split into 1.0 h of extra setup, 3.0 h of stops and 2.0 h of slower cycles, since the mill ran 21.0 h against the 19.0 h quoted.

Each of those has a different fix. That is why a job cost built from measured hours beats a single actual total: it tells you which hour to go after.

Same job, quoted and measured: extra machine and labor hours and scrap take 15.3 points of margin. Sample data.

Which rates should you use?#

Use fully burdened rates you can defend, and keep them fixed long enough to compare one job with another. A fully burdened rate is the whole hourly cost of a resource: for labor, wages, benefits and the overhead that supports the operator; for a machine, its ownership and running costs plus its share of plant overhead.

Overhead joins the machine rate the way cost accountants apply it to jobs: a predetermined overhead rate, estimated overhead divided by the expected level of activity, set before the year begins.[1] Machine hours are one of the usual bases, and they gain ground as technology cuts the direct labor in each part.[1]

Divide by the hours the machine will really run, not the hours it is scheduled. A rate spread over shift hours under-recovers on every machine that idles, as the idle-hour pricing for a machining center shows.

Choose one machine rate for the whole plant when your machines cost about the same to own, or when you don’t yet know each machine’s ownership cost. Choose a rate per machine class when you know each class’s real cost and they differ several times over, such as a five-axis machining center beside a manual lathe. A per-machine rate built on a guess turns every machine comparison into a comparison of guesses.

Write the rates down and keep them for a quarter. If two people price the same week at different rates, their margins can’t be compared.

See job cost from measured hours#

Insights, in the IoTFlows Production Scheduler, prices every task from the hours recorded against it. It multiplies the labor hours from operator sessions, and the machine hours, by a labor rate and a production rate you enter, then compares the total with the budget on the task.

It reports cost, profit, margin and the share of tasks losing money, with an operations table grouped by job or by machine. The Insights cost model lists every input.

For Enterprise plants, IoTFlows engineers build two-way connectors to Epicor, SAP, Oracle, JobBOSS, ProShop and others as a custom integration. MiRus’s Epicor connector, built in about a month, pulls every job from the ERP and correlates it with the machining and labor hours it actually took. MiRus sees how efficiency gains on the floor have lowered its labor and machining costs and lifted the profitability of each product line, as MiRus’s story describes.

What should you do when a job loses money?#

Find the cost term that overran, then requote, re-route or drop the job, in that order. Review completed jobs every week, and act on a part after three runs show the same overrun: one run can carry a broken tool or a new operator.

What overranLikely causeFirst action
Setup hours on small lotsSetup priced into too few partsRequote with a setup charge
Run hours on every runQuoted cycle time too fastRequote at the measured cycle
Run hours on one machine onlyThe part suits another machineRe-route to the faster machine
Stopped time inside the jobWaiting on material or programsFix the process, keep the price
Scrap and reworkProcess not capable at the toleranceFix the process, then requote
Every term, after a requoteA price the customer won’t moveDrop it, or keep it as fill work

Requote when the hours belong to the part: a setup or a cycle time the quote got wrong. Send the measured hours with the new price, so the customer sees a record rather than a new estimate.

Re-route when the hours depend on the machine. If the manifold runs at its quoted 5.7 minutes on a mill with a pallet changer and at 6.8 minutes on an older one, plan it on the first, as scheduling on real run rates explains.

Fix the process when the overrun is stops or scrap. A job that waited 3 hours for material has a supply problem, and a higher price only hides it.

For example, say a repeat order loses $300 at full cost over 37 machine hours, and $55 of the hypothetical $90 machine rate is fixed ownership cost. On a machine with idle hours, the job still pays 37 × $55 − $300 = $1,735 toward costs the plant carries anyway. On the bottleneck, the same 37 hours could run a job that earns its full rate.

Find the bottleneck before you decide which case you’re in. If profitable work queues behind losing jobs on the constraint, drop the losers before you price another shift or another machine.

Questions#

What is the difference between job costing and process costing?#

Job costing collects costs for each order on its own, which suits a plant making distinct jobs, lots or custom parts. Process costing collects costs for each process step and divides them by the units that flowed through, which suits continuous output such as resin, beverages or wire. A plant can use both: process costing on a high-volume line and job costing in the machine shop beside it.

How do I cost labor when one operator runs two machines?#

Charge the operator’s time once, split across the jobs running at the same time. If an operator tends two lathes for a whole shift, each job carries half the shift in labor hours, while each lathe carries the full shift in machine hours. Taking labor from machine time would charge the same person twice.

Should overhead go into the machine rate or the labor rate?#

Put each overhead cost with the resource that drives it. Costs that follow machine hours, such as power, maintenance, tooling and floor space, belong in the machine rate. Costs that follow people, such as supervision, training and payroll administration, belong in the labor rate. Count each cost once, and keep the split fixed so jobs from different months compare.

How often should I review job margins?#

Review completed jobs every week, while operators and planners still remember what happened. Act on a part only after three runs show the same overrun, because one run can carry a one-off such as a broken tool, a new operator or a late material delivery. Review the rates themselves once a quarter.

Written by

Mahmoud Parto, Co-founder and CEO

Sources#

  1. Principles of Managerial Accounting, 4.4 Compute a Predetermined Overhead Rate and Apply Overhead to Production, OpenStax, Rice University. Accessed Oct 30, 2026
    openstax.org/books/principles-managerial-accounting/pages/4-4-compute-a-predetermined-overhead-rate-and-apply-overhead-to-production
  2. Principles of Managerial Accounting, 8.3 Compute and Evaluate Labor Variances, OpenStax, Rice University. Accessed Oct 30, 2026
    openstax.org/books/principles-managerial-accounting/pages/8-3-compute-and-evaluate-labor-variances
  3. Employer Costs for Employee Compensation, Table 4: Private industry workers by occupational and industry group, June 2026, U.S. Bureau of Labor Statistics. Accessed Oct 30, 2026
    bls.gov/news.release/ecec.t04.htm