Skip to content
PorchOps
free leak audit

You didn't lose those customers. Their cards expired and nobody called.

I'll go through the last 90 days of your Stripe account by hand and tell you what failed payments actually cost you, with the recovery emails already written. It takes me an afternoon and costs you nothing. The page is yours whether we ever speak again.

Read-only access that you create and revoke yourself. I take two at a time.

what lands in your inbox

One page, and everything on it is about your account.

  • The number

    Gross value of failed recurring charges from the last 90 days that were never recovered, net of what Stripe's own retries already brought back. The retry figure sits right beside it, because that part of your setup is working and you should be able to see it.

  • Where it leaked

    Every failure broken out by cause, count, and dollars, with a judgment on which ones were realistically recoverable. Two charts: dollars by days since the charge failed, and your ten most valuable leaked customers by lifetime value, initials only.

  • The churn line

    How many of your cancellations in the window ended with a failed final charge. Your dashboard filed those as churn. Some meaningful share of them never chose to leave, and that line usually lands harder than the total does.

  • Three recovery emails, in your voice

    A day-one note that reads like it came from you rather than from a billing system, a heads-up that goes out before a card is about to expire, and a win-back for subscribers who already lapsed. Ready to paste and send.

  • A method and privacy footer

    What I accessed and what I didn't, how to revoke the key, and how to have the working data deleted. It's there so you never have to ask.

how the access works

You hold the key the whole time.

You create a restricted API key inside your own Stripe dashboard, read-only, scoped to charges, invoices, subscriptions, and customers. You watch it get used. You revoke it the moment the audit lands. A read-only key can't write anything back to your account, and card numbers are never exposed through the Stripe API to anyone, including you.

If that's still more access than you want to hand a stranger, two other routes get to the same page. You can export the payments and subscriptions CSVs yourself and send those, so I get no access at all. Or we put thirty minutes on the calendar and fill the page in over a screen share, where the data never leaves your machine.

A one-page mutual NDA is on offer if you want one, and you shouldn't have to ask for it first.

whether this is worth your afternoon

Who this actually works for.

This is for operators billing recurring revenue directly through Stripe. It works best when chasing failed payments isn't anybody's actual job, and when you've never sat down and measured what those cards cost you.

If you bill through a platform that runs its own recovery on top of Stripe, the audit still works, but I'll say up front that your rails may already be catching most of it. The first question I'll ask you is whether you bill through Stripe directly, and I'd rather establish that before either of us spends time.

If the number comes back small, you got a free clean bill of health, and I'll tell you the one thing worth keeping an eye on.

the usual questions

Reasonable doubts.

Cards fail sometimes. Don't people just fix it?
Plenty do, and those ones were never the problem. The rest never saw the bounced charge, never got a note that read like a person wrote it, and stopped being customers without ever deciding to. Nothing in your dashboard calls that churn, so it doesn't get counted. The audit counts it.
Stripe Smart Retries already handles this.
Retries hit the same dead card on a schedule. Recovery is reaching the person on day one, and by day three most customers have already mentally cancelled. The audit shows you what the retries didn't catch, separately from what they did.
My platform has built-in dunning.
It sends the template nobody reads. The audit measures what that dunning actually recovered against what walked out anyway. If your platform is doing well, the audit proves it for free.
We already have a bookkeeper for this.
The bookkeeper records the failed charge. Nobody is paid to go get it back. The audit shows the gap between recorded and recovered.
I don't have time for another thing.
You do nothing. You create the key, and I come back with the number and the drafted emails. Nothing changes on your side unless you decide to send them.
Why is this free? What's the catch?
I'm building an agent that runs failed-payment recovery nightly, and to build it right I need real data from real operators rather than survey answers. The audit is the demo, because the product demo doesn't exist yet. Pretending to be bigger than I am is the only version of this that ends badly, so I'd rather just say that.
What happens after you send it?
We spend fifteen minutes on a call walking through the page. If you want this run for you on an ongoing basis, I'll tell you what that costs. If you don't, you keep the audit and the emails and we're square.

Send me a read-only key and I'll hand you your number.

I'm running these by hand while the product that does it nightly gets built, which is why the cap is two at a time and why the answer comes from me rather than from a form. Tell me your company and whether you bill through Stripe directly.

Get your number