Stripe webhook 400 Bad Request checklist
A practical checklist for production Stripe webhook endpoints that return 400 errors after a Payment Link or Checkout Session completes.
Fulfilment checks
- Separate signature-verification failures from JSON parsing, routing, database, and fulfilment errors in private logs.
- Check that the deployed endpoint receives the raw body and Stripe-Signature header before any framework middleware mutates the payload.
- Use the live webhook signing secret for the exact endpoint shown in the Stripe Dashboard.
- Return 2xx only after accepting the event, then retry failed delivery steps idempotently without charging or emailing twice.
Free helper
Paste the visible Stripe-Signature header shape and get server-side verification checks.
Paid pack
Get the private Stripe webhook starter pack for fulfilment, signatures, product mapping, and delivery logs.
Operational Stripe launch checklist only. Confirm live settings in your own Stripe Dashboard before accepting payments.