The benchmark
Median time to recover for subscription businesses lands at 1d 14h. Anything above four days indicates the first touch is missing the customer entirely.
Benchmarks are only useful segmented. Blended numbers average a healthy expired-card bucket against a failing do-not-honor bucket and tell you nothing actionable.
How to read your own number
Break the metric down by decline code first, then by channel, then by attempt number. The weakest cell is almost always where the fixed-schedule cadence is misfiring.
Hold the measurement window constant at 14 days. Longer windows flatter the number by counting customers who would have returned anyway.
Closing the gap
Route retries by decline code, add a high-open second channel, and write copy that names the actual reason for the failure.
Log model, latency and recovery score on every message so improvements are attributable rather than seasonal.