You can have clean cost codes, on-time commitments, and a job cost report that ties to the penny — and still hand your surety a WIP schedule that's quietly wrong. That's the gap most articles on construction job costing miss. They explain how to track labor, materials, and overhead by job. They stop short of the part that decides whether you keep your bonding line: every one of those cost codes is an input to your WIP schedule's percent-complete, and percent-complete is what drives earned revenue.
Construction job costing is the practice of tracking every project cost against a specific job and cost code. The job cost report is where you read it. The WIP schedule is what that report produces. This post connects the three — for a general contractor's finance team that already runs Procore and needs the cost data underneath the WIP to actually mean something.
What is construction job costing? (And why it's different from generic accounting)
Construction job costing is the process of tracking every project cost — labor, materials, subcontractors, equipment, and overhead — against a specific job and cost code. Unlike company-level accounting, which produces a single income statement, job costing treats each project as its own profit center. Without it, a contractor cannot tell whether an individual project is profitable until the job closes.
That last point is the whole reason job costing exists. A company-level income statement cannot tell you whether Harbor Point Tower is making money or whether Riverside Medical Center is burning through its budget. Construction accounting solves this by treating each project as its own financial center, tracking costs and revenue at the job level (Whipplewood CPAs).
Each project is its own profit center
Every job is its own little company: one contract, one crew, one set of subs, one set of materials, one margin. There is no "standard unit cost" to lean on the way a manufacturer has — only this job, this scope, and this set of commitments. That is why generic, off-the-shelf cost accounting does not fit construction.
A construction CPA firm puts the stakes plainly: "Accurate job costing isn't just an accounting exercise. It's your early warning system for profitability" (Baldwin CPAs). The margin for error is thin. The average net profit margin for construction businesses ranges from 3% to 7%, which leaves very little room for a job-cost mistake — even a small increase in costs or an underestimate of project expenses can quickly erode profit (CFMA).
Revenue is earned gradually, not in a single transaction
The second thing that makes construction job costing distinct: contracts run for months or across fiscal years, so revenue is earned gradually, not in a single transaction (Whipplewood CPAs). You can't wait until Cedar Crest Apartments closes to find out how it did. You recognize revenue as the work progresses, under ASC 606, and the figure that drives that recognition comes straight out of your job cost data. Hold that thought — it is the bridge this whole post is built on.
Job costing, then, is the foundation every other construction accounting practice is built on (Whipplewood CPAs). Revenue recognition, the WIP schedule, and your bonding package all sit on top of it.
What is the two-dimensional cost structure: cost codes × cost types?
Construction job costing tracks every dollar along two axes at once: a cost code that says what the work was, and a cost type that says how the money was spent. A cost code identifies a scope of work, like "Concrete Slab" or "Rough Carpentry." A cost type identifies the kind of spend — labor, materials, subcontractors, equipment, or overhead. Together they form a two-dimensional view of job cost.
Cost codes — the "what" (CSI MasterFormat)
Cost codes are structured numerical identifiers assigned to specific scopes of work — the DNA of your budget. The estimator assigns a budget to each code, and as work is performed, labor hours, materials, equipment, and subcontractor costs are logged against those same codes (Ascent Consulting). That continuity from estimate to execution is what makes a job's performance visible in real time instead of at close.
In the US, the standard framework for organizing those codes is CSI MasterFormat — the industry standard in North America for organizing construction information, sometimes called the Dewey Decimal System of construction. When contractors bill via a schedule of values organized by CSI, line-item costs transfer straight into the matching budget section, which makes it easy to compare estimated and actual costs (Procore). That direct line from MasterFormat code to budget line is the first link in the chain that ends at your WIP schedule.
Cost types — the "how" (labor, materials, subcontractors, equipment, overhead)
While cost codes define what the work is, cost types clarify how the money is being spent (Ascent Consulting). A single code — say, site grading — can accumulate costs from labor, equipment rentals, fuel, and subcontracted excavation all at once. The five standard cost types are labor, materials, subcontractors, equipment, and indirect/overhead.
One cost type is understated more often than any other: labor burden. Labor burden is the full cost of employing someone beyond base wages — payroll taxes, workers' comp, health benefits, PTO, retirement, and safety gear. Annualizing US Bureau of Labor Statistics data, labor burden runs roughly 44% of base pay for a full-time construction employee, inside a typical range of 30% to 60% of the base wage (Construction Coverage citing BLS ECEC). Because labor is usually the largest cost category, a job-costing system that excludes burden materially understates actual job cost — and understates the cost-to-date that feeds your WIP.
Why the two axes together matter
Read one axis alone and you're half-blind. The two together give you a two-dimensional view: whether "Rough Carpentry" is on budget, and — when it isn't — whether labor efficiency or material pricing is the source of the variance (Ascent Consulting). The matrix below is the structure. Each cell is a budget line that collects actual-cost postings as the job runs.
| Labor | Materials | Subcontractors | Equipment | Overhead | |
|---|---|---|---|---|---|
| Concrete (03-300) | Finishers' hours + burden | Rebar, form lumber | Pump-truck sub | Mixer rental | Allocated % |
| Rough Carpentry (06-100) | Framing crew + burden | Lumber, fasteners | — | Nail-gun rental | Allocated % |
| Mechanical (15-000) | Plumber hours + burden | Pipe, fittings | Plumbing sub | — | Allocated % |
Each cell is a budget line that gets actual-cost postings as the job progresses. The sum of all cells = total job cost to date = the numerator in cost-to-cost percent-complete.
That caption is the entire point of this article, condensed. Keep it in mind through the next two sections.
What does a job cost report actually show: committed costs vs. actuals?
A construction job cost report shows each cost code's budget against four things: actual cost to date, committed costs, the variance, and a forecast. The column most often missing — and the one that matters most for not getting surprised — is committed costs. A report that shows only actual-to-date spend understates the job's real financial exposure.
Committed costs are expenses guaranteed through formal agreements — subcontracts and purchase orders — that have been contracted but not yet paid (Procore). The plumbing sub you signed for $180,000 is a real obligation the day you sign it, not the day the invoice lands. If your report waits for the invoice, you find out too late: "Seeing that cost come in after it is paid is too late to start making adjustments or forecasting out costs appropriately" (Procore). Committing the cost early makes the overrun visible before it becomes an actual.
A complete construction job cost report carries these columns per cost code: Budget, Actual to Date, Committed Costs, Variance, Percent Complete, and Forecast (J. Morey / JMCO). Budget should be defined by cost code, not just at the whole-project level — top-level estimates that lump labor, materials, and subs together leave decision-makers guessing. That Percent Complete column is the handoff point. It's where the job cost report stops being an internal management tool and starts feeding a financial statement.
How does job costing feed the WIP schedule?
Here is the load-bearing mechanism. The cost-to-date figure produced by job costing is the numerator in the cost-to-cost percent-complete formula: costs incurred to date ÷ Estimated Cost at Completion (EAC) = percent complete. That percentage, multiplied by the contract value, gives you earned revenue on the WIP schedule (Foundation Software). Job costing is the raw material; the WIP schedule is the financial statement it produces.
Walk the chain once: the cells of the cost-code × cost-type matrix sum to costs to date; divide by the Estimated Cost at Completion — costs to date plus the project manager's Estimate to Complete (ETC) — and you have percent complete; multiply by contract value for earned revenue; compare that to billings for your over-billing or under-billing position. Every figure your surety reads on the WIP traces back to those cost codes.
Which means the WIP is only as honest as the job cost data feeding it: "A WIP report is only as accurate as the data going into it. Timely, disciplined cost entry is a prerequisite for the report to mean anything" (Whipplewood CPAs). There are three ways clean-looking job costing silently corrupts the WIP.
1. Delayed cost posting understates percent-complete
If last week's labor hours aren't posted yet, or materials received but not invoiced aren't accrued, your cost-to-date figure is understated (Whipplewood CPAs). A low numerator means a low percent complete, which means understated earned revenue and an artificial under-billing on the schedule. The job is further along than the WIP shows — and the schedule reads as if you're financing the owner's project with your own cash.
2. The spend-vs-progress mismatch (70% spent, 50% done)
Cost-to-cost has a known failure: spend doesn't always track progress. Percent complete should be checked against field-verified progress, not accounting data alone. A task might be 70% spent but only 50% complete — a signal of an overrun (J. Morey / JMCO). When you book earned revenue purely on dollars spent, an early-overrun job looks more complete than it is, and you recognize margin you haven't actually earned. Read the cost data and field progress together.
3. Optimistic cost-to-complete → profit fade
When project managers are optimistic, or fail to update their estimates as conditions change, the WIP overstates percent complete and overstates earned revenue. Profit that looked real on paper has to be reversed when the job closes at a higher cost than projected. That reversal is profit fade (Whipplewood CPAs). The cause sits in the denominator: the ETC behind your Estimated Cost at Completion. Clean actuals plus a stale, hopeful cost-to-complete still produce a wrong WIP. Sureties read a pattern of fade across jobs as an estimating or project-management problem — which is exactly why your job-cost discipline reads as financial discipline to the people who underwrite your bond.
What does good job costing look like? A practical checklist
Good construction job costing is consistent, current, and complete enough that the WIP it feeds can be trusted by a surety. The bar is not "perfect" — it's "disciplined and on time." Six habits separate a job cost report that builds a credible WIP from one that quietly corrupts it:
- Use a consistent cost-code system based on CSI MasterFormat. Consistency in cost coding ensures clarity across projects and stakeholders (Procore). Don't over-engineer it — overcomplicating the cost-code list is one of the most frequent mistakes, and when the field team is guessing or defaulting to generic codes, the data becomes meaningless (Ascent Consulting).
- Map cost codes back to the general ledger. Cost codes track spend within a job; GL accounts are company-wide. When the two are mapped, your financials and job cost reports align — and the WIP reconciles to the statements a CPA and surety read side by side.
- Include labor burden in every labor cost. Base wage plus burden is the fully burdened labor rate (Construction Coverage). At ~44% of base pay, leaving burden out is the single fastest way to understate cost-to-date.
- Commit costs on time. Enter subcontracts and purchase orders as commitments so an overrun is visible before it hits the books as an actual (Procore).
- Track change orders separately. Approved change orders that go unbilled, and informal scope creep that goes undocumented, erode margin quietly (Baldwin CPAs).
- Keep the cost-to-complete current and review jobs monthly. Without monthly WIP reviews and job-profitability meetings, issues go unnoticed until the project is nearly complete (Baldwin CPAs). A stale ETC is the most common cause of profit fade.
Do these six and your job cost data is WIP-ready. Skip the last two and even perfect actuals produce a schedule your surety can't trust.
The Procore gap: clean job costs, but no native WIP schedule
If you run Procore, you already have most of the job-cost machine. Procore captures cost codes, cost types, committed costs, budgets, and actuals, and its Forecast to Complete column rolls up to an Estimated Cost at Completion. What it does not do is assemble that data into a WIP schedule. Ask Procore's own community where to find a WIP report and the answer is to build it yourself with custom calculated columns (Procore Community). The percent-complete, earned-revenue, and over/under-billing math has to be derived by the user — Procore gives you the ingredients, not the finished statement. That last mile, from clean Procore job costs to a bonding-ready ASC 606 WIP schedule, is the gap WIP Ready fills.
Frequently asked questions about construction job costing
What is construction job costing? Construction job costing is the process of tracking all project costs — labor, materials, subcontractors, equipment, and overhead — against a specific job and cost code. It treats each project as its own profit center, so a contractor can tell whether each individual job is profitable. It is the input layer beneath revenue recognition, the WIP schedule, and bonding (Whipplewood CPAs).
How does job costing feed the WIP schedule? The cost-to-date figure produced by job costing is the numerator in the cost-to-cost percent-complete formula (costs to date divided by estimated total cost). That percentage drives earned revenue on the WIP schedule. When job cost data is delayed, incomplete, or carries an optimistic cost-to-complete estimate, the WIP's percent-complete and earned revenue figures are silently wrong (Foundation Software).
What is the difference between cost codes and cost types in construction? Cost codes identify what work was performed (for example, "Rough Carpentry" or "Concrete Slab"), typically organized using the CSI MasterFormat standard. Cost types identify how the money was spent: labor, materials, subcontractors, equipment, or overhead. Together they form a two-dimensional view of job cost: whether a scope is on budget, and whether labor efficiency or material pricing is the source of variance (CSI MasterFormat / Ascent Consulting).
What are committed costs in a job cost report? Committed costs are expenses guaranteed through formal agreements — subcontracts and purchase orders — that have been contracted but not yet paid. A job cost report that shows only actual-to-date costs omits committed costs and understates the job's true financial exposure. Committed costs are a distinct column in a complete job cost report alongside budget, actual-to-date, variance, and forecast (Procore).
How WIP Ready helps
Job costing tells you where each job is. The WIP schedule turns that into the earned-revenue, billing, and forecast picture your surety, bank, and CPA actually read — and if you run Procore, building that schedule is still a manual job. WIP Ready reads your Procore cost data, collects each PM's cost-to-complete with a name, a timestamp, and a note, and assembles a bonding-ready ASC 606 WIP schedule that exports to your surety's template. It reads from Procore and never writes back — your cost codes stay the source of truth, and the cleaner your job costing, the more WIP Ready can do with it automatically. If you've already done the hard part of clean job costing, wipready.com is the last mile to a WIP you can hand over without rebuilding it in Excel every month.