
A SaaS chart of accounts is the numbered list of ledger accounts that keeps subscription, usage, and service revenue, delivery costs (COGS), and operating spend in separate places, so gross margin and EBITDA come straight from the books.
Your chart of accounts decides whether you can read gross margin, deferred revenue, and CAC inputs from the ledger or have to rebuild them in a spreadsheet every month. Most charts fail because they were copied from a generic small-business template.
This article gives you an open account hierarchy you can copy, mapping examples for billing events, and three rules for deciding what is an account, what is COGS, and what is a dimension.
Key takeaways
- Give each revenue type its own account, because each one is recognized differently.
- Put a cost in COGS only if it is part of delivering the product to existing customers.
- Use accounts for what a transaction is and dimensions for how you want to slice it.
- Keep the chart small early and add accounts only when a decision needs them.
Why the chart of accounts sits under every forecast
Finance work has three layers: bookkeeping, accounting, and FP&A. If the bottom two are wrong, better modeling does not help. As we put it in our breakdown of bookkeeping versus accounting for SaaS, "a clean forecast built on misclassified data still gives you the wrong answer".
The chart of accounts is where that misclassification starts. If hosting, support payroll, and commissions land in the wrong ranges, your gross margin is wrong before anyone opens the model.
"Investors will find it in diligence, and you will find it when a board member asks why margin moved."
— Aleksandar Stojanovic, CEO & Founder at FiscallionDefault QuickBooks and Xero templates are built for generic businesses. They usually have one "Revenue" account and no deferred revenue. Our work sits above the ledger, so the structure below is the one we want in place before building forecasts, scenarios, or board reporting. Your accountant or bookkeeper still maintains the ledger itself.
The four accounts that define a SaaS chart
DualEntry's SaaS chart guide names four accounts that separate a SaaS chart from a generic one: subscription revenue, current deferred revenue, hosting and infrastructure COGS, and capitalized software development. We would add two more: contra-revenue for discounts and refunds, and a payment processing line in COGS.
Founderpath's sample SaaS chart lists six SaaS-specific differences from a generic chart:
- Deferred revenue, which generic charts lack.
- Payment processing fees in COGS. Founderpath notes that missing this makes gross margin read two to three points high.
- Production hosting in COGS, with staging and CI in R&D.
- Engineering payroll split between delivery (COGS) and product development (R&D).
- Sales commissions on their own line, so CAC inputs are visible in the ledger.
- Discounts and refunds as contra-revenue.
Treat that list as your minimum. Every item changes a number a board or investor will look at.
Open template: a SaaS chart of accounts hierarchy you can copy
Use the first digit to set the group: 1 assets, 2 liabilities, 3 equity, 4 revenue, 5 COGS, 6 operating expenses, 7 other income, 8 other expense, following Maxio's SaaS numbering guide. Number in steps of ten so you can insert accounts later without renumbering. Founderpath recommends the same step-by-ten approach.
| Range | Account | Notes |
|---|---|---|
| 1000 | Operating cash | One account per bank account, or per currency |
| 1100 | Accounts receivable | Billed invoices not yet collected |
| 1110 | Unbilled receivables (contract assets) | Usage or services delivered but not yet invoiced |
| 1200 | Prepaid expenses | Annual software, insurance |
| 1300 | Capitalized software development | Confirm treatment with your accountant (ASC 350-40) |
| 2000 | Accounts payable | |
| 2100 | Accrued expenses | Cloud usage and payroll accrued at month-end |
| 2200 | Deferred revenue, current | Billed, to be recognized within 12 months |
| 2210 | Deferred revenue, long-term | Billed, to be recognized after 12 months |
| 2300 | Sales tax and VAT payable | |
| 3000 | Equity accounts | Common stock, preferred stock, retained earnings |
| 4010 | Subscription revenue | Recognized over the service period |
| 4100 | Usage and overage revenue | Recognized as usage occurs |
| 4200 | Implementation and onboarding revenue | Treatment depends on contract terms |
| 4300 | Professional services and training revenue | Recognized as delivered |
| 4900 | Discounts, credits, and refunds | Contra-revenue |
| 5010 | Production hosting and infrastructure | Production only, not dev or staging |
| 5020 | Third-party software and APIs in delivery | Licenses embedded in the product |
| 5030 | Payment processing fees | |
| 5040 | Customer support payroll | Fully burdened |
| 5050 | Customer success payroll (delivery side) | Only if your written policy puts it here |
| 5060 | Professional services delivery cost | Keeps services margin visible |
| 5070 | Amortization of capitalized software | |
| 6100 | Salaries and wages | By nature; function comes from the department dimension |
| 6110 | Payroll taxes and benefits | |
| 6120 | Contractors | |
| 6200 | Sales commissions | Own line so acquisition cost is visible |
| 6210 | Paid acquisition and marketing programs | |
| 6300 | Cloud, staging, dev, and CI | Non-production environments |
| 6310 | Internal software and tools | |
| 6400 | Professional fees (legal, audit, tax) | |
| 6410 | Insurance | |
| 6420 | Rent and facilities | |
| 7000 | Interest and other income | |
| 8000 | Interest and other expense, FX gains and losses |
This is an illustrative structure, not a rule set from any single source, and the number of accounts you need depends on your size. DualEntry's stage table, which cites Mercury for the account-count guidance, suggests 30-40 accounts at seed, 50-70 at Series A ($1M-$5M ARR), 80-100+ at Series B and later ($5M-$50M ARR), and 100-150+ on an IPO track ($50M+ ARR). Founderpath's sample has 54 accounts, 20 of them SaaS-specific. Use those as ceilings, not targets.
Separate subscription, usage, and service revenue into their own accounts
Revenue type changes the accounting treatment, so each type gets its own account. Subscription revenue is recognized over time. Usage revenue follows consumption. Services follow delivery. Mixing them in one account hides the margin differences and makes recognized revenue hard to reconcile to billing.
Here is how common billing events map to the ledger. The recognition judgment for each contract belongs with your accountant or auditor. The chart's job is to give each outcome a clean home.
| Billing event | Where it lands | Why |
|---|---|---|
| $12,000 annual plan invoiced in January | Debit accounts receivable, credit deferred revenue (2200). Then move $1,000 a month to 4010 | Founderpath's example: that plan is $1,000 of revenue a month, not $12,000 in January |
| Multi-year prepayment | Split deferred revenue between 2200 and 2210 | Current and long-term balances are reported separately |
| Usage invoiced in arrears | Credit 4100 as usage occurs, with unbilled receivable in 1110 until invoiced | Revenue follows consumption, not the invoice date |
| Overage on a committed plan | Credit 4100, not 4010 | Keeps committed and variable revenue separate |
| Implementation fee | Credit 4200 or defer, depending on contract terms | Accountant decision; the account exists either way |
| Time-and-materials training | Credit 4300 as delivered | Services margin stays visible |
| Customer credit or refund | Debit 4900 | Contra-revenue keeps gross billings visible |
"Billing systems such as Stripe, Recurly, and Chargebee do not automatically produce GAAP-compliant revenue recognition. Someone has to map each billing event to the ledger with the right timing and account codes. If that mapping is wrong, reported MRR and recognized revenue drift apart, which is a restatement risk in diligence."
— Aleksandar Stojanovic, CEO & Founder at FiscallionSplit COGS from operating expenses with one test
Founderpath's test is simple: "would this cost rise if you signed one more customer tomorrow?" If yes, it is probably COGS. If it exists to win a customer or build the product, it is operating spend.
| Cost | Classification | Reason |
|---|---|---|
| Production AWS, GCP, or Azure compute, storage, bandwidth, CDN | COGS (5010) | Scales with customers |
| Staging, dev, and CI environments | R&D (6300) | Builds product, not delivery |
| Third-party APIs and licenses embedded in delivery | COGS (5020) | Required to serve the customer |
| Payment processing fees | COGS (5030) | Direct cost of collecting revenue |
| Support payroll tied to service delivery, fully burdened | COGS (5040) | Includes payroll taxes, benefits, and tool and facilities share |
| Engineering salaries on product development | R&D | Builds future product |
| Sales commissions | Sales and marketing (6200) | Acquisition cost, not delivery cost |
| Customer success | Policy decision | Retention-focused in COGS, expansion-focused in S&M |
The distinction is cost of delivering to existing customers versus cost of acquiring or building. Loading sales costs into COGS understates how well the business scales. Leaving out hosting or customer success inflates margin and creates a diligence event. Our SaaS gross margin benchmark covers how investors read the result.
Customer success is where charts drift. Founderpath's guidance is to place delivery-side success in COGS and upsell-driven success in S&M, then pick one policy and not move it between years. Allocations set once in a budget cycle and never revisited make gross margin unreliable as a trend. The fix is a written COGS methodology and a named finance owner who confirms it at each month-end close.
Use accounts for what it is and dimensions for how you slice it
Revenue type is an account because it changes recognition. Almost everything else you want to analyze is a dimension, which is a tag attached to a transaction:
| Question | Account or dimension | Example |
|---|---|---|
| Is it subscription, usage, or services? | Account | 4010, 4100, 4300 |
| Is it COGS or operating expense? | Account range | 5000s versus 6000s |
| Which department spent it? | Dimension | Engineering, Sales, G&A |
| Which product line or plan? | Dimension | Core platform, add-on module |
| Which customer segment or region? | Dimension | Mid-market, EMEA |
| Which salesperson or channel? | Dimension | Rep, partner, inbound |
| Which cohort? | Dimension | 2025 Q3 signups |
Founderpath is blunt that departments are a class or tag dimension, not accounts. Duplicating expense accounts per team makes a chart unusable within a year. DualEntry's guide includes a LinkedIn anecdote from a fractional controller who inherited 847 GL accounts at a 12-employee company, with ARR split across four revenue accounts coded per salesperson. It is one practitioner's story, but the pattern is common: a segment cut that should have been a dimension became the account structure.
The practical rule: if a cut changes the statement line or the accounting treatment, make it an account. If it is a slice you analyze later, make it a dimension. Dimensions also give you the cohort and segment cuts needed to treat CAC and LTV as ranges rather than a single number. See our notes on contribution margin in SaaS for how those cuts get used.
Copy the template, then test it with three questions
The open template above is yours to copy into your accounting system as written. There is no form. Adapt the account names, then test the result:
- Can you produce Revenue, COGS, Gross Profit, R&D, S&M, G&A, and EBITDA in that order without a spreadsheet?
- Can you see subscription, usage, and services margin separately?
- Can you reconcile deferred revenue to the billing system at month-end?
If you can answer yes to all three, the chart is doing its job. If not, the gap tells you what to fix first. Your financial model should mirror this structure, since a good SaaS financial model template needs a structure aligned to COGS and functional operating expenses.
If the chart needs to sit alongside accrual accounting, month-end close, and revenue recognition for subscription, usage-based, and AI revenue models, see our accrual accounting for B2B SaaS service page.
Common mistakes and the replacement move
DualEntry lists six common mistakes. Each has a direct fix:
| Mistake | Replacement move |
|---|---|
| One "Revenue" account | Split into subscription, usage, services, and contra-revenue |
| Commissions in COGS | Move to a sales commission line in operating expenses |
| No deferred revenue account | Add 2200 and book annual billings there |
| No current and long-term deferred split | Add 2210 for amounts recognized beyond 12 months |
| Too many sub-accounts too early | Use dimensions; add accounts only when a decision needs them |
| A chart that cannot produce Revenue, COGS, Gross Profit, R&D, S&M, G&A, EBITDA | Rebuild ranges so the P&L reads in that order |
We would add one more: never change the structure mid-year without restating prior periods in the new layout. A chart that moves between years breaks every trend your board relies on.
Frequently asked questions
How should a SaaS company structure its chart of accounts?
Use a numbered hierarchy: assets, liabilities, equity, revenue, COGS, operating expenses, and other income and expense, each in its own range. Make the P&L read Revenue, COGS, Gross Profit, R&D, S&M, G&A, EBITDA. Start small, step account numbers by ten, and use dimensions for everything that is a slice rather than a treatment difference.
How do you separate subscription, usage, and service revenue in a SaaS chart of accounts?
Give each its own revenue account, such as 4010 subscription, 4100 usage and overage, and 4200 or 4300 for implementation and services. Add a contra-revenue account for discounts and refunds. Then map each billing event to the right account, with annual prepayments sitting in deferred revenue until recognized.
What is the difference between COGS and operating expenses for a SaaS business?
COGS is the cost of delivering the product to existing customers: production hosting, embedded third-party licenses, payment processing, and support tied to delivery. Operating expenses cover acquiring customers (S&M), building the product (R&D), and running the company (G&A). Customer success is a policy call, so write it down and keep it consistent.
Should SaaS revenue types be tracked as separate accounts or as dimensions?
Separate accounts. Subscription, usage, and services are recognized differently and have different margins, so they belong on the face of the P&L. Use dimensions for customer segment, product line, region, department, salesperson, and cohort.
Set the structure once, then protect it
The chart is a small decision with long consequences. A clean revenue, COGS, and operating spend structure makes gross margin credible, speeds up the close, and lets forecasts reflect how the business actually earns and spends cash.
Fiscallion works above the ledger, turning reliable accounting data into forecasts, scenarios, and board decisions. Every client works directly with Aleksandar Stojanovic at the CFO layer, with FP&A leadership experience gained through the growth of a SaaS company to €100M ARR. Senior partner on every engagement, not a junior-team handoff.








