Aller au contenu principal

Contenu des webhooks

Chaque webhook est une requête POST dont le corps JSON décrit le paiement, clés par ordre alphabétique. Vérifiez sa signature sur le corps brut, avant de le décoder.

payment.updated
{
"amount": "5000.00",
"created_at": "2026-11-06T10:15:30+00:00",
"currency": "XOF",
"description": "Commande #1234",
"event": "payment.updated",
"failure_message": "",
"link_metadata": {"order_id": "1234"},
"link_title": "Commande #1234",
"metadata": {},
"payment_id": "3f2a9c1e-5b7d-4e8a-9c21-7d4e5f6a8b90",
"phone": "22670123456",
"provider": "orange_bf",
"reference": "8d1c3b2a-7e6f-4a5b-9c8d-0e1f2a3b4c5d",
"status": "SUCCEEDED",
"test": false
}
ChampTypeDescription
eventtexteToujours payment.updated
payment_ididentifiantIdentifiant du paiement, pour GET /api/v1/payments/{id}/
statustexteSUCCEEDED, PENDING, CANCELED, FAILED ou EXPIRED (voir ci-dessous)
amounttexte décimalMontant payé par le client, avant commission
currencytexteXOF
phonetexteNuméro du client, format international sans « + »
providertexteorange_bf, moov_bf ou sank_money_bf
referencetextePaiement direct : votre reference. Lien de paiement : identifiant interne de la visite
descriptiontexteDescription du paiement ou titre du lien
metadataobjetPaiement direct : votre metadata
link_titletexteLien de paiement uniquement : titre du lien
link_metadataobjetLien de paiement uniquement : les metadata du lien (votre identifiant de commande)
failure_messagetexteRaison d'un échec, vide sinon
testbooléentrue pour un paiement simulé ou un webhook de test
created_atdateCréation du paiement (ISO 8601)
Retrouver la commande

Paiement direct : utilisez reference. Lien de paiement : utilisez link_metadata, où vous avez placé votre identifiant de commande à la création du lien.

Statuts​

StatutSignificationDéfinitifAction
SUCCEEDEDPaiement confirmé, argent encaisséouiValider la commande
PENDINGEn attente de la confirmation du clientnonAttendre
CANCELEDRefusé par l'opérateur ou abandonnéouiProposer un nouvel essai
FAILEDÉchec techniqueouiProposer un nouvel essai
EXPIREDAucune confirmation dans l'heureouiProposer un nouvel essai

Avant d'expirer, un paiement en attente est vérifié auprès de l'opérateur : si le client a bien payé, il passe en SUCCEEDED, jamais en EXPIRED.