Dunning
Retries, reminders, and subscription recovery when payments fail
llms.txtRetries, reminders, and subscription recovery when payments fail
When a renewal charge fails, Kwit creates one invoice and marks the subscription past due. Dunning retries that same invoice - it does not create duplicate invoices per attempt.
Timeline
| Step | What happens | Webhooks | |
|---|---|---|---|
| Initial failure | Subscription → PAST_DUE, invoice open | subscription.updated, subscription.payment_failed | Reminder 1/3 |
| +3 days | Retry charge | subscription.payment_failed | Reminder 2/3 |
| +7 days | Final retry | subscription.payment_failed | Final notice 3/3 |
| All failed | Invoice → UNCOLLECTIBLE, subscription canceled | subscription.canceled | - |
| Recovery | Invoice paid, subscription active | invoice.paid, subscription.updated | Receipt |
Recovery page
Failed-payment emails link to a recovery hosted page where customers retry payment or update their payment method (re-tokenize via zahls, then auto-retry).
Your integration
Listen for subscription.payment_failed to notify your app; use invoice.paid to restore access after recovery.