Instant Payment Notification (IPN)
Following a successful payment initiation and authorization by the customer, Tingg will receive a
notification from the customer’s Financial Service Provider (FSP). Tingg will process this transaction
and can, in turn, send a callback request to the merchant’s system.
The merchant will have to configure their system URL for receiving IPN from Tingg. Please take note
of the response expected from the merchant’s callback. In cases where the merchant’s system is not
able to process the IPN, Tingg will automatically retry sending the notification again with a backoff
policy.
URL: To be configured by the merchant
HTTP Method: POST
Content-Type: application/json
IPN Request Body
Parameter | Type | Required | Description |
---|---|---|---|
merchantName | String | No | Name of the merchant, eg. Shoprite |
storeCode | Long | Yes | This code identifies the Store on Instore Tingg6, it is unique |
storeName | String | Yes | This is the name given to the Store when creating it on the Tingg portal. It can be any name chosen by the merchant |
counterCode | String | Yes | This is the counterCode provided when initiating the transaction. It identifies a counter or Till in the Store |
amount | Double | Yes | The amount of money paid by the customer towards the goods/service being provided |
currencyCode | String | No | The 3-char ISO currency code for the transaction e.g ZMW, USD, GHS |
reference | String | No | This is the same reference passed during payment initiation. It is propagated to the merchant's system for reconciliation |
beepTransactionID | String | No | Tingg transaction ID generated to track payments |
payerTransactionID | String | No | Wallet-based transactionID which is sent from the payer’s Mobile money wallet |
merchantNotificationID | Long | Yes | This is the unique number from Tingg that identifies this IPN request |
msisdn | String | No | This is the phone number the customer used to authorise a MoMo payment. It will be available for MoMo payments |
narration | String | No | The payment’s narration |
{
"merchantName": "Shoprite",
"storeCode": 75,
"storeName": "Store Name",
"counterCode": 19943,
"counterName": "Name of Counter",
"amount": 500,
"currencyCode": "ZMW",
"reference": "reference-123",
"beepTransactionID": "121313",
"payerTransactionID": "REU2QZKDNK",
"statusCode": 140,
"statusDescription": "successfully processed",
"msisdn": "260975469186",
"narration": "Customer has paid ZMW 500 to your store",
"merchantNotificationID": 112
}
IPN Response Body
Parameter | Type | Required | Description |
---|---|---|---|
statusCode | Integer | No | This code identifies the status of the request |
merchantTransactionID | String | Yes | This should be the same data.merchantTransactionID in the response of the call to initiate a payment in 3.4 |
statusDescription | String | Yes | This is the description of the status |
callBackResponseID | String | Yes | This should be the same value as the merchantNotificationID in the callback request |
{
"statusCode": "188",
"merchantTransactionID": "90000013",
"statusDescription": "transaction acknowledged successfully",
"callBackResponseID": "1323"
}
IPN Response Status Code
188 | Successfully acknowledged |
189 | Failed acknowledgement |
Updated 12 months ago