Webhook notify
WEBHOOK URL
When TENN's payment transaction is completed, the transaction result will be notified via a callback to the backend webhook URL configured by the merchant. In case of notification failure, our notification retry intervals are 1 second, 2 seconds, 3 seconds, 3 seconds, 3 seconds, 3 seconds, and 3 seconds. We will make a total of 7 attempts to callback, and if it still fails, we will not continue further notifications.Upon receiving the callback request, please respond with the body content as "success" to acknowledge our callback.
When merchant transfer is completed, the transfer result will be notified via a callback to the backend webhook URL configured by the merchant. In case of notification failure, our notification retry intervals are 10 second, 60 seconds, 300 seconds, 1800 seconds, 3600 seconds, 7200 seconds, and 14400 seconds. We will make a total of 7 attempts to callback, and if it still fails, we will not continue further notifications.Upon receiving the callback request, please respond with the body content as "success" to acknowledge our callback.
Callback Explanation
We will initiate an HTTP POST callback request. For example, if the webhook URL you have configured in TENN is ' http://webhookUrl ,' we will make a request to that address with the callback parameter in the request body.
Callback parameter example
Payment transaction data
{
"transactionNumber": "531472826763399264",
"merchantOrderNumber": "23010606031589339852",
"merchantId": "38",
"merchantUserId": "191007085751puid63902811",
"amount": 20000,
"tennAccount": "111 111 1104",
"status": 5,
"paymentCreateTime": 1672984996000,
"paymentCompletionTime": 1672985250000,
"notifyUrl": "http://webhookUrl",
"msg": "Successful",
"userName":"lu Favor yi"
}
| PARAMETER | TYPE | DESCRIPTION |
|---|---|---|
| transactionNumber | String | TENN Transaction Order Number |
| merchantOrderNumber | String | Merchant order ID |
| merchantId | String | Merchant Id |
| amount | Long | Payment Amount (Currency in Kobo, equivalent to cents) |
| tennAccount | String | TENN Account Number |
| status | Integer | 5: Success (Payment successful) 6: Failed (Payment failed) 7: Reversed (The merchant initiated a refund and it was successful) 8: Closed (If the user doesn't complete the payment within two hours, it will automatically close) |
| paymentCreateTime | Long | Payment create time (timestamp) |
| paymentCompletionTime | Long | Payment completion time (timestamp) |
| notifyUrl | String | Webhook URL (configured in TENN) |
| msg | String | Message |
| userName | String | TENN user's name |
Merchant transfer data
{
"id": "202504180951100491062548",
"merchantId": 5,
"merchantType": 0,
"merchantName": "Test2",
"merchantOrderNumber": "58ae35f5-7812-4af6-9dfb-0bedfea40937",
"amount": 10000,
"status": 30004,
"productNumber": 17,
"originatorAccountNumber": "*** *** 2867",
"beneficiaryAccountNumber": "*** *** 6826",
"beneficiaryAccountName": "lu yi",
"beneficiaryFirstName": "lu",
"beneficiaryMiddleName": NULL,
"beneficiaryLastName": "yi",
"beneficiaryPhone": "1520100615",
"beneficiaryUserId": "490183343736922171",
"beneficiaryBvn": "15201006156",
"beneficiaryLevel": 3,
"currency": "NGN",
"createdTime": "2025-04-18 09:51:12.000",
"expireTime": "2025-04-18 10:51:12.000",
"transferTime": "2025-04-18 09:51:15.000",
"updateTime": "2025-04-18 09:51:16.000",
"notifyUrl": "www.baidu.com",
"msg": "Transfer was successful",
"splitFlag": NULL,
"batchNumber": NULL
}
| PARAMETER | TYPE | DESCRIPTION |
|---|---|---|
| id | String | TENN transfer id |
| merchantId | Integer | merchant id |
| merchantType | Integer | merchant type |
| merchantName | String | merchant name |
| merchantOrderNumber | String | merchant order number |
| amount | Long | transfer amount (Kobo) |
| status | Integer | 30001:Initiate, 30003:Pending, 30004:Successful, 30005:Failed, 30007:Closed |
| originatorAccountNumber | String | Originator account number |
| beneficiaryAccountNumber | String | Beneficiary account number |
| beneficiaryAccountName | String | Beneficiary account name |
| beneficiaryFirstName | String | Beneficiary first name |
| beneficiaryMiddleName | String | Beneficiary middle name |
| beneficiaryLastName | String | Beneficiary last name |
| beneficiaryPhone | String | Beneficiary phone |
| beneficiaryUserId | String | Beneficiary user id |
| beneficiaryBvn | String | Beneficiary bvn |
| beneficiaryLevel | Integer | Beneficiary level |
| currency | String | Currency |
| createdTime | LocalDateTime | Create time |
| expireTime | LocalDateTime | ExpireTime |
| transferTime | LocalDateTime | Transfer time |
| updateTime | LocalDateTime | Update time |
| notifyUrl | String | Webhook url |
| msg | String | Msg |
| splitFlag | Boolean | If the transfer amount is too large, the order will be split. |
| batchNumber | String | The batch number of order splitting. |