Guides

Job costing: formula, example and setup without ERP

Job costing tracks every cost a job causes against what it earns. The formula, a worked $ example, cost categories, common mistakes and a setup without ERP.

A job card breaking labor, materials and mint margin.

Job costing is the method of tracking every cost a single job causes — labour, materials, subcontractors, equipment and a share of overhead — against the revenue that job earns. The result is profit and margin per job. Done well, it runs while the job is live, so you can re-price or re-scope before the margin is gone.

Most small contractors don’t need enterprise software to do it. They need three habits: a code for every job from the day it’s quoted, every cost captured against that code at the moment it happens, and the forgotten costs — payout splits, card fees, lead spend — counted from day one. The alternative is what every trades community describes: margins “worked out by hand in a spreadsheet every week” from “rounded ballpark numbers, not itemized,” and the real answer arriving after the job ships.

The job costing formula

The job costing formula adds every direct cost of a job to its share of overhead, then compares the total with what the job earns. Three lines cover it:

  • Job cost = direct labour + materials + subcontractors + equipment + allocated overhead
  • Job profit = contract revenue − job cost
  • Job margin = job profit ÷ contract revenue

Overhead needs an allocation rate. The simplest is total annual overhead ÷ total direct labour hours. If overhead is $220,000 a year and crews work 10,000 billable hours, every labour hour carries $22 of overhead.

The overhead line is where small firms lose the plot. NAHB’s Remodelers’ Cost of Doing Business Study, published in 2026 for fiscal 2024, found an average gross profit margin of 29.9% but an average net profit margin of 6.3%. The gap between them is mostly overhead. A job costed without it looks nearly five times more profitable than it is.

Job cost categories: what goes in each

Every cost on a job belongs to one of six categories. The first five are the classic job-costing set; the sixth is the one QuickBooks-era setups forget.

CategoryWhat goes inCapture it whenCommonly missed
Direct labourCrew hours × loaded rateThe day the hours are workedPayroll taxes, insurance, benefits
MaterialsEverything bought for the jobAt the counter, on the receiptReturns, waste, small top-up runs
SubcontractorsTrades you hire inWhen the sub invoices or is paidRetention, change-order extras
EquipmentRentals, fuel, owned-kit hourly rateOn rental or daily logOwned equipment treated as free
Overhead allocationOffice, vehicles, insurance, adminApplied by rate, per labour hourLeft out entirely
Payment and payout costsCard fees, PM and sales splits, lead spendWhen the money movesAlmost always

Subcontractors are often the biggest single line. In the same NAHB study, trade contractor costs came to 30% of remodelers’ revenue in 2024. If subcontractor payouts aren’t coded to the job they were for, a third of the cost base floats free.

A worked job costing example

Here is one job costed two ways. Say a home-services company wins a $24,000 kitchen remodel. The crew works 120 hours at a loaded rate of $38, and overhead is allocated at $22 per labour hour.

LineAmount
Contract revenue$24,000
Direct labour (120 h × $38)$4,560
Materials$6,200
Subcontractor (electrician)$3,800
Equipment rental$650
Overhead allocation (120 h × $22)$2,640
Card fee on the customer’s payment (3%)$720
Sales commission (5%)$1,200
Total job cost$19,770
Job profit$4,230
Job margin17.6%

Count only labour, materials and the sub, and the same job shows $9,440 profit and a 39.3% margin. That is the number the owner thinks they made. The real 17.6% is less than half of it, and the difference is exactly the costs nobody tags.

Why job-level margin stays invisible until it’s too late

Job-level margin stays invisible because the books record amounts, not jobs, and the tagging happens after the fact. Your accounting sees $4,300 to the timber merchant. Which job the timber was for lives in someone’s head, then a spreadsheet, then nowhere.

Timing is the real cost. A margin number after the job closes is an autopsy; the same number in week two is management. In a 2026 study by Dodge Construction Network and CMiC, fewer than half of U.S. contractors (41%) could identify potential overruns while still manageable on at least half of their projects. Job costing that runs live is how you land in that 41%.

How to set up job costing without enterprise software

