Shipmunks

How to calculate churn rate when formulas disagree

Guide · No. 015

Logos lost, dollars lost, and three formulas on one made-up month. Every figure comes from the sample sheet.

Churn calculation for a SAMPLE month of example data. Customer churn is 20.0 percent by the start-of-period method, 12.5 percent by average customers, and 15.0 percent by the daily-weighted method. Gross revenue churn is 37.5 percent. Net revenue churn is 30.0 percent. Illustrative data, not real customers.
On this page
  1. The short answer
  2. Customer churn and revenue churn
  3. The sample month
  4. Three formulas on the same customers
  5. The mid-month signup trap
  6. Annual plans distort the month
  7. What the cited pages count
  8. Copy the template
  9. FAQ
  10. Sources
  11. Related

The short answer

Customer churn on the sample sheet is 2 logos lost divided by the 10 logos on day 1, which is 20.0%. Gross revenue churn on those same rows is $150 divided by $400, which is 37.5%, and net revenue churn is 30.0% after a $30 upgrade. The average-customer formula returns 12.5% for those 2 logos, and the daily-weighted formula returns 15.0%. The month is illustrative example data for a fictional product, not real customer data.

Customer churn and revenue churn

Customer churn counts logos. Revenue churn counts monthly recurring revenue. A logo is one paying customer, whatever the plan costs. MRR here is the monthly price from How to calculate MRR. An annual price is divided by 12 on that page. This page starts from the monthly number and does not walk through the rule again.

Gross revenue churn adds the MRR you lost to cancellations and the MRR you lost to downgrades, then divides by the MRR you had at the start. Upgrades stay out of it. ChartMogul’s revenue churn page defines it that way, and the gross figure cannot go negative, because nothing is subtracted.

Net revenue churn starts from that same loss and then subtracts expansion and reactivation. The result can be negative when upgrades outrun the losses. On this sheet reactivation is $0, so net is gross loss minus the one upgrade. Net revenue retention turns those same movements into the share of starting MRR you still hold. That rate, on a different sample cohort, is how to calculate NRR.

Stripe’s customer churn page is the logo version of the simple formula: customers lost, divided by customers at the start. It does not price the logo. That is why a $90 cancellation and a $30 cancellation can be the same customer churn and a very different revenue churn. The sample month below is where that happens.

A downgrade is contraction. The customer is still a customer, so the logo rate ignores it and the gross revenue rate includes it.

The sample month

Sample Desk is fictional. The month is a SAMPLE month of 30 days, numbered 1 to 30. The rows are illustrative example data, not real customer data. Nothing here was measured from a live business.

A customer is active on a day when they have already started and the canceled day has not arrived. The canceled day is the first day they are not a customer. Opening customers have a blank joined day: they were already paying before day 1. Someone who joins on day 1 is new. They are not one of the 10.

A price change is booked as the full monthly difference. The sheet does not prorate day 12 or day 18. The day is on the row so you can see the change was mid-month. The churn formulas use the full delta.

Download the churn template (CSV)

Ten customers are active before day 1. Their MRR is $400.

Opening customers on the SAMPLE month, example data, totaling 10 logos and $400 MRR
RowsPlan on day 1LogosMRR
S01 to S04Monthly, $204$80
S05, S06, S07, S10Monthly, $504$200
S08Monthly, $901$90
S09Annual, $360 a year1$30

4 + 4 + 1 + 1 = 10 logos. 80 + 200 + 90 + 30 = 400 dollars. S09’s $30 is 360 divided by 12. S07 and S10 are in the $50 group on day 1. They do not stay there.

What changes during the SAMPLE month, example data
RowsWhat happenedMRR effectActive days
S01 to S06Stay on the day-1 priceNone180
S07$50 to $80 on day 12$30 expansion30
S10$50 to $20 on day 18$30 contraction30
S08Cancels on day 16$90 churn15
S09Cancels on day 6. Annual.$30 churn5
E01Joins on day 1. Annual, $360.$30 new30
E02 to E04Join on day 1. Monthly, $20.$60 new90
L01 to L10Join on day 30. Monthly, $20.$200 new10
T01, T02Join on day 10, cancel on day 15Excluded10

