Prompt
Stripe webhooks retrying too much
Latest observation
Oct 5, 2026
OpenAI APIWeb search: off
If Stripe webhooks are retrying too much, it usually means Stripe is not getting a successful 2xx response quickly and consistently from your endpoint.
Common causes
- Your webhook handler is returning non-2xx responses
- Your server is timing out before responding
- Your endpoint is throwing an exception
- Your app is returning 200 only after doing slow work
- Your endpoint URL is wrong or behind auth/firewall
- You’re verifying the signature incorrectly and rejecting valid events
What Stripe expects
Stripe wants your webhook endpoint to:
- Receive the event
- Validate it
- Quickly respond with 200 OK
- Do any heavy processing afterward in a background job/queue
Fix pattern
A good webhook flow is:
- Parse and verify the event
- Store the event id
- Enqueue processing
- Return
200 OKimmediately
Example
If your handler does database work, API calls, or email sending inline, move that to an async worker.
Important notes
- Stripe retries for up to 3 days in live mode.
- Retries happen on network failures, timeouts, and non-2xx responses.
- Duplicate events can happen, so your handler should be idempotent.
Things to check
- Stripe Dashboard → Developers → Webhooks → endpoint → delivery attempts
- Look at the exact HTTP status codes and response bodies
- Check server logs for crashes/timeouts
- Confirm your endpoint responds within a few seconds
If you want to stop retries temporarily
You can’t directly “turn off” Stripe retries for failed deliveries. You need to make the endpoint return a successful response or disable the endpoint in Stripe if needed.
If you want, I can help you debug this more specifically if you paste:
- your webhook code
- the status codes Stripe is receiving
- any error logs
Brands