Skip to main content
L’en-tête Idempotency-Key est obligatoire sur POST /cashin et POST /cashout.
C’est une contrainte assumée, au prix d’un peu de friction. Sans elle, un délai réseau suivi d’un rejeu de votre côté produirait deux opérations, et rien dans la requête ne permettrait de distinguer un rejeu d’une seconde opération légitime portant les mêmes montants.

Une clé par intention, pas par requête HTTP

Si votre appel échoue sur un délai réseau et que vous réessayez, réutilisez la même clé : Djonanko renverra la réponse initiale au lieu de créer une seconde opération.
Une clé constante — "paiement", "transfert" — ne protège rien et fera échouer votre deuxième opération en 409. Dérivez-la de votre identifiant de commande : cmd-184, paie-2026-03-0042.

Les quatre cas

Le dernier cas mérite une explication : réutiliser une clé avec un corps différent n’est pas un rejeu, c’est presque toujours une clé constante. Rejouer l’ancienne réponse vous ferait croire que votre nouvelle opération a été acceptée alors qu’elle n’a jamais été soumise.
Les clés sont conservées 24 heures. Au-delà, la même clé est traitée comme nouvelle. C’est largement suffisant pour couvrir une reprise après incident ou une file de messages qui se vide.

Quand réessayer, et avec quelle clé

Sur un 503 ou un 504, réessayez impérativement avec la même clé. L’opération a peut-être été enregistrée avant la coupure : une nouvelle clé en créerait une seconde.

externalReference : la seconde ceinture

En complément de l’idempotence par en-tête, externalReference est votre identifiant d’opération. Il est unique sur votre compte :
Le details vous donne l’opération existante et son statut : vous pouvez décider quoi faire sans appel supplémentaire.
Les deux mécanismes se complètent et couvrent des fautes différentes.
  • Idempotency-Key protège contre le rejeu technique : même intention, deux requêtes.
  • externalReference protège contre le double déclenchement métier : deux intentions créées par erreur pour la même commande, par exemple par deux consommateurs d’une file de messages.
Renseignez les deux.

Exemple avec reprise