Group
  • Payments

    Recover failed renewal payments automatically

    Coordinates provider retries, card updater services, and retry timing so temporary declines don't become cancellations.

    • Automate workflows
    • Improve quality
    • Intermediate
    • General

Free Prompt

Audit and tune how my app recovers failed subscription renewals. Separate from the dunning emails, this is the retry machinery itself. Configure deliberately: the provider's smart retry schedule is enabled and understood (Stripe retries on an optimized schedule over roughly 2-4 weeks; know what mine is set to and why); automatic card updater is enabled (card networks tell the provider when a card is reissued, so expired-card churn often fixes itself; confirm it's on); my subscription state during the retry window matches the dunning flow (past_due with the documented access policy, not instant cancellation and not indefinite free access); retry success immediately restores normal state and sends the recovery confirmation; and final failure after the retry window triggers the deliberate end state (cancel with notice, downgrade to free), executed by the webhook, not a cron that guesses. Don't retry charges on my own schedule with a custom job on top of the provider's retries; stacked retries look like card testing to banks and make declines worse. Don't treat hard declines (stolen card, closed account) the same as soft ones (insufficient funds); hard declines won't recover and should skip straight to the end state when the provider says so. Deliver: the retry configuration with reasoning, the state handling per decline type, and verification in test mode: fail a renewal with a soft-decline test card, confirm retries proceed and state stays past_due, then succeed on update and confirm full recovery.

What This Does / How This Helps

Tunes the machinery that recovers failed renewals: provider retry schedules, automatic card updater, and correct state handling through the whole window. A large share of subscription churn is involuntary: expired cards, temporary bank declines, reissued numbers. Card updater alone silently fixes the expired-card category, and the provider's smart retries recover most soft declines, but only if they're actually enabled and your state model doesn't cancel the customer out from under the retry. The soft-versus-hard decline distinction keeps the flow honest: insufficient funds deserves retries, a closed account doesn't.

Want to skip doing this by hand?

Fortivibe audits your app for all of the areas these prompts cover (and more).

See What We Check

Related Prompts