Short version: A chart of accounts is a reporting design, not a filing system. Start from the reports you need to run the business, then build the fewest accounts that produce them. Number the accounts, keep the list flat, put product and job detail in items and classes rather than accounts, and structure cost of goods sold so gross margin means something. A sample construction chart is below.
Most charts of accounts were never designed. They accumulated. Somebody added an account for a one-off expense in 2019, the bookkeeper added "Misc" the year after, and now the P&L runs four pages and tells you nothing. I've rebuilt a lot of these, in both QuickBooks Desktop and Online, and the fix is always the same: decide what you need to see, then build backward from that.
Before you touch the list, write down the five or six questions the owner asks every month. Usually they're some version of: what's our gross margin, is it holding by product line or job type, what does payroll really cost, which overhead is creeping, and how much cash did we throw off. Every account on the chart should help answer one of those. If it doesn't, it's clutter.
That one habit, reports first, changes everything downstream. You stop creating an account per vendor. You stop splitting "Office supplies" into four sub-accounts nobody looks at. You stop treating the chart of accounts as a place to store detail that belongs somewhere else.
Turn on account numbers (Desktop: Preferences > Accounting; Online: Settings > Advanced > Chart of accounts). Numbers force a structure, they sort predictably in every report, and they make imports and mapping far less error-prone. The standard ranges work fine:
| Range | Type | Notes |
|---|---|---|
| 1000–1999 | Assets | Cash first, then receivables, inventory, prepaids, fixed assets, accumulated depreciation. |
| 2000–2999 | Liabilities | Payables, credit cards, payroll liabilities, sales tax, then loans by term. |
| 3000–3999 | Equity | Keep it short. Opening Balance Equity should be zero and stay zero. |
| 4000–4999 | Revenue | One account per revenue stream you'd price or staff differently. Rarely more than six. |
| 5000–5999 | Cost of goods sold | Direct costs only: materials, direct labor and burden, subcontractors, direct equipment, freight-in. |
| 6000–6999 | Operating expenses | Overhead, grouped by function: facilities, people, sales and marketing, admin, insurance, technology. |
| 7000–7999 | Other income and expense | Interest, gains and losses, one-time items. Keeps operating income clean. |
Leave gaps. Number in tens or hundreds so you can insert later without renumbering. And give every sub-account the parent's prefix, so 6100 Facilities has 6110 Rent, 6120 Utilities, 6130 Repairs underneath it.
Two levels is the working maximum: a parent for the report line, sub-accounts for the detail. Three levels looks organized and is unreadable on an actual P&L. A small business with a clean chart usually lands between 60 and 120 accounts total. If you're over 200, something is being tracked in accounts that should live in a list.
The two questions I ask about every proposed account:
This is where most charts go wrong. People want to see sales by product line, so they create a revenue account per product. Then they want cost by product line, so they create a COGS account per product. Then they add a location, and the chart doubles.
Use the dimensions instead:
The rule of thumb: the chart of accounts answers "what kind of cost is it." Classes answer "which part of the business." Items answer "which product or service." Jobs answer "which project." Keep them in their lanes and every report gets simpler.
Gross margin is the number that tells you whether the business works. It only means something if cost of goods sold contains exactly the costs that scale with revenue, and nothing else. For a product or project business, that's usually:
Everything else, including the owner's salary, the office staff, the shop rent, and the truck insurance, is overhead. If you need a fully loaded job cost, build an overhead rate and apply it in the job reports, not by stuffing overhead into COGS. The moment overhead leaks into COGS, gross margin stops telling you anything about pricing.
The one exception worth making: put payroll for production labor in COGS and payroll for everyone else in operating expenses, even though it's one payroll run. That split is the single most useful thing a service or trades P&L can show, and it only happens if the chart and the payroll mapping are designed for it.
Construction and trades get asked about most, so here's a condensed working chart. It's built for a contractor running job costing with items and using classes for divisions (say, residential and commercial). Scale it down for a smaller shop.
| Number | Account | Purpose |
|---|---|---|
| 4000 | Contract revenue | All job revenue. Division comes from class; job type from items. |
| 4100 | Change order revenue | Tracked separately so you can see how much margin comes from changes. |
| 4200 | Service and T&M revenue | Non-contract work billed by time and materials. |
| 5000 | Materials | Job materials, by item. |
| 5100 | Direct labor | Field wages, mapped from payroll items. |
| 5150 | Direct labor burden | Field payroll taxes, workers' comp, benefits. |
| 5200 | Subcontractors | 1099 subs on jobs. |
| 5300 | Equipment, job | Rentals and allocated equipment cost on jobs. |
| 5400 | Other direct costs | Permits, dump fees, job-specific insurance, freight. |
| 6000–6099 | Indirect job costs | Shop supplies, small tools, vehicle costs. Overhead, but allocable. |
| 6100–6199 | Facilities | Rent, utilities, repairs, property insurance. |
| 6200–6299 | Office payroll and benefits | Owner, estimating, admin, their burden. |
| 6300–6399 | Sales and marketing | Advertising, website, bids, entertainment. |
| 6400–6499 | Insurance | General liability, umbrella, auto, bond premiums. |
| 6500–6599 | Administrative | Accounting and legal, software, bank fees, licenses, office. |
| 7000–7099 | Other income and expense | Interest, gains and losses on equipment sales. |
On the balance sheet, a contractor needs two accounts most charts miss: Costs in excess of billings (an asset, underbillings) and Billings in excess of costs (a liability, overbillings). Those are what a percentage-of-completion WIP schedule posts to, and without them a contractor's monthly P&L swings with billing timing instead of actual progress.
You rarely get to start from blank. The practical sequence for an existing file:
If you're about to convert from Desktop to Online, do this cleanup before the conversion. The converter carries the chart across as-is, and merging accounts is easier in the file you know. The pre-migration cleanup list walks the full sequence.
The design test: hand the P&L to the owner with no explanation. If they can read it in two minutes and ask a good question, the chart is right. If they ask what half the lines mean, it isn't.
The Pre-Migration Prep Kit walks the whole cleanup, chart of accounts included, so the file you convert is the file you want. If you'd rather hand the redesign to someone who's done it a few dozen times, that's a fractional controller engagement.
Most small businesses land between 60 and 120 accounts with a clean design. Over 200 usually means detail that belongs in items, classes, or customer jobs is being tracked as accounts instead.
Yes. Account numbers force a structure, sort predictably in every report, and make imports and account mapping far less error-prone. Use the standard ranges (1000s assets through 7000s other income and expense) and leave gaps so you can insert later.
COGS holds only the costs that scale directly with revenue: materials, direct labor and its burden, subcontractors, direct equipment, and freight-in. Everything else, including owner salary, office staff, rent, and general insurance, is operating expense. Mixing overhead into COGS makes gross margin meaningless.
No. Use items for product and service detail, classes for departments or locations, and customer jobs for projects. One revenue account and one COGS account with well-mapped items and classes produce better reports than dozens of accounts.
Rename one account to exactly match the other account of the same type; QuickBooks asks whether to merge and moves all history to the surviving account. This works in both Desktop and Online. Deleting or deactivating an account instead leaves balances stranded.
General guidance on chart of accounts design, not accounting, tax, or legal advice. Account structures should fit your entity, industry, and reporting needs; confirm tax-sensitive classifications with your preparer.
Practitioner guides on controller-grade books, the close, and cleaner reporting. One email per guide. Unsubscribe in a click.