I've been building Lirova (failed-payment recovery for Stripe subscriptions) solo for a few months. Went live on Stripe Connect this week. Writing up the part I underestimated, because it wasn't the code.
Connect configuration is irreversible. Funds flow, liability model, onboarding type, account type - Stripe shows you a confirmation screen, warns you it can't be changed, and that's it. I spent longer on that screen than on some entire features. If you're planning a Connect platform, decide these before you touch code, not during signup:
who collects the payment (you or the connected account)
who carries risk and loss liability
Standard vs Express accounts - this shapes your whole onboarding UX
Two webhook endpoints, not one. Platform events (your own billing) and Connect events (your customers' accounts) are separate scopes with separate signing secrets. Mixing them up fails silently - the signature just doesn't verify and you're debugging the wrong thing.
The events nobody tells you to subscribe to. I take a success fee on recovered revenue. So I had to explicitly listen for charge.refunded, charge.dispute.created and charge.dispute.closed - without those, the fee never reverses. Billing a customer for revenue that later got refunded is the fastest possible way to lose your first customer.
Fail-closed beats fail-quiet on money. My terms version is a hard gate: bump the version and recovery halts for every account still on the old consent until they re-sign. It's an annoying failure mode. It's also the right one when you're holding write access to someone else's Stripe.
That last point is the theme. Recovery tooling asks a stranger to let you charge their customers. Every hour spent making that provably safe - read-only by default, explicit write grant, hard attempt caps, an audit line per state change - bought more than another feature would have.
It's live now, read-only on connect. If you run subscriptions on Stripe and have never actually pulled what failed payments cost you per month, you can see your own numbers without anything touching money: [ https://lirova.app ]
Curious from anyone who's run a Connect platform - what config decision did you get wrong and only find out later?
One thing I'd keep an eye on is whether customers are ultimately buying recovery rates or confidence.
The more responsibility a product takes over someone else's revenue, the more trust itself becomes part of the product—not just a prerequisite to using it.