Moved your app’s subscriptions to Stripe? Declined cards are your problem now.
Web paywalls and link-out checkouts let you keep the 15–30% Apple and Google take. But inside the App Store, Apple chased failed renewals for you with its own retries and grace period. On Stripe, a subscriber whose card expires just churns, and you only notice when MRR dips.
Which app setups this is for
DeclineKit works when your subscriptions live in Stripe Billing, in your own Stripe account:
- A web paywall or web-to-app funnel that checks out with Stripe
- Link-out purchases from your iOS or Android app to a Stripe checkout
- RevenueCat with its Stripe Billing integration: Stripe runs the subscription and RevenueCat unlocks access in the app. When DeclineKit gets a failed renewal paid, Stripe marks the invoice paid and RevenueCat restores the subscriber’s access on its own.
It does not apply to:
- In-app purchases through the App Store or Google Play. Apple and Google bill those and handle their own retries; nothing reaches Stripe.
- RevenueCat Web Billing. That’s RevenueCat’s own billing engine, which uses Stripe only to process payments and doesn’t create Stripe subscriptions. It already retries failed renewals and emails subscribers itself, so you don’t need us there.
Not sure which you have? If your subscriptions appear under Billing → Subscriptions in the Stripe Dashboard, you’re on Stripe Billing.
What DeclineKit does
- Connects to your Stripe account with a restricted key. No SDK, nothing to ship in the app.
- Emails the subscriber in your app’s name when a renewal is declined: up to four short notes over 12 days. Replies come to you.
- Links to a Stripe-hosted card form that works on a phone. The moment they save a new card, we retry the invoice and the subscription carries on.
- Warns subscribers before their card expires, so many renewals never fail at all.
Consumer apps tend to see more declines than B2B software: more debit cards, more insufficient funds, more expired cards. Keep Stripe’s Smart Retries on for the temporary ones. DeclineKit goes after the ones retries can’t fix. How the two fit together.
Setup takes about five minutes
- Create a restricted key in the Stripe account your web checkout uses, with the permissions DeclineKit lists.
- Paste it in, set your app’s name and reply-to address, and preview the emails.
- Switch recovery on, and turn off Stripe’s own failed-payment emails so subscribers don’t get two.