Welcome to the Zaakpay developer hub!

You'll find comprehensive guides and documentation to help you start integrating Zaakpay Payment gateway as quickly as possible, as well as support if you get stuck. Let's jump right in!

Guides would be the best place to start.
Checkout "Discussions" forum for frequently asked questions or simply use the search option if you're unsure of where to look.
Api Endpoints provides the specification on our APIs with an option to explore the API

Guides    Discussions

Custom Checkout (Server To Server) Integration

Initiate Transaction (TransactU) API

Using this API, merchant’s server POST card/bank data to Zaakpay’s server. Zaakpay’s server responds back with bank’s url and parameter.

The flow of this integration is explained in the figure below:

Request Parameters

These Parameters are mentioned in the same order in which Zaakpay Payment Gateway calculates the checksum (Excluding checksum).

Parameter

Optional O, Mandatory M

Validation

Allowed Values

amount

M

Value in paisa. Min 100 paisa Max 10000000.
Amount limit saved under
Transaction limit in your
Zaakpay panel.

merchantIdentifier

M

alphanumeric

Zaakpay’s unique identifier for your website

orderId

M

max 20 alphanumeric,must be unique per website, we do not accept duplicate

Your unique transaction
identifier Your unique transaction identifier

returnUrl

O

This must be the domain(or a sub-domain of it) you saved under My Account>Integration

Url where you want Zaakpay to post the
response

email

M

valid email address of the buyer

eg. [email protected]

address

M

100 alphanumeric Street address of the buyer. (Part of billing address)

B-34, Priyadarshni Society, Dumna Road

city

M

30 alphabet, minimum 3 (Part of billing address)

Jabalpur

state

M

