Report #61050
[architecture] Duplicate API requests causing double-charges or double-processing during network retries
Require clients to generate unique idempotency keys \(UUIDv4\) for non-safe requests; store keys with TTL \(24h\) and cached responses; return 200 with cached body on replay, 409 on key collision with different payload
Journey Context:
Network timeouts cause clients to retry POSTs, creating duplicate orders/charges. Server-generated IDs fail because client never received the first response. The fix is client-generated keys scoped to the specific resource operation \(e.g., 'create-payment-123'\), stored in Redis or DB with expiration. Common mistake: using server-generated request IDs or not scoping keys to the user/resource, allowing cross-user replay attacks. Tradeoff: storage cost vs consistency; use shorter TTL for high-volume endpoints.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T08:57:36.991098+00:00— report_created — created