Payment Recovery
Each payment fails for a different reason. Insufficient funds retries differently than an expired card. A do_not_try_again code skips retries entirely and sends a card update email instead. Recurflux maps the failure to the right recovery path — not a fixed 3-day cycle.
30+
Decline codes handled differently
0
Wasted retries on expired cards
100%
Configurable — no black box
Quick answer
Smart payment retry is a failed-payment recovery system that maps each decline code to a specific retry path. Recurflux handles 30+ codes individually — insufficient_funds retried on a different day than card_expired, which is never retried. Code-specific timing, frequency, and logic recover 50–65% of failed charges versus the 20–30% typical of generic daily retries.
Without it
Out of the box, most processors retry on a fixed schedule — roughly days 3, 5, 7, and 14 — regardless of why the payment failed. An expired card gets retried four times. It fails four times. Those retries consume payment attempts and, on some card networks, can trigger velocity checks that make the next real attempt harder to clear.
The customer gets a single "payment failed" email. No urgency. No escalation. No direct link to fix it. The recovery rate on that default behavior is 30–47%.
How it works
01
Your processor sends a decline code to Recurflux via webhook. The code is logged against the customer and charge.
02
Recurflux groups the code: permanent failure (don't retry), soft failure (retry on an adjusted schedule), or processor-side error (conservative retry).
03
Permanent failures go straight to a card update email — no retries attempted. Soft failures get a retry window matched to the failure type. No wasted attempts.
04
Each retry is recorded: attempted at, outcome, next scheduled retry, and current status — RETRYING, RECOVERED, AT RISK, or LOST.
You control
01
Set retry windows, attempt counts, and which codes go straight to email. Configurable per failure group in your settings.
02
Every failed charge in one table. Customer, amount, code, status, and next retry date. RECOVERED or LOST is always visible.
03
Expired cards get a "please update your card" flow. Insufficient funds get different copy. Each sequence is editable.
30+ failure codes handled differently. Connect and see smart retry working on your payments.
See how this works →FAQ
Stripe Smart Retries retries on their schedule with no visibility into the logic. You can't see why a specific charge was retried when it was, edit the timing, or set rules per failure type. Recurflux shows you which code triggered each retry, why it was timed the way it was, and lets you configure the rules yourself.
Recurflux separates 30+ decline codes into groups: permanent failures (expired_card, invalid_account, do_not_try_again) skip retries entirely and go straight to card update emails. Soft failures (insufficient_funds, card_velocity_exceeded) retry on a schedule adjusted to the failure type. Generic or processor-side failures (generic_decline, do_not_honor) follow a conservative retry path.
Yes. Each failure type has a configurable retry window in your Recurflux settings. You can set the number of retries, the spacing between them, and which failure types trigger card update emails instead of retries.
Smart retry is available for Stripe, Paddle, Razorpay, and Cashfree. RevenueCat recovery is email-only because Apple and Google own the retry cycle for App Store and Play Store billing.
The subscription continues as normal. Recurflux logs the recovery event, marks the charge as RECOVERED in your dashboard, and stops the dunning email sequence if one was running.
Works with your processor
Live in under 5 minutes