Automating "Dunning" Emails for Failed Subscription Payments
Published on December 29, 2025
Dunning Automation Impact
If your subscription business is losing 7% of recurring charges on the first payment attempt, you're watching $14,200 slip away every month.
And here's the part that kills: 53% of your churn isn't because customers are unhappy. They forgot to update an expired card. Or their account hit its limit on the day your charge processed. Meanwhile, you're spending 37 hours a month manually chasing these failed payments in spreadsheets.
We've implemented Odoo ERP for 150+ subscription brands. Every single one had the same blind spot: failed payments bleeding cash faster than customer acquisition could fill it.
Why Manual Dunning Is Costing You 20% More Revenue
Most D2C brands treat dunning like an afterthought. Someone in finance sends a generic "payment failed" email from donotreply@company.com three days after the charge bounces. Then they wait. And wait.
Here's what actually happens: Your customer never sees that email because it landed in spam. Or they saw it, thought "I'll deal with this later," and forgot. By day 10, their subscription cancels automatically. You just lost a customer who was spending $47/month and planned to stay for 18 months. That's $846 of lifetime value—gone.
The data doesn't lie.
Automated dunning systems recover up to 20% more failed payments
compared to manual follow-ups.
That difference compounds fast when you're processing 2,000 subscription charges monthly.
Look, we've seen brands doing $3M ARR lose $108,000 annually to preventable payment failures. Not because their product sucked. Because their dunning process did.
The Real Reasons Subscription Payments Fail (And Why It Matters)
Payment processors love to hide behind vague error codes. "Transaction declined." Cool. Why?
After analyzing billions of transactions, here's where the money actually goes:
| Failure Reason | % of Failures | Recoverable? |
|---|---|---|
| Insufficient funds | 53% | ✓ Yes (with smart retry) |
| Expired cards | 30%+ | ⚠ Requires customer action |
| Other (network errors, mismatches) | 17% | ✓ Yes (temporary issues) |
Soft Declines vs. Hard Declines
Here's the distinction that matters:
Soft Declines (Temporary)
→ Insufficient funds
→ Network errors
→ Billing address mismatches
✓ Can be retried automatically
Hard Declines (Permanent)
→ Expired cards
→ Closed accounts
→ Reported stolen cards
✗ Need immediate customer contact
The average subscription business sees 15% of recurring payments declined by VISA and Mastercard. At $200k monthly recurring revenue, that's $30,000 in failed charges. Every. Single. Month.
You can't afford to treat these two scenarios the same way. Soft declines need smart retry logic. Hard declines need urgent dunning emails. Mix them up, and you're either annoying customers with unnecessary emails or missing the narrow window to recover revenue.
What Actually Works: The Automated Dunning Sequence
Forget the "best practices" nonsense. Here's what the data shows:
A single dunning email recovers less than 25% of failed payments.
Send a sequence of 3-5 emails over 30 days, and recovery rates jump to 50-80%.
The timing is brutal. Send your first dunning email within 24 hours of payment failure. Not three days later. Not "when someone gets around to it." The same day.
The Sequence That Works for Brands Scaling from $1M to $10M
Day 0 (Immediate)
Subject line: "[Your Brand]: Payment Declined - Action Required"
Not "Billing Update" or "Important Notice." Use the word declined. It creates urgency without being threatening.
Body copy: 2-3 sentences max. "Your subscription payment of $49 failed on [date]. Your card ending in 4382 was declined. Update your payment method here [one-click link]."
Day 3
Second email. Increase urgency.
"Your subscription will be cancelled in 7 days unless you update your payment information."
Include the exact cancellation date. Specificity drives action.
Day 7-10
Final warning.
"Last Chance: Update payment by [specific date and time] or lose access to [specific features they use most]."
Tell them exactly what they're losing. Not "you'll lose access to your account." Say "you'll lose access to your custom dashboard settings and 14 months of saved reports."
The Subject Line Framework That Outperforms Everything
[Brand Name]: ACTION REQUIRED - [Specific Problem] - [Consequence]
Notice what's missing? Generic marketing fluff. Gentle euphemisms. The word "unfortunately."
Your customer needs to know three things: what failed, why it matters, how to fix it. Everything else is noise.
Personalization That Actually Moves Money
"Hi [First Name]" isn't personalization. It's the bare minimum.
Real personalization includes:
→ Customer's actual name
→ Last 4 digits of failed card
→ Exact charge amount
→ Specific date payment failed
→ Their subscription plan name
The ROI of Real Personalization
→ Using customer's name in sender field: +35% open rates
→ Personalizing with charge amount and card details: +62% click-through rates
And for the love of cash flow, never send dunning emails from donotreply@yourcompany.com. Send from a real person. "Sarah from Billing" or "Your Account Manager, James." Give customers someone to reply to when they have questions.
We built a dunning system for a UK-based SaaS brand doing $200k MRR. They were losing $18,400 monthly to failed payments.
We implemented personalized dunning sequences with real sender names. Recovery rate jumped from 32% to 71% in 90 days.
That's $7,176 monthly recurring revenue recovered—every month.
The Payment Retry Strategy That Doesn't Annoy Customers
Retrying failed payments is an art wrapped in data science.
For Soft Declines
Retry the payment automatically before you send dunning emails. The customer's account might have been temporarily low. By the time they see your email, the retry already worked. No panic. No churn.
Stripe's recommendation: 8 retry attempts over 2 weeks. But here's what they don't tell you—that only works if you're distinguishing between soft and hard declines.
For Hard Declines
If a credit card is expired or the account is closed, retrying accomplishes nothing. The payment will never go through without customer action. Skip the retries. Send the dunning email immediately.
The Retry Schedule We Use
First retry: 12 hours after initial failure
Second retry: 48 hours later
Third retry: 7 days after second attempt
Between each retry, check if the decline code changed. If it went from "insufficient funds" to "card expired," stop retrying and trigger a dunning email immediately.
This approach reduced involuntary churn by 34% for a D2C brand doing $5M ARR.
That's $170,000 in annual recurring revenue saved because they stopped treating all payment failures the same way.
Multi-Channel Recovery: Email + SMS + In-App
Email open rates are less than 25%. If you're only sending dunning emails, you're missing 75% of your customers.
The brands recovering 70%+ of failed payments use multi-channel dunning:
First touchpoint. Most detailed. Includes one-click payment update link.
SMS
Sent 24 hours after email if no action taken. Under 160 characters.
In-App
Banner notification: "Update payment method to avoid service interruption."
Push
Mobile apps: "Action needed: Update payment method."
Don't send all channels simultaneously. That's spam. Cascade them over 3-5 days, triggered by inaction on the previous channel.
Here's what matters: send these messages during weekday working hours in the customer's timezone. A dunning email at 3 AM local time gets buried. One at 9 AM Tuesday gets opened.
How to Build This in Odoo Without Developer Resources
Most billing systems charge you extra for dunning management. Odoo doesn't.
Odoo's Subscriptions module handles recurring invoices automatically. When a subscription payment fails, you can trigger automated actions using Odoo's built-in workflow automation.
Here's the Setup (Takes 45 Minutes)
Step 1: Configure Recurring Plans
Go to Subscriptions → Configuration → Recurring Plans. Set your billing period (monthly, quarterly, annual). Configure the "Automatic Closing" field—this defines how long Odoo waits before auto-canceling an unpaid subscription.
Step 2: Set Up Automated Actions
Enable Developer Mode in Odoo. Go to Settings → Technical → Automated Actions.
Create three automated actions:
Action 1 - Immediate Dunning Email:
Trigger: Invoice status changes to "Payment Failed"
Action: Send email using custom template (Day 0 template)
Timing: Immediate
Action 2 - Follow-Up Dunning Email:
Trigger: Invoice remains unpaid for 3 days
Action: Send second email template
Timing: Scheduled (3 days after initial failure)
Action 3 - Final Warning Email:
Trigger: Invoice remains unpaid for 7 days
Action: Send final warning email
Timing: Scheduled (7 days after initial failure)
Step 3: Build Email Templates
Go to Settings → Technical → Email Templates. Create three templates following the copywriting rules above. Include dynamic fields: {customer name}, {invoice amount}, {card last 4 digits}, {payment link}.
Step 4: Configure Payment Retries
In your payment provider settings (Stripe, Authorize.net, etc.), enable smart retries. Set the retry schedule: 12 hours, 48 hours, 7 days. Most providers support this natively through their Odoo integration.
Step 5: Monitor & Optimize
Odoo's reporting module shows which dunning emails drive the most payment recoveries. Check open rates, click rates, and actual payment recovery by email sequence position. A/B test subject lines every 60 days.
We implemented this exact system for a healthcare SaaS company doing $1.2M ARR. Previously, they had someone in accounting manually emailing customers about failed payments—37 hours monthly.
After automating dunning in Odoo, recovery rate increased from 41% to 78%.
That's $27,380 annual recurring revenue recovered, plus 37 hours monthly freed up for actual accounting work.
The Metrics That Actually Matter
Most brands track the wrong dunning metrics. "Email open rate" doesn't pay your bills.
Track these instead:
| Metric | Target | Why It Matters |
|---|---|---|
| Dunning Recovery Rate | 50-80% | Industry average: 25% manual, 50-80% automated. Below 50% = broken system. |
| Time to Recovery | <7 days | Longer than that, customers mentally cancel even if they haven't officially churned. |
| Recovery Rate by Email Position | Balanced | Which email drives most payments? If it's #3, your first two are too soft. |
| Involuntary Churn Rate | <20% of total churn | Higher = you're losing customers who wanted to stay. |
| Cost Per Recovery | <$3 | Total dunning cost ÷ recovered payments. Include software fees, time, email costs. |
A D2C brand we worked with was celebrating a 65% dunning recovery rate. Sounds good, right?
Until we looked at time to recovery: averaging 23 days. By day 23, customers had already found competitors. Their actual retention from dunning was 31%.
We compressed their sequence from 30 days to 10 days. Real retention jumped to 62%.
Recovery rate means nothing if customers churn anyway because you took too long.
What Kills Dunning Performance (And How to Fix It)
Mistake 1: Using the same dunning sequence for all customers
Your $29/month hobby users don't need the same urgency as your $499/month enterprise clients. Segment your dunning by customer value. High-value customers get phone calls on day 3, not just emails.
Mistake 2: Sending dunning emails at random times
Schedule dunning emails for 9-11 AM Tuesday-Thursday in the customer's timezone. Avoid Mondays (inbox overload), Fridays (weekend mindset), and evenings (lower urgency perception).
Mistake 3: Not offering payment alternatives
If a credit card fails repeatedly, offer ACH/bank transfer, PayPal, or even invoicing for annual plans. Some customers hit card limits but have cash in the bank. Give them options.
Mistake 4: Dunning emails that read like legal notices
"Pursuant to our terms of service, your account is in arrears..." Stop. Write like a human. "Hey Alex, your payment didn't go through. Update your card to keep your subscription active." That's it.
Mistake 5: No escalation path for high-value accounts
If an account worth $5,000 annually hits dunning, a human needs to call them. Don't let automation kill your biggest customers. Build an exclusion rule in Odoo for accounts above a specific threshold—manually handle their dunning.
We audited a SaaS brand losing $220k annually to failed payments. They were making all five mistakes.
After rebuilding their dunning system in Odoo with proper segmentation, recovery jumped from 38% to 74%.
Annual revenue recovered: $79,200
Stop Bleeding Cash. Start Recovering Revenue.
Look, dunning isn't sexy. Nobody wakes up excited to optimize payment recovery emails.
But if you're losing 20-40% of your churn to payment failures, you're running on a treadmill. Acquisition fills the bucket. Involuntary churn drains it just as fast.
Here's what's fixable right now:
→ Set up automated dunning sequences in Odoo (45 minutes of work, $15,000-$30,000 annual revenue recovered for every $1M ARR)
→ Distinguish between soft and hard declines (reduces annoying retries, increases relevant dunning)
→ Personalize your dunning emails with actual customer data (35% higher open rates)
→ Add SMS and in-app channels to your sequence (recover 20% more failures)
→ Test your dunning every 60 days (A/B test subject lines, timing, urgency levels)
We've watched 150+ brands implement these exact systems. The ones who act recover 50-80% of failed payments. The ones who "plan to get to it eventually" keep losing 3.6% of annual revenue to preventable failures.
Your choice.
Braincuber Track Record with Dunning
We've implemented Odoo dunning automation for 150+ subscription brands.
Average results:
→ Recovery rate: 50-80% (vs 25% manual)
→ Annual revenue recovered: $15K-$30K per $1M ARR
→ Labor freed: 37 hours/month average
→ Involuntary churn reduced: 20-40%
Stop bleeding cash.
Book Our Free 15-Minute Operations Audit
We'll show you exactly how much revenue is leaking through failed payments—and how Odoo fixes it without hiring more people or paying for expensive third-party dunning tools.

