OPay Webhooks / Notifications
Once a transaction is completed, a webhook notification is automatically sent as a server-to-server POST request to the webhook URL configured on your dashboard.
This is entirely separate from the customer redirect. It is sent directly to your backend regardless of whether the customer returns to your site.
Important
Make sure your webhook URL is set in your dashboard settings to receive these notifications. Without it, your server will not be notified of completed transactions.
Successful Payment Webhook Payload
{
"data": {
"id": 44472,
"fees": "0.06",
"plan": null,
"type": "transaction",
"amount": "5",
"domain": "live",
"status": "success",
"channel": "opay_wallet",
"message": "SUCCESSFUL",
"paid_at": "2026-05-21 07:53:01",
"currency": "NGN",
"customer": {
"id": 12564,
"email": "lekan126@gmail.com",
"last_name": "Olalekan",
"first_name": "Olalekan",
"customer_code": "CUS_em8vszrv9tqlxfj",
"status": "active",
"domain": "live"
},
"reference": "SSW_17793463341440638",
"created_at": "2026-05-21T06:52:14.000000Z",
"business_id": 227,
"customer_id": 12564,
"requested_amount": "5"
},
"notify": "transaction",
"notifyType": "successful"
}Webhook Fields
| Field | Type | Description |
|---|---|---|
data.id | number | Transaction ID. |
data.fees | string | Transaction fees. |
data.plan | null | Plan value, if any. |
data.type | string | Event data type. |
data.amount | string | Transaction amount. |
data.domain | string | Transaction domain. |
data.status | string | Transaction status. Verify this before fulfilling orders. |
data.channel | string | Payment channel. |
data.message | string | Gateway or transaction message. |
data.paid_at | string | Payment timestamp. |
data.currency | string | Transaction currency. |
data.customer | object | Customer information. |
data.reference | string | Unique transaction reference. |
data.created_at | string | Transaction creation timestamp. |
data.business_id | number | Business ID. |
data.customer_id | number | Customer ID. |
data.requested_amount | string | Original requested amount. |
notify | string | Notification category. |
notifyType | string | Transaction outcome notification type. |
Notification Outcome
The notifyType field indicates the transaction outcome.
Possible values:
| Value | Meaning |
|---|---|
successful | Successful transaction notification |
failed | Failed transaction notification |
Always verify the status field inside data before fulfilling orders.