7 min read
How to calculate churn rate for SaaS when your numbers are small
Logo churn, revenue churn and net revenue churn, why the start-of-month base matters, why small counts make churn noisy, and how to separate failed payments.
Say you start March with 140 paying customers and six of them cancel during the month. Your churn rate is 6 ÷ 140, or 4.3%. In April you start with 146 and three cancel: 2.1%. Churn halved. Nothing about the product changed.
That is the first thing to understand about how to calculate churn rate for a SaaS with a few hundred customers or fewer. The arithmetic is easy. Reading it is the hard part, because at small numbers most of the month-to-month movement is chance. Below are the three churn rates worth tracking, the denominator that keeps them honest, and the views that hold up when the counts are small.
What is the formula for churn rate?
There are three versions, and they answer different questions.
Logo churn counts customers:
logo churn = customers lost ÷ customers at the start of the month
It tells you how many people leave. A €9 customer and a €290 customer count the same.
Revenue churn counts money lost from customers who were already paying:
revenue churn = (churned MRR + contraction MRR) ÷ MRR at the start of the month
Churned MRR is the full MRR of customers who cancelled. Contraction is the MRR lost from customers who stayed but downgraded or added a discount. Both are losses from your existing base, so both belong here.
Net revenue churn subtracts what existing customers added back:
net revenue churn = (churned + contraction − expansion) ÷ MRR at the start of the month
Expansion is upgrades, extra seats, a coupon ending. If expansion is bigger than churn and contraction together, net revenue churn goes negative, which means your existing customers are worth more at the end of the month than at the start even before any new customer arrives. Whether to count reactivations (former customers who come back) in the subtraction is a choice. We leave them out, since they aren't customers from the starting base, but either rule is fine if you write it down.
These three often disagree. A month where two small customers leave and one large customer downgrades has low logo churn and high revenue churn. A month where many small customers leave but one large one upgrades has high logo churn and net revenue churn near zero. You need at least the first two to know what happened.
Why use customers at the start of the month?
Because it's the group that could actually churn during the month.
If you divide by customers at the end of the month, every new signup makes churn look lower, even though a customer who joined on the 28th had three days to leave. If you divide by an average of start and end, you get a number that depends on how fast you're acquiring, which is a different metric.
Using the start-of-month base means the denominator is fixed on day one and the rate answers one clear question: of the customers I had, what share did I lose?
That raises an edge case. A customer who signs up on the 4th and cancels on the 20th was never in the starting base. If you count them in the numerator, your rate mixes two populations. A cleaner rule is to count only losses from customers who were there at the start, and report same-month signups who left as their own number. Those are usually an onboarding or pricing-page problem, not a retention problem, and they deserve a separate look.
Why is churn so noisy for small SaaS?
Because one customer is a large share of a small base.
With 40 customers, every cancellation moves logo churn by 2.5 points. With 140, it's about 0.7 points. Even with a few hundred customers, a single cancellation or two can make a month look like a trend.
There is also plain chance. If your customers tend to leave at a rate that works out to about three a month, some months will bring one cancellation and some will bring six, without any change in the underlying behavior. A drop from 4.3% to 2.1% in the example above is entirely consistent with nothing having changed.
A few ways to get a steadier read:
- Pool several months. Add up customers lost over the last three or six months and divide by the sum of the starting counts for those months. If you lost 6, 3 and 5 against starting bases of 140, 146 and 151, that is 14 ÷ 437, or 3.2%, a better estimate than any single month.
- Report the counts with the rate. "6 of 140" carries its own uncertainty. "4.3%" hides it.
- Look at who left, not only how many. Three cancellations from the same plan, or the same signup month, or all citing the same missing feature, mean more than a rate does.
What does a churn cohort view show?
A cohort groups customers by the month they first paid, then tracks how many are still paying after one month, two months, three and so on.
| First paid | Customers | After 1 month | After 2 months | After 3 months |
|---|---|---|---|---|
| January | 18 | 16 | 15 | 15 |
| February | 22 | 18 | 16 | 15 |
| March | 25 | 24 | 23 | |
| April | 20 | 19 |
Read across a row to see how one group decays. Read down a column to compare groups at the same age.
This example tells a more specific story than a monthly churn rate would. Most of the loss happens in the first month or two, and then the curve flattens. February lost more early than January did, and March and April are holding better than both. If you changed onboarding at the start of March, this is the view that would show it. A single blended churn rate would mix the older, stable customers with the newer ones and blur the effect.
Cohorts get thin quickly at small numbers. With twenty customers in a row, one person is five points. Look at the shape rather than individual cells, and expect the newest rows to move around.
How much churn comes from failed payments?
Some of your churn is customers who never decided to leave. Their card expired, the bank declined a renewal, or the payment method on file stopped working. This is involuntary churn, and it is worth separating from cancellations because the fix is completely different.
When a renewal fails, the subscription usually becomes past due while the billing system retries. If none of the retries succeeds and the customer doesn't update their payment details, the subscription eventually cancels and shows up as churn.
A useful way to track it:
- Keep past-due subscriptions in MRR until they actually cancel, and report their total as at-risk MRR. That number is your involuntary churn before it happens.
- When a subscription cancels after being past due, tag it as involuntary. Report voluntary and involuntary churn separately.
- Watch the share of past-due subscriptions that recover. If most recover within a few days, your retry and reminder setup is working. If few do, that's where to spend an afternoon.
Involuntary churn is often the cheapest churn to reduce. The customer already wanted to keep paying. Clear reminder emails, an easy way to update a card, and enough retries spread over enough days get a good share of them back. Cancellations from people who stopped using the product need product work, which is slower.
Putting the numbers to use
Churn feeds most of the other numbers you care about. Revenue churn is the denominator of a simple LTV estimate, covered in LTV for a small SaaS, so a noisy churn figure makes LTV even noisier. Churn and contraction are two of the five movements in net new MRR, which is where a bad month usually gets explained. And when MRR falls and you need to work out why, the MRR dropped checklist starts with exactly these splits: logo against revenue, voluntary against involuntary, and which cohort it came from.
The exact formulas Joinsight uses for logo churn, revenue churn and at-risk MRR are on the metric definitions page.