Skip to main content
erperp-selectionconstructionjob-costing

Construction ERP: Job Costing Requirements

Construction ERP job costing requirements: cost codes, commitments, change orders, labour burden, retainage, WIP and one real job to run through every demo.

Muhammad Amir

Muhammad Amir

Electrical Engineer & Founder, ECOSIRE Holdings

October 27, 202612 min read2.6k words

A construction ERP is an ERP whose costs are organised around jobs: every hour worked, supplier bill, subcontract and change order is posted to a job and a cost code, so you can compare budget, committed cost, actual cost and the forecast to complete while the work is still in progress. Job costing is the requirement that decides whether a system fits a contractor. If it cannot tell a project manager what a job will cost at completion, and why that figure moved since last month, no other feature makes up for it.

This is a requirements list to put in front of any vendor, in the order money flows through a job. It is not an accounting textbook, so percentage of completion, overbillings and retainage entries are left to your accountant. The question here is what the software must hold for those numbers to come out right. Documents linked below were checked on 27 October 2026.

The one line every requirement serves

Almost every requirement below exists to keep one row trustworthy: the cost-code line of a job-cost report.

ColumnWhat it holdsWhere it comes from
Original budgetThe estimate, by cost code and cost typeEstimating, imported once at contract award
Approved changesBudget added or removed by executed change ordersThe change-order log
Revised budgetOriginal budget plus approved changesCalculated
CommittedOpen balances on purchase orders and subcontractsPurchasing and subcontracts
Actual to datePosted labour, material, equipment, subcontract and other costTimecards, bills, equipment usage
Estimate to completeWhat the project manager expects is still to be spentThe periodic forecast
Estimate at completionActual to date plus estimate to completeCalculated
VarianceRevised budget minus estimate at completionCalculated

If a system produces this row per cost code, rolls it up and drills to the documents behind each number, most of the rest follows. If not, a spreadsheet grows beside the ERP and becomes the real system.

1. The cost structure: decide it before the software does

Settle the hierarchy on paper first: the job, an optional phase or area (a building, a floor, a stretch of road), the cost code, then the cost type (labour, material, equipment, subcontract, other). Estimating, budgets, timecards, purchase orders and subcontracts must all use the same codes, or the table above compares different things.

  • Are the levels real fields or naming conventions? Some ERPs hold project cost on a general accounting dimension rather than a dedicated job-cost structure. Odoo, for example, tracks project costs through analytic accounting, which its documentation describes as helping "track costs and revenues and analyze a project’s or service’s profitability", with analytic plans that group analytic accounts. That can work; ask how cost code and cost type are each represented, and whether timecards, bills and budget lines all carry both.
  • One standard code list, job-specific budgets. A shared list makes jobs comparable; codes invented per job make them impossible to compare.
  • Granular enough to act on, coarse enough to code correctly. Start from the codes your estimators already price by. If the estimate and the cost report use different codes, nobody can say whether the estimate was wrong.

2. Budgets and change orders: keep every version

Every budget change must stay traceable. Require that:

  • The original budget is locked at award. Later changes arrive as dated records with their documents, never as edits to the original lines.
  • Owner change orders have states: pending, approved, rejected. Pending changes are where margin hides, so their value should show separately, not mixed into the revised budget.
  • One approved change order updates both sides: the contract value you can bill and the budget by cost code you can spend. Two manual steps in two modules means one is eventually missed.
  • Internal budget transfers between cost codes are recorded as transfers, so they do not look like scope growth.
  • Subcontractor change orders link to the owner change order that caused them, so you can see whether a change was passed on or absorbed.

3. Commitments: purchase orders and subcontracts

Committed cost warns you early: a job can look healthy on actual cost while its signed subcontracts already exceed budget. That warning exists only if every subcontract and purchase order is entered when signed, not when invoiced.

For subcontracts, ask for:

  • an own schedule of values per subcontract, so each pay application is checked line by line against what was agreed;
  • retainage payable held per subcontract and released on your terms;
  • compliance gates: an expired insurance certificate or a missing lien waiver should be able to block a payment, not just send a reminder;
  • the subcontractor reports your customer may demand. On US federal fixed-price construction contracts, FAR 52.232-5 requires each progress payment request to list the amount for work performed by each subcontractor, the total of each subcontract and the amounts previously paid to each one. If you do that kind of work, the ERP should produce that list from its own records.

