Blog · Finance metrics and formulas · Construction
Read contractor income, contract balances and cash together. Follow a worked reconciliation from project exports to the company statements, including retainage and billing timing.
Analyzing construction company financial statements starts by connecting project revenue and costs to company profit, then reconciling that profit to cash. Read the income statement, balance sheet and cash flow statement together with the work-in-progress schedule and receivables aging. A company-level profit does not prove that individual jobs have funded their own payments.
Obtain the current and preceding balance sheets, the current period's income statement, cash movements, project cost and billing exports, and retainage detail. Use the same reporting date, currency and entity scope throughout.
The SEC's financial statement guide explains that the cash flow statement reconciles income to cash through noncash adjustments and changes in operating assets and liabilities. For a contractor, contract balances and receivables deserve particular attention.
Confirm how the ledger distinguishes an unconditional receivable from a contract asset. Quanta's annual financial statements describe contract assets transferring to receivables when billed or when billing rights become unconditional. That distinction prevents a WIP balance from being mistaken for an overdue invoice.
The monthly financial report template covers the general statement layout. The extra work here is tying those statements to job-level earnings and billing. The private-company financial statements guide covers the broader reporting package.
Consider an illustrative US contractor for one quarter. Both active jobs began during the quarter. Opening receivables relate to completed jobs and are collected during the quarter; there are no opening contract assets or liabilities. All figures below are USD, with no sales tax or credit adjustments.
| Job | Revenue (USD) | Job cost (USD) | Billings (USD) | Receipts (USD) | Retainage within receivables (USD) |
|---|---|---|---|---|---|
| School addition | 1,500,000 | 1,200,000 | 1,300,000 | 1,100,000 | 100,000 |
| Warehouse expansion | 1,000,000 | 850,000 | 1,100,000 | 850,000 | 50,000 |
| Total | 2,500,000 | 2,050,000 | 2,400,000 | 1,950,000 | 150,000 |
For this example, retainage is an unconditional receivable already included in billings less receipts. Do not add it to receivables again. Other payment conditions require the controller to confirm the appropriate presentation.
With headers on row 1, job names in A, revenue in B, cost in C, billings in D and receipts in E, calculate each job's balances:
Gross profit: =B2-C2
Receivables: =D2-E2
Contract asset: =MAX(B2-D2,0)
Contract liability: =MAX(D2-B2,0)
| Job | Gross profit (USD) | Receivables (USD) | Contract asset (USD) | Contract liability (USD) |
|---|---|---|---|---|
| School addition | 300,000 | 200,000 | 200,000 | 0 |
| Warehouse expansion | 150,000 | 250,000 | 0 | 100,000 |
| Total | 450,000 | 450,000 | 200,000 | 100,000 |
The combined check is recognized revenue minus billings: $2,500,000 minus $2,400,000 equals $100,000. That equals contract assets of $200,000 less contract liabilities of $100,000. Preserve the separate job positions when presenting balances; the net difference alone hides billing exposure.
Project gross profit is not the company's net income. This contractor also incurs corporate overhead, depreciation, interest and income tax:
| Income statement step | Calculation (USD) | Result (USD) |
|---|---|---|
| Gross profit | 2,500,000 - 2,050,000 | 450,000 |
| After corporate overhead | 450,000 - 250,000 | 200,000 |
| After depreciation | 200,000 - 50,000 | 150,000 |
| After interest | 150,000 - 20,000 | 130,000 |
| Net income after tax | 130,000 - 30,000 | 100,000 |
Depreciation is separately presented here and excluded from both job costs and corporate overhead. Actual ledgers may allocate it differently; keep the total included once. Use financial ratios for construction companies after the statement inputs reconcile, rather than comparing percentages from unmatched job and company reports.
Ask project managers to explain cost-estimate revisions and unusual billing positions. A timing difference may explain a contract asset; a deteriorating cost-to-complete estimate may explain weaker earnings. Those are different management problems and need separate actions.
The following operating balances explain why the contractor's earnings do not produce operating cash this quarter. Accounts payable and accrued expenses cover all operating payment obligations in this simplified example.
| Operating balance | Opening (USD) | Closing (USD) | Change (USD) | Cash adjustment (USD) |
|---|---|---|---|---|
| Receivables | 300,000 | 450,000 | 150,000 | -150,000 |
| Contract assets | 0 | 200,000 | 200,000 | -200,000 |
| Contract liabilities | 0 | 100,000 | 100,000 | 100,000 |
| Payables and accrued expenses | 300,000 | 400,000 | 100,000 | 100,000 |
The bridge is $100,000 net income plus $50,000 depreciation, minus $150,000 receivable growth, minus $200,000 contract-asset growth, plus $100,000 contract-liability growth and $100,000 payable growth: operating cash is zero.
With the four opening balances in B2:B5 and closing balances in C2:C5, reproduce it with:
=100000+50000-(C2-B2)-(C3-B3)+(C4-B4)+(C5-B5)
The direct check agrees. Current-job receipts of $1,950,000 plus collection of opening receivables of $300,000 produce $2,250,000 of receipts. Job costs, overhead, interest and taxes total $2,350,000; subtract the $100,000 increase in payables to get $2,250,000 paid. Receipts less payments equal zero.
For future job receipts and payment dates, use the separate construction project cash-flow method.
The rollforward inputs are below. Cash increases through new borrowing and decreases through equipment payments; operating cash is zero. Equipment increases through purchases and decreases through depreciation. Equity increases through net income, with no distributions.
| Account | Opening (USD) | Increase (USD) | Decrease (USD) | Closing: opening + increase - decrease (USD) |
|---|---|---|---|---|
| Cash | 500,000 | 80,000 | 120,000 | 460,000 |
| Equipment, net | 800,000 | 120,000 | 50,000 | 870,000 |
| Debt | 400,000 | 80,000 | 0 | 480,000 |
| Equity | 900,000 | 100,000 | 0 | 1,000,000 |
The balance-sheet proof is below. Both dates satisfy assets equal liabilities plus equity.
| Balance-sheet row | Opening (USD) | Closing (USD) |
|---|---|---|
| Cash | 500,000 | 460,000 |
| Receivables | 300,000 | 450,000 |
| Contract assets | 0 | 200,000 |
| Equipment, net | 800,000 | 870,000 |
| Total assets | 1,600,000 | 1,980,000 |
| Payables and accrued expenses | 300,000 | 400,000 |
| Contract liabilities | 0 | 100,000 |
| Debt | 400,000 | 480,000 |
| Total liabilities | 700,000 | 980,000 |
| Equity | 900,000 | 1,000,000 |
| Liabilities plus equity | 1,600,000 | 1,980,000 |
Upload your financial statements, project export and receivables detail; Covirage maps the columns, and its tools compute and check the reconciliations. The external AI model explains the result with every figure traced to its rows. Create a free Covirage account and bring a sample of your own data.
See Covirage for construction for the industry context.
Recognized revenue may not yet be billable or collected, while labor and subcontractor payments continue. Retainage can delay receipts further. Reconcile net income to operating cash using receivable, contract balance and payable movements before concluding that profit is available to spend.
A work-in-progress schedule usually brings together contract values, estimated costs, costs incurred, recognized revenue and billings by job. Its exact layout varies. Use it to connect job estimates and billing positions to the financial statements, with each balance reconciled to the ledger.
No. Presentation depends on payment rights, accounting policies and classification. Some retainage is included in receivables, while conditional amounts may appear within contract balances. Inspect the account detail and disclosures, then reconcile the retainage schedule without adding amounts already included elsewhere.