State of the buyer (Part of billing address

MP

country

M

Country of the buyer

India

pincode

M

Buyer’s pin/zip code. Can have Numbers, Spaces and Hyphens (-)only ( Part of billing address)

482001

productDescription

M

Text description of what you are selling. At least 1 product description is mandatory to show in the bill on payment page. free text alphanumeric 100 max

e.g. name of book, name
of mobile etc. e.g. Rs 199 Godzilla Movie DVD

showMobile

O

false:We show the full-fledged version Unconditionally.
DETECT:We do detection of the user Agent of the browser from which the request is sent& route accordingly. true:We show the mobile page unconditionally. missing/not
sent: Same as DETECT (i.e. We do detection at our end ).

Only allowed value is
“true” if you want Zaakpay
to represent mobile view.

paymentMode

M

Possible Values: debit, credit,wallet, UPI, UPIAPP(for ntent flow), or net banking

bankid

M (for Net Banking and UPI
)

For Net Banking, ID of selected bank, as SBI
For UPI, vpa address like
[email protected]

encrypted_pan

M (for Card Txn)

Encrypted Card Number

nameoncard

M (for Card Txn)

Card Holder Name

encryptedcvv

M (for Card Txn)

Encrypted CVV of card

encrypted_expiry_month

M (for Card Txn)

Encrypted Expiry Month of card

encrypted_expiry_year

M (for Card Txn)

Encrypted Expiry year of card

saveCard

O

Flag to save card. true if user wants to save his card at Zaakpay

cardId

O

Id assigned by Zaakpay to a
saved card

encryptionKeyId

M (for Card Txn)

Id of Merchant’s Public key as signed by Zaakpay

merchantCardRefId

O

A unique id assigned by to a
card saved at Zaakpay merchant

checksum

M

To be calculated on above
parameters using HMAC SHA 256

The card details need to be encrypted and sent across the https POST parameters. This encryption can be done by the help of RSA encryption.

Response Parameters

Parameters

Description

merchantIdentifier

Zaakpay’s unique identifier for your website

orderId

Your unique transaction identifier Your unique transaction identifier

amount

Value in paisa. Min 100 paisa Max 10000000.
Amount limit saved under Transaction limit in your Zaakpay panel.

productDescription

Text description of what you are selling. At least 1 product description is mandatory to show in the bill on payment page. free text alphanumeric 100 max

responseCode

numeric max 3 digits 123

responseDescription

alphanumeric max 30 description of
the response

paymentMode

Mode of the Payment

cardToken

Masked card number

cardId

Unique token of card if user had chosen to save card

cardScheme

Visa, MasterCard etc.

bank

Name of bank for card

cardHashId

Unique id for each card number used in transaction.

paymentMethod

Payment Method ID for Card and Net Banking transactions. For Card transaction, payment Method ID starts with C and N for Net Banking. It is alphanumeric value with max length 6. First letter is C or N, followed by 5 digits max.

Sample Request & Response

  1. Initial Request
data={"merchantIdentifier":"b19e8f103bce406cbd3476431b6b7973","encryptionKeyId":"YPQH44top9yNaY4","merchantIpAddress":"192.168.43.109","showMobile":"true","mode":"0","returnUrl":"http://127.0.0.1:8090/api/automation/v1/validateChecksum?v=7","orderDetail":{"orderId":"ZP-TEST-16146869601245678","amount":"100","currency":"INR","purpose":"1","productDescription":"Test Automation","email":"[email protected]","txnDate":"2021-03-02"},"paymentInstrument":{"paymentMode":"card","card":{"encrypted_pan":"ZIELDi7yDpepfoUguuQ8LoxFnJiF9ptuVt17vcFiG/eL8rZ7FqeVj8V5B7O1s5uk6b+3QobMVawQ\nD3ip81MQIl+NsIgC2KHmkGiUzHzlS/TppENrefWnOKEQDKYU1yonIhSfFL9TZittoXwvnfn0TaIY\nNk6oPpFcQsA4KEC4nQCwiYXgbGzVFhKtdlRtI4nWCrXvEr9KerG3alRGysIRfCKxIiB2GRD3O4hM\nXgZExTTUWs37Dy73unqLfQgwyfdG5qpMAyMNN8xrU1dM/EXiGWpe9xYO0zfN0Mqs4aA+WFRjS5I8\nUXfcANA77ShYrv1eEsatSsY6x9248BnE0+eDpQ==","nameoncard":"Test Jagat","encryptedcvv":"LPVY/wl4Fy6FxiyyIEjILBUBtCMVQyBagcYgFqYce0aTUTv8PEo5OJAd3Qtq/RzwicZ6+mj1R6v/\nj8rWrPkFrob7SkbZkJ0TRweD6Pxh/nHDjG6eKeBnjhGijf/tOuKs61PCIfKGroK63KPOP6rohc8y\n75cdFt+ItTeRi03PGDjI5WUdhOLB4wtw7v+ztWLZksQ9EAu4H8P29CO6FlQMepAPV6xEtdud4uly\nuJRjSRGKtcSVfWguBe7uWIvpmD+bvlTt2rv+HmKG2Fegaxt4XgKhVd3wEHNiF7RZIzIPo826efuK\nXENmj+LRxaQIoba1eD0rsQ9AwVKN+qfnpS4Rfw==","encrypted_expiry_month":"HPbVqDZ5Ka6G9UNTw6Hffq/4SipvzfC7CKdY6287I3ECSYxUG5NVPr7L6hOVj8vdq2nTpk7TuYzi\nKAvshZo0/VWQ0bJboKlSu8Pu51YptAazUFKWgPNQAE/h3mEhrNIkj6z0EL9oGCE2eEdtSfuCkh2F\nI9OYIs60iPxs9DoFAQjUBdtmxde9ToASPV6FdtoAfBMar7Oo4hHTvJANoCrRO2EaeqJ9f4yjFxlc\nDr6BQ2S3avnPOf0SFviiVrpeMFM5LgL3k7xelUhOT0mJexn4m6gyj65gJ+eKIQcDKRs4BJGsY+kK\n/YF7s7tvT3kMAfQ8zkvwzdt2XDRqa3LARKJMaA==","encrypted_expiry_year":"hLKmluu9mZtie6VjizrC0gKZU8/I3jRR0EbSpaPZFoLO9JAvuARtIfAFbqQSpsfFqjVgkLoZechH\nGELjapDdi0l8jtUSQBAneJF7loS80/y8pSTG0lSFhUVgmUAhANQR3SSTHMi5+uuFAbpDFiW/al/B\nr0MhfUaDohW3zr6SzT699hKSxYZmiRzGThVmdOMSzBulJn2XRTnd1F/KT0+aS4QZkiB2I6xwquaG\nHCSGCUKu10Gf7rlLBYrixsBcixIczoqfG8tEPDyI77pLurKVP0ORHiT5LVsP6wcqBejQ/bVIfotS\nqWmobMaipM7V/8+R0OG4AJoGOaePkclfHzF6Hg==","saveCard":"false"}}}
{
    "orderDetail": {
        "orderId": "ZP-TEST-16146869601245678",
        "amount": "100",
        "currency": "INR",
        "productDescription": "Test Automation",
        "email": "[email protected]",
        "txnDate": "2021-03-02",
        "purpose": "1"
    },
    "responseCode": "208",
    "responseDescription": "Transaction in Processing state.",
    "doRedirect": "true",
    "paymentInstrument": {
        "paymentMode": "Credit Card",
        "card": {
            "cardToken": "4012 XXXX XXXX 1112",
            "cardScheme": "Visa",
            "first4": "4012",
            "last4": "1112",
            "bank": "HDFC",
            "cardHashId": "CH373",
            "paymentMethod": "401200"
        }
    },
    "postUrl": "https://acsuat.fssnet.co.in/acsauthserver/HDFC/V/pareq.htm",
    "bankPostData": {
        "MD": "700202144235542293",
        "PaReq": "eJxVUl1zgjAQ/CsZ3kv4FMc54mDF6rQqRbDTRwZSZIYPDVjRX99EoLZvu7nLZm8vMG2LHH1TVmdVaUuqrEiIlnGVZGVqS2GweBpLUwLBgVE639H4zCiBNa3rKKUoS2xp7/ruu6ZoqmFoI8MwrZGmSgQ8x6cnAr0w4bqyBnigXIHFh6hsCETxabbaEEPXNcsA3FMoKFvNiWrxSx2EMiooWW53gTtHge9svK0fOG9oP/vcI4QA3+sQV+eyYVeimyPAA4Ezy8mhaY71BOPL5SKnVZXmVI6rArCoAX4Y8s4C1VyrzRLieu1ubC79V6UJnc3xY91+bQvT2myvFxuw6IAkaigRCSi6OkbKaKKMJwof5X4OUSFMEL/mESh8vo7CUbzidEQVhb8HwGNmfAvDGAMD2h6rkvIOHssvBvyw/LwUicYND6y12C2og3zt3SrVbNtFznBohi+NJZz3TUIx4wlputpJCgJYyOB+hbjfNkf/fsEPZ6S6Lg==",
        "TermUrl": "https://zaakstaging.zaakpay.com/hdfctermurl.html"
    },
    "paymentMode": "Credit Card"
}
{"merchantIdentifier":"b19e8f103bce406cbd3476431b6b7973","encryptionKeyId":"YPQH44top9yNaY4","merchantIpAddress":"192.168.43.109","showMobile":"true","mode":"0","returnUrl":"http://127.0.0.1:8090/api/automation/v1/validateChecksum?v=7","orderDetail":{"orderId":"ZP-TEST-16146869601245678","amount":"100","currency":"INR","purpose":"1","productDescription":"Test Automation","email":"[email protected]","txnDate":"2021-03-02"},"paymentInstrument":{"paymentMode":"card","card":{"encrypted_pan":"ZIELDi7yDpepfoUguuQ8LoxFnJiF9ptuVt17vcFiG/eL8rZ7FqeVj8V5B7O1s5uk6b+3QobMVawQ\nD3ip81MQIl+NsIgC2KHmkGiUzHzlS/TppENrefWnOKEQDKYU1yonIhSfFL9TZittoXwvnfn0TaIY\nNk6oPpFcQsA4KEC4nQCwiYXgbGzVFhKtdlRtI4nWCrXvEr9KerG3alRGysIRfCKxIiB2GRD3O4hM\nXgZExTTUWs37Dy73unqLfQgwyfdG5qpMAyMNN8xrU1dM/EXiGWpe9xYO0zfN0Mqs4aA+WFRjS5I8\nUXfcANA77ShYrv1eEsatSsY6x9248BnE0+eDpQ==","nameoncard":"Test Jagat","encryptedcvv":"LPVY/wl4Fy6FxiyyIEjILBUBtCMVQyBagcYgFqYce0aTUTv8PEo5OJAd3Qtq/RzwicZ6+mj1R6v/\nj8rWrPkFrob7SkbZkJ0TRweD6Pxh/nHDjG6eKeBnjhGijf/tOuKs61PCIfKGroK63KPOP6rohc8y\n75cdFt+ItTeRi03PGDjI5WUdhOLB4wtw7v+ztWLZksQ9EAu4H8P29CO6FlQMepAPV6xEtdud4uly\nuJRjSRGKtcSVfWguBe7uWIvpmD+bvlTt2rv+HmKG2Fegaxt4XgKhVd3wEHNiF7RZIzIPo826efuK\nXENmj+LRxaQIoba1eD0rsQ9AwVKN+qfnpS4Rfw==","encrypted_expiry_month":"HPbVqDZ5Ka6G9UNTw6Hffq/4SipvzfC7CKdY6287I3ECSYxUG5NVPr7L6hOVj8vdq2nTpk7TuYzi\nKAvshZo0/VWQ0bJboKlSu8Pu51YptAazUFKWgPNQAE/h3mEhrNIkj6z0EL9oGCE2eEdtSfuCkh2F\nI9OYIs60iPxs9DoFAQjUBdtmxde9ToASPV6FdtoAfBMar7Oo4hHTvJANoCrRO2EaeqJ9f4yjFxlc\nDr6BQ2S3avnPOf0SFviiVrpeMFM5LgL3k7xelUhOT0mJexn4m6gyj65gJ+eKIQcDKRs4BJGsY+kK\n/YF7s7tvT3kMAfQ8zkvwzdt2XDRqa3LARKJMaA==","encrypted_expiry_year":"hLKmluu9mZtie6VjizrC0gKZU8/I3jRR0EbSpaPZFoLO9JAvuARtIfAFbqQSpsfFqjVgkLoZechH\nGELjapDdi0l8jtUSQBAneJF7loS80/y8pSTG0lSFhUVgmUAhANQR3SSTHMi5+uuFAbpDFiW/al/B\nr0MhfUaDohW3zr6SzT699hKSxYZmiRzGThVmdOMSzBulJn2XRTnd1F/KT0+aS4QZkiB2I6xwquaG\nHCSGCUKu10Gf7rlLBYrixsBcixIczoqfG8tEPDyI77pLurKVP0ORHiT5LVsP6wcqBejQ/bVIfotS\nqWmobMaipM7V/8+R0OG4AJoGOaePkclfHzF6Hg==","saveCard":"false"}}}
data={"merchantIdentifier":"b19e8f103bce406cbd3476431b6b7973","merchantIpAddress":"192.168.43.109","showMobile":"true","mode":"0","returnUrl":"http://127.0.0.1:8090/api/automation/v1/validateChecksum?v=7","orderDetail":{"orderId":"ZP1-TEST-16044137389261","amount":"100","currency":"INR","purpose":"1","productDescription":"Test Automation","email":"[email protected]","txnDate":"2020-11-03"},"billingAddress":{"first name":"Automation","last name":"Testing","address":"sector 56","city":"Gurugram","state":"Haryana","country":"India","pincode":"122003","Phone Number":"9876543210"},"shippingAddress":{"address":"sector 54","city":"Gurugram","state":"Haryana","country":"India","pincode":"122003"},"paymentInstrument":{"paymentMode":"UPI","netbanking":{"bankid":"[email protected]"}},"debitorcredit":"upi"}
{
    "orderDetail": {
        "orderId": "ZP1-TEST-16044137389261",
        "amount": "100",
        "currency": "INR",
        "productDescription": "Test Automation",
        "email": "[email protected]",
        "txnDate": "2020-11-03",
        "purpose": "1"
    },
    "responseCode": "208",
    "responseDescription": "Transaction in Processing state.",
    "doRedirect": "true",
    "paymentInstrument": {
        "paymentMode": "UPI",
        "netbanking": {
            "bankid": "[email protected]"
        }
    },
    "bankPostData": {
        "upiTxnRefNo": "ZP5c7244e3bf0c4",
        "timeout": "10",
        "token": "P2FXJeIB9SAaIJa0UleeSccHFpTSN4TAeOZckhycM="
    },
    "paymentMode": "UPI"
}
{"merchantIdentifier":"b19e8f103bce406cbd3476431b6b7973","merchantIpAddress":"192.168.43.109","showMobile":"true","mode":"0","returnUrl":"http://127.0.0.1:8090/api/automation/v1/validateChecksum?v=7","orderDetail":{"orderId":"ZP1-TEST-16044137389261","amount":"100","currency":"INR","purpose":"1","productDescription":"Test Automation","email":"[email protected]","txnDate":"2020-11-03"},"billingAddress":{"first name":"Automation","last name":"Testing","address":"sector 56","city":"Gurugram","state":"Haryana","country":"India","pincode":"122003","Phone Number":"9876543210"},"shippingAddress":{"address":"sector 54","city":"Gurugram","state":"Haryana","country":"India","pincode":"122003"},"paymentInstrument":{"paymentMode":"UPI","netbanking":{"bankid":"[email protected]"}},"debitorcredit":"upi"}

Checksum Calculation

  • Checksum will be calculated on all parameters in the same order in which they are posted.

Curl for various Payment Modes

curl --location --request POST 'https://zaakstaging.zaakpay.com/transactU?v=8' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'data={"merchantIdentifier":"b6415a6443604ec59644a70c8b25a0f6","merchantIpAddress":"192.168.43.109","showMobile":"true","mode":"0","returnUrl":"http://127.0.0.1:8090/api/automation/v1/validateChecksum?v=7","orderDetail":{"orderId":"ZP1-TEST-16044137389261","amount":"100","currency":"INR","purpose":"1","productDescription":"Test Automation","email":"[email protected]","txnDate":"2020-11-03"},"billingAddress":{"first name":"Automation","last name":"Testing","address":"sector 56","city":"Gurugram","state":"Haryana","country":"India","pincode":"122003","Phone Number":"9876543210"},"shippingAddress":{"address":"sector 54","city":"Gurugram","state":"Haryana","country":"India","pincode":"122003"},"paymentInstrument":{"paymentMode":"UPI","netbanking":{"bankid":"[email protected]"}},"debitorcredit":"upi"}' \
--data-urlencode 'checksum=3cc485e35ae55ccb0b21ceabc9731d79bc3947a8b5ef3b59b3adbbfba97151ac'
curl --location --request POST 'https://beta.zaakpay.com/transactU?v=8' \
--header 'cache-control: no-cache' \
--header 'content-type: application/x-www-form-urlencoded' \
--header 'postman-token: c5b737cd-2f7a-0f85-c6cd-eb36700fd92f' \
--header 'Cookie: JSESSIONID=4991D5810F65F0DAFC066FA155850005.11.36' \
--data-urlencode '{"merchantIdentifier":"b19e8f103bce406cbd3476431b6b7973","showMobile": "true","mode":"0","returnUrl":"https://zaakstaging.zaakpay.com/api/automation/v1/payment/response","orderDetail": {"orderId": "ZP-TESTE-15841047222321","amount": "100","currency": "INR","productDescription": "Test Automation","email":"[email protected]","phone": "8894451519","extra1": "udf1","extra2":"udf2","extra3": "udf3","extra4":"udf4","extra5": "udf5","productDescription": "pd","product1Description": "pd1","product2Description": "pd2","product3Description": "pd3","product4Description": "pd4","firstName": "Pavan","lastName":"Kumar"
},"paymentInstrument":{"paymentMode":"UPIAPP","netbanking":{"bankid":""}},"billingAddress": {"city":"Gurgaon"},"shippingAddress": {"city":"Gurgaon"}}' \
--data-urlencode 'checksum=7987ee22a543fb0e9bcb2bed34188401a68c9790749013977a6301e5606e82d2'
curl --location --request POST 'https://zaakstaging.zaakpay.com/transactU?v=8' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: JSESSIONID=B97E3742442C12A6414A4B8193903BBF' \
--data-urlencode 'data={"merchantIdentifier":"b19e8f103bce406cbd3476431b6b7973","encryptionKeyId":"apqKiO5Od3nadnb","merchantIpAddress":"192.168.43.109","showMobile":"true","mode":"0","returnUrl":"http://127.0.0.1:8090/api/automation/v1/validateChecksum?v=7","orderDetail":{"orderId":"ZP-TEST-1614337543118","amount":"100","currency":"INR","purpose":"1","productDescription":"Test Automation","email":"[email protected]","txnDate":"2021-02-26"},"billingAddress":{"first name":"Automation","last name":"Testing","address":"sector 56","city":"Gurugram","state":"Haryana","country":"India","pincode":"122003","Phone Number":"8894451519"},"shippingAddress":{"address":"sector 54","city":"Gurugram","state":"Haryana","country":"India","pincode":"122003"},"paymentInstrument":{"paymentMode":"card","card":{"encrypted_pan":"lC+tnPPcCxW9mf4vbckXIqfk9dviSxtXpYwbCY/AEl/VwVe/DLNZRMG6M2FCn7oIp7nQF0/XvVYL\nEVMTPRpyNvL3VcjM4duSPc1R4g6yV2HjRsRJ3Q5l57amM/cqaJojK2jWVLSOwcN23OF1RGtb8q0U\neZIQFFT4Ens4p+Zek7hxf877q9fWON5QDTYARrdX2dCxPHlC8Q/KBYq9dqej/fcmF7gKRZVp/cwz\n4XslFZzUQA+5y/zRDJR9yWyTyHDrkSpX9OPSGstkN61DGf9yaisDLhQJG6j4+aYxjSSXn+m+P8Rd\n74FPbaJGWqP2mOJz2WQEdoK7UBa11ugO2qwPQw==","nameoncard":"Test Jagat","encryptedcvv":"dIByIxvOmosV+A8jL7h4ebDjqsFa695i43xv9gUyb8ceC4omjQyWFyfft/0Wirt0A6Q/Mw9TZDp/\n25VxwTF7i7q1/maQAAlmBZkdCaMWALGVH59EiuMasvOCFA6PQGVjaj8CRRPBTl15eSMMguqX0AGM\njrFfWZQKMqgvLnsZeiQbWMwo8JWRfpEM0ml9bPk46wIH3PzLjB7Nmi4hQAVJORV17gv4SUCAW29/\nh731PHV3KJiaCU5jKIU55tDRqAEf7oZ9NmOsKiK5IQ02kmGlDUtsGrDml5TqBZLVQbGz9Oi4plxs\nDuk0O5inR16+JVyEI9Qmup8BJFgwTY9Vg0yaow==","encrypted_expiry_month":"TwkSkQA3ykEs/zJqsHabXWkD5pZ0thnFVS/fdLF1Db9X5KTyu7y4lu3DJQsKMHsMx7wiCpYACNJR\n56uLv2RTa2TwMxIw0ZD9VjsTDZU5U/Yb7M8IaX3nEiPFNKgd8tMU8wPuJ1XnXyEE2vK8n9jCS80R\nEdRhFbgn0hYk236HCJIakUUkVczqiqLwDC4D5fkGEI90EbGTIImtrXAv84p+vnS3veQmSUm6YHmm\nBmdeJoDDsvCrI9ghAannMB7YmkiEQFVew9fUL4rMaz0JG8fEOFOS6vDRXX1qNH+4TG9/LGLz69hX\ny1L2sL/wggbuaksBUD139pJv7xmPow4nVzgb+A==","encrypted_expiry_year":"ThfyHaZ39X7KE3WI0/wUAGySx7Qghbh+EyfTYCoeyGygchAIjZIAUwXGcgFBSTQjPQB+EJrHe+q3\n4TzjGe0P958SRjBrv0ZNvLFJjfRD001gv3SB9hajN5YbA0gbPMmsflJQbFg23+pgNtgtvks8KB4+\ni28ed3UFeaC46UaF78PXLF/uefREsWh5BHfVQguaOWDAocdiFPEwEHcD+PK19L0EOxaFouHdpCpf\nvPyRSreshWt4Lf7DM9XeazEj5/Kgu6pbNwIkiV2Ju5LvfRmiGpcmkp4daAXPYdC2mawd7i+RXT4W\nWqwYB/4SpktLbkvXXfgXar+/Up710jqZh20O5g==","saveCard":"false"}}}' \
--data-urlencode 'checksum=94b214e642f168f818d74ae1df57e8387967d70e55c8158cc0578b97517e32e6'
curl --location --request POST 'https://zaakstaging.zaakpay.com/transactU?v=8' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: JSESSIONID=6027B3481FFBA06BFDFCCC6842EBAD90.11.36' \
--data-urlencode 'data={"merchantIdentifier":"b6415a6443604ec59644a70c8b25a0f6","showMobile":"true","mode":"0","returnUrl":"https://zaakstaging.zaakpay.com/api/automation/v1/payment/response","orderDetail":{"orderId":"ZP-TEST-158506146127t7","amount":"100","currency":"INR","purpose":"1","productDescription":"Test Automation","email":"[email protected]","phone":"8894451510","txnDate":"2020-03-24"},"paymentInstrument":{"paymentMode":"netbanking","netbanking":{"bankid":"SCB"}}}' \
--data-urlencode 'checksum=57d7d6b82d2a422bb4de525441ed73d520786b5d3173cf74b8126f09d473a38c'
curl --location --request POST 'https://zaakstaging.zaakpay.com/transactU?v=8' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: JSESSIONID=494010259FE6B2951C6927EDBD4FC575.11.50' \
--data-urlencode 'data={"merchantIdentifier":"b6415a6443604ec59644a70c8b25a0f6","showMobile":"true","mode":"0","returnUrl":"https://zaakstaging.zaakpay.com/api/automation/v1/payment/response","orderDetail":{"orderId":"ZP-TEST-158506146127744","amount":"100","currency":"INR","purpose":"1","productDescription":"Test Automation","email":"[email protected]","phone":"8894451510","txnDate":"2020-03-24"},"paymentInstrument":{"paymentMode":"wallet","netbanking":{"bankid":"9015556516"}}}' \
--data-urlencode 'checksum=5608c6769200b939d6b05625bdd65b465e9bb0640210a19718214d0fd841d427'

