Back to feed
Dev.to
Dev.to
6/20/2026
The Postgres error code that makes Stripe webhooks idempotent: 23505

The Postgres error code that makes Stripe webhooks idempotent: 23505

Short summary

Stripe's at-least-once webhook delivery creates idempotency problems: duplicate events cause double-charged subscriptions or duplicate emails. Insert each event_id into a Postgres table with a unique constraint, then catch error code 23505 (unique violation) for atomic duplicate detection—no SELECT-then-INSERT races or locks. Return 200 on duplicates to stop Stripe retries.

  • Stripe webhook at-least-once delivery risks duplicate processing without explicit deduplication
  • Use Postgres unique constraint on event_id and catch error 23505 for atomic duplicate detection
  • Return 200 on duplicates to halt Stripe retries—simpler than queues, locks, or Redis

Generated with AI, which can make mistakes.

Is this a good recommendation for you?

Explore more