Guides · Free check · $9 fix pack

Guides

Stripe webhook getting a 307 or 308 redirect

If the Stripe delivery log shows 307 or 308, your app answered with a redirect instead of handling the event. Stripe doesn't follow it.

Why it fails

Stripe's docs list 3xx as a delivery error: "We consider redirect responses to webhook requests as failures. Set the webhook endpoint destination to the URL resolved by the redirect." (Stripe docs).

Where 307/308 come from

The fix (2 minutes)

  1. Run curl -i -X POST https://yourdomain.com/api/webhooks/stripe. If you see location: in the response, that's your real URL.
  2. Paste that exact final URL into the endpoint in the Stripe Dashboard.
  3. Resend a failed event from the Dashboard and confirm a 2xx (a 400 for an unsigned curl is fine; that means verification is on).
Check yours in 10 seconds (free).

Paste your webhook URL. WebhookProof sends 3 harmless test requests and tells you whether Stripe can reach it and whether it rejects unsigned events.

Run the free check

FAQ

Why does my Stripe webhook get a 308 on Vercel?

Your URL redirects, usually apex to www (or the reverse), http to https, or a trailing-slash rule. Stripe treats redirects as failed deliveries.

Will Stripe follow the redirect?

No. Set the endpoint to the final URL the redirect points to.

What is the difference between 307 and 308 in Next.js?

In Next.js redirects, permanent: true uses 308 and permanent: false uses 307. Both are redirects, and Stripe fails both.

More guides

Stripe webhook not working? Check these 7 things in order · A customer paid but didn't get access. What went wrong? · Stripe webhook signature verification failed · Stripe webhook on Supabase Edge Functions: fixing 401s and signature errors

Last reviewed 2026-10-18. WebhookProof is an independent tool, not affiliated with Stripe, Inc. Quotes are from the linked documentation.