Événements
Listez et renvoyez les événements webhook liés à votre compte.
Un événement est créé à chaque changement d'état. Il correspond directement à la charge utile d'un webhook.
Endpoints
| Méthode | Chemin | Description |
|---|---|---|
GET | /events | Lister les événements |
GET | /events/{id} | Récupérer un événement |
POST | /events/{id}/resend | Renvoyer un événement |
L'objet Event
idstringfacultatifIdentifiant unique de l'événement,
evt_….eventstringfacultatifType d'événement (par exemple
payment.succeeded, transfer.succeeded). Le champ s'appelle event : il n'y a pas de champ type.dataobjectfacultatifCharge utile de l'événement, qui contient l'objet de la ressource.
livemodebooleanfacultatiftrue pour un événement live, false pour un événement de la sandbox.pending_webhooksintegerfacultatifNombre de livraisons de cet événement à vos endpoints encore en attente.
api_versionstringfacultatifLa version d'API dans laquelle
data a été sérialisé, par exemple 2026-10-11.requestobjectfacultatifPas la requête que vous avez envoyée :
id vaut null, et idempotency_key n'est pas votre en-tête Idempotency-Key.createddatetimefacultatifDate d'enregistrement de l'événement, ISO 8601. Le champ s'appelle
created : il n'y a pas de champ created_at.{
"id": "evt_Nq8rT3vK6mX2pW9cB5jL7hYs",
"event": "payment.succeeded",
"data": {
"id": "trx_CSUGajfv9xh0XQ5wu2lx",
"reference": "order-1042",
"status": "succeeded"
},
"livemode": true,
"pending_webhooks": 0,
"api_version": "2026-10-11",
"request": {
"id": null,
"idempotency_key": "idem_kZ3qP8mWvL2xR7tB5nY4hC6dF9jS1aG0"
},
"created": "2026-01-15T10:31:00+00:00"
}
C'est l'enveloppe que livre un webhook, champ pour champ.
GET /events renvoie ses éléments sous events, et non sous items.
Un nommage uniforme
Chaque type d'événement suit la notation pointée resource.action (par exemple
payment.succeeded, refund.created, link.created). Il n'y a aucune exception.
Catalogue des événements
Paiements
| Type | Déclencheur |
|---|---|
payment.created | Paiement initialisé, en attente du client. Pour un paiement préparé (deferred: true), à son activation |
payment.processing | Paiement soumis au prestataire |
payment.succeeded | Paiement validé. Fonds encaissés. |
payment.failed | Paiement échoué ou refusé |
payment.cancelled | Annulé par le client ou le marchand |
payment.expired | La fenêtre de paiement s'est fermée avant la fin |
payment.attempt_failed | Une tentative a été refusée sur-le-champ ; le paiement est de nouveau pending, data.attempt dit pourquoi |
payment.split.processing | Une tranche de paiement est en cours de traitement |
payment.split.succeeded | Une tranche de paiement a réussi |
payment.split.failed | Une tranche de paiement a échoué |
Remboursements
| Type | Déclencheur |
|---|---|
refund.created | Remboursement créé |
refund.processing | Remboursement soumis à l'opérateur. Live uniquement : un remboursement sandbox démarre en processing |
refund.succeeded | Remboursement confirmé |
refund.failed | Remboursement échoué |
refund.cancelled | Arrêté par Wajub avant son envoi. Aujourd'hui, un tel remboursement est annoncé en refund.failed |
Transferts
| Type | Déclencheur |
|---|---|
transfer.created | Transfert créé |
transfer.processing | Soumis à l'opérateur |
transfer.succeeded | Livré |
transfer.failed | Échoué |
transfer.cancelled | Arrêté avant son envoi. Aujourd'hui, un tel payout est annoncé en transfer.failed |
Clients
| Type | Déclencheur |
|---|---|
customer.created | Création |
customer.updated | Modification |
customer.deleted | Suppression |
Bénéficiaires
| Type | Déclencheur |
|---|---|
beneficiary.created | Création, par l'API, à la volée par un transfert, ou dans le Dashboard |
beneficiary.updated | Modification |
beneficiary.deleted | Suppression |
Factures
| Type | Déclencheur |
|---|---|
invoice.created | Création |
invoice.updated | Modification (envoyée, marquée payée, annulée, …) |
invoice.deleted | Suppression |
Liens de paiement
| Type | Déclencheur |
|---|---|
link.created | Création |
link.updated | Modification |
link.deleted | Suppression |
link.expired | Son expiry_date est passée |
Comptes (Sync / sous-comptes)
| Type | Déclencheur |
|---|---|
account.created | Sous-compte créé |
account.updated | Sous-compte modifié : par PUT /accounts/{id}, par POST /accounts/{id}/token qui remet une invitation annulée en pending, ou par un versement Lite (last_payout_at). Non envoyé quand rien ne change |
account.deauthorized | Sous-compte supprimé ou accès révoqué |
account.payment_activated | Capacité de paiement activée |
account.payment_suspended | Capacité de paiement suspendue |
Litiges
| Type | Déclencheur |
|---|---|
dispute.created | Nouveau litige ouvert |
dispute.updated | Litige modifié |
dispute.won | Tranché en votre faveur |
dispute.lost | Tranché contre vous |
dispute.closed | Terminé. Envoyé juste après dispute.lost, jamais après dispute.won |
dispute.deadline_approaching | Échéance dans deux jours, litige toujours ouvert. Envoyé une seule fois |
dispute.deleted | Supprimé |
Endpoints de webhook
| Type | Déclencheur |
|---|---|
webhook_endpoint.created | Endpoint enregistré |
webhook_endpoint.updated | Endpoint modifié |
webhook_endpoint.deleted | Endpoint supprimé |
Autres
| Type | Déclencheur |
|---|---|
balance.updated | Le solde disponible, en attente ou réservé a changé |
fee.received | Des frais de plateforme ont été perçus (Sync) |