How much do failed payments cost you? A method using only Stripe data
Most subscription businesses know their churn rate. Far fewer know how much revenue they lose each month to payments that simply did not go through. The good news is that Stripe already holds everything needed to find out. This method takes an afternoon in a spreadsheet, or a few minutes with a tool that reads Stripe for you.
Choose a period and a window
Pick a period long enough to smooth out monthly noise: the last 90 days is a good start. Then fix a recovery window, the time an invoice has to be paid after its first failure to count as recovered. Thirty days is a common choice. An invoice that failed less than 30 days ago is still in progress and should be counted separately.
Step 1: the failed amount
List the subscription invoices created in the period that had at least one failed payment attempt. In Stripe, that means invoices with a failed charge or payment intent, which you can find from the payments list filtered on failures, or through the invoice.payment_failed events. Count each invoice once, even if it failed several times, and sum the amount due.
failed amount = sum of amounts due on invoices with at least one failure
Step 2: what Stripe recovered on its own
Among those invoices, take the ones that ended up paid within the recovery window. If you have not added any follow-up of your own yet, this is what Stripe's retries and emails, plus customers acting on their own, brought back.
baseline recovery rate = amount paid within the window ÷ failed amount
This rate is your reference. Any future recovery effort should be judged by how much it adds on top of it, ideally with a holdout group.
Step 3: what is still open
Invoices that failed recently and are still open are not lost yet. They are the revenue you can still act on today. Note their amount and their age, because the chances of recovery fall as days pass without contact.
Step 4: what is lost
The rest is lost: invoices past the window that were never paid, marked uncollectible, or voided when the subscription was canceled.
lost amount = failed amount − recovered amount − amount still open
Step 5: the subscriptions that ended
The lost invoice is only part of the cost. When a subscription is canceled after failed retries, you also lose every future payment from that customer. Count the subscriptions canceled in the period that had an unpaid invoice at the time, and add up their monthly value.
recurring revenue lost each month = sum of monthly prices of subscriptions canceled for non-payment
This is the figure that compounds. A customer lost to an expired card in January is still missing from your revenue in December.
A fictitious example
To make the steps concrete, here is an invented business, with round numbers chosen for readability. It does not describe any real company.
- Over 90 days, invoices with at least one failure total 10,000 francs.
- Within 30 days, 6,000 francs of them are paid. The baseline recovery rate is 60 percent.
- 1,000 francs are still open, all from the last two weeks.
- The remaining 3,000 francs are lost.
- Twelve subscriptions were canceled with an unpaid invoice, worth 900 francs a month together.
For that business, the question is not whether failed payments matter, but how much of the 1,000 francs still open and of the next quarter's losses a better process could bring back, and how to measure it without fooling itself.
Where to find each number in Stripe
- Failed invoices: the payments list in the Dashboard, filtered on failed payments, or an export of invoices with their attempt count. Through the API, list invoices and keep those whose payment intent recorded an error.
- Paid within the window: on each invoice, compare the date it was paid (status_transitions.paid_at) with the date of the first failure.
- Still open: invoices with the status open whose first failure is younger than your window.
- Uncollectible or voided: the invoice statuses uncollectible and void, which you should cross-check with the subscription's cancellation date.
- Canceled subscriptions: subscriptions with the status canceled in the period, with their price and the invoice that was unpaid when they ended.
Keep the export. Running the same calculation every quarter, with the same rules, is what makes the numbers comparable over time. Write the rules at the top of the sheet, so that whoever repeats it next quarter does not change them by accident.
Pitfalls to avoid
- Counting each failed attempt instead of each invoice. A single invoice can fail several times.
- Including one-off invoices or invoices that were voided for unrelated reasons.
- Forgetting refunds and disputes. A payment recovered and then refunded was not recovered.
- Comparing a quarter with a 30-day window to a month where most invoices are still open.
- Treating past due subscriptions as active revenue indefinitely.
Doing it without the spreadsheet
Reclaiva's free audit runs exactly this calculation on the last 90 days of your Stripe account, read-only, per currency: failed amount, what Stripe recovered on its own, what is still open, what is lost and the subscriptions that ended. It shows only measured amounts, never a forecast, and changes nothing in your account. For the causes behind the numbers, read why Stripe payments fail.