If redirect required for card

In this case, 2FA is enabled for the card, so browser redirect is required to the bank’s 2FA page. You need to post bankPostData to the postUrl that you have received from the Initial request.

{
  "merchantIdentifier": "b19e8f103bce406cbd3476431b6b7973",
  "orderDetail": {
    "orderId": "ZP-TEST-16146869601245678",
    "txnId": "ZP37hneiw30022",
    "amount": "100",
    "productDescription": "Zaakpay subscription fee"
  },
  "responseCode": "228",
  "responseDescription": "Transaction has been captured.",
  "paymentInstrument": {
    "paymentMode": "card",
    "card": {
      "cardToken": "4012 XXXX XXXX 1112",
      "cardId": "25157d8564f730461489ea3102c393fd3bf13cfed94966f44815714d57170f4c~273",
      "cardScheme": "Visa",
      "bank": "EXTRAS TEST - VISA",
      "cardHashId": "CH373",
      "paymentMethod": "401200"
    }
  },
  "version": "7",
  "txnStatus": "Success",
  "userAccountDebited": true,
  "paymentMode": "Debit Card"
}

If redirect not required and transaction is complete

For cards not enabled for 2FA, transaction can be completed without browser redirect. For those cards, this will be the final transaction response

{
  "orderDetail": {
    "orderId": "ZP-TEST-16146869601245678",
    "amount": "100",
    "currency": "INR",
    "productDescription": "Zaakpay subscription fee",
    "email": "[email protected]",
    "phone": "9999999999"
  },
  "responseCode": "100",
  "responseDescription": "The transaction was completed successfully.",
  "doRedirect": "false",
  "paymentInstrument": {
    "paymentMode": "Debit Card",
    "card": {
      "cardToken": "4012 XXXX XXXX 1881",
      "cardScheme": "Visa",
      "first4": "4012",
      "last4": "1112",
      "bank": "",
      "cardHashId": "CH373",
      "paymentMethod": "401200"
    }
  },
  "paymentMode": "Debit Card"
}

