Retries
How MintCash retries failed recurring charges over time — the schedule, the customer notifications, and when a subscription is cancelled.
When a subscription renewal fails, MintCash doesn't give up on the first decline. It retries the charge on a fixed schedule, escalating customer communication along the way, and only cancels the subscription once every attempt is exhausted. This is the "dunning" loop you'd otherwise build yourself.
Retries vs. cascading
Cascading happens within a single charge attempt — try provider A, then B, then C, all in seconds. Retries happen across time — try today, fail, wait a day, try again. The two combine: each retry attempt can itself cascade across providers.
The retry schedule
| Attempt | Delay | Customer email |
|---|---|---|
| 1st retry | 1 day | None — silent retry |
| 2nd retry | 3 days | "Your payment failed" |
| 3rd retry | 5 days | "Please update your payment method" |
| 4th retry | 7 days | "Your subscription will be cancelled" |
| After 4th | — | Subscription cancelled, access revoked |
The delay is measured from the previous attempt, not from the original renewal date.
What you see
subscription.payment_failed— fires after every failed retry attemptsubscription.payment_succeeded— fires the moment a retry attempt winssubscription.cancelled— fires after the 4th retry fails and the subscription terminates
Each retry creates a new Payment linked to the subscription. The subscription itself stays in the failed payment state until either a retry succeeds (back to active) or all attempts are exhausted (cancelled).
What stops the retry loop
Some failures end the loop immediately — there's no point retrying a card we know won't work.
| Resolution | Retry? | Why |
|---|---|---|
insufficient_funds | Yes | The customer may have funds later |
provider_error | Yes | Transient PSP issue |
issuer_decline | Yes | Issuer may approve a later attempt |
card_expired | No | Loop pauses pending a card update |
lost_or_stolen_card | No | Subscription cancelled immediately |
antifraud_error | No | Subscription cancelled immediately |
When the loop pauses for a card-level reason, the customer email points them at a self-serve link to update the card. Once they do, the schedule resumes.
Card expiry monitoring
MintCash also proactively emails customers when their card on file is about to expire:
| When | |
|---|---|
| 2 months before | "Update your payment method" |
| 1 month before | Reminder |
| 2 weeks before | Final warning |
| 1 week before | Subscription will be cancelled |
This prevents the retry loop from being triggered in the first place for cards that simply ran out the clock.
See also
- Subscriptions — the subscription state machine that retries feed into
- Cascading — multi-provider attempts within a single retry
- Errors — which resolutions are retryable and which terminate the loop