← Back to blog

Chart of Accounts for Construction: A Trade Sub's Setup

November 3, 2026
Chart of Accounts for Construction: A Trade Sub's Setup

A construction chart of accounts for a specialty trade sub is a short, numbered list of accounts. It has five parts: assets, liabilities, equity, revenue, and two expense groups, direct job costs and overhead. Add separate accounts for retainage and underbilling. Keep the list lean and push job detail into job numbers and cost codes. That is the whole idea. The rest of this article shows how to build it for an electrical, plumbing, HVAC, masonry, drywall or any other trade shop, with a sample you can copy.

Subascent
Keep Trade Work and Books Aligned
Subascent serves specialty trade teams handling estimates, jobs, and accounts receivable, alongside the bookkeeping setup covered in this guide.
Visit Subascent

TL;DR

  • Use number ranges: 1000s assets, 2000s liabilities, 3000s equity, 4000s revenue, 5000s direct job costs, 6000s overhead.
  • Split direct job costs (labor, materials, subs, equipment) from overhead (rent, office pay, insurance, software) so job margins are real.
  • Keep retainage receivable and retainage payable in their own balance sheet accounts, and track over/underbilling with a monthly WIP schedule.
  • Keep the chart small. Put job detail in job numbers and cost codes, not in hundreds of ledger accounts.
  • Review the chart once a year and after every big change in how you work.

Table of Contents

What a chart of accounts does for a trade sub

The chart of accounts is the index your books run on. Every dollar in or out gets filed in one account. According to one contractor accounting guide, it links your financial statements to general ledger accounts, and tracking cost of goods sold is how you measure job profitability.

For a sub, that matters more than for a typical small business. A retail shop has one pile of sales and one pile of costs. You have a dozen jobs open at once, each with its own contract, its own labor, its own material, and its own billing schedule. If your chart lumps everything together, you find out which job lost money after the job is closed.

A good chart answers three questions without a spreadsheet:

  1. Is the company making money?
  2. Which job types and which jobs are making it?
  3. How much cash is tied up in retainage and unbilled work?

Xero's construction accounting guide describes the same goal: see which jobs are profitable, where costs run over budget, and how cash moves across active projects.

The chart alone does not do this. It works with job costing, where each project's costs are recorded separately. If you are setting that up too, our practical job costing setup checklist pairs with this article.

The six account groups, in plain terms

A construction chart uses the same five classic account types as any business, plus a clear split inside expenses. A small-firm structure published by a lien and payments company runs like this, and it is the one we recommend starting from:

RangeGroupWhat goes there
1000sAssetsCash, accounts receivable, retainage receivable, underbillings, equipment, vehicles
2000sLiabilitiesAccounts payable, retainage payable, overbillings, payroll liabilities, loans, credit cards
3000sEquityOwner's capital, draws or distributions, retained earnings
4000sRevenueContract revenue, change order revenue, service and T&M revenue
5000sDirect job costs (COGS)Labor, materials, subcontractors, equipment, other job costs
6000sOverheadOffice pay, rent, insurance, software, vehicles not tied to a job, marketing

The numbers are a convention, not a law. What matters is that you pick a pattern and stick to it, so any account number tells you where it sits on the financial statements.

Direct costs, indirect costs and overhead

This is where most trade shops go wrong. The test is simple: can you trace the cost to one specific job?

  • Direct job costs can be traced to a project: field labor, materials installed, subcontractor invoices, equipment used on that job.
  • Overhead supports the whole business: rent, administrative salaries, utilities, office software.

The IRS's construction industry guide is built around this distinction, and the research behind it points to the same practice: segregate the two so you can calculate accurate profit margins.

Why it matters for your bids: when shared overhead gets mixed into job costs, it hides how an individual job really performed. One contractor accounting firm calls this margin dilution. Keep direct, indirect and general and administrative costs in separate buckets, and your next bid starts from a number you can trust.

