past_due status. Use this guide to let customers update their payment method and reactivate their subscription.
Decision Flowchart
Recover Past-Due
Forpast_due subscriptions, you must collect payment via SDK checkout—there’s no API-only option.
1
Create a client session
Include customer and subscription—do not include
plan.id:cURL
2
Mount the SDK
Display checkout with the customer’s saved payment method:
- Success: Subscription returns to
active, billing cycle resets - Failure: Customer can switch to a different card and retry instantly
Reactivate Cancelled Subscription
Forcancelled subscriptions, you can either collect payment via SDK checkout (above) or reactivate directly via API:
cURL
current_period_end) is still active:
- Paid period still active (
current_period_endin the future) — the subscription returns toactivewith no charge, restoring access for the remaining paid period. - Paid period has ended (
current_period_endin the past or unset) — PayNext attempts an immediate charge on the customer’s saved payment method:- Charge succeeds →
activewith a new billing period. - Charge fails →
past_due; the subscription enters the standard retry flow and access is not restored.
- Charge succeeds →
subscription_v2 event reflecting the resulting status (subscription_v2.activated on reactivation, or subscription_v2.past_due if the reactivation charge fails).
API reactivation works for
scheduled_for_cancellation and cancelled subscriptions. A past_due subscription cannot be reactivated this way—collect payment via SDK checkout instead.Automatic Recovery From Card Updates
Some past-due subscriptions recover without any action from you or the customer. When a saved card is reissued or its network token becomes usable again, PayNext charges the subscription right away instead of waiting for the next scheduled retry. A success moves the subscription back toactive and emits subscription_v2.renewed.
Two rules keep this from producing a burst of attempts, and they explain why you won’t always see an immediate charge:
- After a failed update-triggered attempt, PayNext waits 24 hours before trying again from another update.
- If a scheduled retry is already due shortly, PayNext lets that one run instead.
Dead Payment Methods
A payment method can reach a state where no charge can succeed: the card is expired, closed, or invalid and it has no usable network token, or the customer revoked the mandate in Cash App, Pix, PayPal, or Venmo. When that happens, PayNext stops attempting charges rather than sending a run of guaranteed declines. Any attempt that is aborted this way is recorded asINCOMPLETE with decline_code payment_method_disabled and advice_code do_not_try_again.
The subscription stays past_due and waits for a recovery—it is not cancelled at that moment. If nothing recovers it within the grace period, PayNext cancels it with cancellation_details.reason set to dead_instrument.
Best Practices
- Notify customers promptly when renewals fail—the sooner they update their card, the higher the recovery rate
- Use email or in-app messaging to direct customers to your recovery page
- Show the amount due clearly in your UI before they reach checkout