S01 to S06 are 6 rows at 30 days, which is 180. S07 and S10 add 60. Those eight never cancel, and 180 + 60 = 240 days. S08 was active on days 1 through 15, which is 15 days. S09 was active on days 1 through 5, which is 5 days.

E01 to E04 join on day 1 and stay, 4 times 30 = 120 days. L01 to L10 join on day 30 and stay, 10 times 1 = 10 days. T01 and T02 are active on days 10 through 14, which is 5 days each, 10 days together. They are gone before day 30.

240 + 15 + 5 + 120 + 10 + 10 = 400 customer-days.

The close is the people active on day 30. Opening 10, minus S08 and S09, plus E01 to E04, plus L01 to L10. 10 − 2 + 4 + 10 = 22. T01 and T02 join and leave, so they add nothing to the close. Fourteen new customers are still there. Sixteen new rows exist on the sheet.

Ending MRR is the monthly price of those 22.

Ending MRR on day 30 of the SAMPLE month, example data, totaling $570
RowsPrice at the closeLogosMRR
S01 to S04$204$80
S05, S06$502$100
S07$801$80
S10$201$20
E01$30, annual1$30
E02 to E04$203$60
L01 to L10$2010$200

80 + 100 + 80 + 20 = 280 from the opening customers who stayed. 30 + 60 + 200 = 290 of new MRR. 280 + 290 = 570.

The bridge uses the same dollars. Starting MRR, plus new, plus expansion, minus contraction, minus churn.

400 + 290 + 30 − 30 − 120 = 570.

Churn in that bridge is S08’s $90 plus S09’s $30, which is $120. T01 and T02 are not in the $290 and not in the $120. Each was $20 while active, $40 together, and both ends of the month are zero for them, so leaving them out of both columns does not move the $570.

  • One row per paying customer, with the day they started and the day they stopped if either day falls inside the month
  • The monthly price at the open and at the close. Annual plans are already divided by 12
  • A written rule for someone who joins and leaves inside the month, used again next month

A trial is not a row. A subscription that is only past due is still a customer until it is canceled or marked unpaid. That status rule lives in the MRR guide. This sheet has no trial and no past-due row. The notes you send while the card is failing, and what Stripe and Lemon Squeezy already send, are in the dunning email guide. A payment fee is not churn either. Lemon Squeezy fees is the cut on a sale, and it does not belong in the $400.

Three formulas on the same customers

Hold the numerator at 2. That is S08 and S09, the opening customers who canceled. T01 and T02 are a different cohort: they were never in the 10. ChartMogul’s customer churn page tells you to subtract people who joined and churned in the same period, and people who churned and came back. This sheet has two of the first and none of the second.

The three formulas then disagree only because the denominator changes. Paddle’s churn article describes the three shapes and says Paddle uses the first. The adjusted shape uses the midpoint of the customer count instead of day 1. The shape they attribute to Shopify uses the average of the customer count on each day. On this sheet that average is the 400 customer-days divided by 30.

Three customer churn formulas on the SAMPLE month, numerator held at 2
FormulaDivisionRate
Start of period2 / 1020.0%
Average customers2 / 1612.5%
Cohort, daily-weighted2 times 30 / 40015.0%

The midpoint is (10 + 22) / 2 = 16. Two divided by 16 is 12.5%.

The daily-weighted rate keeps the 400 and the 30 in the fraction. 2 times 30 is 60, and 60 divided by 400 is 15.0%. The sheet does not round 400 / 30 to a headcount and then divide. That rounded headcount is not a one-decimal number, and the rate does not need it.

