How to Set Up a Chart of Accounts for a SaaS Company
To set up a SaaS chart of accounts, add accounts for subscription, usage, and payment-related revenue, deferred revenue, and Stripe clearing. Use dimensions for department, product, and customer reporting.
- Reconcile Stripe charges, fees, transfers, and payouts through clearing. Gross payment volume and payouts do not automatically represent revenue.
- Add GL accounts for distinct financial statement treatment. Use dimensions for department, product, and customer reporting.
- Map old accounts before migration. Reconcile the trial balance and review the P&L before using it for board reporting.
What is a chart of accounts for a SaaS company?
A chart of accounts is the general ledger’s defined list of balance-sheet and income-statement accounts. For B2B SaaS companies processing payments, it gives earned revenue, customer prepayments, and unsettled Stripe balances distinct places in the books. QuickBooks account types separate accounts that carry balances forward, such as receivables, from income and expense accounts that report activity for a period.
- Create a GL account when a distinct revenue stream or balance needs its own financial-statement line.
- Use department, product, or customer dimensions when you need another view of the same account activity.
- Set the structure before posting transactions. NetSuite cautions that adding distinctions later can require recoding historical entries.
What are the five account types in a SaaS chart of accounts?
A SaaS chart of accounts groups ledger entries into five types. Assets, liabilities, and equity carry balances across periods, while revenue and expenses record activity for each reporting period.
Assets
Asset accounts should separate bank deposits, customer balances, and funds Stripe has not yet paid out. The numbers below are illustrative.
| Number | Account name | Purpose |
|---|---|---|
| 1000 | Bank cash | Cash deposited in company bank accounts |
| 1100 | Accounts receivable | Invoiced amounts customers owe |
| 1150 | Unbilled receivables | Earned amounts not yet invoiced |
| 1160 | Contract assets | Earned amounts with a conditional right to payment |
| 1200 | Prepaid expenses | Costs paid before the related service period |
| 1300 | Stripe settlement clearing | Platform funds awaiting payout or reconciliation |
Use Stripe clearing only for balances that pass through your platform. With Stripe Connect direct charges, customer payments appear in the connected account’s balance, while your platform may receive an application fee. Other charge flows can place more activity in your platform balance. Keep that unsettled balance apart from bank cash, and use Stripe’s payout reconciliation report to match automatic payouts to their underlying transactions.
Liabilities
Track amounts you owe separately from customer payments for services you have yet to deliver. The account numbers below are illustrative.
| Account | Name | Purpose |
|---|---|---|
| 2000 | Accounts payable | Unpaid vendor bills |
| 2010 | Accrued expenses | Costs incurred before a vendor bills you |
| 2100 | Deferred revenue, current | Customer payments for obligations expected to be satisfied within 12 months |
| 2110 | Deferred revenue, long-term | Customer payments for obligations expected to be satisfied later |
| 2200 | Refunds and chargebacks payable | Amounts you owe for refunds or disputes |
| 2300 | Processor payable | Amounts owed to a processor or connected account, when applicable |
- Under ASC 606, move prepaid subscription amounts from deferred revenue to revenue as you satisfy the subscription obligation, not when cash arrives.
- Split deferred revenue by expected timing when longer contracts create a meaningful balance beyond 12 months.
- Record processor payables only when your Stripe Connect arrangement leaves your company owing the funds. Have an accountant review the charge flow.
Equity
Use these illustrative equity accounts to separate share issuance from accumulated earnings.
| Account number | Account name | Purpose |
|---|---|---|
| 3100 | Common Stock | Records the stated value of issued shares. |
| 3200 | Additional Paid-in Capital | Records amounts paid for shares above their stated value. |
| 3300 | Retained Earnings | Tracks accumulated earnings after distributions. |
A SAFE does not automatically belong in equity. Have an accountant review its terms before classifying it and recording entries.
Revenue
Separate revenue accounts by what you sell, while keeping customer and product detail in your billing system or reporting dimensions. This illustrative map distinguishes the revenue streams a B2B SaaS company processing payments may need to report.
| Account | Name | Purpose |
|---|---|---|
| 4000 | Subscription revenue | Recognized license and access fees |
| 4010 | Implementation revenue | Earned onboarding and setup fees |
| 4020 | Professional services revenue | Earned training and other service fees |
| 4030 | Usage revenue | Earned usage and overage charges |
| 4040 | Payment-related revenue | Earned platform or transaction fees |
Hybrid contracts can combine licenses with usage-based or transaction-based charges. Gross payment volume and Stripe payouts do not belong in these revenue accounts. An accountant should review the contract and charge flow before deciding whether payment-related revenue belongs on a gross or net basis. Under ASC 606, a separately priced implementation fee does not automatically qualify for upfront recognition. Its timing depends on the services promised in the contract and when the company satisfies those obligations.
Expenses
Separate costs of delivering the product from operating expenses so your P&L shows what it costs to serve customers. The account numbers below are illustrative.
| Account | Name | Purpose |
|---|---|---|
| 5100 | COGS: Hosting | Production infrastructure |
| 5200 | COGS: Customer support | Direct support for active customers |
| 5300 | COGS: Payment fees | Fees the company bears on payment transactions |
| 6100 | Research & Development | Product development and engineering |
| 6200 | Sales and marketing | Customer acquisition, sales, and customer success |
| 6300 | General & Administrative | Company administration and fixed overhead |
Classify customer-success costs by the work performed. Direct support may belong in COGS, while selling and expansion work belongs in operating expenses. Document the policy for mixed roles and apply it consistently. Use department dimensions to report costs by function without creating a separate GL account for every department.
SaaS chart of accounts example
Use separate accounts for revenue streams and balances that need different treatment on the P&L or balance sheet. The numbered map below is illustrative. Open the sample chart of accounts to adapt the account structure. Numbering blocks are a convention, not a required standard.
| Number | Account | What it tracks |
|---|---|---|
| 1000 | Bank cash | Deposited funds |
| 1100 | Accounts receivable | Invoiced amounts due |
| 1120 | Unbilled receivables | Earned amounts not yet invoiced |
| 1150 | Stripe settlement clearing | Platform funds awaiting settlement, where applicable |
| 2000 | Accounts payable | Supplier bills |
| 2100 | Deferred revenue | Billed amounts not yet earned |
| 2200 | Refunds and chargebacks payable | Amounts owed, where applicable |
| 3000 | Equity | Owner and investor capital |
| 4000–4300 | Subscription, implementation, usage, and payment-related revenue | Earned revenue by stream |
| 5000–5200 | Hosting, direct support, and processor fees | Direct delivery costs |
| 6000–6200 | R&D, sales and marketing, and G&A | Operating expenses |
Keep customer and product detail in billing records or reporting dimensions. This chart alone cannot calculate ARR, CAC, or customer profitability without billing and operational data.
How do you account for Stripe in a SaaS chart of accounts?
Route Stripe activity through a settlement clearing account, not straight to revenue or bank cash.
- Charges, fees, transfers, and payouts all post through clearing. Payouts move funds to the bank and never record a sale.
- Gross payment volume is not revenue. Only your earned platform or transaction fees are.
- The Stripe Connect charge type decides where fees and revenue land. Have an accountant confirm gross or net presentation.
How should a SaaS company structure revenue accounts?
Separate materially different revenue streams so your P&L shows what drives sales. For B2B SaaS companies processing payments, subscription, implementation, usage, and earned payment fees may warrant distinct accounts. Keep customer and product detail in dimensions rather than adding an account for every reporting cut.
Subscription revenue
A dedicated Subscription Revenue account shows what you earned from software access during the reporting period, separate from cash collected upfront. For a subscription that provides access throughout the contract term, you recognize revenue as you provide that access rather than when the customer pays. Stripe’s 12-month example recognizes each $29 monthly fee in its respective month.
If a customer prepays $1,200 for 12 months of access, you initially record $1,200 as deferred revenue. Each month, you move $100 from deferred revenue to Subscription Revenue, assuming the contract provides access evenly throughout the year. Review the contract terms before applying that schedule, especially when the subscription includes other promised services.
Payment processing revenue
Create a separate payment-related revenue account when platform fees or other earned payment consideration are material enough to show apart from subscriptions. B2B SaaS companies processing payments may combine licenses with transaction-based charges, so separate accounts let you see each revenue stream on the P&L.
Stripe Connect charge types determine where funds move. With a direct charge, the customer payment appears on the connected account, while the platform receives its application fee. With a destination charge, the payment first appears on the platform before funds transfer to the connected account. Merchant payment volume, connected-account transfers, Stripe fees, and bank payouts are not automatically platform revenue. ASC 606’s principal-versus-agent guidance requires accounting review of the contracts and who controls the service before you choose gross or net presentation. For a closer look at contracts combining usage charges and transaction revenue, see ASC 606 for usage-based SaaS and payments.
Usage and overage revenue
Give material usage or overage charges their own revenue account, separate from subscriptions and payment-related fees. For B2B SaaS companies processing payments, hybrid billing often combines licenses with transaction-based charges, so a separate account lets you see what each stream contributes.
- Recognition. Under ASC 606, contract terms and satisfaction of the related performance obligation determine when you recognize usage revenue.
- Timing. December usage invoiced in January may belong in December’s revenue. Neither the invoice nor a Stripe payout establishes the earning date.
- Detail. Keep customer- and product-level usage in your billing records or reporting dimensions. Separate GL accounts make sense when the revenue stream itself warrants one.
Implementation revenue
Give implementation its own revenue account when recognized onboarding work warrants a separate line on your P&L. Keep the invoiced fee in deferred revenue until you satisfy the related obligation.
A separately priced fee does not, by itself, make implementation revenue recognizable upfront. Under ASC 606, recognition depends on whether the customer can benefit from implementation on its own and whether the contract makes it distinct from the subscription. If implementation forms part of the subscription obligation, recognize the allocated fee as you deliver that combined service. Have your accountant review the contract before setting the recognition policy.
Professional services revenue
Use a separate professional services revenue account when training, migration, or other project work is material enough to review apart from software access and initial implementation. A dedicated account lets you compare the revenue with the cost of delivering that work without mixing it into subscription revenue.
Keep initial setup fees in the implementation account if you already report them there. A separate invoice line does not determine when you recognize services revenue. Review the contract and the work delivered before setting the recognition schedule.
Accrued revenue
Accrue usage revenue when a customer has incurred a charge by period-end but you have not yet invoiced it, subject to the contract’s ASC 606 recognition terms. Credit Usage Revenue and debit an unbilled receivable if your right to payment is unconditional. Use a contract asset if that right remains conditional.
For example, assume a customer incurs $500 of usage in March, your right to payment is unconditional at March 31, and you invoice in April.
- March 31: Debit Unbilled Receivable $500. Credit Usage Revenue $500.
- April invoice: Debit Accounts Receivable $500. Credit Unbilled Receivable $500.
The April entry moves the balance without recording revenue again. Have your accountant review the contract terms before choosing between an unbilled receivable and a contract asset.
Deferred revenue
Deferred revenue records a contract liability when a customer pays before you satisfy the related obligation. Under ASC 606, you recognize revenue as you satisfy that obligation, not when the payment reaches your bank account.
Assume a customer prepays $1,200 for 12 months of subscription access, with $100 earned each month. Record the payment as a debit to cash and a credit to deferred revenue. Each month, debit deferred revenue and credit subscription revenue for $100. If a contract extends beyond a year, separate the portion you expect to recognize within the next 12 months from the longer-term balance. Review contracts with multiple obligations before setting the release schedule.
What belongs in SaaS COGS?
Gross margin reflects the costs of delivering your product and services, so keep those costs separate from operating expenses. Record embedded third-party services and direct implementation or service-delivery costs in COGS. Keep product development in R&D, customer acquisition in sales and marketing, and administration in G&A.
If customer-success staff both onboard customers and sell expansions, allocate their costs by function. Document the method and apply it consistently so changes in gross margin reflect the business, not a change in classification.
AWS and hosting
Production hosting belongs in cost of goods sold when the cloud infrastructure directly delivers your SaaS product to customers. Give production compute, storage, and related services a dedicated hosting account so your P&L separates delivery costs from operating expenses.
Keep development environments and internal tools out of that account. A test server supports product development, while an employee’s file-storage subscription supports internal work. If one cloud bill covers both production and development, use a documented allocation based on usage rather than assigning the entire bill to hosting COGS.
Payment processing fees (Stripe)
Record Stripe processor fees in a separate cost-of-revenue account when your company bears them to deliver a payment service. Keeping fees apart from payment-related revenue lets you see the cost of that service. Keep Stripe settlement activity in a clearing account so you can reconcile what Stripe owes you to what reaches the bank.
Fee responsibility depends on the Stripe Connect charge type. Stripe typically assesses fees to the platform for destination charges, while direct charges appear in the connected account’s balance. Check your charge flow and agreements before booking a platform expense. Stripe’s payout reconciliation report itemizes fees within automatic payout batches, helping you reconcile the clearing balance without treating the payout as revenue.
Customer support
The cost of helping active customers use your product belongs in SaaS cost of goods sold when the work directly supports delivery. Support wages and related costs then reduce gross profit, so leaving them in operating expenses can overstate gross margin.
Classify customer-success work by what the person does, not their title. Resolving product issues differs from negotiating renewals or selling additional seats. If one person handles both, document how you split their time between support COGS and sales expenses, then apply that policy consistently. Review retention work separately because its classification depends on whether the work delivers ongoing service or pursues a sale.
Software development costs
Software development may warrant an asset account, but coding costs do not qualify for capitalization automatically. Keep routine maintenance in R&D expense, and use a separate capitalized software account only for costs your accountant determines qualify. Whether the software supports your hosted product or is sold separately affects which accounting criteria apply. Technical feasibility can matter for software sold to customers, while internal-use software follows different development-stage criteria. Have an accountant review the project and the point when costs become eligible before moving them out of expense.
How do you set up a SaaS chart of accounts?
Your SaaS chart of accounts should produce a readable P&L and balance sheet as subscription, usage, and payment activity grow. The four practices below help keep those reports useful.
Implement a standard numbering system
Choose account-number blocks before you start posting transactions. NetSuite recommends 1000–1999 for assets, 2000–2999 for liabilities, 3000–3999 for equity, 4000–4999 for income, and 5000–5999 for expenses. Within those blocks, leave room for accounts you may need later, such as Stripe settlement clearing, usage revenue, and processor fees. Pair each number with a clear name so you can distinguish settlement balances from bank cash.
QuickBooks leaves account numbers off by default, so check your settings rather than accepting the initial chart. NetSuite advises against changing a chart after setup. Deliberate ranges reduce the need to renumber accounts when your reporting needs grow.
Create parent-child account structures
Group related accounts under a parent so your P&L can show a total without hiding the detail behind it. For example, Subscription Revenue and Usage Revenue can sit beneath a Revenue parent. Post transactions to the children, then expand the parent when you need to compare the streams.
In QuickBooks Online, locking parent accounts prevents users and bank rules from posting to them. Connected apps may still post, so check their account mappings. When you stop using a child account, mark it inactive. QuickBooks prevents new transactions while keeping its history available in prior reports.
Maintain consistency and flexibility
Map every old account to a new account before changing your chart. Use names that describe what each account holds, such as “Subscription revenue” and “Stripe settlement clearing,” and keep account numbers within the ranges you chose earlier. When an old account has transaction history, QuickBooks lets you make it inactive rather than delete it.
Run one month-end close using both the old and proposed account mappings without posting transactions twice. Reconcile the trial balance before and after the remap, then investigate differences beyond the splits you intended. If the migration also changes your accounting basis, follow the separate cash-to-accrual switch guide.
Before using the new chart for board reporting, check that
- The P&L separates subscription, usage, and payment-related revenue where material.
- Stripe clearing reconciles to settlement activity and bank deposits.
- Deferred revenue and receivables tie to their supporting schedules.
Tailor your chart of accounts for growth and scalability
Add a general ledger account when a new revenue stream needs a separate P&L line or a new liability needs its own balance. For B2B SaaS companies processing payments, material usage fees and payment-related fees may warrant separate revenue accounts so you can see their economics apart from subscriptions.
Use dimensions when you need a different view of the same accounting activity. A product tag, for example, lets you compare subscription revenue across products without creating an account for each one. Keep customer-level usage detail in billing records rather than multiplying ledger accounts.
Leave room in your numbering scheme for future accounts. NetSuite notes that adding reporting distinctions later can require historical recoding. Do not treat suggested account counts by funding stage as industry benchmarks.
Common SaaS chart of accounts mistakes
Do not book a Stripe payout as revenue. Stripe Connect destination charges place the charge on the platform before transferring the connected account’s share. Assume a $100 charge, a $90 connected-account transfer, a $10 platform fee, and a $3 processing fee borne by the platform. If accounting review concludes that the platform reports only its $10 fee as revenue, the illustrative ledger flow is:
- Charge: Debit Stripe clearing $100. Credit connected-account payable $90 and payment-related revenue $10.
- Transfer and fee: Debit connected-account payable $90 and processing expense $3. Credit Stripe clearing $93.
- Payout: Debit bank cash $7. Credit Stripe clearing $7. Do not record another sale.
Match the payout to its underlying activity using Stripe’s payout reconciliation report. ASC 606’s principal-versus-agent guidance makes gross-versus-net presentation dependent on contract facts; have an accountant review these entries before applying them.
- Record refunds and chargebacks separately so you can reconcile their effect on Stripe clearing.
- Keep earned subscription revenue separate from deferred revenue for service you still owe.
- Use billing and operational data for ARR, CAC, and cohort profitability. The chart of accounts cannot calculate those measures alone.
Chart of accounts help for B2B SaaS
A payments-aware chart of accounts needs maintenance as your billing and payment flows change. Misclassified activity can distort the financial reports you use to make decisions, and correcting historical entries later takes time. Bridges’ controller service includes rebuilding the chart of accounts and converting to accrual bookkeeping as part of the monthly retainer.