past_due rather than ending it immediately. The open order then moves through payment recovery.
The retry schedule
The first failure produces three state changes at once:statusbecomespast_dueandpast_due_atrecords the failure time;- the customer receives an email that links to payment-method management in the portal; and
- the order records its next attempt in
next_payment_attempt_at.
Any successful attempt restores
active. After the fourth retry, or immediately for a terminal decline such as lost_card, recovery stops and the subscription is revoked.
Benefit revocation grace period
Payment state and access state can move on different clocks. Configure Settings → Subscriptions → Grace period for benefit revocation to keep benefits available while the subscription remainspast_due.
Available delays are Immediately, 2 days, 7 days, 14 days, or 21 days. The delay begins at past_due_at; choosing 21 days spans the complete retry schedule.
The setting does not change retry timing and does not make the subscription active. It only postpones benefit removal. Your application can still branch on status === "past_due" after receiving subscription.updated.
Helping customers recover
Replacing the default payment method in the Customer Portal triggers another payment attempt immediately instead of waiting for the scheduled retry. Your product can support that route by:- showing a prominent portal link whenever customer state is
past_due; - extending the current period through renewal rescheduling;
- revoking manually when recovery should stop; or
- issuing a separate refund when money from another order should be returned.