Read-only access to your billing
Last updated 1 November 2026
Churnahead reads your billing account and never writes to it. It cannot change a subscription, charge a card, issue a refund, edit a customer or send an email to anyone but you. This page says exactly what access it asks for and what it does with it.
Connecting Stripe
Two ways, both read-only:
- Connect with Stripe. One click. Churnahead asks Stripe for the
read_onlyscope and nothing else. Stripe shows you the request before you approve it, and you can revoke it from your Stripe dashboard at any time. - Paste a restricted key. In Stripe, go to Developers, API keys, Create restricted key, and give it Read access to Customers, Subscriptions, Invoices, Charges and PaymentMethods. Add Read on Customer portal if you want the setup check to inspect your portal settings. Secret keys (
sk_) are not accepted. The key is encrypted at rest with an application key held apart from the database, and the dashboard shows only its prefix and last four characters.
After connecting, Run checks reads one page from each part of Stripe the product depends on and reports anything that would weaken the signals: missing read permissions, a test-mode key, an account with no subscriptions, a Customer Portal that doesn’t ask why customers cancel, and recent cancellations that came without a reason, each with the steps to fix it in Stripe.
Connecting Paddle or Lemon Squeezy
Paste an API key. In Paddle, create it under Developer tools, Authentication with Read on Customers, Subscriptions and Transactions, plus Adjustments and Discounts if you want refunds, chargebacks and discounts counted. Lemon Squeezy keys can’t be limited to reading, so say so to whoever creates one: Churnahead sends only GET requests with it. A workspace reads one provider at a time; connecting another deletes the synced data first, so a customer who moved between providers isn’t counted twice.
What is read
- Customers: name, email, when they were created, and Stripe’s delinquent flag.
- Subscriptions: plan, price, quantity, period, trial, status, scheduled cancellation and the reason and feedback the customer gave in the Customer Portal.
- Invoices and charges: amounts, status, payment attempts and their outcomes.
- Refunds and disputes.
- Payment methods: the card’s brand and expiry month and year. Never the card number, or bank details.
- Recurring coupons, to compute MRR net of discounts and to see a discount ending.
Everything is stored in a PostgreSQL database on servers in Germany. The Privacy Policy and the Data Processing Agreement describe the roles, retention and your rights; the Subprocessors page lists who hosts what.
What is never done
- No writes to Stripe, Paddle or Lemon Squeezy, of any kind. The product has no code path that calls a write endpoint.
- No email, SMS or in-app message to your customers. The digest and alerts go to you and your team. Drafted emails are for you to copy into your own mailbox.
- No tracking script in your product. The optional usage events are sent by your own servers, to an endpoint that accepts writes only.
- No third-party analytics or advertising in the dashboard.
Syncing
Stripe syncs daily, and with the one-click connection a scheduled cancellation or a failed payment is picked up within seconds through a webhook. Paddle and Lemon Squeezy sync every four hours. You can start a sync yourself from the Connect page.
Disconnecting and deleting
Two buttons on the Connect page:
- Disconnect removes the credential and keeps the synced data, so reconnecting with a new key picks up where the old one stopped.
- Disconnect and delete removes the credential and everything synced from it: customers, subscriptions, invoices, charges, scores, outcomes and past digests.
To close the account entirely, email hello@churnahead.com.