Three churn formulas on the same SAMPLE month, with the numerator held at 2 customers. Start of period is 2 divided by 10, or 20.0 percent. Average customers is 2 divided by 16, or 12.5 percent. Daily-weighted is 2 times 30 divided by 400 customer-days, or 15.0 percent. Example data.
Numerator held at 2. Denominators are 10, 16, and 400 customer-days over 30 days.

Revenue churn uses the opening MRR, not the logo counts.

Gross loss is churn MRR plus contraction: 120 + 30 = 150. Divided by 400, that is 37.5%.

Net loss subtracts expansion and reactivation: 150 − 30 − 0 = 120. Divided by 400, that is 30.0%.

The $90 logo is one of the two logos, and $90 of the $120 canceled. The $30 downgrade adds a revenue loss with no logo attached. That is the whole gap between 20.0% customer churn and 37.5% gross revenue churn. New MRR of $290 is outside both revenue rates. The day-30 signups do not dilute revenue churn. They dilute the customer formulas that look at the close.

Net revenue churn is 30.0% on the same opening $400. The chart puts the five rates on one scale.

Churn calculation for a SAMPLE month of example data. Customer churn is 20.0 percent by the start-of-period method, 12.5 percent by average customers, and 15.0 percent by the daily-weighted method. Gross revenue churn is 37.5 percent. Net revenue churn is 30.0 percent. Illustrative data, not real customers.
SAMPLE month, example data. Customer rates use the 2 opening customers who canceled. Gross is $150 divided by $400. Net is $120 divided by $400.

The mid-month signup trap

Ten customers join on day 30. They are 10 of the 22 logos at the close, and 10 of the 400 customer-days. Ten divided by 400 is 2.5% of the exposure.

The average formula cannot see that. It puts every survivor into the closing count, then takes the midpoint. A day-30 signup moves the 22 as much as a day-1 signup does. E01 to E04 are 4 logos and 120 customer-days. L01 to L10 are 10 logos and 10 customer-days. The close treats the late ten as the larger group. The days treat the early four as the larger group. That is why 16 and 400 / 30 are different denominators, and why 12.5% and 15.0% are different rates.

Where a day-30 signup lands

Same weight as day 1

Count them in the close

The average formula puts all 14 new logos who stayed into the closing count of 22, then takes the midpoint. A day-30 signup moves that midpoint as much as a day-1 signup.

  • 22 at the close
  • midpoint 16
  • 12.5%

Weight the days

Give them one day of thirty

The daily-weighted formula counts the ten as 10 customer-days. That is 2.5% of the 400, and the rate on the 2 opening cancels is 15.0%.

  • 10 of 400 days
  • 2.5% of exposure
  • 15.0%

The other trap is the numerator. T01 and T02 canceled, and they were never in the opening 10. Put them on top of the start-of-period formula and the rate is 4 / 10 = 40.0%. The denominator never held them.

The same 4 logos on the other two denominators are 4 / 16 = 25.0%, and 4 times 30 / 400 = 30.0%.

On the revenue side, their price while active was $20 each, $40 together. Add that $40 to the gross loss and the numerator is 120 + 40 + 30 = 190. Divided by 400, that is 47.5%. The sheet’s 37.5% leaves the $40 out, because those two were not in the opening MRR.

Annual plans distort the month

S09 is one logo, $30 of MRR, and a $360 yearly price. 360 divided by 12 is 30, which is the MRR on the row. The cash for that year was not collected in the SAMPLE month. The row’s canceled day is day 6, so the $30 comes out of MRR anyway.

Three readings of that one cancellation, each using the same $90 from S08 and the same $30 contraction from S10:

Three ways to count S09 inside gross revenue churn, SAMPLE month, example data
How S09 is countedSumDivided by $400
MRR of $3090 + 30 + 30 = 15037.5%
Left out, because no renewal was charged90 + 30 = 12030.0%
The whole $360 booked this month90 + 360 + 30 = 480120.0%

