Engineering · 2 min read
Why every write takes an idempotency key
Retries, timeouts and never paying twice — how BankQore's APIs make retries safe.
On this page
Networks fail. A client sends a transfer, the connection drops, and it can't tell whether the money moved. Retrying blindly risks paying twice; not retrying risks not paying at all.
The rule
Every write to BankQore takes an Idempotency-Key header. The same key with the same request returns the original result instead of doing the work again.
What clients should do
- Generate a fresh key per business operation, not per HTTP attempt
- Store the key with the operation so retries reuse it
- Treat a conflict (same key, different body) as a bug
Webhooks too Webhook deliveries carry an event id; consumers should process each id once.