A construction company’s chart of accounts has jobs no generic template understands: work in progress, retention held against you, and billings that run ahead of the work. Here’s a ready-to-adapt COA with the construction-specific accounts labeled — copy it, trim it, and number it with room to grow.
The numbering backbone
1000s Assets · 2000s Liabilities · 3000s Equity · 4000s Revenue · 5000s Direct costs / COGS · 6000s Operating expenses
Leave gaps between codes (1000, 1010, 1020…) so new accounts slot in without renumbering — the classic rookie regret is a packed sequence in year one.
Sample chart of accounts — construction
| Code | Account | Type / note |
| 1000 | Operating bank account | Asset |
| 1100 | Accounts receivable — progress billings | Asset |
| 1110 | Retention receivable | Asset — the 5–10% clients hold until completion |
| 1200 | Work in progress (WIP) | Asset — costs on unfinished jobs; see note below |
| 1300 | Construction equipment | Fixed asset |
| 1310 | Accumulated depreciation — equipment | Contra asset |
| 2000 | Accounts payable — subcontractors | Liability |
| 2010 | Retention payable | Liability — what you hold from subs |
| 2100 | Billings in excess of costs | Liability — you’ve billed ahead of work done |
| 2200 | Equipment loans | Liability |
| 3000 | Owner’s equity / retained earnings | Equity |
| 4000 | Contract revenue | Revenue |
| 4100 | Change-order revenue | Revenue — track separately; it’s where margin hides |
| 5000 | Direct materials | COGS |
| 5100 | Direct labor + burden | COGS |
| 5200 | Subcontractor costs | COGS |
| 5300 | Equipment costs on jobs | COGS |
| 6000 | Office salaries, rent, insurance… | Overhead |
The two accounts that make it “construction”
WIP and billings-in-excess are a matched pair: costs accumulate in WIP as jobs progress, billings accumulate on the other side, and the gap between them — over- or under-billing — is the single best early-warning number in the industry. A job under-billed for months is financing the client; over-billed is borrowing from the job’s future. Retention gets its own accounts on both sides because it’s real money with a different timetable — call it receivable-you-can’t-spend and payable-you-don’t-owe-yet.
Every account here should map by job as well — job costing is the second dimension your software must track, because the P&L that matters in construction is per-project. Cost-per-unit logic for estimating lives in our unit product cost guide, and the cash reality of slow-paying clients in the debtor days calculator.
FAQ
What accounts are unique to a construction chart of accounts? Work in progress, retention receivable and payable, billings in excess of costs, and change-order revenue — the accounts that track money moving on a different schedule than the work.
Should each job get its own accounts? No — keep one COA and add job costing as a separate tracking dimension. Accounts × jobs as a matrix, not thousands of accounts.
What is billings in excess of costs? A liability recording amounts billed ahead of work performed — the mirror of WIP, and together they reveal over/under-billing per job.
How should retention be recorded? As its own receivable (held by clients) and payable (held from subs) — it’s enforceable money on a delayed clock, not a discount.
