localhost — then replay any captured event into your handler as many times as it takes. No re-triggering charges in the Stripe dashboard, no tunnel that dies when your laptop sleeps.
1
Create an endpoint and grab its ingest URL
The ingest URL is permanent and stays visible in your dashboard.
2
Register your Stripe signing secret
Now events arrive with a Point a Stripe webhook endpoint at
verificationState of verified instead of unattempted. The secret is read from stdin, never a shell argument.https://wbhk.my/<token> and send a test event. See verify inbound signatures for the details.3
Forward the live stream to your dev server
listen --forward re-delivers each captured event to your local URL, cursor-gated at least once. Reconnects resume from the durable cursor, so a dropped wifi connection doesn’t lose events.4
Replay while you iterate
Broke your handler on
invoice.paid? Don’t fish in the Stripe dashboard — replay the one you already captured, editing the body first to exercise an edge case.--edit re-delivers modified bytes, so Stripe’s original signature won’t re-verify against them —
expected when you’re testing your handler’s logic rather than its verification. Forward without
--edit to replay the exact signed bytes.