This document provides a comprehensive guide for integrating with v2 Non-Seamless using the v2/payments
API. The hosted checkout integration allows you to redirect customers to PayU's secure payment page, minimising PCI compliance requirements while providing a seamless payment experience.
👍
Register for an account with PayU before you start integration. For more information, refer to Register for a Merchant Account .
PayU recommends you integrate with Test environment for testing and then move to the Production environment.
The v2 non-seamless integration consists of two main steps:
Make the transaction request to PayU's v2/payments API
Verify the payment status using the verification API
Request HeadersParameter Description date The current date and time. For example, format of the date is Wed, 28 Jun 2023 11:25:19 GMT. authorization The actual HMAC signature generated using the specified algorithm (sha512) and includes the hashed data. For more information, refer to authorization fields description .
Field Description username Represents the username or identifier for the client or merchant, for example smsplus. algorithm Use SHA512 algorithm for hashing and send this as header value. headers Specifies which headers have been used in generating the hash, for example date. signature The HMAC signature generated using the specified algorithm. For more information, refer to hashing algorithm .
You must hash the request parameters using the following hash logic:
Hash logic : sha512(<Body data>
+ '|' + date + '|' + merchant_secret)
Where <Body data>
contains the request body posted with the request.
Sample header code JavaScript
var merchant_key = 'smsplus';
var merchant_secret = 'izF09TlpX4ZOwmf9MvXijwYsBPUmxYHD';
// date
var date = new Date();
date = date.toUTCString();
// authorization
var authorization = getAuthHeader(date);
function getAuthHeader(date) {
var AUTH_TYPE = 'sha512';
var data = isEmpty(request['data']) ? "" : request['data'];
var hash_string = data + '|' + date + '|' + merchant_secret;
var hash = CryptoJS.SHA512(hash_string).toString(CryptoJS.enc.Hex);
return `hmac username="${merchant_key}", algorithm="${AUTH_TYPE}", headers="date", signature="${hash}"`;
}
The v2/payments API request contains the following main parameters:
Parameter
Description
Example
accountIdmandatory
String
Merchant key provided by PayU. Character limit: 50
"smsplus"
txnIdmandatory
String
Unique transaction ID for the transaction. Character limit: 50
"REF_123456789"
ordermandatory
Object
Order details containing product information and pricing. For more information, refer to order object
{"productInfo": "Product Name", "paymentChargeSpecification": {"price": 1000.00}}
billingDetailsmandatory
Object
Customer billing information. For more information, refer tobillingDetails object
{"firstName": "John", "email": "[email protected] ", "phone": "9876543210"}
callBackActionsmandatory
Object
Callback URLs for different payment outcomes. For more information, refer to callBackActions object
{"successAction": "https://merchant.com/success", "failureAction": "https://merchant.com/failure"}
additionalInfomandatory
Object
Additional transaction parameters including flow type. For more information, refer toadditionalInfo object
{"txnFlow": "non-seamless", "enforcePaymethod": "NB"}
Order Object
Parameter
Description
Example
productInfomandatory
Product details.
Product details
orderedItemoptional
Details about the items ordered.
Array of Objects
userDefinedFieldsoptional
Custom fields for additional information. Fields: udf1, udf2, udf3, udf4, udf5, udf6, udf7, udf8, udf9, udf10. For more information, refer to
Object
paymentChargeSpecificationmandatory
Includes amount and charges. For more information, refer to paymentChargeSpecification object fields description
Object
Parameter
Description
Example
pricemandatory
The transaction amount.
1000
netAmountDebitoptional
Net amount to be debited.
1000
taxSpecificationoptional
Tax details of the product/order.
Object
convenienceFeeoptional
Fees format (e.g., CC:12).
CC:12
offersoptional
Offers applied or available for the payment.
Object
Field Description udf1 User defined field. udf2 User defined field. udf3 User defined field. udf4 User defined field. udf5 User defined field. udf6 User defined field. udf7 User defined field. udf8 User defined field. udf9 User defined field. udf10 User defined field.
Payment Charge Specification Object
Parameter
Description
Example
pricemandatory
The transaction amount.
1000
netAmountDebitoptional
Net amount to be debited.
1000
taxSpecificationoptional
Tax details of the product/order.
Object
convenienceFeeoptional
Fees format (e.g., CC:12).
CC:12
offersoptional
Offers applied or available for the payment.
Object
Additional Info Object
Parameter
Description
Example
enforcePaymethodoptional
Force a transaction with a specified method (e.g., CC, DC).
CC
forcePgidoptional
Forces identification for payment gateway.
PG123
partnerHoldTimeoptional
Time held by the partner for the transaction.
60
userCredentialsoptional
Credentials for user authentication.
string
userTokenoptional
Token for the customer.
user_token_123
subventionAmountoptional
Amount paid through EMI subvention payments.
100
authOnly optional
Initiates an authentication-only payment (true/false).
false
createOrder optional
A flag to store the order details (true/false).
true
txnS2sFlow optional
For defining seamless/non-seamless flows in handling payments.
seamless
Callback Actions Object
Parameter
Description
Example
successActionmandatory
URL to be called on payment success.
https://example.com/success
failureActionmandatory
URL to be called on payment failure.
https://example.com/failure
cancelActionmandatory
URL to be called if user cancels the payment.
https://example.com/cancel
codActionoptional
URL for Cash on Delivery (COD) action.
https://example.com/cod
Billing Details Object
Parameter
Description
Example
firstNamemandatory
First name of the billing contact.
Ashish
lastNameoptional
Last name of the billing contact.
Kumar
address1mandatory
Primary billing address.
123 Main Street
address2optional
Secondary billing address.
Apt 4B
phoneoptional
Phone number of the billing contact.
9123456789
emailmandatory
Email address of the billing contact.
[email protected]
cityoptional
City of the billing address.
Bharatpur
stateoptional
State of the billing address.
Rajasthan
countryoptional
Country of the billing address.
India
zipCodeoptional
Postal/Zip code of the billing address.
321028
Request Headers:
Content-Type: application/json
date: Wed, 28 Jun 2023 11:25:19 GMT
authorization: hmac username="smsplus", algorithm="sha512", headers="date", signature="<calculated_hmac_signature>"
Request Body:
JSON
{
"accountId": "smsplus",
"referenceId": "b5f2d8785768087678fm9",
"currency": "INR",
"paymentSource": "WEB",
"order": {
"productInfo": "Test Product",
"orderedItem": [
{
"itemId": "ITEM001",
"description": "Test Product Description",
"quantity": 1
}
],
"paymentChargeSpecification": {
"price": 10.00
}
},
"additionalInfo": {
"txnFlow": "nonseamless"
},
"callBackActions": {
"successAction": "https://example.com/success",
"failureAction": "https://example.com/failure",
"cancelAction": "https://example.com/cancel"
},
"billingDetails": {
"firstName": "John",
"lastName": "Doe",
"phone": "9876543210",
"email": "[email protected] ",
"address": {
"address1": "123 Main Street",
"city": "Mumbai",
"state": "Maharashtra",
"country": "India",
"zipCode": "400001"
}
}
}
JSON
{
"result": {
"checkoutUrl": "https://pp78secure.payu.in/_payment_options?mihpayid=<mihpayuid>&userToken="
},
"status": "PENDING"
}
After the customer completes the payment on the PayU checkout page, you must verify the payment status using the verification API.
Environment URL Test https://test.payu.in/v3/transaction
Production https://api.payu.in/v3/transaction
The verification API requires the following headers:
Header Description Required Content-Type
Must be application/json
Yes date
Current date in GMT format Yes authorization
HMAC signature for authentication Yes Info-Command
Must be verify_payment
Yes
Parameter Type Description Required txnId
Array Array of transaction reference IDs to verify Yes
Response Parameters
Parameter
Description
txnId
This parameter contains the transaction ID of the transaction.
paymentId
This parameter contains the payment ID of the transaction.
message
This parameter contains the status message of the transaction.
Request Headers:
Content-Type: application/json
date: Thu, 27 Mar 2025 06:35:21 GMT
authorization: hmac username="PRiQvJ", algorithm="sha512", headers="date", signature="<calculated_hmac_signature>"
Info-Command: verify_payment
Request Body:
JSON
{
"txnId": ["b5f2d8785768087678fm9"]
}
JSON
{
"message": "Success",
"status": 1,
"result": [
{
"mihpayId": 21612493009,
"bankReferenceNumber": "2411194544",
"amount": 10.00,
"mode": "CC",
"requestId": "",
"originalAmount": 10.00,
"additionalCharges": 0.00,
"discount": 0.00,
"netDebitAmount": 10.00,
"productInfo": "Test Product",
"firstName": "John",
"bankcode": "VISA",
"nameOnCard": "JOHN DOE",
"cardNo": "XXXXXXXXXXXX1234",
"cardType": "VISA",
"udf1": null,
"udf2": null,
"udf3": null,
"udf4": null,
"udf5": null,
"field2": "140455",
"field9": "Transaction is Successful",
"errorCode": "E000",
"errorMessage": "No Error",
"addedOn": "2024-11-19 21:17:55",
"settledAt": "0000-00-00 00:00:00",
"paymentSource": "WEB",
"pgType": "CC-PG",
"status": "success",
"unmappedStatus": "captured",
"merchantUTR": null,
"rupayAuthRefNo": null,
"authRefNo": "123456789",
"originalCurrency": "INR",
"threeDSVersion": "2.2.0",
"message": "Found TxnId",
"txnId": "b5f2d8785768087678fm9"
}
]
}
JSON
{
"status": 0,
"msg": "Invalid Transaction ID"
}