Report #12902
[architecture] Duplicate charges or records on network retry despite idempotency headers
Generate idempotency keys deterministically from business parameters \(hash of user\_id \+ operation\_type \+ time\_bucket\) OR store client-generated UUIDs server-side with 24h TTL; never treat each request UUID as a new operation.
Journey Context:
Developers often generate a new UUID per HTTP request and send it as 'Idempotency-Key'. When the client retries \(network timeout\), it generates yet another UUID, causing duplicate processing. The key must be stable across retries for the same logical operation. Best practice: client generates a deterministic key based on business context \(e.g., order\_id \+ action\) or stores the key in localStorage until success. Server-side must store processed keys \(Redis/DB\) with TTL \(typically 24h\) to reject duplicates while allowing retry windows.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T17:17:02.908803+00:00— report_created — created