Quick Answer: Accounting for construction contracts requires specialized journal entries to track costs, billings, and revenue recognition over the life of a long-term project. Under ASC 606 and IFRS 15, revenue is recognized over time using the percentage of completion method when control transfers continuously. The core journal entries involve recording construction costs (debit Construction in Progress), progress billings (debit Accounts Receivable, credit Billings on Construction), and revenue recognition (debit Construction Expense / CIP, credit Revenue).
Why Construction Contract Accounting Is Different
Most businesses recognize revenue at a single point in time — when the product ships or the service is delivered. Construction contracts don't work that way. A three-year bridge project generates costs, billings, and value across 36 months. Recognizing all the revenue in Year 3 would badly distort the income statement and provide no useful information to investors during Years 1 and 2.
Revenue recognition standards (ASC 606 and IFRS 15) require construction companies to recognize revenue over time when the customer simultaneously receives and consumes the benefits as the work progresses, or when the asset being built has no alternative use to the contractor and the contractor has an enforceable right to payment for work completed to date.
Key Accounts in Construction Accounting
| Account | Type | Purpose |
|---|---|---|
| Construction in Progress (CIP) | Asset (Inventory-like) | Accumulates all project costs — materials, labor, subcontractors, overhead |
| Billings on Construction Contracts | Contra-Asset | Amounts invoiced to the customer; offsets CIP on the balance sheet |
| Contract Asset | Asset | Arises when revenue recognized exceeds billings (unbilled receivables) |
| Contract Liability | Liability | Arises when billings exceed revenue recognized (deferred revenue) |
| Construction Revenue | Revenue | Recognized based on percentage of completion |
| Construction Expense (Cost of Revenue) | Expense | Actual costs incurred during the period |
The Percentage of Completion Method
The percentage of completion method is the default approach for long-term construction contracts where the outcome can be reliably estimated. Revenue and gross profit are recognized as work progresses, rather than deferred until project completion.
Calculating Percentage of Completion
Two methods are commonly used:
1. Cost-to-Cost Method (most common):
Percentage Complete = Total Costs Incurred to Date / Estimated Total Costs
Example: A contractor estimates total project costs of $5,000,000. Through Year 1, $1,250,000 has been spent. Percentage complete = $1,250,000 / $5,000,000 = 25%.
2. Efforts-Expended Method: Uses labor hours, machine hours, or material quantities rather than cost dollars. Common in engineering-heavy projects where materials may be front-loaded.
Revenue Recognition Formula
Revenue to Recognize = (Total Contract Price × % Complete) − Revenue Previously Recognized
Example: $10,000,000 total contract. Year 1: 25% complete. Revenue to recognize = ($10,000,000 × 25%) − $0 = $2,500,000.
Complete Journal Entry Walkthrough
Let's walk through a full example. ABC Construction signs a $12,000,000 contract to build a warehouse. Estimated total costs: $9,000,000. The project spans two years.
Year 1: Project Is 30% Complete
ABC incurs $2,700,000 in costs ($2,700,000 / $9,000,000 = 30%). ABC bills the customer $3,500,000 and receives $3,200,000 in cash.
Step 1: Record construction costs
Journal Entry — Recording Construction Costs (Year 1)
| Date | Account | Debit | Credit |
|---|---|---|---|
| 2026-12-31 | Construction in Progress (CIP) | $2,700,000 | |
| Cash / Accounts Payable / Wages Payable | $2,700,000 | ||
| To record direct labor, materials, subcontractor costs, and allocated overhead | |||
Step 2: Record progress billings to customer
Journal Entry — Progress Billings (Year 1)
| Date | Account | Debit | Credit |
|---|---|---|---|
| 2026-12-31 | Accounts Receivable | $3,500,000 | |
| Billings on Construction Contracts | $3,500,000 | ||
| To record progress billing at 30% of the $12,000,000 contract | |||
Step 3: Record cash collections
Journal Entry — Cash Collections (Year 1)
| Date | Account | Debit | Credit |
|---|---|---|---|
| 2026-12-31 | Cash | $3,200,000 | |
| Accounts Receivable | $3,200,000 | ||
| To record cash received on progress billings ($300,000 remains outstanding) | |||
Step 4: Recognize revenue and gross profit (30% × $12M)
Journal Entry — Revenue Recognition (Year 1)
| Date | Account | Debit | Credit |
|---|---|---|---|
| 2026-12-31 | Construction Expense (Cost of Revenue) | $2,700,000 | |
| Construction in Progress (CIP) | $900,000 | ||
| Construction Revenue | $3,600,000 | ||
| Revenue = $12M × 30% = $3,600,000; gross profit = $900,000 | |||
Notice that the CIP account receives a $900,000 credit for gross profit. This is a distinctive feature of construction accounting — the CIP account carries both costs and earned profit. After Year 1, the CIP balance is $2,700,000 + $900,000 = $3,600,000.
Year 2: Project Completes at 100%
ABC incurs an additional $6,400,000 in costs (total actual costs: $9,100,000; $100,000 over the original estimate). The customer is billed for the remaining $8,500,000.
Step 1: Record remaining costs
Journal Entry — Remaining Construction Costs (Year 2)
| Date | Account | Debit | Credit |
|---|---|---|---|
| 2027-06-30 | Construction in Progress (CIP) | $6,400,000 | |
| Cash / Accounts Payable / Wages Payable | $6,400,000 |
Step 2: Record final billings
Journal Entry — Final Progress Billings (Year 2)
| Date | Account | Debit | Credit |
|---|---|---|---|
| 2027-06-30 | Accounts Receivable | $8,500,000 | |
| Billings on Construction Contracts | $8,500,000 |
Step 3: Recognize final revenue and close out CIP/Billings
Total revenue over the contract: $12,000,000. Already recognized: $3,600,000. Remaining: $8,400,000. The gross profit in Year 2 is $600,000 less than originally projected due to cost overruns.
Journal Entry — Final Revenue Recognition & Project Close-Out (Year 2)
| Date | Account | Debit | Credit |
|---|---|---|---|
| 2027-06-30 | Construction Expense (Cost of Revenue) | $6,400,000 | |
| Construction in Progress (CIP) | $2,000,000 | ||
| Construction Revenue | $8,400,000 | ||
| Revenue = $12M − $3.6M = $8,400,000; gross profit = $2,000,000 | |||
| 2027-06-30 | Billings on Construction Contracts | $12,000,000 | |
| Construction in Progress (CIP) | $12,000,000 | ||
| To close out CIP and Billings now that the project is complete and accepted by the customer | |||
The final entry zeroes out both CIP and Billings. The CIP balance just before close-out was $3,600,000 + $6,400,000 + $2,000,000 = $12,000,000, matching the total contract price. The net position on the balance sheet is now zero — the project is complete.
Balance Sheet Presentation
During construction, the net position of CIP minus Billings is reported as either an asset or a liability:
- If CIP > Billings: The net amount is reported as a Contract Asset (the contractor has earned more than it has billed — an unbilled receivable).
- If Billings > CIP: The net amount is reported as a Contract Liability (the contractor has billed more than it has earned — deferred revenue, essentially an advance from the customer).
In our Year 1 example: CIP = $3,600,000 and Billings = $3,500,000. Net = $100,000 Contract Asset. The contractor earned $100,000 more than it billed.
For more on deferred revenue, see our guide on journal entries for deferred revenue.
The Completed Contract Method
The completed contract method defers all revenue and gross profit recognition until the project is substantially complete. This method is only permissible under GAAP when the percentage of completion cannot be reasonably estimated or when the contracts are inherently short-term.
Under the completed contract method, costs accumulate in CIP throughout the project, but no revenue or gross profit is recognized until completion. At that point, all accumulated revenue and costs flow through the income statement in a single period. This can create wild swings in reported earnings and is generally disfavored by analysts.
Journal Entry — Completed Contract Method (at project completion)
| Date | Account | Debit | Credit |
|---|---|---|---|
| 2027-06-30 | Construction Expense (Cost of Revenue) | $9,100,000 | |
| Construction Revenue | $12,000,000 | ||
| Construction in Progress (CIP) | $2,900,000 | ||
| All costs and revenue recognized in the period of completion | |||
The completed contract method is rarely used for large projects today because it fails to reflect the economic substance of long-term construction, where value is clearly created over time.
Contract Modifications and Change Orders
Construction contracts rarely stay fixed. Change orders, scope adjustments, and claims all modify the original contract. Under ASC 606, a contract modification is accounted for as either:
- A separate contract: When the modification adds distinct goods or services at their standalone selling price.
- Part of the existing contract: When the modification does not create a separate performance obligation. In this case, the transaction price and percentage of completion are adjusted on a cumulative catch-up basis.
Cumulative catch-up example: A $10M contract is 40% complete. A change order adds $2M in scope and $1.5M in estimated costs. The new total contract price is $12M and the new total estimated cost is ($10M × 40% = $4M incurred + $6M remaining + $1.5M = $11.5M). The revised percentage complete becomes $4M / $11.5M = 34.8%. A catch-up adjustment reduces previously recognized revenue to reflect the revised estimate. This can be painful if the change order makes prior work less profitable.
Loss Contracts: When Costs Exceed Revenue
If at any point the estimated total costs exceed the contract price, the entire expected loss must be recognized immediately — not spread across the remaining life of the contract. This is a critical rule under both GAAP and IFRS:
Journal Entry — Recognizing a Loss Contract
| Date | Account | Debit | Credit |
|---|---|---|---|
| 2026-12-31 | Loss on Construction Contract | $500,000 | |
| Provision for Loss Contract (Liability) | $500,000 | ||
| To immediately recognize the entire expected loss on an unprofitable construction contract | |||
This is similar in concept to journal entries for provisions, where the full estimated obligation is recognized as soon as it becomes probable and measurable.
Practical Tips for Construction Accountants
- Re-estimate quarterly: Cost estimates should be reviewed and updated at least quarterly. A 2% error in a $50M contract is a $1M swing in gross profit.
- Segregate self-performed work: Break down costs by self-performed labor, materials, and subcontractors. This makes re-estimation more accurate and supports labor efficiency analysis.
- Match billings to the payment schedule in the contract: Billings should align with milestones or percentage-complete calculations. Large timing differences create balance-sheet complexity.
- Document change orders promptly: A verbal change order with no paper trail is an audit finding waiting to happen. Get signed change orders before performing the work.
- Watch the WIP schedule: The Work-in-Progress (WIP) schedule is the single most important internal document in construction accounting. It ties out CIP, billings, revenue, and gross profit by project and should reconcile to the general ledger every month.
Summary
Construction contract accounting is one of the more challenging areas of financial reporting because it requires continuous estimation, careful tracking of costs-to-date vs. estimates-to-complete, and disciplined balance sheet presentation. The percentage of completion method provides the most faithful representation of a contractor's economic performance over time, but it demands robust cost-accounting systems and regular management review. When estimates deteriorate, the loss must be recognized immediately — there is no smoothing available.
For more on revenue recognition, see our guide on journal entries for unearned revenue and for related cost accruals, see journal entries for accrued expenses.