Skip to content

Event reference

Every webhook has the same envelope; data depends on the event.

{ "id": "…", "event": "…", "mode": "LIVE", "created_at": "2026-11-10T09:00:00Z", "data": { … } }

Objects in data have the same shape as the API returns for them: see the API reference for every field.

Event When data
payment.succeeded A card checkout was paid The checkout, as GET /merchant/checkouts/{reference}
payment.succeeded A gift was collected on a subscription source "PLAN", subscription, kind, amount, due_date, paid_at
payment.succeeded A payment was made on your giving page or a payment link source "WEB", id, amount, method, payer_name, paid_at
payment.failed A card checkout failed The checkout
Event When data
account_number.created A number was issued The account number
account_number.paid A payment reached the expected amount, or any payment to a permanent number account_number, amount, paid_at, sender_name, sender_bank
account_number.underpaid A one-off number received less than expected As account_number.paid
account_number.overpaid A one-off number received more than expected As account_number.paid
account_number.expired A one-off number expired The account number

Example account_number.paid:

{
"id": "7d2f1a7e-4c1b-4e8e-9a3c-2f5b8c1d9e40",
"event": "account_number.paid",
"mode": "LIVE",
"created_at": "2026-11-10T09:00:00Z",
"data": {
"account_number": {
"reference": "INV-1001",
"kind": "ONE_OFF",
"account_number": "9900000001",
"expected_amount": "45000.00",
"received_amount": "45000.00",
"status": "PAID"
},
"amount": "45000.00",
"paid_at": "2026-11-10T09:00:00Z",
"sender_name": "Emeka Eze",
"sender_bank": "GTBank"
}
}
Event When data
customer.funded A payer’s account number was paid customer_id, external_reference, account_number, amount, paid_at, sender_name, sender_bank
customer.charged A payer’s wallet was charged The charge, as returned by …/webpayer/charge-wallet
Event When data
payment_request.paid The member approved The request
payment_request.declined The member declined The request
Event When data
mandate.updated A mandate was authorised, failed or ended The mandate
mandate.debited A debit succeeded or failed reference (the mandate’s) and debit: its id, amount, status, target_date, message, settled_at
Event When data
remittance.completed A transfer between your wallets finished The transfer, with its lines
wallet.credited Money came into one of your wallets wallet_id, direction, amount, fee, narration, source, transfer_id, available_balance, at, and counterparty when known
wallet.debited Money left one of your wallets As wallet.credited
Event When data
test You sent a test from the portal message