Blog
Notes on Stripe billing drift, webhook reliability, and reconciliation.
September 3, 2026
A customer just paid you and is staring at a paywall
Checkout redirects the customer back before your webhook has necessarily arrived — and if you granted access purely on the redirect, or purely on a webhook that silently isn’t configured in live mode, the gap between "paid" and "unlocked" is where angry support tickets come from.
September 3, 2026
Ghost customers: when a Stripe subscription goes bad without ever firing subscription.deleted
If your access logic only listens for customer.subscription.deleted, a subscription can sit unpaid for weeks — full access, zero revenue — and you’ll never get the event that was supposed to tell you.
September 3, 2026
Your Stripe webhook returns 200. That doesn’t mean it worked.
A 200 response only tells Stripe the request was received — not that your handler actually did anything with it. Here’s the failure mode, why it survives for months, and how to catch it.