Your MRR, churn and retention, from a read-only Stripe key you control
Founders pay a metrics service a monthly fee that grows with revenue to see six numbers. MRR Pulse computes them from your Stripe subscriptions: MRR and ARR, new / expansion / contraction / churned MRR, logo churn, net revenue retention and quick ratio, with a 12-month history on the first sync. Try it below on a subscription export (nothing is uploaded), then run the open-source server in your own account. No account with us, no monthly fee.
Try it on a subscription export
In Stripe: Billing → Subscriptions → Export. Needs columns for amount, interval and created; status, canceled/ended date, quantity and id are used when present. Or load made-up sample data.
| Month | MRR | Customers | New | Churned | Net new |
|---|
History is rebuilt from start and end dates at the prices in the file, so it shows new and churned MRR only; the server adds expansion and contraction from its first sync on.
Why someone would use this
| Today | Cost / catch |
|---|---|
| Stripe Dashboard → Billing → Overview | Free, but a thin set of numbers and no churn or retention by month |
| Baremetrics, ChartMogul, ProfitWell | Hosted, more features, priced by revenue; your customer data lives with them |
| A spreadsheet fed by an export | Free, but you rebuild it by hand every month and the plan-interval maths is easy to get wrong |
| MRR Pulse | Free, MIT, read-only key, your server. Honest limits: only a simple run-rate projection, no multi-currency roll-up or other billing systems |
Run it yourself
git clone https://github.com/Duncan-Haywood/fp-monorepo && cd fp-monorepo/ventures/mrr-pulse STRIPE_SECRET_KEY=rk_live_... ADMIN_KEY=$(openssl rand -hex 16) \ COMPANY_NAME=Acme node server.mjs # open http://localhost:8080 and sign in with any user name and ADMIN_KEY
The key needs Subscriptions: read and nothing else. A one-click Render deploy and Docker are in the README.
Related tools
Same buyer, other side of churn: Dunning Engine recovers failed cards and Cancel Flow saves voluntary cancellations, and Feedback Board collects what customers ask for. Past exports can also go through the Stripe Churn Cohort Analyzer.
Questions
How is this different from Baremetrics, ChartMogul or ProfitWell?
Those are hosted services with cohorts, forecasts, integrations and support, usually priced by revenue. MRR Pulse covers the numbers most small SaaS founders check every week (MRR, ARR, new, expansion, contraction and churned MRR, logo churn, net revenue retention, quick ratio) on a server you run with a read-only key. The self-hosted server adds a retention-by-signup-month table and a simple run-rate projection (low, base, high); there is no seasonality modelling or multi-source billing.
Can it change anything in my Stripe account?
No. It only lists subscriptions, and it needs a restricted key with Subscriptions: read and nothing else. The tests assert that every request is a plain GET.
Why does the first history say it is approximate?
Stripe does not return past prices, so the first sync rebuilds the last 12 months from each subscription's start and end dates at today's price. New and churned MRR are right to within price changes; expansion and contraction only appear from the first sync onward.
What counts as MRR?
Active and past-due subscriptions, every price normalised to a month, percent-off coupons netted. Trials, paused subscriptions, metered usage and fixed-amount coupons are not counted.
Where does my Stripe key live?
In the environment of the server you deploy in your own account. The author runs nothing in between and never sees your key or your numbers.