methodology
How we measure recovery.
Most dunning tools quote you a "recovery rate" without showing the math. We don't. These are the exact rules that produce the numbers in your ROI digest and on your dashboard.
What counts as a Recover-attributed recovery
A failed Stripe invoice is counted toward Recover's recovery total when all three of these are true:
- The invoice's most recent state transition is
paid. - At least one Recover Agent touch (SMS, voice, or email) was sent to the customer in the 7 days preceding that paid transition.
- The customer's recovery channel is set to whichever Recover channel reached the customer last before the paid transition.
If a customer paid the invoice without any Recover touch in the prior 7-day window — for example, Stripe's own retry succeeded silently — we don't count it. That recovery was Stripe's, not ours.
Attribution window
7 days, by default. Long enough to credit the agent for a customer who saw the SMS Tuesday and updated the card Sunday; short enough that we're not claiming credit for recoveries that happened weeks later for unrelated reasons.
The window is configurable per tenant if you have a reason to widen or tighten it — but the default is conservative on purpose. We'd rather understate our recovery rate than overstate it.
Recovery rate
Recovery rate = recovered invoices ÷ invoices in scope, where in scope means failed Stripe invoices belonging to a Recover-active job that closed (paid or written off) within the period.
We deliberately don't filter out small invoices, refused customers, or hard bounces. The denominator is everything we tried.
ROI multiple
ROI multiple = gross recovered ÷ subscription fee for the period. If your $99/mo plan recovered $1,200, that's a 12.1× multiple.
The number on your dashboard is gross — it doesn't deduct Stripe processing fees, because those fees would've been charged on the recovered payment anyway. We're measuring incremental revenue we brought back, not net margin.
Days-to-recovery (P50, P90)
P50 is the median wall-clock time between failure and successful payment for Recover-attributed recoveries. P90 is the 90th-percentile time. Both exclude invoices that haven't paid yet.
Industry data (Recurly, 2026) shows 90% of recoveries happen in the first 10 days; if your P50 is much higher than that we'll surface it as a quality signal in the report.
Channel attribution
When a customer received touches on multiple channels before paying, we attribute the recovery to the last channel they received before the paid transition. Not first-touch, not weighted: last-touch is the simplest rule that survives audit.
What you won't see in the numbers
- Recoveries from Stripe's own retry logic (we don't take credit for them).
- Customers who opted out via STOP, unsubscribe, or call-back-to-press-a-human. Their failed invoices are excluded from in-scope counts.
- Refunds and chargebacks initiated after recovery. If a recovered invoice gets refunded the same period, the recovery total is decremented.
Why this matters
The dunning industry has a credibility problem. Vendor-quoted recovery rates of 70% or 80% are usually the headline, with the methodology footnoted in a PDF you have to email to request. We publish the rules here, version them in the API response, and surface them in your monthly ROI digest. If you ever want to audit a specific recovery, every event is logged on the invoice timeline.
If our numbers ever feel off compared to what you see in Stripe, the methodology version on every report tells you exactly which rules produced them.