Breaking The Curse of Negative Cashflow in SaaS

by Sebastien Mirolo on Thu, 1 Sep 2016

It has become a custom that a SaaS company will sacrifice its cash flow and profitability when chasing after revenue growth and growth of the customer base. This is obviously made possible if a SaaS company is backed by a large amount of investment, specifically from Venture Capital firms.

However, when you are a three people Software-as-a-Service business and plan to be customer-funded for a long time, being able to estimate cash flow and maintain cash flow positive becomes essential. Let's break down a SaaS income statement to get a closer look at what are affecting its cash flow.


To qualify as a Software-as-a-Service business, most of the revenue must come from the Subscription Software product, however, professional services revenue is not to be neglected especially at its early stage. As subscription revenue grows, the revenue from professional services can gradually decrease. Subscription Software Revenue, Professional Services Revenue and their ratio will thus be part of our model.

Subscription Product Revenue $18,000 $20,000 $22,000
Professional Services Revenue $4,500 $5,000 $5,500
PS / Total Revenue 20% 20% 20%

In the model, we are constraining the Professional Services Revenue as a percentage of the total revenue.

PSRevenue(t) = SubscriptionRevenue(t) * PSRatio / ( 1 - PSRatio)

Scenario 1: Charging one period at a time

Let's start with a simple model. Suppose we have only one plan and all customers are charged regularly at the same frequency. Most first-time SaaS founders and engineers choose this model because it is easy to implement and reason about.

For example purpose, we will use one month as the base frequency in below discussion. We have,

Payments(t) = NewCustomers(t) + Renewals(t)


  • t stands for a particular point of time
  • Payments(t) stands for the number of cash payments at time t
  • NewCustomers(t) stands for the number of payments from new customers at time t
  • Renewals(t) stands for the number of payments from renewing customers at time t

Incidentally the number of cash payments at time t is also the total numbers of subscribers at time t.

We will define the growth rate in the number of new customers as a recurrence relation

NewCustomers(t) = NewCustomers(t - 1) * α + β


  • α stands for the multiplier of the change of the number of new subscribers
  • β stands for the incremental change of the number of new subscribers

For example if α = 1, β = 0, and NewCustomers(0) = 1, we add one new subscriber every month; thus we will add 12 new subscribers after 12 months. (assuming no churn).

We will define the number of renewals as a a recurrence relation on the total numbers of customers whose subscription is due for renewals.

Renewals(t) = Payments(t - 1) * γ


  • γ stands for the renewal rate

Following the previous example, if γ = 1, we have no churn. All customers renew their subscription month after month.

Without any prepayment besides the monthly subscription payment, the monthly revenue is equal to monthly cash in by definition.

Revenue(t) = CashIn(t) = Payments(t) * Price


  • Price stands for the price of the subscription plan for one period
  • CashIn(t) stands for cash collected in period t
  • Revenue(t) stands for revenue recognized in period t

Note that the cash is collected at the beginning of the period while income is recognized when service is fully delivered, that is at the end of the period.


Scenario 2: Charging multiple periods in advance

Having multiple products with multiple price points, though important for the business, does not change the mathematical properties of our model, but, charging multiple periods in advance would. Therefore, we are interested in knowing the effect of charging multiple periods in advance in our financial model.

Have you ever seen choices like: buy a 1-year SSL certificate for $69 or buy a 2-year SSL certificate for $124 (a 10% discount) ?

We are going to model the effect of collecting payments for multiple periods in advance in this section.

Getting paid in advance is always good. When you are customer-funded, it is even more important. Having cash in advance means you will have money to hire more employees, pay for R&D and marketing. The subscriber is tied in to the time they have prepaid so it reduces the churn rate.

Software-as-a-Service is a relationship business. The more your SaaS product is embedded into your customer operations, the more they will be willing to agree to advance payments. They have a strong interest for you to succeed and deliver a reliable service.

