Designing a chart of accounts for job costing
"Keep it simple" is good advice for a chart of accounts right up until about $1M in revenue. After that it could start costing you money, because a simple list can tell you whether the company made money last month but not a whole lot else.
At $4M you need to know which jobs made money, which crews are productive, and whether the way you estimate work aligns with reality. So most companies do the obvious thing and start adding accounts. A year later they have 180 of them and still can't answer the question.
Adding accounts is the wrong lever.
Stop putting job names in account names
This is the most common structural mistake we find, and it's always well-intentioned. Someone wanted cost visibility, so the chart of accounts grew like this:
Materials — Henderson
Materials — Allen Retrofit
Labor — Henderson
Labor — Shop
It works for about four months. Then you have sixty jobs, the list is unusable, last year's accounts are cluttering this year's P&L, and you still can't compare two jobs side by side because each one lives in its own set of accounts.
Your chart of accounts answers one question: what kind of cost is this? Labor, material, subcontractor, insurance, rent. That list should barely change from year to year.
Which job, which crew, which location, which division is a different question, and QBO has separate tools for it. Projects (or customer:job) carry the job dimension, Classes handle departments and divisions, and Locations handle sites or separate entities. Code a transaction once to an account and a project, and you get both views without a single extra account.
Get that split right and your chart of accounts gets shorter while telling you far more.
The structure that works at $2M to $10M
Revenue
Split revenue only where you'd manage the lines differently. Contract work, time-and-materials service, equipment rental, and parts sales are worth separating because they carry different margins and you'd make different decisions about them. Splitting revenue eleven ways because you have eleven kinds of customers gets you nothing.
Cost of revenue
Direct labor
Labor burden
Materials
Subcontractors
Equipment and rentals
Other direct costs (permits, freight, disposal)
Labor burden is the one that often gets skipped, and skipping it is why so many companies think they run at 38% gross margin when they run at 28%. Burden is everything that rides on top of a direct wage: employer payroll taxes, workers' comp, benefits. Depending on your trade and comp rates it commonly adds 25% to 35% on top of the wage, and in high-rate classifications could be even more.
If that cost sits down in overhead while the wages sit in cost of revenue, every gross margin number you've ever looked at has been not quite correct.
Gross profit
Now it means something, and you can pull it by job.
Overhead
Keep this section short, short enough to read on one screen. Fifteen to twenty-five accounts covers almost every company your size:
Indirect labor and office salaries, facilities, vehicles and fuel, general liability and umbrella insurance, professional fees, software, marketing, office, travel, and a few more specific to your operation.
Resist splitting overhead finely. Nobody has ever made a decision because "telephone," "cell phones," and "internet" were three separate expense lines.
Other income and expense
Interest income, gain or loss on asset sales, and anything else that isn't operations. Keeping these below the operating line is what lets you hand someone a clean EBITDA number without rebuilding it by hand.
Balance sheet
Your operations need accounts that a simple list won't have: retainage receivable, retainage payable, costs in excess of billings, billings in excess of costs, accrued payroll, and accrued PTO. If those don't exist in your file, the financials you give your bank are missing the schedules they're going to ask for.
The test that settles most arguments
Look at how you build an estimate. If you bid work in labor hours, material, subs, and equipment, then your P&L should report in labor, material, subs, and equipment.
When the two match, comparing the estimate to the actual is a report you run. When they don't, it's a project someone does in Excel, which probably means it happens on the jobs that already went wrong instead of on all of them.
The whole point of the structure is finding out you underbid labor on the last four jobs while there's still time to change how you bid the fifth.
A few rules worth holding
Draw the direct-versus-indirect line once, write it down, and leave it alone. Whether project managers are a direct cost or overhead is a judgment call. Changing your answer mid-year makes this year incomparable to last year, which costs you more than either answer was worth. Consistency is key.
Turn on account numbers (Settings, then Advanced, then Chart of Accounts). A numbered structure sorts predictably: 1000s assets, 2000s liabilities, 3000s equity, 4000s revenue, 5000s cost of revenue, 6000s overhead, 7000s other income, 8000s other expense. Nothing requires those particular ranges, but they're the common convention, which makes conversations with your CPA and your lender faster.
Every account needs an owner and a definition. If two people would code the same invoice differently, the account isn't defined well enough, and your reports will drift no matter how good the structure is.
Changing it without losing your history
Restructuring a chart of accounts mid-year is how companies lose their ability to compare anything.
Do it effective at the start of a fiscal year when you can. Merge accounts rather than deleting them, so the history follows. Build a mapping from old accounts to new before you touch anything, and restate at least the prior year against the new structure, or you'll spend twelve months without a valid comparison.
If you're carrying more accounts than you can explain, book a call and we'll look at your current structure and what it would take to get margin by job out of it.