Industry guide

Bookkeeping for SaaS: cash arrives up front, revenue arrives over time.

Subscription businesses collect money before they earn it, get paid by processors net of fees, and are judged on metrics that do not appear in the accounting software. Getting the books right means handling all three. Here is how.

The core issue

Deferred Revenue

When a customer pays $1,200 for an annual plan in January, you have not earned $1,200 in January. You have earned $100, and you owe the customer eleven more months of service.

On accrual-basis books, the payment is recorded as deferred revenue, a liability, and moved into revenue month by month as the service is delivered. Monthly plans billed at the start of the month are simpler, but the same idea applies when billing dates and month-ends do not line up.

Without this step, a strong annual-billing month looks like a record month, and the following eleven look like a slump. Investors, lenders and buyers look for deferred revenue on the balance sheet, and its absence is one of the first questions in due diligence.

Revenue recognition rules for contracts with customers are set out in the US accounting standard ASC 606. Which policy fits your contracts, especially with setup fees, usage pricing or multi-year deals, is a decision for your CPA. The bookkeeping job is to apply that policy consistently every month.

Payments

Stripe and Other Processor Payouts

Payment processors pay out the total of many charges, minus fees, refunds and disputes. Recording only the deposit understates both revenue and fees.

  • Record gross sales. Revenue should show what customers paid, not what landed in the bank.
  • Record fees as an expense. Processor fees are a real cost of sales and should be visible.
  • Track refunds and chargebacks separately. They tell you something about customers that a net figure hides.
  • Use a clearing account. Post processor activity to a clearing account and reconcile it to zero each month, so every payout is fully explained.

Metrics

MRR Is Not Revenue

Monthly recurring revenue, churn and customer lifetime value come from your billing system, not your general ledger. They are useful, but they are not the same number as revenue in the profit and loss.

MRR is a run rate at a point in time. Revenue is what was earned in a period under your accounting policy. They differ because of annual plans, mid-month upgrades, discounts, refunds and one-off fees. A good monthly close includes a short reconciliation that explains the gap, so nobody is surprised when the two are compared.

Costs

Costs That Need a Clear Home

  • Hosting and infrastructure. Usually cost of revenue, because it scales with customers.
  • Customer support. Often split between cost of revenue and operating expense.
  • Software development. Some development costs may be capitalized under accounting rules for internal-use software. Your CPA decides the policy; the books need time and cost records that support it.
  • Sales commissions. Commissions on multi-year or annual contracts may need to be spread over the contract rather than expensed at once, depending on your policy.
  • Sales tax. Whether software subscriptions are taxable differs from state to state. Track where customers are, and ask your CPA where you have obligations.

A chart of accounts that separates cost of revenue from operating expense gives you a gross margin you can trust, which is one of the first numbers investors ask for.

The month-end

A SaaS Month-End Checklist

  1. Reconcile every bank, card and processor clearing account.
  2. Post the deferred revenue schedule and agree it to billing system data.
  3. Record processor fees, refunds and chargebacks at gross.
  4. Accrue unpaid expenses and record prepaid annual software.
  5. Post payroll from the payroll system.
  6. Reconcile MRR to revenue and explain the difference.
  7. Close the period and send the reports.

Our general month-end close checklist covers the steps every business shares.

Where we fit

How We Keep SaaS Books

We keep accrual-basis books for subscription businesses in QuickBooks Online and Xero: processor activity recorded at gross, deferred revenue scheduled monthly, cost of revenue separated, and each month closed with reports you can share with investors. We work alongside your CPA on revenue policy and tax.

Questions

Common Questions

How do you record deferred revenue for annual subscriptions?
Record the full payment as a deferred revenue liability when it is received, then move one month’s share into revenue each month as the service is delivered. The schedule should agree to your billing system.
Should Stripe payouts be recorded net or gross?
Gross. Record the full customer payments as revenue and the processor fees, refunds and disputes separately. A clearing account reconciled to zero each month keeps every payout explained.
Is MRR the same as revenue?
No. MRR is a run rate from your billing system at a point in time. Revenue is what you earned in a period under your accounting policy. Annual plans, upgrades, discounts and refunds make them differ.
Do SaaS companies need accrual accounting?
Most do once they have annual plans, investors or lenders. Cash-basis books overstate revenue in big billing months and hide the obligation to deliver service.
Is SaaS subject to sales tax?
It depends on the state. Some states tax software subscriptions and others do not. Track customer locations and ask your CPA which states you have obligations in.
Xero Gold Partner Earned through certified advisors and a proven client base.
Intuit ProAdvisor Elite badge QuickBooks ProAdvisor, Elite A team certified in QuickBooks Online, Intuit Enterprise Suite and Workforce.
Xero Asia Partner of the Year Recognised by Xero for delivery, not for sales volume.
13+ years in practice Across accounting outsourcing, ERP and accounting software work.

Getting ready for investors or a lender?

Tell us how you bill and which software you use. We will tell you what your books need before someone outside the business reads them.

Book a free 30-minute call See our packages
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.