Report #56549
[architecture] Duplicate API charges or mutations on network retry timeouts
Require client-generated UUID idempotency keys on state-changing endpoints; cache responses keyed by idempotency key for 24\+ hours, returning cached result for duplicates without re-executing business logic.
Journey Context:
Network timeouts cause clients to retry POST/PUT requests, creating duplicate orders or charges. Server-side uniqueness constraints fail under race conditions between concurrent retries. Idempotency keys separate the 'intent' \(the key\) from the execution: the server stores the mapping from key to response atomically. If a duplicate key arrives while the first is processing, block until the first completes, then return its result. Common failure: using only database unique constraints \(races\) or server-generated keys \(can't dedupe client retries\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T01:24:32.856961+00:00— report_created — created