A second rule helps. One construction bookkeeping firm advises assigning every expense to either a job and cost code or an overhead account when you enter it, so nothing sits in a neutral, unallocated pile. That one habit does more for job profitability than any template.

The five job cost categories

Xero's guide names five practical job-cost categories: materials; labor, including benefits and payroll taxes; equipment, including rental, fuel, maintenance and depreciation; subcontractor costs; and allocated overhead such as insurance, office expenses and permits.

Intuit's accounting-firm resource suggests a similar short list for construction cost of goods sold: labor, materials, subcontractors, equipment and other. For a trade sub, that is plenty. Make labor burden its own line (or fold payroll taxes and workers' comp into labor) so a crew's true hourly cost shows up in every job report.

Equipment is the category most small subs get wrong. If you own lifts, scaffolding, mixers or trucks, decide up front how their cost lands on jobs. Our guide to equipment costing for contractors walks through the options.

A sample chart of accounts for a trade sub

Here is a starter chart for a 5 to 25 person shop. It is deliberately short. Rename lines to fit your trade, and add only what you will actually report on.

Assets (1000s)

  • 1000 Operating checking
  • 1010 Savings and tax reserve
  • 1100 Accounts receivable
  • 1150 Retainage receivable
  • 1200 Underbillings (costs and earnings in excess of billings)
  • 1300 Prepaid expenses and deposits
  • 1500 Vehicles
  • 1510 Tools and equipment
  • 1590 Accumulated depreciation

Liabilities (2000s)

  • 2000 Accounts payable
  • 2050 Retainage payable
  • 2100 Overbillings (billings in excess of costs and earnings)
  • 2200 Payroll liabilities
  • 2250 Sales tax payable (where it applies to your work)
  • 2300 Credit cards
  • 2500 Vehicle and equipment loans
  • 2600 Line of credit

Equity (3000s)

  • 3000 Owner's capital
  • 3100 Owner's draws or distributions
  • 3900 Retained earnings

Revenue (4000s)

  • 4000 Contract revenue
  • 4100 Change order revenue
  • 4200 Service and T&M revenue

Some shops split revenue by trade line, say new construction versus service. That is useful when you really run two businesses. Otherwise let job numbers do that work.

Direct job costs (5000s)

  • 5000 Field labor
  • 5010 Payroll taxes, workers' comp and benefits on field labor
  • 5100 Materials
  • 5200 Subcontractors
  • 5300 Equipment rental and fuel
  • 5310 Equipment depreciation allocated to jobs
  • 5400 Permits, fees and dumpsters
  • 5900 Other job costs

Overhead (6000s)

  • 6000 Office and admin salaries
  • 6010 Owner's salary
  • 6100 Rent and utilities
  • 6200 General liability and other insurance
  • 6300 Software and subscriptions
  • 6400 Vehicle costs not charged to jobs
  • 6500 Marketing and bid-related costs
  • 6600 Professional fees (CPA, legal)
  • 6700 Interest and bank fees

That is about 45 lines. Many healthy trade firms run on fewer.

Retainage and underbilling: the two accounts subs skip

General contractors hold back a percentage of every pay application. That money is yours, but you cannot spend it. If it sits inside regular accounts receivable, your books overstate the cash you can expect soon.

The fix is two balance sheet accounts:

  • Retainage receivable (asset): what GCs hold back from you.
  • Retainage payable (liability): what you hold back from your own subs and suppliers, if your contracts allow it.

The bookkeeping firm cited above says to track retainage receivable separately so it is not mistaken for funds available for immediate use. If you invoice in QuickBooks, our walkthrough of progress invoicing in QuickBooks for subs shows how retainage flows through an invoice.

Over/underbilling and the WIP schedule

Revenue you have earned and revenue you have billed are rarely the same number. If you billed more than you have earned on a job, you owe the work: that is a liability (overbilling). If you have earned more than you billed, that is an asset (underbilling).

A monthly work-in-progress (WIP) schedule compares revenue earned on each active job with the amount billed. It marks overbilling as a liability and underbilling as an asset, as described here. Set up the two accounts (1200 and 2100 above) once, and your bookkeeper or CPA can post the adjustment each month.

