Dynamic QR Based Payments
Dynamic QR API helps you create a QR code on the fly that you can use on bills, invoices and receipts. This lets you collect payments from customers offline when someone scans the QR via any UPI app.
Scan the QR code below from any UPI app (Google Pay, Bhim, MobiKwik, Phonepe, Paytm, etc) to see it in action.

This flow is to understand the integration process of Dynamic QR Based Payments of Mobikwik PG
Try it out in the API explorer
Getting Started With Dynamic QR API
Curl Request for API
curl -X POST \
https://api.zaakpay.com/api/payments/v1/upi/qr \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: 0747d079-ab40-45c1-8a1d-ff452201aa60' \
-d '{
"merchantIdentifier":"b19e8f103bce406cbd3476431b6b7973",
"orderId": "ZPUpiQrDirectTestv321",
"height":200,
"width":200,
"amount": 101,
"checksum" : "d51bd2966f2fa55316dc45105f5c0acffeed83e19f8671dac927e10ab997f4f2",
"productDescription": "bill Pay"
}'
{
"success": true,
"message": {
"code": "208",
"text": "Transaction in Processing state."
},
"data": {
"orderId": "ZPUpiQrDirectTestv321",
"zaakpayOrderId": "ZP5a81aa6777658",
"qrDetails": {
"url": "upi%3A%2F%2Fpay%3Fpa%3Dfinnovation.zaakpay%40hdfcbank%26pn%3Dnull%26tr%3DZP5a81aa6777658%26am%3D1.01%26cu%3DINR%26mode%3D01%26purpose%3D10%26orgid%3D-%26sign%3D-%26tn%3Dbill+Pay",
"imgData": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADIAQAAAACFI5MzAAAB70lEQVR42u2YUYrDMAxEDbqWwVcX+FoC78wooWlh/6SPXZo2NNULxJKlkdpxfjvGl/xd4mNYrL1jjLmOT6OhgWy8faxY+ATGPbLVEzdcHBDnUsLS0EI2XI0BG71tJDFJ5kxzE1FE4SOcdbKPWFcRJsR+Hm+5U0euw5WB+3AB77VQROClmwDCyagysA0EcVwMITIkJreNrwaijXILrGKBntAC6okjL8a0rCx8wXk6iHxjLO1cqgS5aCDwT77hDgqgPzSxlPC5WEOopqBHIRFsINg4mPnkCd2LjG4DcUoev6bw4bbRQRBR6h0dhjmF1hoI8kFajuZkzi0MdZByQgnyO6Lcu6OznuACWTGYjonPvYJSooynlgdrd8erA9YSzQ3ycNN+JUg90Z7hsey1ENuU2xay9GhmB1JefvcQY92aNpC9/TXZlRJNkKaJCzW1GOC7gmsJ4klFyjLeksIWwvaKbVPGL81Et4bUkpWXbE5qgdzIBgLnGMSR1UWzr9NBJBRLsqQ6fmR8MXFOWZojcTWGZodyclIs2JRYXJtj0W4gORGH2uzmJESFaiD7aunquJxQjj9nvjrC/rfVYoOrSKHoIYyh5kil4mPmqyY5C3N4ZKrck3ctIaQc8dcxod2KVEvyBxE9lFior58G8v2v5p+RH54tXiyk4qIJAAAAAElFTkSuQmCC",
"imgUrl": "https://api.zaakpay.com/api/payments/v1/upi/qr/image?mid=b19e8f103bce406cbd3476431b6b7973&width=200&height=200&data=upi%3A%2F%2Fpay%3Fpa%3Dfinnovation.zaakpay%40hdfcbank%26pn%3Dnull%26tr%3DZP5a81aa6777658%26am%3D1.01%26cu%3DINR%26mode%3D01%26purpose%3D10%26orgid%3D-%26sign%3D-%26tn%3Dbill+Pay&checksum=2f8d5ebf96faa8dfb06ba5fe859222adc3ef7efe4069958b7118c3a67713b590"
}
}
}
{
"success": false,
"message": {
"code": "128",
"text": "Order Id already processed."
},
"data": {
"orderId": "ZPUpiQrDirectTestv321",
"zaakpayOrderId": "ZP5a81aa6777658",
"qrDetails": {
"url": "upi%3A%2F%2Fpay%3Fpa%3Dfinnovation.zaakpay%40hdfcbank%26pn%3Dnull%26tr%3DZP5a81aa6777658%26am%3D1.01%26cu%3DINR%26mode%3D01%26purpose%3D10%26orgid%3D-%26sign%3D-%26tn%3Dbill+Pay",
"imgData": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADIAQAAAACFI5MzAAAB70lEQVR42u2YUYrDMAxEDbqWwVcX+FoC78wooWlh/6SPXZo2NNULxJKlkdpxfjvGl/xd4mNYrL1jjLmOT6OhgWy8faxY+ATGPbLVEzdcHBDnUsLS0EI2XI0BG71tJDFJ5kxzE1FE4SOcdbKPWFcRJsR+Hm+5U0euw5WB+3AB77VQROClmwDCyagysA0EcVwMITIkJreNrwaijXILrGKBntAC6okjL8a0rCx8wXk6iHxjLO1cqgS5aCDwT77hDgqgPzSxlPC5WEOopqBHIRFsINg4mPnkCd2LjG4DcUoev6bw4bbRQRBR6h0dhjmF1hoI8kFajuZkzi0MdZByQgnyO6Lcu6OznuACWTGYjonPvYJSooynlgdrd8erA9YSzQ3ycNN+JUg90Z7hsey1ENuU2xay9GhmB1JefvcQY92aNpC9/TXZlRJNkKaJCzW1GOC7gmsJ4klFyjLeksIWwvaKbVPGL81Et4bUkpWXbE5qgdzIBgLnGMSR1UWzr9NBJBRLsqQ6fmR8MXFOWZojcTWGZodyclIs2JRYXJtj0W4gORGH2uzmJESFaiD7aunquJxQjj9nvjrC/rfVYoOrSKHoIYyh5kil4mPmqyY5C3N4ZKrck3ctIaQc8dcxod2KVEvyBxE9lFior58G8v2v5p+RH54tXiyk4qIJAAAAAElFTkSuQmCC",
"imgUrl": "https://api.zaakpay.com/api/payments/v1/upi/qr/image?mid=b19e8f103bce406cbd3476431b6b7973&width=200&height=200&data=upi%3A%2F%2Fpay%3Fpa%3Dfinnovation.zaakpay%40hdfcbank%26pn%3Dnull%26tr%3DZP5a81aa6777658%26am%3D1.01%26cu%3DINR%26mode%3D01%26purpose%3D10%26orgid%3D-%26sign%3D-%26tn%3Dbill+Pay&checksum=2f8d5ebf96faa8dfb06ba5fe859222adc3ef7efe4069958b7118c3a67713b590"
}
}
}
For duplicate order id, API fails to return the new QR data and the same QR data based on provided order id will be returned.
Request Parameters
Member Name | Type | Description |
---|---|---|
orderId | String | Order Id for requested payment. |
amount | Integer | Amount for the transaction in Paisa. |
buyerEmail | String | Buyer email [Optional]. |
width | Integer | Width of QR [Optional default = 200] |
height | Integer | Height of QR [Optional default = 200] |
productDescription | String | Product Description for the payment |
checksum | string | Checksum generated on request json field values in the order[merchantIdentifier,orderId,amount, productDescription] |
Staging Credentials
Merchant Identifier : b19e8f103bce406cbd3476431b6b7973
Secret key : 0678056d96914a8583fb518caf42828a
Checksum Calculation Process
For both integrity & data-authenticity verification before sending data to the API, you need to
calculate a checksum of all the data that you send to MobiKwik Payment Gateway. We use an
HMACSHA-256 algorithm to calculate the checksum of ALL data that is posted to the API.
You need to calculate check on merchantIdentifier, orderId, amount and productDescription in below-provided format.
"b19e8f103bce406cbd3476431b6b7973"+"ZPUpiQrDirectTestv321"+"101"+"bill Pay"
"b19e8f103bce406cbd3476431b6b7973ZPUpiQrDirectTestv321101bill Pay"
d51bd2966f2fa55316dc45105f5c0acffeed83e19f8671dac927e10ab997f4f2
Response Parameters
Member Name | Type | Description |
---|---|---|
url | String | The API generated intent_url for the requested payment. |
imgUrl | String | The API endpoint to show QR Code of the payment request on the browser |
imgData | String | A base64 data of the generated QR Image. This can be used if you don’t require the API for showing QR. |
orderId | String | Order Id of payment sent from your end. |
zaakpayOrderId | String | The system generated transaction number for the requested orderId. There will be one to one mapping between orderId and zaakpayOrderId. |
responseCode | Integer | Response code for the API Request |
responseDescription | String | Response Description of the API Request |
Updated almost 3 years ago