The first row is the gross rate. The second drops $30 of MRR because the card was not charged this month. The third treats a yearly prepay as if it were monthly revenue lost in full. The 120.0% is the arithmetic of that mistake. It is not a rate to report.

The skipped reading and the net reading both land on 30.0%, and both numerators are $120. They are not the same $120. Net is 120 + 30 − 30 − 0, churn plus contraction minus expansion minus reactivation. The skipped gross is 90 + 30, S08 plus the downgrade, with S09 missing and the upgrade never consulted. Same dollars, different lines. The summary rows on the sheet name both.

E01 is the annual plan that arrives rather than leaves. The customer pays $360 in the SAMPLE month and adds $30 of new MRR. New MRR is outside the churn denominator, so the $360 does not change the 37.5% or the 30.0%. Putting the cash into the $400 would be a second mistake. The denominator stays the opening MRR.

The same choice, the monthly slice versus the cash that arrived, changes how many months an acquisition cost takes to come back. That worked example is CAC payback period.

What the cited pages count

The four pages were checked on October 25, 2026. The rates above are the sample sheet. The pages supply the formulas, not the figures.

Stripe’s page divides customers lost during the period by customers at the start. It does not describe an average-customer denominator or a daily one.

ChartMogul’s customer page uses that start-of-period denominator, and it removes the joined-and-churned group from the numerator. That removal is why the first table uses 2 rather than 4. ChartMogul’s revenue page is the gross and net pair used here: churn plus contraction, over opening MRR, and then that loss minus expansion and reactivation.

Paddle’s article lays out a simple formula, an adjusted formula, and a daily average, and says Paddle reports the simple one. The adjusted formula is the midpoint used for the 12.5%. The daily average is the 400 customer-days over 30 days. The article also describes a predictive formula that looks into the next month. This sheet has no next month, so that formula is not computed.

Paddle’s article separates the day someone decides to cancel from the day the paid period ends. On that definition, the customer has not churned while the period they already paid for is still running. The template has one column for the moment you choose: canceled_day, the first day the row is not a customer. If the subscription stays in MRR until the period ends, put that later day in the column. The sheet’s S09 uses day 6.

This post does not publish a benchmark. ChartMogul’s customer page says there is no single average churn rate. The only rates here are the ones in the template.

More of the money work for a one-person SaaS sits on Money and ops.

Copy the template

The file is the SAMPLE month, one row per customer, then the totals. Every filled customer row is marked example data. Replace the rows. Do not add your own customers on top of Sample Desk.

Download the churn template (CSV)

active_days follows the rule in the sample section. in_opening is 1 when joined_day is blank. cohort_logo_churn is 1 only for an opening customer who has a canceled day inside the month. mrr_while_active is filled only for T01 and T02, the rows excluded from both new MRR and churn MRR. Summary value cells are the totals and the rates, and the notes column shows the division.

