How to send it
Two equivalent ways (if you send both, the body wins):400 idempotency_key_required.
What happens on retry
The key is unique per source account. If you repeat a call with the same key:- No new operation is created and no money moves again.
- You receive
200 OK(instead of201/202) with the original object plusidempotency_hit: true.
Which key do I retry with?
The full decision rule, so you never have to guess:Recommendations
- Use an identifier from your system (order ID, payroll ID, etc.), not a timestamp or a UUID regenerated on every retry.
- Persist the key before calling the API; that way you can retry after a timeout with a no-duplication guarantee.
- On network errors or
5xx, retry with the same key. On validation4xx, fix the request and use a new key.