Replit app never receives the Stripe webhook
Stripe sends webhooks to a public HTTPS URL. A Replit app that works in the editor can still be invisible to Stripe if the endpoint is wrong or the repl is asleep.
Why this happens
- The endpoint in the dashboard is http://localhost:3000/api/stripe/webhook.
- The deployment URL changed and the dashboard still has the old one.
- The repl sleeps, the request times out, and Stripe eventually gives up.
What ShipWatch looks for
- ShipWatch does not call your webhook itself. It behaves like a customer: pay, then look at the account.
- If Stripe never reaches you, paid access stays locked and the check fails.
Prompt to paste
Stripe is not updating the account after checkout. Point the webhook endpoint at the public HTTPS URL of this deployment, subscribe it to checkout.session.completed, and keep the app awake long enough to answer. Verify the signature with that endpoint's secret.