churn-rate-template.csv
section,id,billing,yearly_price,joined_day,canceled_day,active_days,in_opening,in_closing,mrr_start,mrr_end,cohort_logo_churn,same_month_logo_churn,churn_mrr,contraction_mrr,expansion_mrr,new_mrr,mrr_while_active,value,notes
customer,S01,monthly,,,,30,1,1,20.00,20.00,0,0,0.00,0.00,0.00,0.00,,,"Example data. Illustrative. Not a real customer. Active before day 1, still active on day 30."
customer,S02,monthly,,,,30,1,1,20.00,20.00,0,0,0.00,0.00,0.00,0.00,,,"Example data. Illustrative. Not a real customer. Active before day 1, still active on day 30."
customer,S03,monthly,,,,30,1,1,20.00,20.00,0,0,0.00,0.00,0.00,0.00,,,"Example data. Illustrative. Not a real customer. Active before day 1, still active on day 30."
customer,S04,monthly,,,,30,1,1,20.00,20.00,0,0,0.00,0.00,0.00,0.00,,,"Example data. Illustrative. Not a real customer. Active before day 1, still active on day 30."
customer,S05,monthly,,,,30,1,1,50.00,50.00,0,0,0.00,0.00,0.00,0.00,,,"Example data. Illustrative. Not a real customer. Active before day 1, still active on day 30."
customer,S06,monthly,,,,30,1,1,50.00,50.00,0,0,0.00,0.00,0.00,0.00,,,"Example data. Illustrative. Not a real customer. Active before day 1, still active on day 30."
customer,S07,monthly,,,,30,1,1,50.00,80.00,0,0,0.00,0.00,30.00,0.00,,,Example data. Expansion of 30.00 booked in full on day 12. Not prorated. Not a real customer.
customer,S08,monthly,,,16,15,1,0,90.00,0.00,1,0,90.00,0.00,0.00,0.00,,,"Example data. Canceled on day 16, the first day they are not a customer. Cohort churn. Not a real customer."
customer,S09,annual,360.00,,6,5,1,0,30.00,0.00,1,0,30.00,0.00,0.00,0.00,,,"Example data. Yearly price 360.00. MRR is 360.00 divided by 12, which is 30.00. Canceled on day 6. Cohort churn. Not a real customer."
customer,S10,monthly,,,,30,1,1,50.00,20.00,0,0,0.00,30.00,0.00,0.00,,,Example data. Contraction of 30.00 booked in full on day 18. Not prorated. Not a real customer.
customer,E01,annual,360.00,1,,30,0,1,0.00,30.00,0,0,0.00,0.00,0.00,30.00,,,"Example data. Joined on day 1. New MRR is 30.00. Cash in the sample month is the yearly price, 360.00. Not in the opening count. Not a real customer."
customer,E02,monthly,,1,,30,0,1,0.00,20.00,0,0,0.00,0.00,0.00,20.00,,,Example data. Joined on day 1. Not in the opening count. Not a real customer.
customer,E03,monthly,,1,,30,0,1,0.00,20.00,0,0,0.00,0.00,0.00,20.00,,,Example data. Joined on day 1. Not in the opening count. Not a real customer.
customer,E04,monthly,,1,,30,0,1,0.00,20.00,0,0,0.00,0.00,0.00,20.00,,,Example data. Joined on day 1. Not in the opening count. Not a real customer.
customer,L01,monthly,,30,,1,0,1,0.00,20.00,0,0,0.00,0.00,0.00,20.00,,,Example data. Joined on day 30. One active day. Not a real customer.
customer,L02,monthly,,30,,1,0,1,0.00,20.00,0,0,0.00,0.00,0.00,20.00,,,Example data. Joined on day 30. One active day. Not a real customer.
customer,L03,monthly,,30,,1,0,1,0.00,20.00,0,0,0.00,0.00,0.00,20.00,,,Example data. Joined on day 30. One active day. Not a real customer.
customer,L04,monthly,,30,,1,0,1,0.00,20.00,0,0,0.00,0.00,0.00,20.00,,,Example data. Joined on day 30. One active day. Not a real customer.
customer,L05,monthly,,30,,1,0,1,0.00,20.00,0,0,0.00,0.00,0.00,20.00,,,Example data. Joined on day 30. One active day. Not a real customer.
customer,L06,monthly,,30,,1,0,1,0.00,20.00,0,0,0.00,0.00,0.00,20.00,,,Example data. Joined on day 30. One active day. Not a real customer.
customer,L07,monthly,,30,,1,0,1,0.00,20.00,0,0,0.00,0.00,0.00,20.00,,,Example data. Joined on day 30. One active day. Not a real customer.
customer,L08,monthly,,30,,1,0,1,0.00,20.00,0,0,0.00,0.00,0.00,20.00,,,Example data. Joined on day 30. One active day. Not a real customer.
customer,L09,monthly,,30,,1,0,1,0.00,20.00,0,0,0.00,0.00,0.00,20.00,,,Example data. Joined on day 30. One active day. Not a real customer.
customer,L10,monthly,,30,,1,0,1,0.00,20.00,0,0,0.00,0.00,0.00,20.00,,,Example data. Joined on day 30. One active day. Not a real customer.
customer,T01,monthly,,10,15,5,0,0,0.00,0.00,0,1,0.00,0.00,0.00,0.00,20.00,,"Example data. Joined day 10, canceled day 15. Excluded from cohort churn and from new MRR. Not a real customer."
customer,T02,monthly,,10,15,5,0,0,0.00,0.00,0,1,0.00,0.00,0.00,0.00,20.00,,"Example data. Joined day 10, canceled day 15. Excluded from cohort churn and from new MRR. Not a real customer."
summary,about,,,,,,,,,,,,,,,,,,"SAMPLE month of 30 days, numbered 1 to 30. Illustrative example data for fictional Sample Desk. Not real customer data. Replace the customer rows. Do not add real customers on top of these."
summary,customers_opening,,,,,,,,,,,,,,,,,10,Sum of in_opening.
summary,customers_closing,,,,,,,,,,,,,,,,,22,"Sum of in_closing. 10 opening, minus 2 cohort cancels, plus 14 new customers who are still active on day 30."
summary,cohort_logos_lost,,,,,,,,,,,,,,,,,2,Sum of cohort_logo_churn. S08 and S09.
summary,same_month_logos_lost,,,,,,,,,,,,,,,,,2,Sum of same_month_logo_churn. T01 and T02. Not in the cohort numerator.
summary,customer_days,,,,,,,,,,,,,,,,,400,"Sum of active_days. A day counts when joined_day is blank or already reached, and canceled_day is blank or still ahead."
summary,days_in_month,,,,,,,,,,,,,,,,,30,Length of the SAMPLE month.
summary,midpoint_customers,,,,,,,,,,,,,,,,,16,(customers_opening + customers_closing) / 2 = (10 + 22) / 2.
summary,mrr_opening,,,,,,,,,,,,,,,,,400.00,Sum of mrr_start.
summary,mrr_closing,,,,,,,,,,,,,,,,,570.00,Sum of mrr_end. 400.00 + 290.00 + 30.00 - 30.00 - 120.00.
summary,churn_mrr,,,,,,,,,,,,,,,,,120.00,Sum of churn_mrr. S08 is 90.00 and S09 is 30.00. Same-month rows are not included.
summary,contraction_mrr,,,,,,,,,,,,,,,,,30.00,"Sum of contraction_mrr. S10, 50.00 down to 20.00."
summary,expansion_mrr,,,,,,,,,,,,,,,,,30.00,"Sum of expansion_mrr. S07, 50.00 up to 80.00."
summary,reactivation_mrr,,,,,,,,,,,,,,,,,0.00,No returning customer on this sheet.
summary,new_mrr,,,,,,,,,,,,,,,,,290.00,"Sum of new_mrr. E01 is 30.00, E02 to E04 are 60.00, L01 to L10 are 200.00."
summary,same_month_mrr,,,,,,,,,,,,,,,,,40.00,"Sum of mrr_while_active. T01 and T02, 20.00 each. Excluded from churn_mrr and from new_mrr."
summary,day30_customer_days,,,,,,,,,,,,,,,,,10,"L01 to L10, one day each."
summary,day30_share_of_customer_days,,,,,,,,,,,,,,,,,2.5%,10 day-30 customer-days divided by 400 customer-days.
summary,rate_start_cohort,,,,,,,,,,,,,,,,,20.0%,"2 divided by 10. Cohort logos lost, over customers opening."
summary,rate_average_cohort,,,,,,,,,,,,,,,,,12.5%,"2 divided by 16. Cohort logos lost, over the midpoint."
summary,rate_daily_cohort,,,,,,,,,,,,,,,,,15.0%,"2 times 30, divided by 400. Cohort logos lost, over customer-days, times days in the month."
summary,rate_start_all_cancels,,,,,,,,,,,,,,,,,40.0%,"4 divided by 10. Cohort logos plus same-month logos, over customers opening."
summary,rate_average_all_cancels,,,,,,,,,,,,,,,,,25.0%,4 divided by 16.
summary,rate_daily_all_cancels,,,,,,,,,,,,,,,,,30.0%,"4 times 30, divided by 400."
summary,gross_revenue_churn,,,,,,,,,,,,,,,,,37.5%,"(120.00 + 30.00) divided by 400.00. Churn MRR plus contraction MRR, over opening MRR."
summary,net_revenue_churn,,,,,,,,,,,,,,,,,30.0%,(120.00 + 30.00 - 30.00 - 0.00) divided by 400.00. Gross loss minus expansion minus reactivation.
summary,gross_if_annual_mrr_skipped,,,,,,,,,,,,,,,,,30.0%,S09's 30.00 left out of churn. (90.00 + 30.00 contraction) divided by 400.00. A different 30.0% from net revenue churn.
summary,gross_if_annual_year_booked,,,,,,,,,,,,,,,,,120.0%,S09 counted as the yearly price 360.00 instead of MRR 30.00. (90.00 + 360.00 + 30.00) divided by 400.00.
summary,gross_if_same_month_mrr_included,,,,,,,,,,,,,,,,,47.5%,(120.00 + 40.00 + 30.00) divided by 400.00.
How to calculate MRR, and what not to count The monthly price of the subscriptions you still have. Annual plans are divided by 12 there. This page uses that monthly price as MRR. Guide Lemon Squeezy fees: what you keep on a sale The platform fee comes off cash. It is not churn, and it does not belong in the MRR denominator. Blog