📘

Note:

After receiving JSON response in server to server call to Transact API, if “doRedirect” is true, merchant needs to POST all bank parameters mentioned in “bankPostData” to url mentioned in “postUrl”. This will take user to bank’s 2FA or netbanking page. After completion of transaction, Zaakpay will redirect back to merchant’s returnUrl with below parameters

For UPI, the timer page will be shown by Merchant based on provided timeout in response. The merchant needs to hit our check API for that time interval until he receives success/failure in the response. After receiving the response, the Merchant needs to redirect the user to the relevant page.

For UPI Intent, use URLs that we send in bankPostData based on the device.

{
   "orderDetail": {
       "orderId": "ZP-TEST-1584104722233",
       "amount": "100",
       "currency": "INR",
       "productDescription": "pd",
       "email": "[email protected]",
       "phone": "8894451519",
       "firstName": "Pavan",
       "lastName": "Kumar",
       "product1Description": "pd1",
       "product2Description": "pd2",
       "product3Description": "pd3",
       "product4Description": "pd4",
       "extra1": "udf1",
       "extra2": "udf2",
       "extra3": "udf3",
       "extra4": "udf4",
       "extra5": "udf5"
   },
   "responseCode": "208",
   "responseDescription": "Transaction in Processing state.",
   "doRedirect": "true",
   "paymentInstrument": {
       "paymentMode": "UPIAPP",
       "netbanking": {
           "bankid": ""
       }
   },
   "bankPostData": {
       "androidIntentUrl": "upi://[email protected]&pn=ZAAKPAY&tr=MNOZP5b826dae34e98&am=1.00&cu=INR&mc=6012",
       "mbkIntentIosUrl": "mobikwik://upi/[email protected]&pn=ZAAKPAY&tr=MNOZP5b826dae34e98&am=1.00&cu=INR&mc=6012",
       "phonepeIntentIosUrl": "phonepe://[email protected]&pn=ZAAKPAY&tr=MNOZP5b826dae34e98&am=1.00&cu=INR&mc=6012",
       "timeout": "10",
       "gpayIntentIosUrl": "tez://upi/[email protected]&pn=ZAAKPAY&tr=MNOZP5b826dae34e98&am=1.00&cu=INR&mc=6012",
       "txnid": "ZP5b826dae34e98",
       "token": "0HC02EX2xwhejPl2oU4P18In1tBD2u3KpCMXcZ5peAI=",
       "paytmIntentIosUrl": "paytmmp://upi/[email protected]&pn=ZAAKPAY&tr=MNOZP5b826dae34e98&am=1.00&cu=INR&mc=6012"
   },
   "paymentMode": "UPIAPP"
}