You set up job costing without ERP by building three habits and applying one test to your tools. None of it needs an enterprise system.

  1. A code per job, from the quote. Job #4821 exists before any money moves, so no cost ever has nowhere to go. The estimate lives against the code too, so margin is always actual vs quoted — which is how pricing improves.
  2. Capture at the source. The materials receipt is scanned at the counter and tagged to the job. Crew hours are logged the day they’re worked. The customer’s stage payment lands against the job it funds. One contractor community’s rule: the truck isn’t loaded until the receipt is scanned.
  3. Count the whole cost stack. Include the crew/PM/sales split, payment fees and channel spend. This is also how you learn profit by channel: which lead source brings the 27% jobs and which brings the 9% ones.

The tooling test is one question: does tagging take seconds, automatically, at the moment of the transaction? If job costing depends on someone’s evening discipline, it dies — in QuickBooks, in a spreadsheet, or in enterprise software.

Common job costing mistakes

Most job costing errors make jobs look more profitable than they are. These six are the usual culprits.

  1. Unloaded labour rates. Paying $28 an hour costs more like $38 once payroll taxes, insurance and benefits land.
  2. No overhead allocation. Gross margin is not profit; overhead has to be charged to jobs.
  3. Tagging after the fact. Costs coded on Friday from memory get coded wrong, or not at all.
  4. Ignoring payment and payout costs. Card fees and splits are real job costs.
  5. No estimate to compare against. Actuals alone can’t tell you whether the quote was wrong.
  6. Change orders without their own code. Extra work absorbed into the base job hides its margin.

Where Fynex changes the mechanics

Fynex passes the tooling test structurally, because it sits on the money itself. The customer’s payment arrives against its job. The crew, PM and salesperson are paid their split on job close, by rule, so the biggest cost books itself the moment it exists. Fees are attributed to the payment that caused them, scanned receipts land tagged, and everything reconciles to QuickBooks behind the flow.

The result is the dashboard the spreadsheet was trying to be: margin by job, channel and crew, live. The $8,400 repaint shows its 27%; the Maple St exterior flags its 9% while it still has weeks to run; and the cash forecast knows which stage payments land next week. For contractors running progress billing and retention, see how Fynex handles construction payments and job-cost margin.

Related: ServiceTitan vs Jobber compares the field-service platforms that hold the schedule; tight billing beats fancy software makes the tooling argument from the billing end; how much cash will I have in three weeks turns job margin into a forecast; and where is your business losing money covers the leaks either side of job costing.

Enterprise job costing failed the trades not because the maths is hard but because the data entry was a second job. Put the tagging where the money moves and “which jobs actually make money” becomes something you check on Tuesday, not something you discover in December.

FAQ

Frequently asked questions

Job costing is working out the real profit on a single job: the revenue it earns minus every cost it caused. That means labour, materials, subcontractors, equipment and a fair share of overhead, plus payment fees and commissions. It answers the question a company P&L can't: which jobs make money and which just make work. Contractors, remodelers, home-services firms and agencies all use it.
Job cost = direct labour + materials + subcontractors + equipment + allocated overhead. Job profit = contract revenue minus job cost. Job margin = job profit divided by contract revenue. Overhead is allocated with a rate, usually total annual overhead divided by total direct labour hours. Use loaded labour rates that include payroll taxes, insurance and benefits, or every job will look more profitable than it is.
Company accounting tells you whether the business made money this month. Project job costing tells you which projects made it and which lost it. The books record that $4,300 went to the timber merchant; job costing records which job the timber was for. A healthy company P&L can hide individual jobs that lose money, and only job-level numbers show where to change pricing, scope or crew mix.
Build three habits rather than buying a platform. Give every job a code on the day it's quoted. Capture every cost against that code at the moment it happens: receipts scanned at the counter, crew hours logged the same day. Include the costs people forget, such as card fees, payout splits and lead spend. Then read margin weekly while the job runs, not after it closes.
Fynex sits on the money, so every payment in and every cost out is born tagged. The customer's stage payment lands against job #4821. The crew, PM and sales splits pay out against it on close. Fees and materials book to it as they happen. Margin per job, channel and crew updates in real time, while there is still time to fix pricing on the next quote.
Book a demo