The revenue recovery journal

82 field guides on involuntary churn: decline-code retry strategy, channel data, integration engineering and how RRLabs compares to legacy dunning tools.

Recovery benchmarks and decline-code playbooks. No spam.

82 guides

Engineering

Optimizing 3D Secure (3DS) Failures: Frictionless Re-Authentication Pipelines

How to recover authentication_required declines: exemptions, on-session re-presentment, WhatsApp-first delivery of confirmation links and a 24-hour retry window.

Read

Zero-Downtime AI Dunning: Combining GPT-4o-mini, DeepSeek Flash, and Deterministic Templates

A four-tier cascade — cache, primary model, fallback model, deterministic templates — that guarantees a recovery message is always produced within a bounded latency budget.

Read

Decline code retry strategy: timing every retry to the reason

A practical mapping from Stripe decline codes to retry windows and messaging channels, with the reasoning behind each delay.

Read

Verifying signed payment webhooks correctly

HMAC verification, constant-time comparison and why string equality is a vulnerability.

Read

Idempotency and deduplication for payment events

Providers retry webhooks aggressively; duplicate processing double-sends recovery messages.

Read

Multi-tenant row-level security for billing data

Every failed-payment row must be scoped to a workspace at the database layer, not the query layer.

Read

A four-tier AI fallback that never drops a message

Cache, primary model, low-cost fallback, deterministic templates — each with a hard timeout.

Read

Designing a decline-aware retry scheduler

Scheduling retries by reason and local time rather than a global cron tick.

Read

Observability for a recovery pipeline

What to log so recovery lift is attributable instead of anecdotal.

Read

Keeping recovery out of PCI scope

How to run a full recovery pipeline without ever touching card data.

Read

Data retention for recovery message logs

Balancing audit value against privacy obligations on customer contact data.

Read

Playbooks & Tactics

Handling Stripe `insufficient_funds`: Payday Routing and Card Issuer Batch Windows

Why insufficient_funds is the most recoverable decline code on Stripe, how to time the retry around pay cycles and issuer batch windows, and what the message should say.

Read

Resolving `do_not_honor` and Bank Holds: Frictionless SCA & Multi-Channel Recovery

How to handle the most opaque decline code in card processing: what do_not_honor really signals, why grinding retries backfires, and the alternate-card strategy that recovers it.

Read

Insufficient funds declines: the recovery playbook

How to handle `insufficient_funds` declines — retry window, channel choice, message framing and the recovery rate to expect.

Read

Expired card declines: the recovery playbook

How to handle `expired_card` declines — retry window, channel choice, message framing and the recovery rate to expect.

Read

Do not honor declines: the recovery playbook

How to handle `do_not_honor` declines — retry window, channel choice, message framing and the recovery rate to expect.

Read

Authentication required declines: the recovery playbook

How to handle `authentication_required` declines — retry window, channel choice, message framing and the recovery rate to expect.

Read

Card not supported declines: the recovery playbook

How to handle `card_not_supported` declines — retry window, channel choice, message framing and the recovery rate to expect.

Read

Lost or stolen card declines: the recovery playbook

How to handle `lost_stolen_card` declines — retry window, channel choice, message framing and the recovery rate to expect.

Read

Processing error declines: the recovery playbook

How to handle `processing_error` declines — retry window, channel choice, message framing and the recovery rate to expect.

Read

Pickup card declines: the recovery playbook

How to handle `pickup_card` declines — retry window, channel choice, message framing and the recovery rate to expect.

Read

Involuntary churn in B2B SaaS: a recovery playbook

Failure rates, cadence design and channel mix for reducing involuntary churn in B2B SaaS.

Read

Involuntary churn in ecommerce subscriptions: a recovery playbook

Failure rates, cadence design and channel mix for reducing involuntary churn in ecommerce subscriptions.

Read

Involuntary churn in membership sites: a recovery playbook

Failure rates, cadence design and channel mix for reducing involuntary churn in membership sites.

Read

Involuntary churn in digital publishers: a recovery playbook

Failure rates, cadence design and channel mix for reducing involuntary churn in digital publishers.

Read

Involuntary churn in agencies: a recovery playbook

Failure rates, cadence design and channel mix for reducing involuntary churn in agencies.

Read

Involuntary churn in marketplaces: a recovery playbook

