CHURN METRICS

How to calculate customer retention rate: formula, examples and pitfalls

Customer retention rate = (customers at end − new customers) ÷ customers at start × 100. Worked examples, who counts as retained, and how billing tools differ.

Published 10 min read

Customer retention rate is the share of the customers you had at the start of a period who are still customers at the end of it. The formula is (E − N) ÷ S × 100, where S is the number of customers at the start, E the number at the end and N the new customers acquired during the period. If you started the month with 400 customers, gained 60 and ended with 420, your retention rate is (420 − 60) ÷ 400 = 90%.

The formula is the easy part. The number moves a lot depending on who you count as a customer: trials, unpaid subscriptions, paused accounts, customers with two subscriptions, customers who leave and come back. This guide gives the formula, worked examples, and the counting rules used by billing tools such as Stripe and Recurly, so you can pick yours and keep it stable.

It is written from the billing tools’ own documentation: Stripe (Billing analytics, how subscriptions work) and Recurly (Subscriber Retention, Subscriber Churn Benchmarks), all accessed 10 November 2026. Example numbers are hypothetical unless a source is named.

What is the customer retention rate formula?

Customer retention rate = (E − N) / S × 100

S = customers at the start of the period
E = customers at the end of the period
N = new customers acquired during the period

Subtracting N matters: new customers did not exist at the start, so they cannot have been retained. Without it, a month of strong sign-ups hides a month of heavy cancellations.

The customers you lost are S + N − E. Retention rate and the simple churn rate (lost ÷ S) then add up to 100%.

Term What it means Where to find it
S Paying customers on the first day of the period Subscriptions active at the period start
N Customers whose first paid subscription started during the period New subscribers report, or first paid invoice date
E Paying customers on the last day of the period, new ones included Subscriptions active at the period end
S + N − E Customers lost during the period Cancellations plus subscriptions ended for non-payment

How do you calculate customer retention rate? Two worked examples

Example 1: a monthly rate (hypothetical numbers).

  • Customers on 1 March: S = 400
  • New customers in March: N = 60
  • Customers on 31 March: E = 420

Retention rate = (420 − 60) ÷ 400 = 360 ÷ 400 = 90%. You lost 400 + 60 − 420 = 40 customers, a churn rate of 40 ÷ 400 = 10%.

Example 2: Stripe’s own churn example. Stripe’s analytics docs describe a business that “had 1000 subscribers” at the start of the month, “added 100 subscribers and churned 100 subscribers”. So S = 1,000, N = 100 and E = 1,000.

  • Customer retention rate with the formula above: (1,000 − 100) ÷ 1,000 = 90%.
  • Stripe’s subscriber churn rate for the same month: 100 ÷ (1,000 + 100) = 9.1%, because Stripe divides by the subscribers 30 days ago plus the new subscribers.

Both numbers are correct; they use different denominators. That is why 100% minus a churn rate read off a dashboard does not always give your retention rate. Write down which denominator you use and keep it.

To compute churn and revenue retention from a month of movements, use the free churn rate calculator. For the churn formulas themselves, see how to calculate churn rate.

Who counts as a retained customer?

This is where most retention rates go wrong. Decide each rule once, before you compute anything.

Case Stripe Billing analytics Recurly Subscriber Retention A sensible default
Free trial Not an active subscriber Excluded Exclude until the first paid invoice
Free plan Not an active subscriber Not covered (paying subscribers only) Exclude: measure free-to-paid separately
Payment failed, retries running past_due counts as active A subscriber whose first paid invoice is overdue is not counted as paying Count as retained while recovery runs, but report it
Unpaid after all retries unpaid or canceled counts as churn Churned once the last subscription lapses Churned
Paused or on hold Depends on MRR (0 MRR counts as churned) “A subscription on hold isn’t labeled as churned” Not churned, reported as a separate line
Two subscriptions Counted as one subscriber Counts each subscriber, “not the number of subscriptions” Count customers, not subscriptions
100% coupon Churned if discounts are subtracted from MRR Not described Decide, and keep the same choice
Leaves and comes back Counted as a reactivation Subscriptions that restart within your chosen interval count as continuous Retained if back within your grace window

