Webhook Event Catalogue
Comprehensive catalogue of all webhook event types dispatched by rafiqPay. Subscribe to specific event types in the Developer Dashboard or listen to all events with a wildcard.
Event Naming Convention
Checkout Events (3)
Sent when a customer completes payment on a Hosted Checkout session.
Sent when an open Checkout Session passes its expiry timestamp without payment.
Sent when a customer paid after the checkout closed. The money is credited; you decide whether to fulfil the order or refund.
Charges Events (4)
Sent whenever a payment succeeds: checkout by card or bank transfer, a saved-card charge, a mandate debit, a transfer into a customer bank account, or an accepted held transfer.
Sent when a payment is started and waiting for the provider to confirm it.
Sent when a card, wallet, or USSD payment attempt fails.
Sent when a charge is refunded in full or in part.
Refunds Events (2)
Sent when a refund has been settled back to the customer.
Sent when the payment provider does not give the money back. The amount returns to your available balance.
Held transfers Events (4)
Sent when a bank transfer to a checkout’s one-time account was the wrong amount, or arrived after the account closed, and is held for you to accept or return. The checkout is not paid.
{
"id": "evt_01J9KANZU",
"object": "event",
"type": "transfer.held",
"createdAt": "2026-11-07T10:42:05.000Z",
"mode": "live",
"data": {
"object": {
"id": "htr_01J9KANZU7",
"object": "held_transfer",
"status": "held",
"reason": "mismatch",
"currency": "NGN",
"expectedAmount": "35000.00",
"receivedAmount": "30000.00",
"senderName": "AMINA BELLO",
"chargeId": "pay_01J9KANZU881",
"checkoutSessionId": "cs_live_kanzu_99182736",
"acceptedChargeId": null,
"returnPayoutId": null,
"note": null,
"createdAt": "2026-11-07T10:42:00.000Z",
"decidedAt": null
}
}
}Sent when a held transfer is accepted. It is credited as a new charge (acceptedChargeId), with the usual fee, and charge.succeeded is sent too.
{
"id": "evt_01J9KANZU",
"object": "event",
"type": "transfer.accepted",
"createdAt": "2026-11-07T10:42:05.000Z",
"mode": "live",
"data": {
"object": {
"id": "htr_01J9KANZU7",
"object": "held_transfer",
"status": "accepted",
"reason": "mismatch",
"currency": "NGN",
"expectedAmount": "35000.00",
"receivedAmount": "30000.00",
"senderName": "AMINA BELLO",
"chargeId": "pay_01J9KANZU881",
"checkoutSessionId": "cs_live_kanzu_99182736",
"acceptedChargeId": "pay_01J9KANZU902",
"returnPayoutId": null,
"note": null,
"createdAt": "2026-11-07T10:42:00.000Z",
"decidedAt": "2026-11-07T11:05:00.000Z"
}
}
}Sent when the payout that returns a held transfer to the customer has been paid.
{
"id": "evt_01J9KANZU",
"object": "event",
"type": "transfer.returned",
"createdAt": "2026-11-07T10:42:05.000Z",
"mode": "live",
"data": {
"object": {
"id": "htr_01J9KANZU7",
"object": "held_transfer",
"status": "returned",
"reason": "mismatch",
"currency": "NGN",
"expectedAmount": "35000.00",
"receivedAmount": "30000.00",
"senderName": "AMINA BELLO",
"chargeId": "pay_01J9KANZU881",
"checkoutSessionId": "cs_live_kanzu_99182736",
"acceptedChargeId": null,
"returnPayoutId": "trf_01J9KANZU",
"note": null,
"createdAt": "2026-11-07T10:42:00.000Z",
"decidedAt": "2026-11-07T11:05:00.000Z"
}
}
}Sent when a transfer that did not match was sent straight back to the sender by the bank. Nothing is held and there is nothing to do.
{
"id": "evt_01J9KANZU",
"object": "event",
"type": "transfer.refunded_by_provider",
"createdAt": "2026-11-07T10:42:05.000Z",
"mode": "live",
"data": {
"object": {
"id": "htr_01J9KANZU7",
"object": "held_transfer",
"status": "refunded_by_provider",
"reason": "mismatch",
"currency": "NGN",
"expectedAmount": "35000.00",
"receivedAmount": "30000.00",
"senderName": "AMINA BELLO",
"chargeId": "pay_01J9KANZU881",
"checkoutSessionId": "cs_live_kanzu_99182736",
"acceptedChargeId": null,
"returnPayoutId": null,
"note": "The bank returned the money to the sender.",
"createdAt": "2026-11-07T10:42:00.000Z",
"decidedAt": null
}
}
}Saved cards Events (2)
Sent when a customer agrees at checkout to save their card with your business. The card number and token are never included.
{
"id": "evt_01J9KANZU",
"object": "event",
"type": "payment_method.saved",
"createdAt": "2026-11-07T10:42:05.000Z",
"mode": "live",
"data": {
"object": {
"id": "pm_01J9KANZU3",
"object": "payment_method",
"type": "card",
"status": "active",
"brand": "Visa",
"last4": "4081",
"expiry": "09/28",
"customerEmail": "amina@kanzu.ng",
"customerId": "cus_amina_01",
"consentedAt": "2026-11-07T10:15:00.000Z",
"createdAt": "2026-11-07T10:15:04.000Z"
}
}
}Sent when a saved card is removed. It can never be charged again.
{
"id": "evt_01J9KANZU",
"object": "event",
"type": "payment_method.removed",
"createdAt": "2026-11-07T10:42:05.000Z",
"mode": "live",
"data": {
"object": {
"id": "pm_01J9KANZU3",
"object": "payment_method",
"type": "card",
"status": "removed",
"brand": "Visa",
"last4": "4081",
"expiry": "09/28",
"customerEmail": "amina@kanzu.ng",
"customerId": "cus_amina_01",
"consentedAt": "2026-11-07T10:15:00.000Z",
"createdAt": "2026-11-07T10:15:04.000Z"
}
}
}Customers Events (2)
Sent when a new customer profile is created.
Sent when a customer profile or saved checkout preference is updated.
Invoices Events (6)
Sent when an invoice is made, by you or by a subscription period.
Sent when an invoice is finalized and dispatched to a customer.
Sent when a partial payment is recorded against an invoice.
Sent when an invoice balance reaches ₦0.00.
Sent when an invoice passes its due date with an unpaid balance (zero late fees applied).
Sent when an invoice is voided.
Subscriptions Events (7)
Sent when a customer subscription starts.
Sent when a new period of the subscription is billed.
Sent 3 days before a free trial ends.
Sent when an invoice of the subscription passes its due date unpaid.
Sent when a subscription is paused.
Sent when a paused subscription is resumed.
Sent when a subscription is canceled.
Usage Events (1)
Sent when a customer crosses a configured metered usage threshold.
Wallets and mandates Events (5)
Sent when the customer approves a mandate with the code from their bank. Debit it once readyToDebit is true.
{
"id": "evt_01J9KANZU",
"object": "event",
"type": "mandate.active",
"createdAt": "2026-11-07T10:42:05.000Z",
"mode": "live",
"data": {
"object": {
"id": "mnd_01J9KANZU",
"object": "mandate",
"mode": "live",
"status": "active",
"readyToDebit": false,
"customerId": "cus_amina_01",
"customerName": "Amina Bello",
"customerEmail": "amina@kanzu.ng",
"description": "Kanzu Academy monthly fees",
"currency": "NGN",
"maxAmount": "300000.00",
"amountDebited": "0.00",
"amountLeft": "300000.00",
"startDate": "2026-11-10",
"endDate": "2027-11-09",
"bankName": "GTBank",
"accountLast4": "6789",
"approvalUrl": null,
"lastDebitedAt": null,
"createdAt": "2026-11-07T09:30:00.000Z"
}
}
}Sent when a mandate is cancelled. It can never be debited again.
{
"id": "evt_01J9KANZU",
"object": "event",
"type": "mandate.cancelled",
"createdAt": "2026-11-07T10:42:05.000Z",
"mode": "live",
"data": {
"object": {
"id": "mnd_01J9KANZU",
"object": "mandate",
"mode": "live",
"status": "cancelled",
"readyToDebit": false,
"customerId": "cus_amina_01",
"customerName": "Amina Bello",
"customerEmail": "amina@kanzu.ng",
"description": "Kanzu Academy monthly fees",
"currency": "NGN",
"maxAmount": "300000.00",
"amountDebited": "50000.00",
"amountLeft": "250000.00",
"startDate": "2026-11-10",
"endDate": "2027-11-09",
"bankName": "GTBank",
"accountLast4": "6789",
"approvalUrl": null,
"lastDebitedAt": "2026-11-10T08:00:12.000Z",
"createdAt": "2026-11-07T09:30:00.000Z"
}
}
}Sent when an embedded wallet receives an inflow.
Sent when an embedded wallet is debited for a payment, mandate, or transfer.
Sent when a temporary checkout virtual account expires.
Transfers Events (10)
Sent when the payout provider says a payout was paid. Carries your merchantReference when you gave one.
Sent when a payout failed and the money returned to your available balance. Carries your merchantReference when you gave one.
Sent when a transfer requires two-person checker approval in the Dashboard.
Sent when a payout has been sent and the provider has not yet confirmed it.
Sent when the payout provider confirms the money reached the receiving bank.
Sent when a transfer fails terminally and funds are reversed to available balance.
Sent when a transfer batch passes checker approval.
Sent when a transfer batch is declined by an approver.
Sent when a solo business payout enters a cool-off hold window.
Sent when a held solo business payout finishes its wait window and is dispatched.
Security and ownership Events (8)
Sent when an Owner schedules a looser security policy change (24-hour hold).
Sent when a security policy change or rafiqPay clamp/override takes effect.
Sent when the Owner initiates an ownership transfer to a team member.
Sent when the recipient accepts the ownership transfer and the hold starts.
Sent when the ownership transfer hold finishes and roles swap.
Sent when an ownership transfer is cancelled.
Sent when a verified director or shareholder submits an Owner recovery request.
Sent when rafiqPay Risk & Compliance approves or declines an Owner recovery case.
Connect Events (3)
Sent when a connected sub-merchant KYB status or profile changes.
Sent when additional verification documents are required for a connected account.
Sent when settlements to a connected account are paused.
Cards Events (8)
Sent when a cardholder profile is created.
Sent when a virtual or physical card is issued.
Sent when a card status or spend limit changes.
Sent when a physical card is handed to the courier with tracking details.
Synchronous JIT webhook (2,000ms deadline) asking your server to approve or decline a card swipe.
Asynchronous notification emitted after a card authorization is approved or declined.
Sent when an authorization hold is reversed or adjusted.
Sent when a card authorization settles and posts to the wallet ledger.
Webhooks Events (1)
A test event, sent when you press Send a test in the dashboard (Developers, Webhooks).