Blog · Finance metrics and formulas · Construction
Compare construction contract revenue with incurred costs and supplied remaining-cost estimates. Separate booked profit from forecast final margin, with worked project tables and spreadsheet checks.
Construction project profitability analysis compares the revenue a contract is expected to earn with the total cost expected to deliver it. Use incurred costs plus a supplied estimate of remaining costs to calculate forecast final margin. Keep that forecast separate from profit already recognized in the accounts.
Start with the contract register, approved change log, job-cost export, finance's recognized-revenue schedule and the project manager's latest remaining-cost estimate. Every file needs a common project identifier and the same reporting cutoff. This example uses a US contractor's September 30, 2026 review, with all amounts in USD.
Record original contract value and approved changes separately. Keep pending changes, claims and possible credits outside the base forecast unless finance supplies a supported treatment. A disputed amount needs an explicit assumption rather than an optimistic entry hidden in the total.
On costs, reconcile the job ledger before attaching remaining estimates. An unpaid invoice already accrued is incurred cost. An open purchase commitment is not automatically an additional remaining cost: the estimator may already have included that work in the completion estimate. Ask what the supplied estimate contains before combining schedules.
The broader project margin analysis explains margin definitions. Here the job is specifically to join construction contract economics to estimates by cost code.
The contractor has two jobs: River Warehouse and Lake School. The project managers supply these completion estimates; they are not inferred from spending.
| Project and cost code | Incurred cost (USD) | Remaining estimate (USD) | Forecast final cost (USD) |
|---|---|---|---|
| River: labor | 180,000 | 120,000 | 300,000 |
| River: materials | 210,000 | 80,000 | 290,000 |
| River: subcontractors | 170,000 | 130,000 | 300,000 |
| River: site costs | 40,000 | 20,000 | 60,000 |
| River total | 600,000 | 350,000 | 950,000 |
| Lake: labor | 140,000 | 80,000 | 220,000 |
| Lake: materials | 150,000 | 70,000 | 220,000 |
| Lake: subcontractors | 130,000 | 80,000 | 210,000 |
| Lake: site costs | 30,000 | 20,000 | 50,000 |
| Lake total | 450,000 | 250,000 | 700,000 |
The Department of Defense's cost definitions describe estimate at completion as actual cost plus estimate to complete. That identity checks the final-cost column here. Site costs include project-specific supervision and facilities. Corporate overhead, interest and income tax are excluded, so the result is project gross profit rather than company net profit.
On a detail sheet named Costs, put project in A, cost code in B, incurred cost in C and remaining estimate in D. Use E2 for final cost:
=C2+D2
With the project name in Summary!A2, retrieve incurred cost using:
=SUMIFS(Costs!$C$2:$C$9,Costs!$A$2:$A$9,A2)
Replace the C range with D for remaining cost. SUMIFS documentation describes this conditional summation. Add cutoff or estimate-version criteria when your sheet retains several periods.
River's original contract is $1,000,000, with $100,000 of approved changes. Lake's original contract is $800,000, with no approved changes in this review.
Forecast final profit = Original contract + Approved changes − Incurred cost − Remaining cost
Forecast final margin = Forecast final profit / Expected contract revenue
| Project | Expected contract revenue (USD) | Forecast final cost (USD) | Forecast final profit (USD) | Final margin |
|---|---|---|---|---|
| River | 1,100,000 | 950,000 | 150,000 | 13.64% |
| Lake | 800,000 | 700,000 | 100,000 | 12.50% |
| Total | 1,900,000 | 1,650,000 | 250,000 | 13.16% |
Margins are rounded to two decimal places; calculations retain full precision. On a summary sheet with revenue in B and final cost in C, put profit in D and margin in E:
=B2-C2
=IF(B2=0,"",D2/B2)
The total margin is =SUM(D2:D3)/SUM(B2:B3). As a second check, use =SUMPRODUCT(B2:B3,E2:E3)/SUM(B2:B3) on the unrounded margin cells. SUMPRODUCT documentation explains multiplying corresponding entries and summing the products. Both checks must return 13.16% when displayed to two decimals.
Finance supplies recognized revenue independently of the forecast. In this example all incurred costs shown above are also recognized project costs in the accounts.
| Project | Recognized revenue to date (USD) | Recognized cost to date (USD) | Booked gross profit (USD) | Booked margin |
|---|---|---|---|---|
| River | 700,000 | 600,000 | 100,000 | 14.29% |
| Lake | 500,000 | 450,000 | 50,000 | 10.00% |
| Total | 1,200,000 | 1,050,000 | 150,000 | 12.50% |
Booked gross profit is $150,000; forecast final profit is $250,000. Neither figure is cash collected. Do not use invoices or receipts as a substitute for the recognized-revenue schedule, and do not treat forecast final profit as profit already earned.
For cost-only budget differences, use construction budget analysis. For cost and schedule efficiency against accepted work, use the separate earned value guide. For whether a proposed project is worth undertaking in the first place, use construction project cost-benefit analysis.
Suppose River's manager raises only its remaining labor estimate from $120,000 to $150,000. Final cost becomes $980,000, forecast profit falls to $120,000 and final margin becomes 10.91%. The $30,000 change reduces margin by 2.73 percentage points before rounding differences.
That is an estimate sensitivity, not a prediction. The manager must explain what changed in hours, rates or remaining work. Finance owns the revenue basis and accounting reconciliation; project management owns the completion assumptions. The review needs both owners present because a clean cost schedule cannot resolve an unsupported revenue expectation.
Upload the contract register, job-cost export and supplied completion estimates in a spreadsheet. Covirage maps the columns, and its tools compute and check project totals and margins; the external AI model explains differences with every figure traced to its rows. Create a free Covirage account, which takes about a minute, then set up your business and bring a sample of your own data.
See Covirage for construction businesses for the supporting industry context.
For a final-margin forecast, subtract incurred costs and the latest estimate of remaining costs from expected contract revenue. For booked profit, subtract costs recognized in the accounts from recognized revenue for the same period. Label the two measures separately.
Keep unapproved changes in a separate exposure schedule unless finance supplies a supported amount under the company's revenue policy. The base comparison should identify what is approved, what is assumed and which costs are already included for disputed work.
Spending alone does not establish physical progress. Advance material purchases, mobilization and timing differences can move costs ahead of completed work. Use the project team's supplied progress assessment and finance's approved revenue schedule rather than inventing completion percentages from cash spending.