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

statusCodestatusDescription
183Payment accepted i.e. Success
180Payment Rejected i.e. Failed
217Payment manually Accepted
216Payment 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"
	}
}