Last verified 2026-07-13
stripe webhook delivered multiple times duplicate order
The actual problem
Idempotency gaps cause double fulfillments or double unlocks after webhook retries.
Do this
- Key fulfillment on event.id (or payment_intent id) in a durable store.
- Return 200 only after idempotent write succeeds.
- Replay a test event twice in Stripe CLI; confirm one side effect.
- Keep a demo unlock path for local without forwarding.
Tools for this job
- Stripe CLI
Forward and replay webhooks locally
Related intents
Also from Cashkiln
- Netkiln — paste a payouts CSV → public fee health page ($19 unlock)
- Tillkiln — scan checkout leaks before you buy more ads
- Free leak checklist — six operator checks
Deep-dive report — $29
Self-serve checklist expansion for this query family. PayPal Checkout. No call.