Skip to main content
Subscription Dunning emails customers whose subscription lapsed after a failed payment, or who cancelled it, and asks them to update their payment method or re-purchase. It runs automatically once you turn it on.

What Is Subscription Dunning?

Dunning detects when a subscription enters a recoverable state and sends a sequence of emails that ask the customer to act. Three states start a sequence:
  • On Hold subscriptions: A renewal payment failed, for example because of insufficient funds or an expired card.
  • Past Due subscriptions: A renewal payment failed while a grace period is open.
  • Cancelled subscriptions: The customer cancelled from the Customer Portal.

How Dunning Works

1

Trigger

A subscription enters one of the three states:
  • On Hold: A renewal payment failed.
  • Past Due: A renewal payment failed while a grace period is open.
  • Cancelled: The customer cancelled their subscription from the Customer Portal.
Dodo Payments then creates a dunning attempt and sends the dunning.started webhook. No attempt starts when the matching sequence has no enabled emails, and a subscription has at most one active attempt at a time.
2

Grace Period

If you set a grace period, a failed renewal moves the subscription to past_due instead of on_hold.The on-hold email sequence runs during that window, so the customer is asked to pay while they still have access.One failed payment starts one sequence. The end of the window doesn’t start a second sequence. If the window ends with the subscription on hold, the remaining emails in the sequence still go out. If it ends with the subscription cancelled, the attempt is marked exhausted.The dunning attempt records a past_due trigger state. When you read dunning analytics, filter on past_due as well as on on_hold.
3

Email Sequence

Based on the trigger state, Dodo Payments sends up to 4 dunning emails at the delays you configure. Each email links to the Customer Portal, where the customer can update their payment method, or to a checkout where they can re-purchase a cancelled subscription.
4

Recovery

When the customer updates their payment method in the Customer Portal, Dodo Payments automatically charges the remaining dues. If the payment succeeds, the subscription is reactivated and the dunning attempt is marked recovered.

Status Lifecycle

Each dunning attempt has one of these statuses:
When a dunning attempt is marked exhausted, Dodo Payments doesn’t change the subscription. It stays in its current state (past due, on hold, or cancelled).

Configuring Dunning

Turn on and configure Dunning in Settings → Recovery in your dashboard. Dunning is off by default.
Dunning settings page with enable toggle, four on-hold emails at 1, 3, 5, and 7 day intervals, and four cancelled emails at the same intervals

Dunning settings in the dashboard showing enable toggle, on-hold sequence, and cancelled sequence

Email Sequences

Dunning has two email sequences, On Hold and Cancelled, each with up to 4 emails. The dashboard lists them as Emails sent to customer when subscription is on hold and Emails sent to customer when subscription is cancelled. A past_due attempt uses the On Hold sequence. Each email has these settings: In Subject Line, Dodo Payments replaces these placeholders: {store_name}, {store_owner_name}, {store_contact_email}, {subscription_id}, {failure_reason}, and {payment_form_link}. The default delays are:

Example Dunning Emails

Dunning sends a different email for each subscription state. These examples show what the customer sees.
Dunning email for an on-hold subscription showing store name, message about failed payment, subscription details with plan and amount, and an Update Payment Method button

Dunning email sent when a renewal payment fails and the subscription is on hold

Customer Recovery Experience

When a customer clicks the link in an on-hold dunning email, the Customer Portal opens on their subscription. There they can see the subscription status and update their payment method.
Customer portal showing an on-hold subscription for Pro Plan at $95.00/year with an Update payment method button and a warning banner about the failed payment

Customer portal showing an on-hold subscription with option to update payment method

After the customer updates their payment method, Dodo Payments charges any outstanding dues. If the payment succeeds, the subscription returns to active. For a cancelled subscription, the link opens a checkout page with the subscription’s product already in the cart.

Analytics

Track Dunning performance under Analytics → Recovery in your dashboard.
Recovery analytics dashboard showing dunning entry counts, success rates, recovered revenue, and per-email performance breakdown

Recovery analytics dashboard showing ACR and dunning metrics

The Dunning section shows these metrics:

Webhook Events

Dunning sends two webhook events:

Recovery Webhook Payloads

View the full webhook payload schemas for dunning events.

Edge Cases

Dunning handles these cases automatically:

Best Practices

  • Start with defaults: The default delays (1, 3, 5, and 7 days) spread the emails over a week, so customers aren’t flooded but still see a steady reminder.
  • Monitor recovery rates: Check Recovery rate by email to see which email drives the most recoveries. If later emails recover almost nothing, turn them off.
  • Coordinate with support: Tell your support team that dunning emails are going out, so they can help customers who reply.
  • Review subscription states: Pair dunning with the subscription.on_hold and subscription.cancelled webhooks to track the full subscription lifecycle.
Dunning works alongside the existing on-hold and reactivation flows in the Customer Portal. Once you turn it on, it runs automatically with no integration work.

Recovery Webhooks

React to dunning.started and dunning.recovered events.

Abandoned Cart Recovery

Recover abandoned or failed checkouts with recovery emails.

Customer Portal

Customers update their payment methods in the Customer Portal.

Subscriptions

The subscription states that trigger dunning.
Last modified on September 25, 2026