FAQ

How do you calculate churn rate?

Divide the customers you lost by the customers you had at the start of the period. On the sample sheet that is 2 divided by 10, which is 20.0%, after removing two people who joined and canceled inside the month. The average-customer formula returns 12.5% for those same 2 logos, and the daily-weighted formula returns 15.0%.

What is the difference between customer churn and revenue churn?

Customer churn counts logos. Revenue churn counts MRR. On the sample sheet, 2 of 10 logos is 20.0% customer churn, and the gross revenue loss is $150 of $400, which is 37.5%. One of those logos paid $90. Gross revenue churn also includes a $30 downgrade. Net revenue churn subtracts a $30 upgrade and comes to 30.0%.

Why do the three churn formulas disagree?

They share a numerator and not a denominator. The 2 opening customers who canceled are divided by 10 (the start), by 16 (the midpoint of 10 and 22), and by 400 customer-days over 30 days. That is 20.0%, 12.5%, and 15.0%. Ten people who joined on day 30 sit inside the 22, and they add only 10 of the 400 customer-days.

Does a same-month signup who cancels count?

Not in the cohort numerator on this sheet. T01 and T02 joined on day 10 and canceled on day 15. Leaving them in changes 2 divided by 10 into 4 divided by 10, which is 40.0%. The same 4 logos are 25.0% on the average formula and 30.0% on the daily-weighted formula. ChartMogul’s customer churn page subtracts people who joined and churned in the same period.

How do annual plans affect monthly churn?

Count the monthly slice. S09 pays $360 a year, the row’s MRR is $30, and $360 divided by 12 is $30. Using that $30, gross revenue churn is 37.5%. Skipping S09 because no renewal was charged this month produces 30.0%. Booking the whole $360 produces 120.0%. The divide-by-12 rule is how to calculate MRR.

What is a good churn rate?

This page does not have one. Every rate on it comes from made-up rows for a fictional product. ChartMogul’s customer churn page says there is no single average, and that the rate varies by stage, category, and price. Pick one formula, write it on the sheet, and compare your own months with that same formula.

Sources

  1. How to calculate customer churn rates (Stripe) Checked
  2. Customer churn rate (ChartMogul) Checked
  3. Revenue churn (ChartMogul) Checked
  4. How to calculate and reduce your churn rate (Paddle) Checked