Card Validation API

This api will check with the bank if the card is valid and return card status to the merchant.This api just checks if a card exists with a given card number.

This api does not check if:

  • Card’s CVV and Expiry provided by user iscorrect
  • Card is still active or blocked.
  • User’s card/account has sufficient funds.

Request Type:GET
Request URL(Staging): http://sandbox.zaakpay.com/validateCard
Request URL(Live): https://api.zaakpay.com/validateCard

Request Parameters

Parameter

Optional O, Mandatory M

Validation

Allowed Values

merchantIdentifier

M

alphanumeric

Zaakpay unique
identifier for your
website

email

M

valid email address of the buyer

eg. [email protected]

mode

M

1 digit only, numeric

1 = Domain check,
0=Domain Check Skip

encrypted_pan

M (for Card Txn)

Encrypted Card Number

nameoncard

M (for Card Txn)

Card Holder Name

encryptedcvv

M (for Card Txn)

Encrypted CVV of card

encrypted_expiry_month

M (for Card Txn)

Encrypted Expiry Month of card

encrypted_expiry_year

M (for Card Txn)

Encrypted Expiry year of card

cardId

O

Id assigned by Zaakpay to a
saved Card

encryptionKeyId

M

Id of Merchant’s Public key
as signed by Zaakpay

merchantCardRefId

