When payments fail, Stripe will retry them up to 3 times, based on the settings in your Stripe account. It’s not obvious, but that actually means that there are 4 attempts to pay each invoice. Here’s how it works:
Let’s say that these are the subscription settings in our Stripe account.
Given these settings, what happens when Stripe tries to charge a customer for their subscription and the charge keeps failing?
- The first time that the charge fails:
They send out a charge_failed webhook and an invoice.payment_failed webhook to let us know about the failed payment. The invoice.payment_failed webhook contains an attempt_count equal to 1. - They wait 3 days and retry the failed payment. It fails again.
They send out a charge_failed webhook and an invoice.payment_failed webhook to let us know about the failed payment. The invoice.payment_failed webhook contains an attempt_count equal to 2. - They wait 5 days and retry the failed payment. It fails again.
They send out a charge_failed webhook and an invoice.payment_failed webhook to let us know about the failed payment. The invoice.payment_failed webhook contains an attempt_count equal to 3. - They wait 5 days and retry the failed payment. It fails again.
They send out a charge_failed webhook and an invoice.payment_failed webhook to let us know about the failed payment. The invoice.payment_failed webhook contains an attempt_count equal to 4.
They cancel the customer’s subscription and send us a customer.subscription.deleted webhook.