Construction Job Costing: How to Track Costs by Project for Tax Compliance and Profit
Job costing is not optional for construction companies. The IRS requires contractors on the percentage-of-completion method (PCM) under IRC 460 to track costs at the individual contract level, because the method determines taxable income by comparing costs incurred to total estimated costs for each job. Even contractors exempt from PCM (those who qualify for the completed-contract method under the small contractor or home construction exceptions) need job costing for two reasons: the financial statements must support the accounting method election on the tax return, and the contractor cannot make profitable bidding decisions without knowing actual costs per job.
Job costing tracks every cost (materials, labor, subcontractors, equipment, overhead) to the specific project that incurred it. For contractors on PCM, the cost-to-cost ratio (costs incurred to date / total estimated costs) determines the percentage of revenue recognized each year. For contractors on the completed-contract method, job costing still feeds the WIP schedule and the profit analysis. The chart of accounts must separate direct costs (materials, labor, subs) from indirect costs (insurance, small tools, vehicle expenses), and the allocation method for indirect costs must be consistent and defensible. QuickBooks handles job costing through the customer/sub-customer structure; construction-specific software (Sage 300 CRE, Foundation, Procore, Buildertrend) offers deeper functionality including cost code structures and budget-to-actual tracking.
What costs get tracked to each job?
Every cost that can be directly attributed to a specific project is a direct cost and must be tracked to that project. The categories:
Materials. Lumber, concrete, steel, pipe, wire, fixtures, and any other materials purchased for a specific job. The purchase order or invoice should reference the job number. Materials purchased in bulk (a pallet of lumber used across three jobs) must be allocated to each job based on usage, which requires a materials log or field tracking.
Direct labor. The hours worked by employees on a specific job, at their burdened labor rate (hourly wage plus payroll taxes, workers’ comp, health insurance, and other benefits). The burdened rate is the true cost of labor and is typically 25-40% higher than the base wage. Tracking labor by job requires timesheets or a time-tracking system (Busybusy, ExakTime, ClockShark) where employees log in and out of each job daily.
Subcontractor costs. The full amount billed by subcontractors for work on a specific job. Each sub invoice should reference the job and the scope of work. Retainage held from sub payments (typically 5-10%) is a liability until released.
Equipment costs. Equipment used on a specific job can be charged to the job at an internal rental rate (based on ownership cost, which includes depreciation, insurance, maintenance, and fuel) or at the actual cost of renting equipment from a third party. Internal equipment charges are an allocation, not a cash outlay, but they must be included in the job cost to accurately reflect the project’s true cost.
Other direct costs. Permits, inspection fees, temporary utilities, portable toilets, dumpsters, and any other cost specifically attributable to a single job.
Indirect costs (also called overhead or general and administrative costs) are costs that benefit all jobs but cannot be attributed to a single project: office rent, administrative salaries, accounting fees, general insurance, marketing, vehicle costs for supervisors who visit multiple sites, and small tools and supplies. These costs are allocated to jobs using an overhead allocation rate, typically calculated as a percentage of direct labor cost or total direct cost. The allocation method must be consistent from year to year, and the IRS can challenge an allocation method that produces results inconsistent with the economic reality.
How does job costing feed the percentage-of-completion method?
Under PCM (IRC 460), a contractor recognizes income on a long-term contract based on the percentage of the contract completed during the tax year. The “cost-to-cost” method is the most common: the percentage complete equals cumulative costs incurred divided by total estimated costs at completion.
The formula: (Costs Incurred to Date / Total Estimated Costs) x Total Contract Price = Cumulative Revenue. Revenue for the current year equals cumulative revenue minus revenue recognized in prior years.
The accuracy of the PCM calculation depends entirely on two numbers: cumulative costs incurred (from the job costing system) and total estimated costs at completion (from the project estimate, updated for change orders, scope changes, and actual cost experience). If the job costing system does not capture all costs accurately, or if the total estimate is not updated to reflect reality, the PCM calculation is wrong, and the tax return is wrong.
How do I set up job costing in QuickBooks?
QuickBooks Online handles job costing through the customer and sub-customer hierarchy. Each project is set up as a sub-customer under the client. Expenses and bills are tagged to the sub-customer, and the Profit & Loss by Customer report shows revenue and costs for each project.
The setup:
Customer = client. Each client (general contractor, property owner, government agency) is a customer in QuickBooks.
Sub-customer = project. Each project for that client is a sub-customer. If the contractor has three jobs for the same GC, there are three sub-customers under one customer.
Items (products/services). Create items for the cost categories: Materials, Direct Labor, Subcontractor, Equipment Rental, Permits, and each overhead category. Each item is mapped to the correct account in the chart of accounts.
Bills and expenses. Every bill and expense is tagged to the sub-customer (project) and the item (cost category). A lumber invoice for Job 2024-015 is coded to Materials, tagged to sub-customer 2024-015. A labor payroll allocation for the same job is coded to Direct Labor, tagged to 2024-015.
Progress invoicing. QuickBooks supports progress invoicing (billing a percentage of the contract as milestones are completed). Each progress invoice is linked to the sub-customer, so the revenue is tracked by project.
The limitation: QuickBooks does not have a native cost code structure (the hierarchical numbering system, like CSI MasterFormat, that construction accountants use to break costs into detailed categories within a project). Construction-specific software (Sage 100 Contractor, Foundation Software, Procore, Buildertrend, CoConstruct) provides cost code structures, budget-to-actual tracking, and WIP schedule generation that QuickBooks cannot replicate. For contractors with more than $2-3M in annual revenue or more than 10 active projects, construction-specific software is typically worth the investment.
What is the WIP schedule and why does my CPA need it?
The Work-in-Progress (WIP) schedule is the document that summarizes every active contract’s status at year-end. For each contract, it shows: the contract price, total estimated costs, costs incurred to date, estimated costs to complete, percent complete, earned revenue to date, billings to date, and the over/under billing position.
The WIP schedule serves three purposes:
Tax compliance. For contractors on PCM, the WIP schedule is the source document for the revenue recognition calculation on the tax return. The CPA uses the WIP schedule to compute the PCM revenue for each contract and complete the tax return. Without it, the CPA is guessing.
Financial reporting. The WIP schedule produces two balance sheet items: costs in excess of billings (an asset, representing work performed but not yet billed, sometimes called “under-billings”) and billings in excess of costs (a liability, representing amounts billed before the work was performed, sometimes called “over-billings”). These items are required on the balance sheet for GAAP-compliant financial statements and are reviewed by bonding companies, lenders, and project owners.
Bonding and banking. Surety companies that issue performance and payment bonds require a WIP schedule as part of the annual financial review. Lenders who provide lines of credit or equipment financing also require it. The WIP schedule is the primary document that bonding companies use to assess a contractor’s financial health and determine bonding capacity. A contractor with consistently under-billed projects (costs exceeding billings) looks healthier to a bonding company than one with large over-billings (which suggest cash flow risk and potential future revenue shortfalls).
The WIP schedule must be prepared at least annually for the tax return and bonding review, but quarterly preparation is strongly recommended for management purposes. A project that looks profitable at the start of the year can become a loss contract by mid-year if costs escalate and the WIP schedule is not updated.
How should I handle change orders?
Change orders (modifications to the original contract scope, price, or timeline) create job costing complications because they change both the contract price and the estimated costs.
Approved change orders: When the owner or GC approves a change order and the revised contract price is agreed, the WIP schedule is updated: the contract price increases (or decreases) by the change order amount, and the total estimated costs are revised to include the additional work. The percentage-of-completion calculation automatically adjusts in the next period.
Unapproved or pending change orders: Work performed under a change order that has not been formally approved creates a judgment call. The costs are real (the work was performed, the labor and materials were consumed), but the revenue is uncertain. Conservative treatment: include the costs in the WIP schedule but do not include the unapproved revenue in the contract price until approved. This depresses the project’s apparent profitability (costs are up, revenue is unchanged) and reduces the percentage-of-completion revenue recognition. Aggressive treatment: include both the costs and the anticipated change order revenue, which maintains the apparent profit margin. The IRS generally accepts either treatment if applied consistently, but the conservative approach is safer.
Claims. A claim is a request for additional compensation beyond the contract price and any approved change orders (for example, a claim for delay damages or for unforeseen site conditions). Claims are not included in the contract price until settled or adjudicated. Costs related to claims are included in the WIP schedule, but the claim revenue is excluded until resolved.
What should I do next?
If your construction company does not have a job costing system, start with the QuickBooks sub-customer structure for your next project. If you already have job costing but do not prepare a WIP schedule, build one at the next quarter-end. If your WIP schedule is annual, move to quarterly. If you are on PCM and your CPA does not receive a WIP schedule, the tax return is at risk.
- Construction contractor tax deductions, the accounting method (PCM vs completed-contract), equipment depreciation, and QBI deduction
- Construction equipment depreciation, Section 179 vs bonus depreciation ordering for equipment that gets tracked in the job costing system
- Construction worker classification, the 1099 vs W-2 issue for the labor costs that flow through job costing
- Construction insurance and bonding, the surety bond process and how the WIP schedule feeds bonding capacity
- Restaurant bookkeeping, the parallel cost-tracking discipline for another industry (food cost instead of job cost)
- IRS accuracy-related penalty, reasonable cause defense when a PCM calculation error leads to an understatement
The assessment is a fixed $250. You get a written, CPA-reviewed read on your job costing setup, WIP schedule, accounting method election, and whether your cost tracking supports the tax return.
One or two plain-English guides a week on US-Canada tax. No spam, unsubscribe anytime.
Done. The next guide will land in your inbox.
Yarik Yarosh, CPA. "Construction Job Costing: How to Track Costs by Project for Tax Compliance and Profit." Blue Cloud CPA, August 27, 2026. https://bluecloudcpa.com/guides/construction-job-costing-tax-compliance
This guide is general information, not tax advice for your specific situation. Which points apply, and how, depends on your facts.