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

ParameterTypeRequiredDescription
merchantNameStringNoName of the merchant, eg. Shoprite
storeCodeLongYesThis code identifies the Store on Instore Tingg6, it is unique
storeNameStringYesThis is the name given to the Store when creating it on the Tingg portal. It can be any name chosen by the merchant
counterCodeStringYesThis is the counterCode provided when initiating the transaction. It identifies a counter or Till in the Store
amountDoubleYesThe amount of money paid by the customer towards the goods/service being provided
currencyCodeStringNoThe 3-char ISO currency code for the transaction e.g ZMW, USD, GHS
referenceStringNoThis is the same reference passed during payment initiation. It is propagated to the merchant's system for reconciliation
beepTransactionIDStringNoTingg transaction ID generated to track payments
payerTransactionIDStringNoWallet-based transactionID which is sent from the payer’s Mobile money wallet
merchantNotificationIDLongYesThis is the unique number from Tingg that identifies this IPN request
msisdnStringNoThis is the phone number the customer used to authorise a MoMo payment. It will be available for MoMo payments
narrationStringNoThe 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

ParameterTypeRequiredDescription
statusCodeIntegerNoThis code identifies the status of the request
merchantTransactionIDStringYesThis should be the same data.merchantTransactionID in the response of the call to initiate a payment in 3.4
statusDescriptionStringYesThis is the description of the status
callBackResponseIDStringYesThis 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

188Successfully acknowledged
189Failed acknowledgement