Say we offer the same monthly-priced product as before but allow subscribers to pay multiple periods in advance, such as 6 months or a year.

The total number of payments Payments(t) is defined as

Payments(t) = Payments1(t) + Payments6(t) + Payments12(t)

The total number of payments in a period t are the number of payments for a monthly plan (Payments1(t)), plus the number of 6-month in advance payments (Payments6(t)), plus the number of one year in advance payments (Payments12(t)).

Payments1(t), Payments6(t) and Payments12(t) follow the generic formula:

Paymentsp(t) = NewCustomersp(t) + Renewalsp(t)


  • Paymentsp(t) stands for the number of customers that pay p future periods at time t.
  • NewCustomersp(t) stands for the number of new customers that pay p future periods at time t.
  • Renewalsp(t) stands for the number of customers that pay a renewal for p future periods at time t.
p in our current situation is 1, 6 or 12 months.

Obviously a customer that has pre-paid 6 months will not renew for the next 6 periods, so the monthly, 6-month and 1-year renewals at time t, are a distribution of the customers up for renewal at time t.

Renewals1(t), Renewals6(t), Renewals12(t)
distribute(Payments1(t - 1), Payments6(t - 6), Payments12(t - 12))

We will use a simple distribution rule for our model

Renewals p (t) = p = 1 , 6 , 12 Payments(t - p) * γ p with p = 1 , 6 , 12 γ p < 1

This gives equal chances for a customer that paid 6 months in advance in the past to decide to pay monthly or a year in advance when her subscription is up for renewal.

Another valid assumption on which to build the model would be that a 6-month pre-pay customer is more likely to renew again by paying 6-months in advance. That assumption would institutionalize monthly, 6-months and yearly plans in the model, more than it would represent advance payment for periods in our opinion. We thus prefer the first option.

The total number of subscribers in period t is thus the number of customers who paid for a month in the previous period, plus the number of customers who paid a 6-month advance in the previous 6 periods, plus the number of customers who paid a 12-month advance in the previous 12 periods.

TotalCustomers(t) = p = 1 , 6 , 12 i = 0 p - 1 Payments p (t - i)

If we expand the formula to understand it in our context, we get:

TotalCustomers(t) = Payments1(t)
+ (Payments6(t) + ... + Payments6(t - 5))
+ (Payments12(t) + .. + Payments12(t - 11))

With advance payments, the cash flow collected every period is

Cashflow(t) = p = 1 , 6 , 12 Payments p (t) * Price p * p


  • Pricep is the price per period discounted by a percentage for advance payment.

Income is recognized over time as service is provided

Revenue(t) = p = 1 , 6 , 12 i = 1 p Cashflow p (t - i - 1) p



In the early days, costs are usually the easiest to estimate: hosting, lawyers, accountants, taxes, and minimum pay to the founders.

At start, yearly operating costs to maintain a Corporation can be significant, a factor to consider in the choice of LLC or Corporation for boutique entrepreneurs.


Delaware C Corporation California LLC
$350Delaware franchise tax $800California franchise tax
$200Delaware registered agent
$800California franchise tax
$25California Statement of Information
$450Payroll compliance software -(Pass-through to owner)
$2,500Tax accountants
$4,325Total $800Total

As business grows, we will want to understand if the business can be profitable long-term. To do that, we want to analyze the expenses with relation to the revenue. Most income statements try to group expenses between costs directly responsible to provide the goods (or service) sold and costs incurred in running the operation.

The separation between the two, Cost of Goods and Operating Expenses is not always straightforward in SaaS.

Transaction Fees, such as credit card processing by companies such as Stripe and Paypal, as well as web servers hosting fee on the AWS cloud are definitely Cost of Goods. Professional Services invoiced to a customer are also straightforward Cost of Goods. Sales, Marketing and miscellaneous administrative, such as the CEO salary, are commonly Operating Expenses.

The salary of system engineers responsible for keeping the service available online 24/7 can be categorized as Cost of Goods but the salary of application engineers, who write business logic, is often categorized as Operating Expenses.

