Chart · Churn and refunds

Churn Rate: How to Calculate Subscription Churn for an App

Churn rate is the share of paid subscriptions active at the start of a period that ended during it. RevenueDot divides subscriptions that lost access, including product-change replacements and net of billing recoveries, by the paid subscriptions active when the period began. It can be negative or above 100 percent.

Formula

Churn rate = paid subscriptions that ended in the period (net of billing recoveries) / paid subscriptions active at the start of the period

Shape

What happened during each period

API name

churn

Measures

Churn Rate (Percent)

Filter and segment by

App, Store, Product, Product duration, Offering, Country, Platform, App version

The Churn chart in the RevenueDot dashboard, with demo data, its chart rail, plot and table
Captured from the RevenueDot dashboard with demo data.

Definition

How RevenueDot calculates Churn

At the start of each period RevenueDot counts the paid subscriptions with access. Then it counts the subscriptions that ended in the period: expirations, refunds that ended access, and the old subscription in a product change. It subtracts billing recoveries, where a renewal succeeded after a billing issue and the subscription continued. The result is churned actives.

Both numbers count subscriptions, not customers. A customer who resubscribes starts a new subscription, which does not reduce churn already counted. A customer who moves from a monthly to an annual plan counts as churn on the old plan, because the old subscription ended, while the Active Subscriptions Movement chart treats a paid-to-paid change as neither.

Because the denominator is the count at the start, a period that adds many new subscribers and loses a few can still show a high rate. The value can be negative when recoveries exceed losses and can pass 100 percent in an unusual period. Trials do not count, and the sandbox is excluded. Filters and segments: app, store, product, product duration, offering, country, platform and app version. You can open it in the dashboard under Charts or fetch it with GET /v2/projects/{project_id}/charts/churn. The response has the same shape as RevenueCat's Charts API, so scripts written for that API keep working. The secret key needs the charts_metrics:charts:read permission. The Charts guide lists every parameter.

Worked example

Churn, step by step

One month for an app with monthly plans.

MeasureSubscriptions
Paid subscriptions active at the start1,000
Ended in the month (expired, refunded, replaced)60
Billing recoveries (renewed after a billing issue)10
Churned actives, net50

Churn rate is 50 / 1,000 = 5.0% for the month.

Why it matters

What Churn tells you

Churn sets the ceiling on your growth. At 5 percent monthly churn, a subscriber stays about 20 months on average. At 10 percent, about 10 months. Every point you remove from churn is worth more than the same relative lift in new subscribers, because it compounds on the whole base.

Segment by product duration and by store before you act. Monthly and annual plans have different churn rhythms: an annual plan has one decision point a year and a monthly plan has twelve. A single blended rate hides which plan or market is leaking.

How to read it

  • Choose the resolution to match the plan length. Monthly resolution suits monthly plans. For annual plans use quarter or year.
  • Compare churn rates at the same resolution. A daily rate is far smaller than a monthly one.
  • A rate that falls while Active Subscriptions flatten can be a bookkeeping effect of a large new cohort. Check the denominator.
  • Use Subscription Status to see how many subscriptions are set to cancel. They are the churn of the coming period.
  • Filter by product duration to compare plan lengths, and by store to compare iOS and Android.

API

Get Churn from the Charts API

Same path and response shape as RevenueCat's Charts API, so existing scripts keep working.

Requestshell
curl "https://api.revenuedot.app/v2/projects/$PROJECT_ID/charts/churn?resolution=day" \
  -H "Authorization: Bearer $SECRET_KEY"   # sk_... with charts_metrics:charts:read

Reference: Charts guide · REST API v2

FAQ

Churn: questions people ask

How do you calculate churn rate for a subscription app?

Divide the paid subscriptions that ended in the period by the paid subscriptions active at its start. RevenueDot subtracts billing recoveries and counts product changes as churn on the old subscription.

Does churn include free trials?

No. Only paid subscriptions count. Use Trial Conversion Rate and Trial Cancellation Rate for trials.

Is churn counted by subscription or by customer?

By subscription. A customer who comes back after their subscription ended starts a new subscription.

Why can churn be negative?

If more subscriptions recover from billing issues in a period than end in it, the net churned count is below zero.

What is the difference between voluntary and involuntary churn here?

RevenueDot nets billing recoveries against churn. Use Subscription Status to see how many subscriptions have a billing issue right now.

Get started

See your Churn in minutes.

Connect your app to RevenueDot Cloud, free up to $10,000 a month in tracked revenue, and all 43 charts fill from your store history after import.

Already have an account? Sign in · Prefer your own servers? Self-host free