O

A unique id assigned by merchant to a card saved at Zaakpay

checksum

M

To be calculated on above parameters using HMAC SHA
256

Response Parameters

Parameter

Optional O, Mandatory M

Validation

Allowed Values

responseCode

M

numeric max 3 digits 123

responseDescription

M

alphanumeric max 30 description of the response

cardId

O

Unique token of card if user had chosen to save card

cardScheme

O

Visa,Mastercard etc.

cardToken

O

Masked card number

4012XXXXXXXX1881

bank

M

Name of bank for card or netbanking

Eg. State Bank of India

bankid

O

bankid in case of net banking

SBI

email

M

Email id of card holder

checksum

M

To be calculated on above parameters using HMAC SHA 256

Request Parameters

data={
  " merchantIdentifier ": " zaakpaymid ",
  " email ": " [email protected]",
  " mode ": "0",
  " card ": {
    " encrypted_pan ": "ggfhfbsdjbf",
    " nameoncard ": " cardholdername ",
    " encryptedcvv ": "sdafdsf",
    " encrypted_expiry_month ": " sadasda ",
    " encrypted_expiry_year ": "sdasfff",
    " cardId ": " bce8e4e1e66520cb0bc2bf3a0e760412d53273a844 bf0931f2b3136a2ee0ada 3~1",
    " merchantCardRefId ": "cardRef123"
  }
}&checksum=dfsafdsfdsf345dfhywrt7trhue567sdf

Response Parameters

{
  " email ": " [email protected] . com",
  " responseCode": "100",
  " responseDescription ": " Card is valid ",
  " card": {
    " cardToken ": "4012 XXXXXXXX1881",
    " cardScheme ": "Visa",
    " bank ": " State Bank ofIndia",
    " cardId ": " bce8e4e1e66520cb0bc2bf3a0e760412d53273a844bf09 31f2b3136a2ee0 ada3~1",
    " merchantCardRefId ": "cardRef123"
  }
}

Add Card API

This api will first check if the card is valid and then save a card against a merchant and a valid email id. Card can also be mapped against a merchantCardRefId which is a unique card ref id assigned by the merchant to a card.

These steps must be followed while making a request to add card api:

Request Parameters

Parameter

Optional O, Mandatory M

Validation

Allowed Values

merchantIdentifier

M

alphanumeric

Zaakpay unique identifier for your website

email

M

valid email address of the buyer

eg. [email protected]

address

O

100 alphanumeric Street address of the buyer. (Part of billing address)

B-34, Priyadarshni Society, Dumna Road

city

O

30 alphabet, minimum 3 (Part of billing address)

Jabalpur

state

O

State of the buyer (Part of billing address)

MP

country

O

Country of the buyer

India

pincode

O

Buyer’s pin/zip code. Canhave Numbers, Spaces and Hyphens (-)only ( Part of billingaddress)

482001

mode

M

1 digit only, numeric

1 = Domain check,
0=Domain Check Skip

encrypted_pan

M (for Card Txn)

Encrypted Card Number

encryptedcvv

M (for Card Txn)

Encrypted CVV of card

encrypted_expiry_month

M (for Card Txn)

Encrypted Expiry Month of card

encrypted_expiry_year

M (for Card Txn)

Encrypted Expiry year of card

encryptionKeyId

M (for Card Txn)

Id of Merchant’s Public key as Signed by Zaakpay

merchantCardRefId

O