4. Labour: hours, burden and certified payroll

Labour is where job-cost data is most often wrong, because people in the field enter it at the end of a long day. Requirements:

  • Time by job, cost code and worker classification, entered daily and approved by a supervisor, not reconstructed at the end of the week.
  • Labour burden in job cost: payroll taxes, insurance and benefits on top of gross wages, as a standard rate or actual cost. A job costed at gross wages looks more profitable than it is.
  • More than one pay rate per worker, since the same person may be paid differently by job or classification, particularly on union or prevailing-wage work.
  • Certified payroll where it applies. For US contracts covered by the Davis-Bacon and Related Acts, the Department of Labor states that contractors must submit payroll information weekly, and that use of its Form WH-347 is optional provided the required information is reported. Whether it comes from the ERP or a payroll provider, its hours and classifications must agree with job cost.

If payroll runs elsewhere, the integration that moves hours out and burdened cost back is part of the project.

5. Equipment: owned machines are a cost too

Rented equipment arrives as a bill. Owned equipment sits in depreciation, fuel, repairs and insurance, and unless the system charges it to jobs at an internal rate per hour or day, jobs using your own machines look cheaper than jobs that rent. Ask whether the ERP posts usage from timecards, holds rates per machine or class, and compares what jobs were charged with what the equipment cost to run.

6. Billing: schedule of values, progress billing and retainage

Most commercial contracts bill against a schedule of values: the contract sum split into lines, with work completed and stored to date claimed each period. The American Institute of Architects' G703 continuation sheet, for instance, breaks the contract sum into portions of the work following the contractor's schedule of values, alongside the G702 application for payment. Whatever format your customers require, the ERP must produce it from posted data.

  • Billing lines are separate from cost codes, with a mapping between them. Customers usually want fewer, broader lines than you budget by.
  • Stored materials can be billed separately from installed work, where the contract allows.
  • Retainage receivable is tracked per contract and per billing, with its release recorded as its own event. Terms come from the contract and, on public work, sometimes from regulation: under FAR 52.232-5 the contracting officer may retain a maximum of 10 percent of a progress payment when satisfactory progress has not been made, and at substantial completion releases withheld funds beyond what is kept to protect the Government. So retainage terms belong on each contract, not in one company-wide setting.
  • Time-and-materials and cost-plus jobs bill from actual cost plus markup, which means billing rules per job.

7. Revenue recognition and the WIP schedule: hold the inputs

Your accountant chooses how contract revenue is recognised. The ERP must hold, per job and period, the inputs that method needs: estimated total cost, cost to date, contract value including approved changes, and billings to date. From those come the work-in-progress (WIP) schedule and the over- and underbillings a surety or lender may ask to see.

What the percentage complete divides by. Microsoft documents five WIP methods for Business Central projects; in its Percentage of Completion method, completion is actual total cost divided by budget total cost. That is a sound cost-to-cost figure only while the budget equals the current estimate at completion. If project managers forecast in a spreadsheet and never update the budget, WIP keeps following the original estimate. Ask every vendor which figure is the denominator, and who updates it.

Book and tax can differ. In the US, section 460 of the Internal Revenue Code generally requires the percentage-of-completion method for taxable income from long-term contracts, comparing costs incurred with estimated total contract costs. Its exceptions include home construction contracts and other construction contracts expected to finish within two years by a taxpayer meeting the gross receipts test. Your accountant decides what applies; the system or the workpapers may need two views of one job.

8. Forecasting: the project manager's number

Most of the selection effort belongs here: this is the number the business manages by. Require a periodic cost-to-complete review by the project manager per cost code, not plugged by accounting; every forecast kept with its date, so you can see how the estimate at completion moved; a period close after which reported figures stay put; and a short required explanation when a forecast moves past a threshold you set. A forecast that cannot be compared with last month's is an opinion, not a control.

9. The field and the other systems

The usual neighbours are estimating, project management and document control, field time apps, payroll and equipment telematics; give each an owner, direction and frequency. One rule matters most: a cost reaches the job exactly once. If a field app and payroll both post the same labour, the job report double-counts quietly. Decide the source system per cost type before connecting anything.

Run one real job through every demo