Three points from these docs are worth keeping in mind:

  • Stripe lets you choose when a subscriber becomes active: “at the start of the subscription” (the most common) or “when the first payment is received”. A business with a free trial that converts automatically gets very different numbers depending on that setting.
  • Recurly excludes trials from both its retention and churn reporting: only subscribers “with at least one paid subscription invoice” are included in its churn benchmarks.
  • Failed payments sit in a grey zone. Stripe keeps past_due subscriptions in MRR and active subscribers until retries end. If you count them as retained, a month with many open failed payments looks better than it is. See involuntary churn for how to report them.

Is customer retention rate the same as 100% minus churn rate?

Only if both use the same denominator and the same period. With the formula in this guide, retention = 100% − (lost ÷ S). With a churn rate that divides by start plus new customers, like Stripe’s, the two do not add up to 100%.

Retention also does not convert to a yearly figure by multiplication. Retention compounds: Stripe’s docs show that with a 10% monthly churn rate, you can expect 90% of a cohort after month 1, 81% after month 2, 73% after month 3, 66% after month 4 and 59% after month 5. A 90% monthly retention rate is therefore about 28% over a year (0.9^12).

Which period should you measure?

  • Monthly for monthly plans: it matches the billing cycle and shows changes quickly.
  • Quarterly or yearly when most customers are on annual plans. A monthly rate for annual customers is close to 100% for eleven months and drops at renewal. See annual vs monthly churn.
  • By cohort to see when customers leave. A cohort table follows the customers who started in the same month and shows how many remain each month after. Stripe and Recurly both report retention this way; Recurly counts a subscriber in month 0 “if they stay subscribed for a full month after sign-up”. See cohort retention analysis.

Whatever the period, the customer must be counted at the exact start and end dates, in one time zone. Stripe notes that its prebuilt reports use UTC while its charts use your account’s time zone, “so monthly totals might not match exactly”.

Customer retention rate vs revenue retention

Customer retention counts heads. Revenue retention counts money.

Metric Counts Can exceed 100%? Answers
Customer retention rate Customers No Do customers stay?
Gross revenue retention (GRR) Starting MRR minus churn and downgrades No How much revenue do we keep?
Net revenue retention (NRR) GRR plus expansion Yes Does the base grow by itself?

Stripe’s cohort example shows why both are needed: 100 subscribers on 10 USD plans, 10 churn and 5 upgrade to 25 USD. Subscriber retention is 90%, while revenue retention is 102.5%. A business can keep most of its revenue while losing many small customers, or the other way round. See net revenue retention.

How do you calculate it in Stripe, Chargebee, Recurly or Paddle?

  • Stripe: Billing analytics shows subscriber retention by cohort, with the start value as “the initial number of active subscribers in the cohort”. Check the active-subscriber and discount settings under Configure first; Stripe says changes take 24 to 48 hours to appear.
  • Recurly: the Subscriber Retention dashboard reports cohort retention for paying subscribers, and you can set an interval so that a subscription restarted right after another expires counts as continuous.
  • Chargebee, Paddle, Maxio, Zuora, Lemon Squeezy, Polar and others: each has its own reports. To compare tools or combine several, export subscriptions with their start and end dates and compute the rate yourself with the same rules.
  • App Store and Google Play: subscription status comes from server notifications; see App Store server notifications and Google Play RTDN.

A minimal SQL version, on a table with one row per paid subscription:

-- Customer retention rate for March 2026
-- subscriptions(customer_id, paid_started_at, ended_at)
WITH s AS (  -- customers paying on 1 March
  SELECT DISTINCT customer_id FROM subscriptions
  WHERE paid_started_at < '2026-03-01'
    AND (ended_at IS NULL OR ended_at >= '2026-03-01')
),
e AS (       -- customers paying on 31 March (end of day)
  SELECT DISTINCT customer_id FROM subscriptions
  WHERE paid_started_at < '2026-04-01'
    AND (ended_at IS NULL OR ended_at >= '2026-04-01')
)
SELECT
  (SELECT COUNT(*) FROM s) AS customers_start,
  (SELECT COUNT(*) FROM e JOIN s USING (customer_id)) AS retained,
  ROUND(100.0 * (SELECT COUNT(*) FROM e JOIN s USING (customer_id))
        / (SELECT COUNT(*) FROM s), 1) AS retention_rate_pct;

Counting “customers present at both dates” gives the same result as (E − N) ÷ S when new customers are those whose first paid subscription started in the month. It also handles customers with several subscriptions, since each customer is counted once.

How can you improve customer retention rate?

Split the customers you lost by cause first, because each cause has a different fix:

  1. Failed payments (involuntary churn). Retry at good times, update expiring cards, and send clear payment emails. See payment retry schedules compared, expiring cards and dunning email templates.
  2. Cancellations (voluntary churn). Ask why, then offer what fits the reason: a pause, a downgrade, a discount, or help. See cancel flow best practices and pause vs discount offers. Keep a one-click cancel visible; see click-to-cancel rules.
  3. Customers who never got value. Most early losses come from customers who never activated. See onboarding and activation churn.
  4. Customers already gone. Some come back with the right message at the right time. See win-back campaigns.

To see which customers are most likely to leave next, segment the rate by plan, acquisition channel or payment method; see churn analysis by segment. To compare your number with others, see churn rate benchmarks. And to put a dollar figure on what retention is worth, try the churn cost calculator and the LTV calculator.

FAQ

What is a good customer retention rate?

It depends on your price, plan length and market, so compare like with like. Recurly publishes subscriber churn benchmarks by industry; our churn rate benchmarks guide sums them up and explains how to read them.

What is the difference between customer retention rate and churn rate?

Retention rate is the share of starting customers who stayed; churn rate is the share who left. With the same denominator (customers at the start), they add up to 100%.

Should new customers be included in retention rate?

No. New customers are subtracted (the N in the formula) because they were not customers at the start. Counting them inflates retention in months with many sign-ups.

Do free trials count in customer retention rate?

Usually not. Stripe does not count trials as active subscribers and Recurly excludes them from its retention data. Measure trial-to-paid conversion separately; see trial-to-paid conversion.

How do you calculate annual customer retention rate?

Use S as customers on the first day of the year, E as customers on the last day and N as customers acquired during the year. Do not multiply a monthly rate by 12: retention compounds.

What is the customer turnover rate?

It is another name for customer churn rate: customers lost during a period divided by customers at the start. It is 100% minus the retention rate when both use the same denominator.

How NoChurn helps

NoChurn works on the customers your retention rate loses. It recovers failed payments with smart retries and payment emails written with AI, shows a cancel flow that asks why and offers a pause, a downgrade or a discount (with the one-click cancel always visible), and runs win-back emails at day 30, 60 and 90 based on the cancellation reason. You can push your own customer attributes by API to see which ones go with churn; see custom data and AI.

It connects to Stripe in one click and works with Chargebee, Recurly, Paddle, Braintree and others, or with any billing through the API. Pricing depends only on MRR, free up to $300 of MRR and with no commission (a custom sending domain needs a paid plan, from $9). See failed payments.

PROMPT

Read https://www.nochurn.sh/llms.txt,
then follow https://www.nochurn.sh/docs/quickstart/
to add NoChurn to this app. Use a test key
(nc_test_…) until I say we go live.

Stop leaking revenue.

  • Free until $300 MRR
  • No card needed
  • Live in 10 minutes
  • Never a cut of what we recover