Skip to content

7 min read

How to calculate LTV for a SaaS, and why small numbers break it

How to calculate LTV for a small SaaS: ARPU over revenue churn, a trailing window, the gross margin version, a worked example, and what the estimate is good for.

Most guides on how to calculate LTV for a SaaS give you one formula and move on. The formula is fine. The trouble starts when you feed it the numbers of a business with 80 customers, where a single cancellation can double the month's churn rate or halve it. This post covers the formula, the gross margin version, why the result blows up on small or noisy numbers, and what an LTV figure is good for when you are somewhere between €1k and €50k MRR.

What is the formula for SaaS LTV?

The common version is short:

LTV = ARPU ÷ monthly revenue churn

ARPU is MRR divided by the number of active paying customers. Monthly revenue churn is the MRR you lost during a month, from cancellations and downgrades, divided by MRR at the start of that month.

The reasoning behind it: if you lose a steady share of revenue every month, the average customer stays for 1 ÷ churn months. At 4% a month that is 25 months. Multiply by what a customer pays per month and you get the revenue you can expect from them over that time.

Two choices inside the formula matter more than they look.

Revenue churn or logo churn. Logo churn counts customers lost, so a €9 cancellation weighs the same as a €99 one. Revenue churn weights each loss by what that customer paid, which matches ARPU, since ARPU is also money per customer. If all your customers pay roughly the same, the two agree. If you have a cheap plan and an expensive one, they don't.

Gross churn, not net. Net revenue churn subtracts expansion from upgrades. In a month where upgrades outweigh cancellations, net churn is zero or negative and the formula returns infinity or a negative number. Neither is a lifetime value. Keep expansion out of the denominator and, if it is meaningful, report it next to the LTV instead of inside it.

If your MRR itself isn't defined carefully (annual plans divided by 12, trials excluded, one currency), everything downstream inherits the error. The post on how to calculate MRR covers that part.

Why does LTV explode when churn is small?

Churn sits in the denominator, and dividing by small numbers is unstable. With a hypothetical ARPU of €40:

Monthly revenue churnImplied lifetimeLTV
8%12.5 months€500
4%25 months€1,000
2%50 months€2,000
1%100 months€4,000
0.5%200 months€8,000
0%foreverundefined

Halving churn doubles LTV, and at small scale halving churn can mean one customer. Take a hypothetical product with €3,000 MRR and 75 customers at €40 each. One cancellation in a month is 1.3% revenue churn. Two is 2.7%. None is 0%. Luck alone moves your LTV between €1,500, €3,000 and undefined, and nothing about the business changed.

There is also a quieter problem in the bottom rows. A 1% churn rate implies customers stay for more than eight years on average. You may not have been in business for two. The formula will happily extrapolate a lifetime nobody has observed.

How do you get a stable churn rate for LTV?

Use a trailing window and pool it. Add up churned and contraction MRR over the last several months, add up MRR at the start of each of those months, and divide one sum by the other. Pooling weights each month by its size, and a single good or bad month gets diluted instead of setting the answer.

Six or twelve months is a sensible window. Shorter and you are back to noise. Much longer and the number describes an older product with older pricing.

A rough test for whether the window is long enough: count the churn events in it. If you can count them on one hand, the LTV is mostly noise, whatever the formula says.

When churn is very low even over a long window, cap the implied lifetime at a horizon you would defend in a conversation, say 36 or 48 months, and write the cap down next to the number. It is an assumption either way. A visible one is easier to argue with.

A worked example

A hypothetical SaaS has €6,400 MRR today across 160 customers, so ARPU is €40. Here are its last six months:

MonthMRR at startChurned + contractionMonthly rate
1€5,600€1703.0%
2€5,800€701.2%
3€5,900€2955.0%
4€6,000€1452.4%
5€6,300€400.6%
6€6,400€2804.4%
Total€36,000€1,0002.8%

Computed from a single month, LTV ranges from €800 (month 3) to about €6,300 (month 5). Same product, same customers, nearly an eightfold spread.

Pooled over six months, churn is €1,000 ÷ €36,000, about 2.78%. LTV is €40 ÷ 0.0278, about €1,440, with an implied lifetime of 36 months.

Should you use the gross margin version?

Revenue LTV tells you what a customer pays over their lifetime. Gross margin LTV tells you what you keep from it, which is the number that matters if you are deciding how much to spend acquiring that customer.

Gross margin LTV = ARPU × gross margin ÷ monthly revenue churn

For a small SaaS, the costs that belong in gross margin are the ones that grow with customers: hosting, payment processing fees, app store commission on mobile subscriptions, per-customer third-party APIs (model tokens, email sending, SMS), and support tooling. Your own time is usually left out. That's fine as long as you know it is left out.

In the example above, if those costs take 15% of revenue, gross margin is 85% and LTV becomes €40 × 0.85 ÷ 0.0278, about €1,220.

A sentence you could say with a straight face: "A customer is worth roughly €1,200 to €1,450 to us, based on the last six months, and the range is wide."

Why is LTV always an estimate?

Because every input is a simplification of something that moves.

  • Churn isn't constant. Customers are often most likely to leave in their first months. Those who stay a year tend to stay longer. A single rate averages over both groups.
  • ARPU isn't constant. Prices change, plans get added, discounts end.
  • The product isn't constant. Customers who joined two years ago bought something different from what you sell now.
  • Most of the lifetime hasn't happened. If you have been selling for 18 months and the formula implies 36, half of the estimate is extrapolation.

None of this makes LTV useless. It makes it a rough order of magnitude with an honest range, which is how it should be presented.

What is LTV useful for at €1k to €50k MRR?

Good uses:

  • Setting a ceiling on acquisition spend. If gross margin LTV is around €1,200, paying €900 for a customer through ads or an affiliate deal is a bet on the optimistic end of your range. Paying €150 is not.
  • Watching a trend on a fixed definition. If the trailing six-month LTV climbs after you fix onboarding, that's a signal, as long as the definition didn't change with it.
  • Sanity-checking pricing. A low LTV with low churn usually points at price. A low LTV with high churn points at retention.

Poor uses:

  • Comparing channels or plans with a handful of customers each. Segment-level churn is even noisier than the total. Eight customers from one channel will not give you a churn rate worth dividing by.
  • Cash planning. LTV is revenue that hasn't arrived. When money is tight, payback period (how many months of margin it takes to recover acquisition cost) is the more honest number.
  • Precise valuation maths. A figure with a twofold range doesn't belong in a spreadsheet cell formatted to the euro.
  • A target in itself. Improve churn and ARPU directly. LTV follows.

If churn is the input you trust least, start there: the post on SaaS churn rate covers how to measure it.

See what makes you money.

Connect Stripe or RevenueCat and Search Console, and you see combined MRR and 16 months of search history on day one. Page and keyword revenue follow as the snippet collects first touches.

No card required. The trial clock starts when your first revenue source connects.