Test Stripe webhooks
on localhost in 60 seconds

Get a stable HTTPS URL on your own domain that Stripe can reach. No random subdomains. No re-pasting URLs into the Stripe dashboard every morning.

Stable URL forever Your own domain HTTPS by default Free plan, no credit card
$ tunnelto add hooks.acme.dev 4242
DNS verified
Certificate issued
Tunnel active: https://hooks.acme.dev
# paste https://hooks.acme.dev/webhook into Stripe dashboard
Stripe events flowing to localhost:4242

The problem with localhost webhooks.

Stripe needs a public URL

Webhook delivery is server-to-server. Stripe’s infrastructure has to make an HTTPS request to you, which means your local localhost:4242 can’t receive anything until something exposes it to the public internet.

Random URLs break every reconnect

Most free tunneling tools give you a random URL each time you start them. Every morning you re-paste a new URL into the Stripe dashboard, retest, and hope nothing else broke. The Stripe CLI has its own forwarding mode but only works while the CLI is open.

HTTPS is mandatory

Stripe rejects webhook endpoints that aren’t HTTPS. Setting up a self-signed cert and a reverse proxy on your laptop is overkill. tunnelto handles TLS automatically. HTTPS works out of the box.

Stable URLs let you share a setup

If your QA team or another developer needs to send test events at your branch, you both want a URL that doesn’t change. With a custom domain on tunnelto, that URL is yours and stays the same across reconnects, restarts, and reboots.

Three steps to receive Stripe webhooks.

1

Start your tunnel

Run tunnelto add hooks.acme.dev 4242 from your terminal. tunnelto verifies DNS and issues a certificate automatically.

2

Configure Stripe

In the Stripe dashboard, add a webhook endpoint pointing to https://hooks.acme.dev/webhook. Pick the events you want.

3

Iterate

Trigger test events from the Stripe dashboard or CLI. They’re delivered to your local server in real time. Set breakpoints, add logs, debug freely.

Works with any webhook provider.

Stripe

Test checkout.session.completed, invoice.paid, subscription lifecycle, and Stripe Connect events end-to-end on localhost.

GitHub

Receive push, pull request, workflow, and issue events. Build webhook-driven CI checks, bots, and automations against your local code.

Slack

Test slash commands, interactive components, and Events API payloads from Slack workspaces straight to your dev machine.

Twilio

Receive SMS and voice webhooks (TwiML) on localhost without ever deploying. Iterate on call flows in real time.

Shopify

Test app webhooks for orders, products, and customers against your local app server with a stable HTTPS URL Shopify will accept.

Anything else

If a service can deliver an HTTPS webhook, tunnelto can route it to your local server. Custom integrations welcome.

Common questions.

Can Stripe webhooks reach my localhost?

Not directly. Stripe needs a public HTTPS URL it can reach from the internet. tunnelto gives you a public HTTPS URL on your own domain that forwards traffic to your local server, so Stripe can deliver webhook events straight to your machine.

Why use a custom domain instead of a random subdomain?

Stripe stores the webhook endpoint URL in your dashboard. If your tunnel URL changes every reconnect (as it does with most free localhost tunnels), you have to update the Stripe dashboard every time. With tunnelto’s free custom domain, the URL stays the same forever. Configure once, use forever.

Does this work for GitHub, Slack, Twilio, and other webhooks?

Yes. Any service that delivers HTTPS webhooks works the same way: paste your tunnelto URL into their webhook configuration and the events will be delivered to your local server. We’ve tested with Stripe, GitHub, Slack, Twilio, Shopify, Discord, Linear, and many more.

How do I verify Stripe webhook signatures?

Use Stripe’s SDK exactly as you would in production: read the Stripe-Signature header, call stripe.webhooks.constructEvent() with the raw body and your webhook secret. tunnelto forwards request bodies and headers unchanged, so signature verification works identically to production.

Stop re-pasting URLs into the Stripe dashboard.

Get a stable HTTPS URL on your own domain in under a minute. Free plan, no credit card.

Create your free account