Why a single schedule underperforms
A fixed day-1, day-3, day-7 cadence treats an expired card the same as a temporary balance shortfall. One of those will never succeed on retry alone; the other usually will, if you wait for money to land.
Routing by decline code costs nothing to implement and is the single highest-leverage change most billing stacks can make.
The mapping we run by default
Insufficient funds retries at 48 hours with email plus WhatsApp. Expired card waits 72 hours and leads with an update link. Do-not-honor retries at 36 hours with an alternate-card prompt. Authentication required retries at 24 hours, WhatsApp first, because the confirmation is time-sensitive.
Each retry is paired with a message written for that exact reason, so the customer is told what actually happened rather than receiving a generic payment-failed notice.
How much of your involuntary churn is recoverable?
Compares a 40% single-channel baseline against the 63.8% RRLabs platform average.
- At risk / month
- $5,600
- Extra recovered / month
- $1,333
- Annualised, less $3,000 plan
- $12,994
Implementing it safely
Derive the delay from the decline code at ingestion time and persist it on the event, so a scheduler restart cannot lose the schedule.
Cap attempts at three to four across 7-10 days. Beyond that, incremental recovery is under two points and issuer-level throttling becomes a real risk.