Under the completed-contract method (CCM), nothing hits the income statement while the job is in progress. Costs accumulate on the balance sheet as costs in excess of billings, or billings accumulate as billings in excess of costs. When the contract is substantially complete, all revenue and gross profit are recognized at once. Expected losses are still recognized as soon as they’re known.
Where CCM shows up today:
- Tax. Under IRC Section 460, “small” contractors below an inflation-indexed average gross receipts threshold (about $31 million for 2025) can use CCM for tax on contracts expected to finish within two years.
- Financial statements. ASC 606 doesn’t name a completed-contract method. Revenue is recognized at a point in time only when the over-time criteria aren’t met, which is uncommon for typical construction contracts. Many contractors keep separate book and tax methods.
This is general education. Confirm methods with your CPA.
Why it matters
CCM makes results lumpy. A good year can look like a loss, then a windfall when jobs finish. Sureties and lenders usually want percentage-of-completion WIP schedules regardless of the tax method.
Worked example
Riverside Medical Center (sample data), at Pay App #9: cost to date $31.7M and billed to date $33.0M. Under CCM, revenue recognized so far is $0, and the balance sheet shows $1.3M of billings in excess of costs. Under cost-to-cost, about $35.78M of revenue would already be recognized.
Common mistakes
- Confusing tax and book methods.
- Deferring a known loss until completion.
- Using CCM on jobs that won’t finish within the allowed window.
How os.construction handles it
We’re building WIP from live job cost and forecasts, so the percentage-of-completion view sureties expect is always available, whatever your tax method. It’s in development.