sumwerk

Articles September 21, 2026

A plan change is not churn

Churn is the number everybody watches, so it is worth being strict about what goes into it. A surprising share of “churn” in subscription reports is customers who never left: they changed plans, changed billing interval, or were moved to a new subscription by your own checkout.

How a plan change looks in Stripe

There are two ways to move a customer from Starter to Team, and they leave different traces:

  1. Update the subscription: the item’s price changes. One subscription, one customer, a proration on the next invoice.
  2. Cancel and create: the old subscription ends, a new one starts, often within the same minute. Many checkouts and customer portals do this, especially when the billing interval or the currency changes.

A tool that counts per subscription sees the second way as a churned customer and a new one. Customer churn goes up, new business goes up, and net new MRR is right by accident. Do that for a year and both your churn rate and your “new customers” are inflated by the same people.

Count per customer, and net what happens together

Two rules fix most of it:

  • MRR belongs to the customer, not to the subscription. A customer with a subscription that ended and one that began is a customer whose MRR went from 149 to 399: an expansion of
    1. If they went from 399 to 149, a contraction of 250.
  • What happens within a short window is one event. sumwerk nets the changes of one customer within an hour into one movement (or none, if nothing changed in the end). The cancel-and-create pair becomes what it is.
What happened Per subscription Per customer, netted
Starter cancelled 10:02, Team created 10:02 churn −149, new +399 expansion +250
Monthly → annual, same price per month churn, new nothing: MRR did not change
Two seats removed contraction contraction
Cancelled in March, back in July churn, new churn in March, reactivation in July

The last row matters as much as the first: somebody who comes back is not new business. They knew you, left and returned, and that says something different about your product than a first purchase does.

What is churn, then

A customer churns when their MRR goes to zero and stays there: the last paying subscription ended. Not when it is scheduled to end (that is MRR at risk, and worth a call), not during a trial, and not while Stripe is still retrying a failed payment (at risk, not gone). The day of churn is the day the subscription ended, not the day somebody clicked cancel.

Everything that reduces a paying customer’s MRR without taking it to zero is contraction: fewer seats, a smaller plan, a new discount. Keep churn and contraction apart. Gross revenue retention counts both, but you act on them differently: one is a lost customer, the other is a customer you still have.

Plans over time

Once plan changes are movements of a customer, a second question becomes answerable: what was each plan worth, month by month? Not by the plan customers have today (that rewrites the past every time somebody upgrades) but by what each subscription item was worth on the day. A customer who moved to Team in March counts under Starter until March. Then a plan that shrinks because its customers upgrade looks different from one that shrinks because they leave, which is the whole point of looking.

Free while you build

Connect Stripe in one click and see your revenue, customers and pipeline in a few minutes. Switch on billing management when you want sumwerk to sell your plans in Stripe. Every module is free during early access. Sign-ups go through a waitlist for now: we let companies in one by one.

Join the waitlist