Instant Payment Notifications (IPN)
This feature will enable you to set up your callback URL whenever customers make payments.
By default, you will receive a notification for both Failed and Successful Transactions, but you can specify to receive only successful transactions ONLY.
Setup
To receive IPNs:
- Sign in on JengaHQ (opens in a new tab).
- Select the Settings menu on the sidebar.
- Choose the IPN submenu. You will be able to see a list of configured IPNs.
- Click New IPN button on the top right of the dashboard.
- Fill in your callback URL, username and password.
Being a Fintech Company, we embrace security in all aspects, and we provide a mechanism for you to get assured the notification is coming from the right source. We expect your URL to have a Basic Auth authentication, which will authenticate as per your username and password registered alongside your URL.
Request Format
Below is the description of the payload that is sent to the URL you specify
Example payload
POST /send/callback/here HTTP/1.1
Host: myserver.com
Content-Type: application/json
Authorization: Basic 67ew8n31me
{
"callbackType": "IPN",
"customer": {
"name": "John Doe",
"mobileNumber": "254712345678",
"reference": "071648816466242"
},
"transaction": {
"date": "2023-10-11 14:15:20",
"reference": "328411183176",
"paymentMode": "CARD" || "MPESA" || "PWE" || "EQUITEL" || "PAYPAL" ,
"amount": 150,
"currency": "KES",
"billNumber": "INVZCF",
"servedBy": "EQ",
"additionalInfo": "CARD",
"orderAmount": 150,
"serviceCharge": 5.25,
"orderCurrency": "KES",
"status": "SUCCESS" || "FAILED",
"remarks": "00:Approved"
},
"bank": {
"reference": "328411183176",
"transactionType": "C",
"account": null
}
}
Below is the description of the payload that is sent to the URL you specify
Field Name | Description | Type |
---|---|---|
callbackType | The type of callback. In this case IPN | String |
customer.name | The customer name | String |
customer.mobileNumber | The customer mobile number | String |
customer.reference | The customer reference | String |
transaction.date | The transaction date | String |
transaction.reference | The transaction reference | String |
transaction.paymentMode | The transaction mode of payment | String |
transaction.amount | The transaction amount | Double |
transaction.currency | The transaction currency e.g., KES | String |
transaction.orderCurrency | The initial currency of the order (e.g., KES, EUR, USD etc.).If the order currency is USD or EUR, it can be automatically converted to the transaction currency e.g KES if payment is made using Mpesa. | String |
transaction.billNumber | The transaction bill number. This is the account number | String |
transaction.orderAmount | The transaction order amount | Double |
transaction.serviceCharge | The transaction service charge | Double |
transaction.servedBy | String | |
transaction.additionalInfo | Any additional information for the transaction | String |
transaction.status | Transaction status | String |
transaction.remarks | Transaction remarks | String |
bank.reference | The bank system reference id | String |
bill.transactionType | The bill transaction type | String |
bill.account | The bill account number | String |