Report #88060
[architecture] Preventing duplicate processing in distributed payment webhooks
Require client-generated idempotency keys with server-side storage TTL matching your maximum retry window \(typically 24-72 hours\), not just UUIDs
Journey Context:
Teams often generate idempotency keys as random UUIDs without expiration, causing unbounded storage growth and lookup degradation. The key must be generated by the client \(sender\) and stored by the server with a TTL that exceeds the client's retry horizon—if the client retries for 24 hours, the server must retain the key for at least that long. Without this alignment, retries after TTL expiration create duplicates. Alternative 'exactly-once' solutions like distributed transactions \(2PC\) introduce unacceptable availability penalties and coupling.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T06:23:44.143738+00:00— report_created — created