Failure rates, cadence design and channel mix for reducing involuntary churn in marketplaces.

Read

Involuntary churn in fitness and wellness studios: a recovery playbook

Failure rates, cadence design and channel mix for reducing involuntary churn in fitness and wellness studios.

Read

Involuntary churn in edtech and cohort courses: a recovery playbook

Failure rates, cadence design and channel mix for reducing involuntary churn in edtech and cohort courses.

Read

Flat fee vs revenue share: the real cost of dunning tools

Why percentage pricing gets expensive exactly when recovery starts working.

Read

Writing dunning copy that actually converts

Framing, length and the one action per message rule.

Read

Getting WhatsApp utility templates approved

What Meta rejects and how to phrase a payment-failure template that passes.

Read

Grace periods and access revocation timing

How long to keep the lights on after a failed charge.

Read

Reporting recovery to your board

The four numbers that make involuntary churn legible to non-operators.

Read

Forecasting recoverable revenue

Turning failure rate and decline mix into a defensible forecast.

Read

Channels

Expired Card Recovery: Recovering Failed Renewals on WhatsApp Before Invoices Cancel

Expired cards are the most recoverable failure in subscription billing. Here is the pre-expiry, update-link and WhatsApp architecture that converts 70-85% of them.

Read

Why WhatsApp Cloud API Generates a 90%+ Read Rate for Subscription Dunning

The channel economics, template rules and sequencing behind WhatsApp-based failed payment recovery — and where it beats email, SMS and in-app banners.

Read

WhatsApp Cloud API for failed payment recovery

Open rates, delivery windows, cost and compliance considerations for recovering failed subscription payments over whatsapp cloud api.

Read

Transactional email for failed payment recovery

Open rates, delivery windows, cost and compliance considerations for recovering failed subscription payments over transactional email.

Read

SMS for failed payment recovery

Open rates, delivery windows, cost and compliance considerations for recovering failed subscription payments over sms.

Read

In-app payment banner for failed payment recovery

Open rates, delivery windows, cost and compliance considerations for recovering failed subscription payments over in-app payment banner.

Read

Push notification for failed payment recovery

Open rates, delivery windows, cost and compliance considerations for recovering failed subscription payments over push notification.

Read

Voice outreach for failed payment recovery

Open rates, delivery windows, cost and compliance considerations for recovering failed subscription payments over voice outreach.

Read

Integrations

How to Intercept and Recover Failed Stripe Invoices via Signed HMAC Webhooks

A complete engineering blueprint for catching Stripe invoice.payment_failed events, verifying the signature safely, routing by decline code and recovering the invoice over email and WhatsApp.

Read

Preventing Involuntary Churn on Paddle: Merchant-of-Record Recovery Architecture

How to build a failed-payment recovery pipeline on Paddle when the merchant of record owns the customer relationship, the tax handling and the default dunning email.

Read

Automating Failed Subscription Recovery for Lemon Squeezy Stores

A practical architecture for recovering failed Lemon Squeezy subscription payments: webhook verification, decline routing, branded messaging and honest recovery reporting.

Read

Shopify Subscription Churn: Recovering Failed Charges Across Recharge and Native Checkout

How to recover failed Shopify subscription billing attempts across Recharge and native Subscription APIs, including queue timing, fulfilment cut-offs and multi-channel dunning.

Read

How to recover failed payments on Stripe

A technical guide to intercepting Stripe failed-payment webhooks, timing retries by decline code, and dispatching recovery messages over email and WhatsApp.

Read

How to recover failed payments on Lemon Squeezy

A technical guide to intercepting Lemon Squeezy failed-payment webhooks, timing retries by decline code, and dispatching recovery messages over email and WhatsApp.

Read

How to recover failed payments on Paddle

A technical guide to intercepting Paddle failed-payment webhooks, timing retries by decline code, and dispatching recovery messages over email and WhatsApp.

Read

How to recover failed payments on Shopify Subscriptions

A technical guide to intercepting Shopify Subscriptions failed-payment webhooks, timing retries by decline code, and dispatching recovery messages over email and WhatsApp.

Read

How to recover failed payments on WooCommerce Subscriptions

A technical guide to intercepting WooCommerce Subscriptions failed-payment webhooks, timing retries by decline code, and dispatching recovery messages over email and WhatsApp.

Read

How to recover failed payments on Chargebee

