Create Mandate
Create Mandate API
Purpose : This API can be used to initiate a new mandate registration. Using this API, the merchant's server posts mandate configuration details (like frequency, amount, and validity) to Zaakpay’s server. The mandate can be created using UPI Collect, Intent, or QR modes.
Possible values for paymentMode : upiCollectMandate, upiIntentMandate, upiQrMandate
- Request Type : POST
- Endpoint : /transactU?v=12
Request Attributes
These are the Request Attributes of Create Mandate API
Response Attributes
These are the Response Attributes of the Create Mandate API.
Sample Request & Response
For reference, below are the sample CURL request and Response of API . It takes all required attributes to hit the Create Mandate API.
Sample Request
We have created a sample request of Create Mandate API with all required attributes and their values, in the order in which they’ll be sent to the API.
The resulting checksum calculated should be posted to the Zaakpay API along with other required attributes.
curl --location 'https://api.zaakpay.com/transactU?v=12' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/126.0.6478.35 Mobile/15E148 Safari/604.1' \
--header 'Cookie: JSESSIONID=2D2391BACFC94FF27B5A67AF2D7AB21F.163.156' \
--data-urlencode 'data={"merchantIdentifier":"f9176XXXXXXXXb9041d164f0","encryptionKeyId":"PXXXXXXXXXXewv","merchantIpAddress":"127.12.0.0.1","showMobile":"true","mode":"0","orderDetail":{"orderId":"ZPXXXXXXX67","amount":"100","currency":"INR","productDescription":"Transaction","email":"[email protected]","txnDate":"2026-3-5","phone":"89XXXXX488","purpose":3},"paymentInstrument":{"paymentMode":"upiCollectMandate","upiMandate":{"action":"create","payerVpa":"dvbsb7K8C++I51tZ6C4XXXXXXE6MwOcn0dIDpPNPWBm589fHXXXXXXrjlrhAtUzFdvXll0aNhXXXXXLgjewTW0EGOe8bngbP/RIRhQoc3pXwr4fU4N3WXXXXXzLwQZjan609CZcpXXXXXBy+B1hgxOwxFrKWwKj9oaax/EWwaJ9k0y7QTPjt4I7fH0YjrAT5QCsU6mDV65aZPoODeB0lYCeXXXXXKphxFexYkLUQphheXXXXXXWyYMOdadEgbq5Wy7hTsO8kTU2Aai8sVHHmdS9Bg==","mandateConfig":{"firstDebit":true,"firstDebitAmount":100,"frequency":"Adhoc","startDate":"2026-03-05","endDate":"2026-04-10"}}}}' \
--data-urlencode 'checksum=d1a039bXXXX43d4bfb07f74236XXXXX91a8b135b8e44'Sample Request
{
"merchantIdentifier": "f9176XXXXXXXXb9041d164f0",
"encryptionKeyId": "PXXXXXXXXXXewv",
"merchantIpAddress": "127.12.0.0.1",
"showMobile": "true",
"mode": "0",
"orderDetail": {
"orderId": "ZPXXXXXXX67",
"amount": "100",
"currency": "INR",
"productDescription": "Transaction",
"email": "[email protected]",
"txnDate": "2026-3-5",
"phone": "89XXXXX488",
"purpose": 3
},
"paymentInstrument": {
"paymentMode": "upiCollectMandate",
"upiMandate": {
"action": "create",
"payerVpa": "dvbsb7K8C++I51tZ6C4XXXXXXE6MwOcn0dIDpPNPWBm589fHXXXXXXrjlrhAtUzFdvXXXXXXXXXLgjewTW0EGOe8bngbP/RIRhQoc3pXwr4fU4N3WXXXXXzLwQZjan609CZcpXXXXXBy+B1hgxOwxFrKWwKj9oaax/EWwaJ9k0y7QTPjt4I7fH0YjrAT5QCsU6mDV65aZPoODeB0lYCeXXXXXKphxFexYkLUQphheXXXXXXWyYMOdadEgbq5Wy7hTsO8kTU2Aai8sVHHmdS9Bg==",
"mandateConfig": {
"firstDebit": true,
"firstDebitAmount": 100,
"frequency": "Adhoc",
"startDate": "2026-03-05",
"endDate": "2026-04-10"
}
}
}
}Sample Response
The Response will be in JSON Format
{
"orderDetail": {
"orderId": "ZaaXXXXXg1234",
"amount": "100",
"currency": "INR",
"productDescription": "UPI Mandate",
"email": "[email protected]",
"txnDate": "2026-03-05",
"purpose": "1",
"amountBreakdown": {}
},
"responseCode": "1101",
"responseDescription": "UPI Mandate authorization successful",
"doRedirect": "true",
"paymentInstrument": {
"paymentMode": "UPI_MANDATE",
"sendOtp": false,
"upiMandate": {
"action": "create",
"payerVpa": "dvbsb7K8C++I51tZ6C4XXXXXXE6MwOcn0dIDpPNPWBm589fHXXXXXXrjlrhAtUzFdvXXXXXXXXXLgjewTW0EGOe8bngbP/RIRhQoc3pXwr4fU4N3WXXXXXzLwQZjan609CZcpXXXXXBy+B1hgxOwxFrKWwKj9oaax/EWwaJ9k0y7QTPjt4I7fH0YjrAT5QCsU6mDV65aZPoODeB0lYCeXXXXXKphxFexYkLUQphheXXXXXXWyYMOdadEgbq5Wy7hTsO8kTU2Aai8sVHHmdS9Bg==",
"mandateConfig": {
"firstDebit": true,
"firstDebitAmount": 1,
"frequency": "Adhoc",
"startDate": "March 5, 2026, 12:00:00 AM",
"endDate": "Apr 7, 2026, 12:00:00 AM"
}
}
},
"bankPostData": {
"txnid": "ZPXXXXXXXXXd191"
},
"paymentMode": "UPI_MANDATE"
}Checksum Calculation
Create a string(JSON) using the request attributes as given below. Checksum string will create based on the request attributes which are posted to Zaakpay as same as given in the string below.
Now, Calculate the checksum using the HMAC SHA-256 algorithm using the string as data and your generated secret key. The resulting checksum calculated should be posted to the Zaakpay API along with other data.
The Checksum string will be:
Secret Key used: 0678056d96914a8583fb518caf42828a
{"merchantIdentifier":"b19e8XXXXXXXXX476431b6b7973","encryptionKeyId":"xfXXXXXX76bfq","merchantIpAddress":"127.0.0.1","showMobile":"true","mode":"0","returnUrl":"https://webhook.site/04087ce3-beb0-4ade-991b-8a60c8651307","orderDetail":{"orderId":"dsfadsf","amount":"10000","currency":"INR","purpose":"1","productDescription":"Upi P2m Collect","email":"[email protected]","txnDate":"2026-02-07"},"billingAddress":{"first name":"Test_FirName","last name":"Test_LasName","address":"sector 56","city":"Gurugram","state":"Haryana","country":"India","pincode":"122003","Phone Number":"9999999999"},"shippingAddress":{"address":"sector 54","city":"Gurugram","state":"Haryana","country":"India","pincode":"122003"},"paymentInstrument":{"paymentMode":"upiCollectMandate","upiMandate":{"action":"create","payerVpa":"uhjY22/b3hp3vwkLz8x9d2p/tXdEmmPILyXXXXXXX9R7jvk0ohK4GuZCFdkoi7Qf/lihgEej9RcFljUAECjJaXXXXXXXCIbWgiaHvJXXXXXXXMORLKrCq4jDy+TcSK/LUCDEuGutQXXXXXXX866gmRS5+B9MB1WrIJZkinwRdYXXXXOJacwNWP/ZIfQ8eCdDtjeO1nOK4I0uBQ+V+bXXXoZkmpaT1hqaRGyv/KcrsRhFae4T2L/n5wnSO5z35+SdtWpOE3GTuxJDAvg/qwJsGVeyreL+ELUu1cYUM5nZQwIfdicI+IRC5b/vqw2gzLbA==","mandateConfig":{"firstDebit":true,"firstDebitAmount":10,"frequency":"Adhoc","startDate":"2026-02-07","endDate":"2026-09-07"}}},"debitorcredit":"upi"}
bdf7497270af42730b87581922c13d62ba6bee42ed1751a0e9d57a098e0fcd53Encrypting a VPA with RSA
To encrypt a Virtual Payment Address (VPA), a merchant needs to perform a few straightforward steps. First, identify the VPA you want to encrypt. Next, obtain the recipient's RSA public key, which is essential for the encryption. Use this public key to encrypt the VPA, ensuring the data is secure. Finally, convert the encrypted data to a Base64 string for easy handling. This process ensures only the intended recipient can decrypt and access the original VPA, safeguarding sensitive information efficiently.
Updated about 14 hours ago