A quick example. A drywall sub has a $120,000 contract and is 50% complete, so earned revenue is $60,000. If you have billed $75,000, you are overbilled by $15,000. That is cash in your account that does not yet belong to you. Many owners read that cash as profit and spend it. The WIP schedule stops that.

This ties straight to cash flow. See our list of cash flow warning signs every subcontractor owner should know for what to watch.

Over/underbilling and the WIP schedule

Keep the chart small: let job numbers and cost codes carry the detail

The most common mistake is building a chart that tries to be a job cost system. You end up with accounts like "Materials, Smith Elementary, conduit" and a list of 300 lines nobody can read.

Intuit's accounting-firm guidance says excessive granularity creates extra internal work. Its approach is a smaller chart combined with projects, classes or locations to keep job and operational detail.

A Sage Intacct partner firm makes the same point for specialty contractors: software that tags each transaction by location, job and cost type gives detailed visibility into labor, materials and overhead without a ledger account for every detail.

In practice, the split looks like this:

QuestionWhere the answer lives
What kind of cost is it?Chart of accounts (5100 Materials)
Which job is it for?Job number (24-017 Elementary school)
Which phase or task?Cost code (rough-in, finish, trim, punch)

The chart answers "what." The job number answers "where." The cost code answers "which part of the work." Do not make one tool answer all three.

Cost codes by trade

Cost codes are where your trade shows up. Keep them to the phases you estimate and bill on:

  • Electrical: underground, rough-in, feeders, devices and trim, fixtures, low-voltage, punch
  • Plumbing: underground, rough-in, top-out, trim, fixtures, testing
  • HVAC/mechanical: ductwork, equipment set, piping, controls, start-up and balancing
  • Masonry: scaffold, block, brick, grout and rebar, cleaning
  • Drywall: hang, tape and finish, texture, paint-ready punch
  • Painting: prep, prime, finish coats, touch-up

Use the same codes in your estimate, your timecards and your invoices. When estimated labor hours and actual hours line up under the same code, a gap shows up fast. Our piece on cost code variance analysis shows how a $3,000 labor gap gets caught.

Set it up: six steps

Xero's guide gives a clean routine: assign each project a unique job number, create cost categories within each job, record expenses as they occur, and compare actual costs with estimates weekly, then review finished jobs to improve future bids. Here is how that fits chart setup:

  1. List what you report on today. If you never look at an account, you do not need it.
  2. Adopt the number ranges from the table above.
  3. Build the 5000s from your real direct costs. Start with labor, materials, subs, equipment and other.
  4. Add the retainage and over/underbilling accounts before your first progress billing.
  5. Choose a job number format (year, then sequence, such as 26-004) and a standard cost code list for each trade you run.
  6. Map it to your software. In QuickBooks, that usually means importing or editing the chart, then using Projects or classes for job detail.

If the chart already exists and is a mess, do not delete accounts that have history. Make them inactive, merge duplicates, and move new transactions to the clean accounts. Your CPA should sign off before you merge anything near year-end.

Software that ties costs to jobs

A chart of accounts lives in your accounting package. Job costs live in the tools your estimators, foremen and PMs use. The cleaner the link between the two, the less retyping. Some construction platforms show how a chart of accounts connects project costs to jobs and cost codes through estimating, job costing and timesheets in one place. Whatever you pick, check that it exports clean data to your accounting system.

Perspective

We have run trade businesses, and we have seen the same pattern in shops of five people and shops of forty. The books are fine. The chart of accounts looks tidy. And the owner still cannot say whether the last three jobs made money.

The chart is not the problem. Most subs ask it to do work it was never meant to do. The chart tells you what kind of cost you had. The job tells you where it went. The cost code tells you which part of the work ate the margin. When you try to cram all three into one list of accounts, you get a chart nobody uses.

