Webhook Specification
Your system must expose a webhook endpoint to receive transaction notifications from DCS. After receiving a notification, validate the X-Auth-Signature, settlementId, and accountNumber, then respond a
Webhook Logic Requirements:
Validate X-Auth-Signature using SHA512(Client-Id:ClientSecret).
Confirm settlementId and accountNumber exist and are valid.
Return:
"success" (code 00) if valid.
"duplicate transaction" (code 01) if settlementId already processed.
"rejected transaction" (code 02) if request is invalid.
"system failure, retry" (code 03) for internal errors.
POST
https://api-staging.providusbank.com/v1/webhook
Webhook Request (From DCS)
{
"sessionId": "000004210301180534806663649508",
"accountNumber": "9977581536",
"tranRemarks": "FROM UBA/...",
"transactionAmount": "1",
"settledAmount": "1",
"feeAmount": "0",
"vatAmount": "0",
"currency": "NGN",
"initiationTranRef": "kjhghjk",
"settlementId": "202210301006807600001432",
"sourceAccountNumber": "2093566866",
"sourceAccountName": "CASAFINA CREDIT-EASY LOAN",
"sourceBankName": "UNITED BANK FOR AFRICA",
"channelId": "1",
"tranDateTime": "2021-03-01 18:06:20"
}
Webhook Responses:
Success:
{
"requestSuccessful": true,
"sessionId": "99990000554443332221",
"responseMessage": "success",
"responseCode": "00"
}
Duplicate:
{
"requestSuccessful": true,
"sessionId": "99990000554443332221",
"responseMessage": "duplicate transaction",
"responseCode": "01"
}
Rejected:
{
"requestSuccessful": true,
"sessionId": "99990000554443332221",
"responseMessage": "rejected transaction",
"responseCode": "02"
}
System Failure:
{
"requestSuccessful": true,
"sessionId": "99990000554443332221",
"responseMessage": "system failure, retry",
"responseCode": "03"
}
Sample Implementation
curl -X POST https://your-webhook-endpoint.com/webhook \
-H "Client-Id: dGVzdF9Qcm92aWR1cw==" \
-H "X-Auth-Signature: BE09BEE831CF262226B426E39BD109f2AF84DC63076D4174FAC78A2261F9A3D6E59744983B8326B69CDF2963FE314DFC89635CFA37A40596508DD6EAAB09402C7" \
-H "Content-Type: application/json" \
-d '{
"sessionId": "000004210301180534806663649508",
"accountNumber": "9977581536",
"tranRemarks": "FROM UBA/...",
"transactionAmount": "1",
"settledAmount": "1",
"feeAmount": "0",
"vatAmount": "0",
"currency": "NGN",
"initiationTranRef": "kjhghjk",
"settlementId": "202210301006807600001432",
"sourceAccountNumber": "2093566866",
"sourceAccountName": "CASAFINA CREDIT-EASY LOAN",
"sourceBankName": "UNITED BANK FOR AFRICA",
"channelId": "1",
"tranDateTime": "2021-03-01 18:06:20"
}'
The above command returns JSON structured like this:
{
"requestSuccessful": true,
"sessionId": "99990000554443332221",
"responseMessage": "success",
"responseCode": "00"
}
Last updated