Every churn calculation needs the same seven fields. What changes between platforms is where those fields live and which status values lie to you. This is the mapping for fourteen billing systems, plus the four already covered under integrations.
TL;DR: Fourteen billing platforms, the seven fields a churn analysis needs from each, and the platform-specific status traps that silently produce wrong answers. Four more are covered under integrations.
Every churn, retention and revenue-quality calculation reduces to these. The platform pages map each one to that system's own field names.
The second column is the trap that most often produces a wrong answer on that platform. Almost all of them are status values that do not mean what they sound like.
| Platform | Most common silent error |
|---|---|
| Paddle | Tax-inclusive pricing distorts MRR by geography |
| Chargebee | non_renewing is churn that has already happened |
| Recurly | canceled versus expired inverts the answer |
| Maxio (Chargify) | Metered components make MRR genuinely ambiguous |
| Braintree | There is no MRR, so build it explicitly |
| PayPal | Churn dates usually have to be inferred, not read |
| Lemon Squeezy | cancelled still serves until ends_at |
| Gumroad | One-off sales and memberships share the export |
| Freemius | Lifetime licences are not recurring revenue |
| RevenueCat | Store commission means gross price is not revenue |
| WooCommerce Subscriptions | pending-cancel is a decision already made |
| GoCardless | finished is not churn |
| FastSpring | Perpetual licences and maintenance plans are not subscriptions |
| Zuora | Revenue lives in rate plan charges, not on the subscription |
These catch the majority of unusable files in about five minutes, whatever platform produced them.
Related: what sellers say and how to verify it, the 23-point checklist, and the free calculators.
Every check on this page can be run by hand in a spreadsheet, and if you have the time you should. If you would rather not: send us the target's subscription export and we run the full human-reviewed analysis — logo churn, revenue churn, customer concentration, annual-plan decay, zombie MRR and an A–F revenue-quality grade. The free Starter tier covers one CSV per month, which is enough to check a single deal.
See a sample report → · Get the free 23-point checklist →
Seven fields: a stable customer identifier, subscription status, recurring amount and currency, billing interval and term, start date, cancellation or end date, and ideally the date of the last successful payment. Everything else is optional. Without a cancellation date you cannot compute churn at all.
Mostly because status vocabularies differ and rarely mean what they sound like. Recurly's canceled is still serving while expired is gone; Chargebee's non_renewing is economically churned but counted as active; WooCommerce's pending-cancel is a decision already made. Reading any of these literally produces a wrong rate.
It was filtered to active subscriptions only, so it contains no cancellation dates and every churn figure computed from it comes out at zero. Count the rows with a cancellation or end date before you do anything else, and request a complete file if there are none.