A technical guide to intercepting Chargebee failed-payment webhooks, timing retries by decline code, and dispatching recovery messages over email and WhatsApp.

Read

How to recover failed payments on Recurly

A technical guide to intercepting Recurly failed-payment webhooks, timing retries by decline code, and dispatching recovery messages over email and WhatsApp.

Read

How to recover failed payments on Braintree

A technical guide to intercepting Braintree failed-payment webhooks, timing retries by decline code, and dispatching recovery messages over email and WhatsApp.

Read

Benchmarks

The CFO's Guide to Involuntary Churn: How to Calculate Recoverable MRR

A finance-grade model for sizing involuntary churn: failure rate, at-risk MRR, realistic recovery bands by decline code, cost per recovered dollar and payback period.

Read

Involuntary churn benchmarks: what good recovery looks like

Typical failed-payment rates, recovery-rate benchmarks by decline code, and how to tell whether your dunning is underperforming.

Read

Failed payment rate benchmarks by business model

First-attempt failure rate benchmarks for subscription businesses, with the ranges that separate healthy recovery from a leaking billing stack.

Read

Dunning email open rate benchmarks

Open rate benchmarks for subscription businesses, with the ranges that separate healthy recovery from a leaking billing stack.

Read

Recovery rate by decline code

14-day recovery benchmarks for subscription businesses, with the ranges that separate healthy recovery from a leaking billing stack.

Read

Time-to-recovery benchmarks

Median time to recover benchmarks for subscription businesses, with the ranges that separate healthy recovery from a leaking billing stack.

Read

How many retries actually convert

Marginal recovery per attempt benchmarks for subscription businesses, with the ranges that separate healthy recovery from a leaking billing stack.

Read

Involuntary vs voluntary churn: the split

Share of total churn benchmarks for subscription businesses, with the ranges that separate healthy recovery from a leaking billing stack.

Read

What recovery should cost per recovered dollar

Cost per $1 recovered benchmarks for subscription businesses, with the ranges that separate healthy recovery from a leaking billing stack.

Read

Alternatives

Churn Buster alternative: RRLabs for failed payment recovery

An honest comparison of Churn Buster and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

Baremetrics Recover alternative: RRLabs for failed payment recovery

An honest comparison of Baremetrics Recover and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

Stripe Smart Retries alternative: RRLabs for failed payment recovery

An honest comparison of Stripe Smart Retries and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

Gravy alternative: RRLabs for failed payment recovery

An honest comparison of Gravy and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

ProfitWell Retain alternative: RRLabs for failed payment recovery

An honest comparison of ProfitWell Retain and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

Recurly Revenue Optimization alternative: RRLabs for failed payment recovery

An honest comparison of Recurly Revenue Optimization and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

Chargebee dunning alternative: RRLabs for failed payment recovery

An honest comparison of Chargebee dunning and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

Butter Payments alternative: RRLabs for failed payment recovery

An honest comparison of Butter Payments and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

Vindicia Retain alternative: RRLabs for failed payment recovery

An honest comparison of Vindicia Retain and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

Stunning alternative: RRLabs for failed payment recovery

An honest comparison of Stunning and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

FlyCode alternative: RRLabs for failed payment recovery

An honest comparison of FlyCode and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

Paddle Retain alternative: RRLabs for failed payment recovery

An honest comparison of Paddle Retain and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

Churnkey alternative: RRLabs for failed payment recovery

An honest comparison of Churnkey and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

Upzelo alternative: RRLabs for failed payment recovery

An honest comparison of Upzelo and RRLabs — pricing model, retry logic, messaging channels and what migrating actually involves.

Read

Best failed payment recovery software in 2026

How dunning and failed-payment recovery tools actually differ — pricing model, retry intelligence, channels and white-label — and how to pick one.

Read

Dunning software comparison: pricing, retries and channels

A side-by-side look at how dunning tools price themselves, time retries and reach customers, with the questions to ask on every demo call.

Read

Stripe Smart Retries: what it does well and where it stops

An engineering look at Stripe's built-in retry scheduler — what it optimises, what it cannot do, and when to layer a recovery engine on top.

Read

White-label dunning for agencies and platforms

How agencies resell failed-payment recovery under their own brand — domain, DKIM, WhatsApp sender, per-client workspaces and margin maths.

Read

Comparisons