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
  1. The rule
  2. What clients should do
Two bank accounts joined by an arrow with a successful transfer.

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.

See BankQore in action

A 45-minute walkthrough shaped around your institution.