With new trends such as DevOps, lines are blurred. What about a security engineer? When she installs patches on a server, her salary is most likely Cost of Goods. When that security engineer pro-actively review code in the service being deployed for potential issues, her activity (and salary) would make more sense to be counted as an operating expense.

Customer support is the point of contact for subscribers to the company and are responsible of addressing customers’ general issues. The quality of customer support directly impacts churn, so it has become acceptable to put the salary of Customer Support in the Cost of Goods column. Any touch point with a customer is an opportunity to up-sell her on more services. Some companies incentivize Customer Support Representatives (CSRs) with bonuses on successful up-sells. From this point of view, it would be logical to put some of the customer support salary into the Operating Expenses column.

When you take into account a Software-as-a-Service business is a relationship business, much like a landlord expected to make repairs and upgrades to a building according to code, does adding two-factor authentication a maintenance issue (Cost of Goods) or product development issue (Operating Expense)? After all it has become a new expected base standard for login into a website. (side note: DjaoDjin provides the administrative service logic expected of any decent SaaS product).

Obviously, we cannot expect an engineer to accurately report her time spent on Dev and Ops every day, nor customer support representative to record which part of the phone conversation she was helping a subscriber through a product feature and which part she was up-selling the customer on new products.

Taking into account a management structure with a manager and two engineers rotating on-call duties every two weeks, what is Cost of Goods and what is Operating Expenses? As a company grows head counts, the pressure to generate accurate “standard” financial statements runs counter-current from the trends in SaaS businesses towards cohesive teams doing DevOps, Agile development and blurring lines between customer support and sales.

Long rambles but that seems necessary tale of caution before moving back to the model.

Cost of Goods
Transaction Fees A percentage of the revenue
Hosting Expenses Number of subscribers divided by subscriber per hosting unit, multiplied by price per hosting unit.
DevOps Engineering Fixed number of engineers with experience in cloud management and web application security (minimum 2 to avoid burn out).
Customer Support Number of subscribers divided by CSR per customer, multiplied by CSR salary.
Professional Services Number of hourse * Invoiced hourly, divided by paid hourly
Operating Expenses
Sales Base salary, plus compensation
Marketing Based on available budget
Product Development Fixed number of engineers with experience in an industry, business logic, and user experience.
Miscellaneous Office rent, CEO, VPs, and executive assistants salaries

In our model, the ratio of customers per hosting resource unit and ratio of customers per CSR are the main cost drivers that affect unit economic. Thus we will want to keep a constant pulse on those two ratios.

The 3 key ingredients of a sales compensation plan are commission ratio, acceleration and payment schedule. For our model, we will use the following formula:

SalesExpenses(t) = NumberOfSalesPeople(t) * SalesMonthlyBaseSalary(t) + CommissionRate * NewRecurringRevenue(t - 1)

The sales expenses (salesperson’s compensation) consist of two parts, base salary and commission. The commission is based on the new monthly recurring revenue. For example, if a sales person closes a deal where a subscriber buys a $1,000 monthly plan, paying a year in advance (effectively $12,000 at close) and the commission ratio is 10%, the sales person will get paid $100 of commission for a period of 12 months.


Download the financial model for boutique SaaS as an Excel spreadsheet

Special Thanks

Eddie Tang at Above Consulting was instrumental in developing this financial model as well as writing the explanation underlying the model in plain English you can read here. Thank you.

More to read

If you are looking for more posts about what it is like to build a boutique subscription product, you might enjoy Boutique entrepreneur, LLC or Corporation?, Hiring a technical co-founder, or A typical day building a boutique hosting platform

More business lessons we learned running a SaaS application hosting platform are also available on the DjaoDjin blog. For our fellow engineers, there are in-depth technical posts available.

by Sebastien Mirolo on Thu, 1 Sep 2016

Bring fully-featured SaaS products to production faster.

Follow us on