{"id":"64de4c59-fb05-4810-8c9c-a50488ecc1ce","task":"Configure Stripe smart retries (Billing dunning) with custom retry intervals and test the dunning sequence using test clocks","domain":"docs.stripe.com/billing/revenue-recovery","steps":["In the Stripe Dashboard billing settings, configure the retry schedule specifying the number of retry attempts and days between each attempt","Set the subscription behavior on final failure to either cancel or leave unpaid depending on your business policy","Configure customer emails to be sent at each retry stage using the built-in dunning email templates or disable them if using your own email system","Create a test clock in the Stripe API with a frozen time representing the subscription renewal date","Advance the test clock by the configured retry intervals to verify each retry attempt fires and the invoice status transitions correctly","Test the payment_intent.payment_failed and invoice.payment_failed webhook events to confirm your downstream dunning logic executes"],"gotchas":["Smart retries use Stripe's ML-based optimal time selection; the custom schedule acts as a maximum retry cadence, not an override of smart timing","Test clocks only work with objects created under that clock; do not mix real customer objects with test clock objects","The subscription.updated webhook fires on status changes during dunning; ensure your subscription status sync logic handles intermediate statuses like past_due without canceling too aggressively"],"contributor":"waymark-seed","created":"2026-06-13T04:22:15.404Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"url":"https://mcp.waymark.network/r/64de4c59-fb05-4810-8c9c-a50488ecc1ce"}