All guides

Guide

Cost-to-complete forecasting, cost code by cost code

Estimate at completion is the number every other construction report depends on: percent complete, earned revenue, over/under billing and projected fee all come from it. It is also the number most often left to a single line in a spreadsheet. A forecast is only as good as the cost codes it is built from and the discipline that keeps it current.

Updated October 2026

The arithmetic

Estimate at completion (EAC) is cost to date plus estimated cost to complete (ETC). Percent complete under the cost-to-cost method is cost to date divided by EAC. Earned revenue is percent complete times the current contract value including approved change orders. Everything on the WIP schedule follows from those three lines, so a forecast that is wrong by 10% on a large job moves the whole company’s reported margin.

MeasureFormulaWhere it comes from
Cost to datePosted job cost, labor and non-laborThe ledger, not the PM’s spreadsheet
Estimated cost to complete (ETC)Judgment by cost code, floored by open commitmentsThe project manager, reviewed by the controller
Estimate at completion (EAC)Cost to date + ETCDerived
Percent completeCost to date ÷ EACDerived
Earned revenuePercent complete × contract value incl. approved changesDerived
Projected feeContract value − EACDerived

Why forecasts go wrong

  • ETC entered as one number for the job, so a blown-out concrete budget hides behind savings in finishes until the last month
  • ETC below open commitments: a subcontract with $300,000 still to bill cannot have a cost to complete of $200,000
  • Cost to date taken from the PM’s tracking sheet rather than the ledger, so the two never agree and nobody knows which is right
  • Pending change orders counted in revenue but their cost left out of ETC, or the reverse
  • Forecasts updated only at quarter-end for the surety, so the month-end WIP schedule runs on stale numbers
  • No record of who changed the forecast or when, so a margin fade cannot be traced to the month it was known

Build it by cost code

A forecast by cost code forces the right questions. For each code the project manager looks at budget, committed, cost to date and quantity complete, and answers one thing: what will it take to finish this scope? Self-performed labor is the hardest line and deserves a quantity-based estimate (remaining units times productivity times rate), not a percentage. Subcontracted scopes are easier: remaining subcontract value plus known extras.

  1. Start from the current approved budget per cost code, including approved change orders
  2. Pull cost to date and open commitments from the ledger as of the forecast date
  3. For subcontracted codes, ETC is at least the unbilled commitment plus pending extras you expect to approve
  4. For self-performed codes, estimate remaining quantities and apply current productivity, not bid productivity
  5. Add a line for known risks that have no commitment yet (rework, weather, acceleration)
  6. Review the total EAC against last month’s; every move of more than a few percent gets a one-line reason

The commitment floor

The single most useful control in forecasting is simple: cost to complete for a cost code cannot be below the open binding commitments on it. A purchase order or subcontract that has been issued will be billed. A forecast that ignores it is not optimistic; it is wrong. Approved requisitions that have not become purchase orders are different: they are planned exposure, worth showing beside the forecast, but not yet a floor.

The same logic applies to change orders. A change order approved by the owner raises contract value; its cost belongs in the forecast the same month. A change order still pending can be shown with a probability, but it should not be in earned revenue until it is approved (or until the scope is approved and your CPA concludes the price meets the ASC 606 variable-consideration constraint), and the cost of doing the work should be in ETC whether or not the owner has agreed to pay for it.

Review and approval

A forecast is a judgment, and judgments need a second set of eyes. The project manager prepares; the controller or operations lead reviews and approves; and the approved version is the one the WIP schedule uses. Keeping each approved version with its date means the job cost report for any past month shows the forecast that was actually approved then, which is what an auditor or surety asks for when they question a fade.

  • Monthly, before the WIP schedule, for every open job above a size threshold
  • Preparer and approver are different people wherever the organization has two
  • Changes after submission invalidate the approval; the revision is re-submitted, not quietly edited
  • Fades and gains over a threshold get a written reason attached to the forecast

How Forge ERP handles forecasting

In Forge, the project ledger’s Control workspace shows actual cost, approved-requisition exposure and binding encumbrances separately as of a date, and the project manager enters estimated cost to complete by cost code with optional forecast revenue. The server refuses an ETC below open binding encumbrances; pre-encumbrances stay visible as planning exposure without forcing a floor. The forecast is created as a draft, submitted as an exact revision and approved by someone other than the preparer (a solo organization records a self-approval exception), and a revision hash prevents approving a forecast that changed after submission.

Only the approved version drives job cost, profitability and WIP. Estimate at completion is actual cost plus the approved ETC, and historical reports pick up the forecast that had actually been approved by the report date, even if a newer one has since replaced it. Change orders carry a forecast treatment (excluded, probability-weighted or included) so pending work is visible without being counted as earned. Project closeout is blocked while a draft or submitted forecast is unresolved or no approved final forecast exists.

Forge ERP covers projects, purchasing, accounts payable, billing and receivables, job cost and WIP, reporting and close. Payroll runs in your payroll provider and lands in Forge as job-costed labor with burden. Forge is in beta with a 14-day free trial.

Frequently asked

How often should cost-to-complete be updated?
Monthly for any job large enough to move the WIP schedule, timed before the schedule is prepared. Quarterly updates aimed at the surety leave two months of financial statements running on stale numbers.
Should pending change orders be in the forecast?
Their cost should be in estimated cost to complete if the work is being done. Their revenue should not be in earned revenue until the owner approves them. Showing pending changes separately with a probability keeps both sides visible.
What is the difference between committed cost and cost to complete?
Committed cost is what you have contracted to spend but not yet incurred: open purchase orders and subcontracts. Cost to complete is your estimate of everything still to be spent, which must be at least the open commitments and usually more.

Related guides

See it on your own cost codes.

Start a 14-day trial, or send us your chart of accounts and cost-code list and we will walk you through Forge on them.

Request Early Access