A unique id assigned by merchant to a card saved at Zaakpay

Response Parameters

Parameter

Optional O, Mandatory M

Validation

Allowed Values

responseCode

M

numeric max 3 digits

123

responseDescription

M

alphanumeric max 30

description of the response

cardId

O

Unique token of card if user had chosen to save card

cardScheme

O

Visa,Mastercard etc.

cardToken

O

Masked card number

4012 XXXX XXXX 1881

bank

M

Name of bank for card or netbanking

Eg. State Bank of India

bankid

O

bankid in case of net banking

SBI

email

M

Email id of card holder

nameoncard

O

Card holder name

first4

O

First 4 digits of card number

last4

O

Last 4 digits of card number

checksum

M

To be calculated on
above parameters using
HMAC SHA 256 To be calculated on above parameters using
HMAC SHA 256

Request Format

data={
  " merchantIdentifier ": " zaakpaymid ",
  " email ": " [email protected]",
  " mode ": "0",
  " card ": {
    " encrypted_pan ": "ggfhfbsdjbf",
    " nameoncard ": " cardholdername ",
    " encryptedcvv ": "sdafdsf",
    " encrypted_expiry_month ": " sadasda ",
    " encrypted_expiry_year ": "sdasfff",
    " merchantCardRefId ": "cardRef123"
  },
  " billingAddress": {
    " address ": "758, udyogvihar ",
    " city ": "Gurgaon",
    "state ": " Haryana ",
    " country ": " India ",
    " pincode": "120012"
  }
}&checksum=dfsafdsfdsfbhgfjbfvgdbgbhfvvgvvcjkui

Response Format

{
  " email ": " [email protected] . com ",
  " responseCode": "100",
  " responseDescription ": " Card saved successfully .",
  "card": {
    "nameoncard ": " chirag jain ",
    " first 4": "4012",
    " last 4": "1881",
    " cardId ": " bce8e4e1e66520cb0bc2bf3a0e760412d53273a844bf09 31f2b3136a2ee0 ada3~1",
    " cardScheme ": " Visa ",
    " cardToken ": "4012 XXXXXXXX1881"
  }
}

📘

Note:

After receiving response, please calculate checksum on JSON and verify if it it same as received in “check-sum” parameter.

Check API

The purpose of this API is to enable websites to check the latest status of their transaction at any time.

Request Parameters

Parameter

Optional O, Mandatory M

Validation

Allowed Values

merchantIdentifier

M

alphanumeric

orderId

M

Transaction id for which you want to check the status

Your unique transaction identifier

mode

M

1 digit only, numeric

0

checksum

M

Checksum calculated on all above request parameters

The parameters must be posted to the Check Transaction API using HTTP(POST). Apart from the listed parameters, a checksum is also expected. Refer below section for clarification on checksum generation.

Checksum(request) calculation for Check API

Create a list of data parameters which you’re passing to the API. Parameters used in checksum calculation are (in no particular order):

  • merchantIdentifier
  • mode
  • orderId
  • mode -0
  • orderId -ZPK12345

The data parameter is taken for checksum calculation, surrounded with single quotes.
Calculate the checksum using the HMAC SHA-256 algorithm using the data parameter and your generated secret key.

The resulting checksum calculated should be posted to the Zaakpay API along with other data.

For example: Let’s suppose we need to post the following data to the API.We calculate "checksum" with the parameters mentioned below:
merchantIdentifier-b19e8f103bce406cbd

Response Parameters

Parameters

Description

merchantid

MobiKwik Payment Gateway’s unique identifier for your website

orderid

Your unique transaction identifier

responsecode

Numeric, max 3 digits example 100 for success

description

Alphanumeric max 30 description of the response

cardhashid

Unique id for each card number used in transaction. For Netbanking Txns,value will be “NA”.

amount

Txn amount in paisa, Integer

paymentmode

mode of payment

txnid

MobiKwik Payment Gateway txn ID

timestamp

Timestamp of txn

status

Status of txni.e Success or Failure

productdescription

As received with the request

product1description

As received with the request

product2description

As received with the request

product3description

As received with the request

product4description

As received with the request

checksum

Checksum calculated by MobiKwik Payment Gateway On all above response parameters

Request Format

curl --location --request POST 'https://zaakstaging.zaakpay.com/checkTxn?v=5' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: JSESSIONID=A4C211B0FC1F713C69DD79521963AAD2' \
--data-urlencode 'data={"merchantIdentifier":"b19e8f103bce406cbd3476431b6b7973","mode":"0","orderDetail":{"orderId":"ZPLive1602500556069"}}' \
--data-urlencode 'checksum=e0a8a4080fc661dbd23119309d9a45817bd01cc9264b1fde9b26a1dac7e1da50'

Response Format

{
    "success": true,
    "merchantIdentifier": "b19e8f103bce406cbd3476431b6b7973",
    "orders": [
        {
            "orderDetail": {
                "orderId": "ZPLive1602500556069",
                "txnId": "ZP5b1773d1f776b",
                "amount": "100",
                "productDescription": "Zaakpay subscription fee",
                "createDate": "2020-10-12 16:32:47",
                "product1Description": "NA",
                "product2Description": "NA",
                "product3Description": "NA",
                "product4Description": "NA"
            },
            "paymentInstrument": {
                "paymentMode": "Credit Card",
                "card": {
                    "cardToken": "4012 XXXX XXXX 1112",
                    "cardId": "25157d8564f730461489ea3102c393fd3bf13cfed94966f44815714d57170f4c~273",
                    "cardScheme": "Visa",
                    "first4": "4012",
                    "last4": "1112",
                    "bank": "HDFC",
                    "cardHashId": "CH373",
                    "paymentMethod": "401200"
                }
            },
            "responseCode": "230",
            "responseDescription": "Transaction Refund Initiated",
            "txnDate": "2020-10-12 16:44:43",
            "txnStatus": "3",
            "userAccountDebited": true
        }
    ],
    "version": "5"
}

Fetch Card API

This api will fetch all cards saved by a user at Zaakpay.

Request Parameters

Parameter

