Callback
A merchant will receive a POST request from Cellulant to their HTTP listener. This request contains the final status of a transaction. Below is the format of the callback.
{
"function": "BEEP.pushPaymentStatus",
"countryCode": "KE",
"payload": {
"credentials": {
"username": " ",
"password": " "
},
"packet": {
"statusCode": "183",
"statusDescription": "Payment has been accepted.",
"payerTransactionID": "yourUniqueID",
"beepTransactionID": "ourUniqueID",
"receiptNumber": "NFJ0PCRF1A",
"receiverNarration": "Processed successfully",
"function": "BEEP.pushPaymentStatus",
"msisdn": "254720799443",
"serviceCode": "MPESAB2C",
"paymentDate": "2019-06-19 15:32:33.0",
"clientCode": "CELLULANT",
"extraData": ""
}
}
}
Response Status Codes
statusCode | statusDescription |
---|---|
183 | Payment accepted i.e. Success |
180 | Payment Rejected i.e. Failed |
217 | Payment manually Accepted |
216 | Payment manually Rejected |
IPN acknowledgment
Our API expects an acknowledgment response with statusCode 188 after we post the IPN to the callback URL.
This response will stop our retry mechanism which retries every 30sec within 24 hours of the transaction.
{
"authStatus": {
"authStatusCode": 131,
"authStatusDescription": "API call doesn't need authentication"
},
"results": {
"beepTransactionID": "ourUniqueID",
"payerTransactionID": "yourUniqueID",
"statusCode": "188",
"statusDescription": "Response was received"
}
}
Updated 12 months ago