A chart of accounts is the least glamorous artifact in a finance function and one of the most consequential. It is the set of buckets your accounting system uses to classify every dollar the business moves. Every transaction lands in exactly one.
Calling it a list undersells it. A chart of accounts is a schema. Your income statement is not designed separately from it, it is a rendering of it. So is your balance sheet, and the gross margin in your investor update. Everything inherits the structure, so no cleanup at the report layer fixes a bad one.
The five account types
Every account belongs to exactly one of five types: three on the balance sheet, two on the income statement.
- Assets. What you own or are owed: cash, receivables, prepaids, fixed assets.
- Liabilities. What you owe: payables, accruals, cards, deferred revenue, debt.
- Equity. What is left for owners: capital, stock, retained earnings.
- Revenue. What customers pay you for delivering your product or service.
- Expenses. What it costs to deliver and to run the company, split between cost of revenue and operating expenses.
Accounts are numbered by type: 1000s assets, 2000s liabilities, 3000s equity, 4000s revenue, 5000s and above expenses. Convention is the right word. Nothing forces those ranges and some systems differ. The value is not the digits, it is a rule anyone can decode: see 6400, know it is an operating expense.
| Range | Type | Statement | Typical accounts |
|---|---|---|---|
| 1000–1999 | Assets | Balance sheet | Cash, AR, prepaids, fixed assets |
| 2000–2999 | Liabilities | Balance sheet | AP, accruals, deferred revenue, debt |
| 3000–3999 | Equity | Balance sheet | Contributed capital, retained earnings |
| 4000–4999 | Revenue | Income statement | Product, subscription, services revenue |
| 5000–5999 | Cost of revenue | Income statement | Direct delivery costs, above the line |
| 6000–8999 | Operating expenses | Income statement | Payroll, marketing, G&A, R&D |
| 9000–9999 | Other income and expense | Income statement | Interest, FX, income tax |
The decision that actually matters: what sits above the gross margin line
Most of a chart of accounts is uncontroversial. Cash is cash. The decision that separates a useful chart of accounts from a decorative one is where you draw the gross margin line: which costs count as cost of revenue, and which fall below it.
That choice determines gross margin, which drives contribution margin, unit economics, and how an investor reads the business. Two companies with identical bank statements can report very different gross margins purely because they classified support salaries differently. Neither is lying. Only one is comparable to its peers. And the answer differs by segment.
SaaS
Above the line: hosting, third-party APIs consumed per customer, payment processing, the support work required to keep the product delivered, implementation teams. Below the line: engineering building new features. Teams get this one wrong most often. R&D is an investment in future product, not a cost of delivering today's.
E-commerce
Above the line: landed product cost, inbound freight, duties, packaging, pick and pack, fulfillment labor, merchant fees. Below the line: advertising. Ad spend scales with sales, so it feels like cost of revenue, but it is customer acquisition. Bury it above the line and gross margin stops telling you whether the product makes money.
Professional services
Above the line: delivery labor. Billable people, subcontractors, project-specific software, pass-through travel. The line matters most here, because the cost base is mostly people, so whether a person sits above or below decides whether gross margin reflects delivery efficiency or just headcount.
Non-profits
The gross margin frame mostly does not apply. What matters is functional classification: program, management and general, fundraising. That split belongs on every expense account from day one, as a dimension, not a year-end allocation reconstructed from memory.
PE and VC funds
The split that matters is entity boundaries. Management company expenses, fund-level expenses, and anything chargeable to portfolio companies must be separable at the account level, because the partnership agreement decides who bears which cost and that has to survive an audit.
Early-stage and pre-revenue
There may be almost nothing above the line yet. Decide the policy anyway, while volume is small and the decision is cheap. The alternative is deciding mid-diligence.
A cost belongs above the gross margin line if it scales roughly with delivering the next unit of revenue and would go away if you stopped delivering. Run every account through that test once, write the answer down, apply it consistently. A defensible line applied every month beats a perfect line applied unevenly.
A skeleton you could adopt
A workable starting structure, deliberately small, assuming an accrual basis. Adapt it to your system and segment. A frame, not a standard.
| Number | Account | Note |
|---|---|---|
| 1000 | Cash and cash equivalents | One sub-account per bank account |
| 1100 | Accounts receivable | Add an allowance contra once AR is material |
| 1200 | Prepaid expenses | Annual software, insurance, deposits paid ahead |
| 1400 | Fixed assets | Sub-account by class if you hold much equipment |
| 1450 | Accumulated depreciation | Contra-asset |
| 2000 | Accounts payable | |
| 2100 | Accrued liabilities | The account cash-basis books never had |
| 2200 | Credit cards | One per card |
| 2400 | Deferred revenue | Essential the day you invoice ahead of delivery |
| 2700 | Notes payable | Split current vs long-term |
| 3000 | Contributed capital | |
| 3100 | Preferred stock | By round if you have raised |
| 3900 | Retained earnings | |
| 4000 | Recurring revenue | Your core delivered revenue |
| 4100 | Services revenue | Implementation, professional services, one-time work |
| 4900 | Contra-revenue | Discounts, refunds, credits. Never net these into 4000 |
| 5000 | Hosting and infrastructure | Above the line |
| 5100 | Usage-based third-party costs | APIs, licences consumed per customer |
| 5200 | Payment processing | |
| 5300 | Delivery payroll | The people who deliver the thing |
| 5400 | Support payroll | Above or below the line, but decide once |
| 6000 | Sales and marketing payroll | |
| 6100 | Advertising and demand generation | Below the line, always |
| 6200 | Research and development payroll | |
| 6300 | General and administrative payroll | |
| 6400 | Payroll taxes and benefits | Allocate by department via a dimension, not new accounts |
| 6500 | Software and subscriptions | One account. Tag by department |
| 6600 | Professional fees | Legal, accounting, consultants |
| 6700 | Rent and facilities | |
| 6800 | Travel and entertainment | |
| 7000 | Depreciation and amortization | |
| 9000 | Interest income and expense | |
| 9100 | Income tax expense |
Around thirty accounts is enough to run real complexity. Leave gaps in the numbering so you can insert later without renumbering.
Too many accounts is worse than too few
Every chart of accounts drifts toward proliferation. Someone cannot find the right bucket, so they create one. Repeat for two years and you have three near-identical software accounts, two travel accounts, and a general bucket absorbing whatever nobody wanted to think about.
Too few accounts costs you resolution: you cannot see what you are spending on. That is fixable, because the transactions are still there and can be re-coded. Too many costs you consistency, which is worse. When two accounts plausibly fit the same transaction, coding becomes a coin flip, and your trend reflects who coded it rather than what changed.
- Accounts that hold a handful of transactions a year.
- Two accounts where you have to think about which applies.
- Accounts created to answer a question someone asked once.
- A miscellaneous account carrying meaningful balances.
A short, unambiguous chart of accounts is one of the quiet structural reasons some teams close the books in a week and others spend three weeks arguing about coding.
Use dimensions, not more accounts
The reason people add accounts is that they want to slice. Marketing wants its own spend view, the board wants cost by department. Creating Software – Marketing and Software – Engineering as separate accounts is that instinct expressing itself on the wrong axis.
Every serious system gives you a second axis. Classes, departments, projects, funds, tags: the name varies, the idea does not. Accounts answer what kind of cost this is. Dimensions answer who spent it and what for. One software account tagged by department gives you both views. Six give you one view and a coding problem, and they multiply: add a second dimension and you need thirty-six accounts to do what two fields do cleanly.
When to restructure, and why waiting hurts
Restructure when the structure no longer matches the business, not when it is merely untidy. Real triggers:
- A new revenue stream with different economics is buried inside an existing revenue account.
- You are about to raise, and gross margin will be scrutinized by someone who has seen a hundred of these.
- You need departmental or segment reporting the structure cannot produce.
- You are moving from cash to accrual, which needs accounts cash-basis books never had. See cash vs accrual accounting.
- You are consolidating entities with mismatched structures.
Do it at a period boundary, ideally the start of a fiscal year, and map old accounts to new so history is restated rather than orphaned. The cost of waiting is comparability. Restructure after three years and you either restate three years of history or accept that your trend lines break at the seam, and explaining that break mid-diligence turns a question about your accounts into a question about your controls. Anyone who has been through Series A audit readiness rarely repeats it.
How a bad chart of accounts corrupts everything downstream
Bad structure does not throw an error. The books balance. The close finishes. The reports render. They are simply, quietly wrong, because a wrong number looks like a right one.
- Gross margin is off, so contribution margin, unit economics, and payback are off, and they drove a pricing decision.
- Departmental spend is unattributable, so budget conversations run on assertion, not data.
- Revenue is undifferentiated, so you miss the high-margin line shrinking while the low-margin one grows.
- Categories that shift meaning over time make your own history useless.
- Diligence becomes archaeology, because the buyer asks questions your books never captured.
None of these announce themselves. They surface months later, when someone asks a question your books cannot answer. Structure is also why a month-end close checklist works: a checklist can only verify what the schema could capture.
Specifics vary, and honestly so. Your accounting system, your segment, and your auditor all shape what a good chart of accounts looks like. The principles hold regardless: keep the list short, decide the gross margin line deliberately and write it down, push every other slice to dimensions, and get it right early. A clean schema makes the monthly close faster and every number more trustworthy. Want a second pair of eyes before yours calcifies? Book a call.