Send each shortlisted vendor the same finished job (estimate, subcontracts, a week of timecards, change orders) and ask them to run these steps live:

StepWhat the vendor doesIt passes if
1. BudgetImports your estimateEvery line matches, by cost code and cost type
2. CommitEnters a subcontract with retainage and two purchase ordersCommitted cost shows per cost code before any invoice
3. ChangeApproves one owner change order, leaves one pendingContract value, budget and pending exposure are right without retyping
4. LabourEnters a week of field time across two classificationsJob cost includes burden, not just gross wages
5. Pay the subProcesses a sub pay application with a lien waiver missingThe payment is blocked until the waiver arrives
6. BillProduces the owner pay application with retainageIt matches the format your customer requires
7. ForecastUpdates cost to complete on three cost codesEstimate at completion and WIP move; the previous forecast is kept
8. Drill downPicks any number on the job reportIt reaches the source document in a few clicks

A finished job has a second advantage: you already know the right answers, so you can tell a wrong number from an unfamiliar screen.

What goes wrong, and how to spot it early

  • Cost codes too detailed for the field. Sign: most hours land on one or two "general" codes.
  • Subcontracts kept outside the system. Sign: margin drops when invoices arrive, never when contracts are signed.
  • Change orders managed in email. Sign: the revised budget no longer equals the original plus approved changes.
  • Unburdened labour. Sign: labour cost on jobs equals gross wages for those hours.
  • A stale denominator. Sign: the percentage complete keeps rising while the project manager says the job is behind.
  • Billing in a separate spreadsheet. Sign: retainage receivable in the ledger disagrees with the billing schedule.
  • Owned equipment never charged. Sign: equipment cost sits only in overhead.
  • Double-posted costs. Sign: labour on jobs exceeds payroll for the same period.

A one-page requirements checklist

Before you sign, the system should be able to:

  • Hold job, phase, cost code and cost type as real fields used everywhere
  • Import an estimate as a locked original budget
  • Track change orders by state and update contract and budget together
  • Show committed cost per cost code
  • Run subcontracts with a schedule of values, retainage and compliance gates
  • Capture daily field time by cost code and classification, with burden
  • Produce or feed certified payroll where required
  • Charge owned equipment to jobs at internal rates
  • Bill against a schedule of values with retainage per contract
  • Hold WIP inputs per period, with a clear denominator
  • Keep dated forecasts and a period close
  • Post each cost to the job exactly once

Where I can help

If you already run Odoo for construction work, with custom job-costing, progress-billing or field-app modules, my technical architecture review covers custom modules, integration patterns, infrastructure and upgrade compatibility, and ends with a written report and a walkthrough call. If you are still deciding whether you have outgrown accounting software, start with ERP vs accounting software: when to move on. Or get in touch with this checklist filled in for one of your jobs.

Frequently Asked Questions

What is job costing in a construction ERP?

Tracking every cost of a construction job against its budget by cost code and cost type, together with committed cost and a forecast to complete, so profit is managed during the job rather than discovered after it.

Can a general-purpose ERP handle construction job costing?

Sometimes. Many general ERPs hold project costs and budgets; what is often missing is the construction layer: subcontract schedules of values, retainage on both sides, compliance gates, certified payroll and owner pay applications. Run the scripted test job and price every gap it exposes.

What is the difference between committed cost and actual cost?

Actual cost is what has been posted: timecards, bills, equipment charges. Committed cost is agreed but not yet billed, mainly open purchase-order and subcontract balances. Watching both shows an overrun when a contract is signed, not when it is invoiced.

Does a small contractor need a construction ERP?

Not necessarily. If accounting software with job tracking still answers the cost-to-complete question reliably, a full ERP may be premature. The signs you need more: subcontracts and change orders living outside the system, and job reports nobody trusts.

Tags:erperp-selectionconstructionjob-costing
Share:
Muhammad Amir

Written by

Muhammad Amir

Electrical Engineer and founder of ECOSIRE Holdings. Began his career on JF-17 fighter jet avionics; now ships ERP, AI, and ad-tech systems — including 215+ Odoo modules, an autonomous SEO platform, and AI agent fleets.

Need consulting help?

I offer productized consulting services for ERP, integrations, and AI.

View Services
Chat on WhatsApp