Skip to content
Developer guide

Reliability

Idempotency, retries, webhook delivery and reconciliation — how not to charge twice and how not to miss a payment.

1 / 4

Idempotency

Send Idempotency-Key on every call that moves money. A repeat with the same key and the same body returns the original response with Idempotent-Replayed: true — no second charge. The same key with a different body is a bug on your side and we say so: 409 idempotency_conflict.

Derive the key from your order, not from the attempt. A fresh UUID per retry defeats the whole mechanism — that is exactly the request that produces a double charge. Something like order-88213-attempt-1 is stable across a timeout, a process restart and a token refresh.

The scope is your merchant, so a retry keeps deduplicating even if your bearer token rotated in between. Records live for 24 hours.

Key2Pay Developer documentationAPI v1
Documentation
Dashboard