Optional O, Mandatory M

Validation

Allowed Values

merchantIdentifier

M

alphanumeric

Zaakpay’s unique identifier for your website

email

M

valid email address of
the buyer

eg. [email protected]

mode

M

1 digit only, numeric

1 = Domain check, 0=Domain
Check Skip

merchantCardRefId

O

A unique ID assigned by merchant to a card saved
at Zaakpay

Sample Request

data={
  " merchantIdentifier ": " zaakpaymid ",
  " email ": " [email protected]",
  " mode ": "0",
  " merchantCardRefId ": "cardRef123"
}&checksum=dfsafdsfdsf

Sample Response

{
  " email ": " [email protected] . com ",
  " responseCode": "100",
  " responseDescription ": " Card Saved Successfully .",
  " cards": [
    {
      " nameoncard ": " chirag jain ",
      " first4": "4012",
      " last 4": "1881",
      " cardId": "bce8e4e1e66520cb0bc2bf3a0e760412d53273a844bf0931f2b3136a2ee0ada 3~1",
      " cardScheme ": " Visa ",
      " cardToken ": "4012 XXXXXXXX1881",
      " merchantCardRefId ": "cardRef123"
    },
    {
      " nameoncard ": " chirag jain ",
      " first4": "5610",
      " last 4": "8250",
      " cardId": "dbd45ca21bedf7a7fb4156533e779e8aee5e7a89c46ba203c85c89f91bd21dd9~12",
      " cardScheme ": " Maestro ",
      " cardToken ": "5610 XXXXXXXX8250",
      " merchantCardRefId ": "cardRef123"
    }
  }
}

Update API

The purpose of this API is to enable websites to settle, cancel or refund transactions

Request Parameters

Parameter

Optional O, Mandatory M

Validation

Allowed Values

merchantIdentifier

M

alphanumeric

MobiKwik Payment Gateway Unique merchant identifier for your website

orderId

M

Max 20 alphanumeric, must
be unique per website, we do not accept duplicate

Your unique transaction identifier

Mode

M

1 digit only, numeric

0

updateDesired

M

Numeric max1digit, values predefined by MobiKwik Payment Gateway

7="Captured",
8="Canceled",
14="Refunded", 22=”Partial
Refund”. Note:If you request
A state update to
"Refunded"we
will issue the full amount refund to the user.

updateReason

M

Description of the reason for update.min5, max 30
alphanumeric characters. No special characters or dashes

Examples: you want to cancel a transaction, your
user wantsa refund, you want to settle transaction

Amount

O(during Full-Refund), M(for
Partial- Refund)

Amount in paisa. Amount which needs to be refunded in case of partial refunds. In case of full refund this can be omitted.

example Re1 is 100 paisa,
Rs 777.50 is 77750 paisa.
Pass this parameter if
merchant wants partial refund.

Checksum

M

Checksum calculated on all above request parameters

Response Parameters

Parameters

Description

Merchantid

MobiKwik Payment Gateway’s unique identifier for your website

Orderid

Your unique transaction identifier

Responsecode

Numeric, max 3 digits example 100 for success

Description

Alphanumeric max 30 description of the response

Checksum

Checksum calculated by MobiKwik Payment Gateway on all above response parameters

merchantRefId

Unique refund transaction id sent by merchant

Sample Request

curl --location --request POST 'https://zaakstaging.zaakpay.com/updateTxn' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'data={"merchantIdentifier":"b19e8f103bce406cbd3476431b6b7973","orderDetail":{"orderId":"ZPLive1602500556069","amount":"100","productDescription":"test product"},"mode":"0","updateDesired":"14","updateReason":"test reason","merchantRefId":"TESTING3"}' \
--data-urlencode 'checksum=35c8677663806211a9c170d5f9263adc22934507b84081918df4a7930b5f794b'

Sample Response

{
    "merchantIdentifier": "b19e8f103bce406cbd3476431b6b7973",
    "orderDetail": {
        "orderId": "ZPLive1602500556069"
    },
    "responseCode": "230",
    "responseDescription": "Transaction Refund Initiated",
    "merchantRefId": "TESTING3"
}

Remove Card API

This api will remove cards saved by a user at Zaakpay.

Request Parameters

Parameter

Optional O, Mandatory M

Validation

Allowed Values

merchantIdentifier

M

alphanumeric

Zaakpay unique identifier for your website

email

M

valid email address of the buyer

eg. [email protected]

mode

M

1 digit only, numeric

cardId

M

Unique token of card if user had chosen to save card

1 = Domain check,
0=Domain Check
Skip

checksum

M

To be calculated on above parameters using HMAC
SHA 256

Response Parameters

Parameter

Optional O, Mandatory M

Validation

Allowed Values

responseCode

M

numeric max 3 digits 123

responseDescription

M

alphanumeric max 30 description of the response

cardId

O

Unique token of card if user had chosen to save card

cardScheme

O

Visa,Mastercard etc

cardToken

O

Masked card number

4012 XXXX XXXX 1881

first4

O

First 4 digits of card number

last4

O

First 4 digits of card number

email

M

Email id of card holder

nameoncard

O

Card Holder Name

checksum

M

To be calculated on above parameters using HMAC SHA 256

Sample Request

data={
  " merchantIdentifier ": " zaakpaymid ",
  " email ": " [email protected]",
  " mode ": "0",
  " cardId ": "cardId"
}&checksum=dfsafdsfdsf

Sample Response

{
  " email ": " [email protected] . com ",
  " responseCode": "100",
  " responseDescription ": " This card has been removed Successfully .",
  " cards": [
    {
      " nameoncard ": " chirag jain ",
      " first4": "4012",
      " last 4": "1881",
      " cardId ": " bce8e4e1e66520cb0bc2bf3a0e760412d53273a844 bf0931f2b3136a2ee0ada 3~1",
      " cardScheme ": "Visa",
      " cardToken ": "4012 XXXXXXXX1881"
    }
  ]
}

Download our Server to Server Document Directly from here

Updated 16 days ago


Custom Checkout (Server To Server) Integration


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.