Dunning Playbook
Dunning Playbook
Section titled “Dunning Playbook”Complete guide to recovering failed payments and reducing involuntary churn.
Why Dunning Matters
Section titled “Why Dunning Matters”- Failed payments cause 30-50% of all subscription churn
- Most failed payments are recoverable with the right strategy
- Subscription businesses lose an estimated $129 billion annually to involuntary churn
- Effective dunning recovers 50-60% of failed payments
The Dunning Timeline
Section titled “The Dunning Timeline”Day -30 to -7: Pre-dunning (prevent failures)Day 0: Payment fails → Smart retry #1 + Email #1Day 1-3: Smart retry #2 + Email #2Day 3-5: Smart retry #3Day 5-7: Smart retry #4 + Email #3Day 7-10: Final retry + Email #4 (final warning)Day 10-14: Grace period ends → Account paused/cancelledDay 14+: Win-back sequence beginsPre-Dunning: Prevent Failures Before They Happen
Section titled “Pre-Dunning: Prevent Failures Before They Happen”Card Expiry Management
Section titled “Card Expiry Management”| Timing | Action |
|---|---|
| 30 days before expiry | Email: “Your card ending in 4242 expires next month” |
| 15 days before expiry | Email: “Update your payment method to avoid interruption” |
| 7 days before expiry | Email: “Your card expires in 7 days — update now” |
| 3 days before expiry | In-app banner: “Payment method expiring soon” |
Email template — Card expiring:
Subject: Your card ending in 4242 expires soon
Hi [Name],
The card on file for your [Product] subscription expires on [date].
Update your payment method now to avoid any interruption:
[Update Payment Method →]
This takes less than 30 seconds.
— [Product] TeamCard Updater Services
Section titled “Card Updater Services”Major card networks offer automatic card update programs:
| Service | Network | What It Does |
|---|---|---|
| Visa Account Updater (VAU) | Visa | Auto-updates stored card numbers and expiry dates |
| Mastercard Automatic Billing Updater (ABU) | Mastercard | Same for Mastercard |
| Amex Cardrefresher | American Express | Same for Amex |
Impact: Reduces hard declines from expired/replaced cards by 30-50%.
How to enable:
- Stripe: Automatic — enabled by default
- Chargebee: Enabled through gateway settings
- Recurly: Built-in, enabled by default
- Braintree: Contact processor to enable
Backup Payment Methods
Section titled “Backup Payment Methods”Prompt for a second payment method:
- During signup: “Add a backup payment method” (low conversion)
- After first successful payment: “Protect your account with a backup card” (better timing)
- After a failed payment is recovered: “Add a backup to prevent future interruptions” (best timing — they felt the pain)
Pre-Billing Notifications
Section titled “Pre-Billing Notifications”For annual plans or high-value subscriptions:
- Email 7 days before renewal with amount and date
- Include link to update payment method
- Show what’s included in the renewal
- Required by some regulations for auto-renewals
Smart Retry Strategy
Section titled “Smart Retry Strategy”Decline Type Classification
Section titled “Decline Type Classification”| Code | Type | Meaning | Retry? |
|---|---|---|---|
insufficient_funds |
Soft | Temporarily low balance | Yes — retry in 2-3 days |
card_declined (generic) |
Soft | Various temporary reasons | Yes — retry 3-4 times |
processing_error |
Soft | Gateway/network issue | Yes — retry within 24h |
expired_card |
Hard | Card is expired | No — request new card |
stolen_card |
Hard | Card reported stolen | No — request new card |
do_not_honor |
Soft/Hard | Bank refused (ambiguous) | Try once more, then ask for new card |
authentication_required |
Auth | SCA/3DS needed | Send customer to authenticate |
Retry Schedule by Provider
Section titled “Retry Schedule by Provider”Stripe (Smart Retries — recommended):
- Enable “Smart Retries” in Stripe Dashboard → Billing → Settings
- Stripe’s ML model picks optimal retry timing based on billions of transactions
- Typically 4-8 retry attempts over 3-4 weeks
- Recovers ~15% more than fixed-schedule retries
Manual retry schedule (if no smart retries):
| Retry | Timing | Best Day/Time |
|---|---|---|
| 1 | Day 1 (24h after failure) | Morning, same day of week as original |
| 2 | Day 3 | Try a different time of day |
| 3 | Day 5 | After typical payday (1st, 15th) |
| 4 | Day 7 | Morning of the next business day |
| 5 (final) | Day 10 | Last attempt before grace period ends |
Retry timing insights:
- Retry on the same day of month the original payment succeeded
- Retry after common paydays (1st and 15th of the month)
- Avoid retrying on weekends (lower approval rates)
- Morning retries (8-10am local time) perform slightly better
Dunning Email Sequence
Section titled “Dunning Email Sequence”Email 1: Payment Failed (Day 0)
Section titled “Email 1: Payment Failed (Day 0)”Tone: Friendly, matter-of-fact. No alarm.
Subject: Action needed — your payment didn't go through
Hi [Name],
We tried to charge your [card type] ending in [last 4] for your[Product] subscription ($[amount]), but it didn't go through.
This happens sometimes — usually a quick card update fixes it.
[Update Payment Method →]
Your access isn't affected yet. We'll retry automatically, butupdating your card is the fastest fix.
Need help? Just reply to this email.
— [Product] TeamEmail 2: Reminder (Day 3)
Section titled “Email 2: Reminder (Day 3)”Tone: Helpful, slightly more urgent.
Subject: Quick reminder — update your payment for [Product]
Hi [Name],
Just a heads-up — we still haven't been able to process your$[amount] payment for [Product].
[Update Payment Method →]
Takes less than 30 seconds. Your [data/projects/team access]is safe, but we'll need a valid payment method to keep youraccount active.
Questions? Reply here and we'll help.
— [Product] TeamEmail 3: Urgency (Day 7)
Section titled “Email 3: Urgency (Day 7)”Tone: Direct, clear consequences.
Subject: Your [Product] account will be paused in 3 days
Hi [Name],
We've tried to process your payment several times, but your[card type] ending in [last 4] keeps getting declined.
If we don't receive payment by [date], your account will bepaused and you'll lose access to:
• [Key feature/data they use]• [Their projects/workspace]• [Team access for X members]
[Update Payment Method Now →]
Your data won't be deleted — you can reactivate anytime byupdating your payment method.
— [Product] TeamEmail 4: Final Warning (Day 10)
Section titled “Email 4: Final Warning (Day 10)”Tone: Final, clear, no guilt.
Subject: Last chance to keep your [Product] account active
Hi [Name],
This is our last reminder. Your payment of $[amount] is pastdue, and your account will be paused tomorrow ([date]).
[Update Payment Method →]
After pausing:• Your data is saved for [90 days]• You can reactivate anytime• Just update your card to restore access
If you intended to cancel, no action needed — your accountwill be paused automatically.
— [Product] TeamGrace Period Management
Section titled “Grace Period Management”What Happens During Grace Period
Section titled “What Happens During Grace Period”| Setting | Recommendation |
|---|---|
| Duration | 7-14 days after final retry |
| Access | Degraded (read-only) or full access |
| Visibility | In-app banner: “Payment past due — update to continue” |
| Retry | Continue background retries during grace |
| Communication | Dunning emails continue |
Access Degradation Options
Section titled “Access Degradation Options”Option A: Full access during grace (recommended for B2B)
- Lower friction, customer feels respected
- Higher recovery rate (they still see value)
- Risk: some customers exploit the grace period
Option B: Read-only access (recommended for B2C)
- Can view but not create/edit
- Creates urgency without data loss fear
- Clear message: “Update payment to resume full access”
Option C: Immediate lockout (not recommended)
- Aggressive, damages relationship
- Lower recovery rate
- Only appropriate for very low-cost plans
Post-Grace Period
Section titled “Post-Grace Period”| Timing | Action |
|---|---|
| Grace period ends | Pause account (not delete) |
| Day 1 post-pause | “Your account has been paused” email |
| Day 7 post-pause | “Your data is still here” reminder |
| Day 30 post-pause | Win-back attempt with new offer |
| Day 60 post-pause | Final win-back |
| Day 90 post-pause | Data deletion warning (if applicable) |
Provider-Specific Setup
Section titled “Provider-Specific Setup”Stripe
Section titled “Stripe”Enable Smart Retries:
- Dashboard → Settings → Billing → Subscriptions and emails
- Enable “Smart Retries” under retry rules
- Set failed payment emails in Dashboard → Settings → Emails
Custom retry rules (if not using Smart Retries):
Retry 1: 3 days after failureRetry 2: 5 days after failureRetry 3: 7 days after failureFinal: Mark subscription as unpaid after last retryWebhook events to handle:
invoice.payment_failed— trigger dunninginvoice.paid— cancel dunning, restore accesscustomer.subscription.updated— status changescustomer.subscription.deleted— final cancellation
Chargebee
Section titled “Chargebee”Built-in dunning:
- Settings → Configure Chargebee → Retry Settings
- Configure retry attempts and intervals
- Settings → Configure Chargebee → Email Notifications → Dunning
Dunning options:
- Automatic retries with configurable schedule
- Built-in dunning emails (customizable templates)
- Grace period configuration per plan
Paddle
Section titled “Paddle”Managed dunning:
- Paddle handles retries and dunning automatically
- Limited customization (Paddle manages the relationship)
- Webhook:
subscription.payment_failed,subscription.cancelled - Best for hands-off approach
Recurly
Section titled “Recurly”Revenue Recovery:
- Configuration → Dunning Management
- Set retry schedule per plan
- Configure grace period and final action (pause vs cancel)
Advanced features:
- Machine-learning retry optimization
- Per-plan dunning schedules
- Built-in Account Updater
In-App Dunning
Section titled “In-App Dunning”Don’t rely on email alone. Show payment failures in the app:
Banner Pattern
Section titled “Banner Pattern”┌──────────────────────────────────────────────────────┐│ ⚠ Your payment of $29 failed. Update your card to ││ avoid losing access. [Update Payment →] [Dismiss] │└──────────────────────────────────────────────────────┘Rules:
- Show on every page load during dunning period
- Allow dismiss (but show again next session)
- Direct link to payment update (fewest clicks possible)
- Don’t block the product — let them continue using it
Modal Pattern (for final warning)
Section titled “Modal Pattern (for final warning)”┌─────────────────────────────────────┐│ ││ Your account will be paused ││ on [date] ││ ││ Update your payment method to ││ keep access to your [X] projects ││ and [Y] team members. ││ ││ [Update Payment Method] ││ [Remind Me Later] ││ │└─────────────────────────────────────┘Measuring Dunning Performance
Section titled “Measuring Dunning Performance”Key Metrics
Section titled “Key Metrics”| Metric | How to Calculate | Target |
|---|---|---|
| Recovery rate | Recovered payments / Total failed | 50-60% |
| Recovery rate by decline type | Recovered / Failed per type | Soft: 70%+, Hard: 40%+ |
| Time to recovery | Days from failure to successful payment | <5 days |
| Pre-dunning prevention rate | Prevented failures / Expected failures | 20-30% |
| Dunning email open rate | Opens / Sent per email | 60%+ |
| Dunning email click rate | Clicks / Opens per email | 30%+ |
| Revenue recovered (monthly) | Sum of recovered payment amounts | Track trend |
| Revenue lost to involuntary churn | Sum of failed + unrecovered amounts | Track trend |
Benchmarking
Section titled “Benchmarking”By company stage:
| Stage | Typical Involuntary Churn | Target After Optimization |
|---|---|---|
| Early (< $1M ARR) | 3-5% of MRR/month | 1-2% |
| Growth ($1-10M ARR) | 2-4% of MRR/month | 0.5-1.5% |
| Scale ($10M+ ARR) | 1-3% of MRR/month | 0.3-0.8% |
ROI Calculation
Section titled “ROI Calculation”Monthly failed payment MRR: $10,000Current recovery rate: 30% ($3,000 recovered)Target recovery rate: 60% ($6,000 recovered)Monthly improvement: $3,000/monthAnnual improvement: $36,000/yearCost of dunning optimization: ~$200-500/month (tooling)ROI: 6-15x