Automate your automate a monthly churn report from stripe
Monthly churn usually gets counted in a spreadsheet at the last minute. As a standing job it runs at the start of each month: operations reads Stripe and builds the report, engineering recomputes the totals independently, and you decide what to do about the drivers.
By the Organ team · Last verified 2026-10-30
What the job is
A monthly churn report that separates deliberate cancellations from failed payments.
The founder, or a finance contractor, exports subscriptions from Stripe into a sheet, counts the canceled ones, divides by the opening count, and pastes the result into a board update. If the counting method shifts between months, the trend line stops being comparable.
How the departments split it
- OperationsReads subscription data from Stripe with a restricted key that has read permission only, through an integration built for you. Lists canceled subscriptions explicitly, since the API leaves them out by default, and filters by cancellation date in its own code, because the list call has no cancellation-date filter.
- OperationsBuilds the report: opening subscribers, new, canceled, closing; logo churn and revenue churn; and the split between customers who chose to cancel and those lost after failed payment retries.
- ResearchRecomputes the totals independently from the raw subscription rows with a different method, and reports any mismatch before the report goes further. Also notes subscriptions still past due, which may churn next month.
- StrategyDelivers the verified report, the drivers behind it and two or three proposed actions. Customer emails and Stripe changes need your approval.
What you get
Sample, not live data. The company and every figure are invented.
March churn: Harbor Analytics (sample)
| Count | Monthly revenue | |
|---|---|---|
| Opening subscribers | 240 | $19,200 |
| New | 31 | $2,480 |
| Canceled | 12 | $960 |
| Closing subscribers | 259 | $20,720 |
Logo churn: 5.0% (12 of 240). Revenue churn: 5.0%.
Why they left
- 7 chose to cancel; 4 gave "too expensive" as the reason, 3 gave none.
- 5 were lost after failed payment retries ran out.
Watch next month
9 subscriptions are past due today with an average of 2 failed attempts.
Checked by engineering
Totals recomputed from the raw rows by a second method. Opening, new, canceled and closing agree. One subscription canceled and re-created the same day was counted once, as a continuing customer.
Proposed actions (need your approval)
- Email the 9 past-due customers a payment-method update link.
- Review the pricing page copy for the 4 "too expensive" cancellations.
How it would run
- Department
- Operations
- Runs
- monthly
At the start of each month, read last month from Stripe using the read access key. Include canceled subscriptions explicitly. Report opening, new, canceled and closing subscribers, logo and revenue churn, and the split between customers who chose to cancel and customers lost after failed payments, plus subscriptions currently past due. Ask engineering to recompute every total from the raw rows by a second method and tell me about any mismatch. Propose actions; take none without my approval.
You can change: Reporting currency, Where to send the finished report, Break churn down by
Add this job to my companyQuestions
Why does the report split voluntary from involuntary churn?
Because the fixes differ. Stripe can retry failed payments and, once the retry schedule ends, move a subscription to canceled, unpaid or leave it past due depending on your settings. A customer lost that way needs a payment update, not a win-back conversation.
Does it include canceled subscriptions properly?
Yes, on purpose. The Stripe API returns subscriptions that have not been canceled unless you ask for the canceled status.
Does it need my Stripe secret key?
No. Stripe recommends restricted keys over secret keys, especially for keys given to AI agents. When you create one in the Dashboard you set each resource to None, Read or Write, and Stripe says a read-only key cannot create charges. Create a key with Read on the subscription-related resources and give the team that key.
Can it add revenue from another billing system?
Yes. Tell the team which billing system you use, and it will connect to any API or MCP server, built for you, so the report can combine both sources.
Sources
- Stripe API reference: List subscriptions · docs.stripe.com · retrieved 2026-10-30
- Stripe Docs: Automate payment retries · docs.stripe.com · retrieved 2026-10-30
- Stripe Docs: Restricted API keys · docs.stripe.com · retrieved 2026-10-30