What is Dunning?
Dunning is the automated sequence of payment retries and customer notifications triggered after a subscription billing failure. In Shopify subscription stacks, dunning determines how many times a failed charge is retried, the timing between retries, and what emails are sent to the customer at each stage. A well-configured dunning sequence recovers 20–40% of initially failed subscription payments.
How does dunning work in Recharge?
Recharge runs its own dunning engine separate from Stripe Smart Retries. When a Recharge subscription charge fails, Recharge schedules retry attempts according to your dunning configuration in Recharge Admin > Settings > Dunning. By default, Recharge retries up to 8 times over a configurable period before marking the subscription as cancelled.
The most common dunning mistake is using a uniform retry cadence for all decline types. INSUFFICIENT_FUNDS should retry on day 3 and day 7 to align with payday cycles. PAYMENT_METHOD_REVOKED should skip retries entirely and send an immediate payment update email — the token is permanently invalid and retrying wastes attempts.
What is the difference between Recharge dunning and Stripe Smart Retries?
Stripe Smart Retries uses machine learning to schedule up to 8 retry attempts within a 2-week window. Smart Retries optimizes for the highest recovery probability based on the decline code, time of day, and card type. Recharge dunning operates on top of or in parallel with Stripe Smart Retries depending on your integration — meaning a single failed charge may be retried by both systems.
When Recharge and Stripe Smart Retries both retry the same failed charge, merchants see inflated retry counts and risk triggering issuer-side velocity limits. Disable Stripe Smart Retries when using Recharge's dunning engine to avoid double-retry conflicts. In Stripe Dashboard, go to Billing > Subscriptions > Smart Retries and disable the feature.
What should a good dunning sequence look like?
A best-practice dunning sequence differentiates retry timing by decline type. For INSUFFICIENT_FUNDS: retry at day 3 and day 7, send a heads-up email at day 5. For CARD_DECLINED (generic): retry at day 2 and day 5, send payment update request at day 3. For AUTHENTICATION_REQUIRED: skip retries, immediately send the 3DS authentication link. For PAYMENT_METHOD_REVOKED or LOST_CARD: skip all retries, immediately send a payment method update email.
Most merchants lose recoverable revenue by applying the wrong retry timing to the wrong decline type. Retrying INSUFFICIENT_FUNDS on day 1 after payday has passed almost always fails. Retrying LOST_CARD at all is counterproductive — the card is permanently blocked. Dunning configuration should match the economics of each failure mode.
Frequently asked questions
What is the maximum number of dunning retries in Recharge?
Recharge allows up to 8 retry attempts in its dunning configuration. After all retries are exhausted, Recharge fires the charge/max_retries_reached webhook and cancels the subscription. The Shopify subscription contract may not automatically reflect this cancellation — check for ghost subscriptions where Shopify still shows ACTIVE.
Does dunning work for Shop Pay subscriptions?
Dunning applies to any subscription payment method, including Shop Pay. However, when a Shop Pay billing authorization is revoked (PAYMENT_METHOD_REVOKED), retries will always fail regardless of dunning configuration. Detect revoked Shop Pay tokens by monitoring the shop_pay_payment_method_revoked event and route those cases directly to a payment update flow.
How do I know if my dunning is recovering revenue?
Measure dunning recovery rate: (charges recovered after initial failure) / (total initially failed charges). A well-tuned dunning sequence recovers 20–40% of failed payments. In Recharge Analytics, compare charge success rates by retry attempt number to identify where your dunning sequence loses effectiveness.
Related guides
Detect subscription failures automatically
Free cross-stack scan. Find revenue leaks in 60 seconds.
Run Free Scan →