That is why we built Subascent around the job. Estimates, cost codes, field hours, change orders and invoices all hang off the same job record, and the numbers sync to QuickBooks so your bookkeeper keeps a simple chart. Our CrewTrack mobile app is free for foremen as part of the subscription, so field time lands on the right job and cost code on the day it is worked, not three weeks later from memory.

Start with a short chart. Get the job numbers right. Look at budget against actual every week. That habit is worth more than a perfect template.

Dave

Mistakes to avoid

  • Burying labor burden in overhead. Payroll taxes, workers' comp and benefits on field labor belong with the crew's cost, or your job margins look better than they are.
  • Using "Miscellaneous" as a parking lot. If a miscellaneous account grows past a few percent of costs, find out what is in it and give it a home.
  • Skipping retainage accounts. Retainage in regular receivables makes your cash look healthier than it is.
  • Making a new account for each job. Use job numbers instead.
  • Never revisiting the chart. A chart should have a logical way to add new accounts and retire old ones. Review it yearly, and when you add a service line, a new trade or a second crew.
  • Treating foreman hires as free. A new foreman shifts cost between job labor and overhead. See how hiring foremen affects overhead before you decide where that pay lands.

If your electrical shop keeps losing money on small jobs, the cause is often how costs were coded, not the bids. Our list of electrical contractor job costing mistakes is a good next read.

From chart to profit: what to look at weekly

Once the chart and job codes are in place, the reports do the work. You do not need many:

  • Job cost report: budget versus actual by cost code, per job.
  • WIP schedule: monthly, with over and underbillings.
  • Profit and loss by job type: where the margin comes from.
  • AR and retainage aging: who owes you, and how long they have held back.

If the chart is clean, these reports come straight out of the books. For the next step, read how job profitability works for trade contractors and our job costing explainer. Clean financials also help when you apply for credit. Our bonding capacity tips cover what sureties look at.

Keep estimates, field hours and invoices on the same codes

The chart only stays clean if the people feeding it use the same structure. Estimators build bids by phase. Foremen log hours by task. The office invoices by schedule of values. When all three use one list of cost codes, the numbers meet in the middle without anyone translating.

Subascent is built for this. The Starter plan is $49 per month ($490 per year), Scale is $99 per month ($990 per year), and Pro is $179 per month ($1,790 per year). PDF takeoff is a separate Takeoff add-on at $99 per month. Estimating, job costing, daily reports, change orders and QuickBooks sync are part of the platform, and CrewTrack is free for your foremen with the subscription. See what each plan includes on the plans and features page, or look at how estimating and takeoff and invoicing and financials connect to your books.

Subascent

If you want to see it on your own jobs, you can start from the Subascent home page.

FAQ

What is a good chart of accounts for a construction company?

A good one is short and numbered by type: assets, liabilities, equity, revenue, direct job costs and overhead. It separates field costs from office costs and has dedicated retainage and over/underbilling accounts. For most trade subs, 40 to 60 accounts is enough, with job detail carried by job numbers and cost codes.

How do I set up a chart of accounts for a trade contractor?

List the reports you need, adopt number ranges, and build direct cost accounts for labor, materials, subcontractors, equipment and other. Add retainage and WIP accounts, then pick a job number format and standard cost codes for your trade. Load it into your accounting software and have your CPA review it before you start posting.

What are the five basic types of accounts?

Assets, liabilities, equity, revenue and expenses. In construction, expenses are split into direct job costs (cost of goods sold) and overhead, so you can see job margins separate from the cost of running the office.

How should I account for construction costs?

Give each job a unique number, code every cost to that job and a cost code as it occurs, and put business-wide costs in overhead accounts. Then compare actual costs to your estimate weekly. Costs that cannot be traced to a job, like rent and office salaries, stay in overhead.

Do I need a different chart of accounts for each trade?

No. One chart works for electrical, plumbing, HVAC, masonry, drywall and others. What changes by trade is the cost code list, because each trade bills and tracks phases differently. Keep the chart the same and customize codes.

Sources