The Get Payment Gateway Up Status API allows you to check the real-time availability of payment options (Net Banking, Wallets, UPI) before displaying them to customers. This helps improve checkout experience by hiding unavailable payment methods.
Note: This API replaces the Get Net Banking Status API. PayU strongly recommends you to migrate to this endpoint for continued support.
Features
- Check specific payment options individually: You can check the status of a wallet, a specific Net Banking provider, or UPI by passing the relevant code in the
var1parameter. For example:- For a specific bank like Axis, pass
var1=AXIB - For UPI, pass
var1=UPI - For a wallet like PhonePe, pass
var1=PHONEPE - For all payment options at once, pass
var1=default
var1is part of the hash sequence. There's no separate parameter to filter by mode. - For a specific bank like Axis, pass
- Gateway-level health monitoring: PayU routes payments through multiple backend payment gateways. For any given payment option (for example, Axis Net Banking), there might be 2-3 gateways handling it. The API checks if at least one gateway is working:
up_status = 1: At least one gateway is operationalup_status = 0: All gateways are downup_status = 3: The option is available but performing poorly (low success rate). This status only appears if you explicitly passvar2=1in the request; otherwise, you'll only see0or1.
POST /merchant/postservice.php
Environment
Test Environment:
https://test.payu.in/merchant/postservice.php?form=2
Production Environment:
https://info.payu.in/merchant/postservice.php?form=2
Remember to use your production merchant key and salt when making requests to the production endpoint.
Request Parameters
Check the Form Data below for Try IT experience. The following provides more detailed description for some of the parameters.
Partial Request Parameters
| Parameter | Type & Description | Example |
|---|---|---|
var1mandatory | String The payment option code to check. Use default to retrieve all payment options, or specify a bank code (e.g., AXIB, SBIB), wallet code (e.g., PHONEPE, OLAM), or UPI for UPI payments. For the list of bank codes, refer to Net Banking Codes or Wallet Codes based on the use case. For UPI, use any of the following:
| default |
hashmandatory | String SHA-512 hash for request authentication. Formula: sha512(key|command|var1|salt). The hash must be computed server-side and passed as lowercase hexadecimal. See Hash Generation section below. | 5d96e2c5a7... |
var2optional | Integer Set to 1 to include performance status in the response. When enabled, the API will return up_status=3 for payment options with low success rates. Default is 0. | 1 |
Hash Generation
The hash parameter is required to authenticate your request. It must be generated server-side using the SHA-512 algorithm.
Hash Sequence:
sha512(key|command|var1|salt)Important Notes:
- Use the pipe character (
|) as a separator between values - The hash must be in lowercase hexadecimal format
- Never expose your salt in client-side code
Sample Hash Generation Code:
// Node.js example
const crypto = require('crypto');
const key = 'JPM7Fg';
const command = 'getNetbankingStatus';
const var1 = 'default';
const salt = 'rF1d43OgVcGCVctqAFTG6QiTCB9UXiyg';
const hashString = `${key}|${command}|${var1}|${salt}`;
const hash = crypto.createHash('sha512').update(hashString).digest('hex');
console.log(hash);Request Examples
Check All Payment Options (default)
Request
curl --location 'https://test.payu.in/merchant/postservice.php?form=2' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'key=JPM7Fg' \
--data-urlencode 'command=getNetbankingStatus' \
--data-urlencode 'var1=default' \
--data-urlencode 'hash=YOUR_GENERATED_HASH'Sample Response
{
"status": 1,
"msg": "Success",
"result": {
"AXIB": {
"up_status": "1",
"title": "Axis Bank"
},
"SBIB": {
"up_status": "1",
"title": "State Bank of India"
},
"UPI": {
"up_status": "1",
"title": "UPI"
},
"PHONEPE": {
"up_status": "1",
"title": "PhonePe Wallet"
}
}
}Check Specific Net Banking Option
For the list of bank codes, refer to Net Banking Codes.
Request
curl --location 'https://test.payu.in/merchant/postservice.php?form=2' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'key=JPM7Fg' \
--data-urlencode 'command=getNetbankingStatus' \
--data-urlencode 'var1=SBIB' \
--data-urlencode 'hash=YOUR_GENERATED_HASH'Note: When checking a specific option, ensure you recalculate the hash using the specific
var1value (e.g.,SBIB), notdefault.
Sample Response
{
"status": 1,
"msg": "Success",
"result": {
"SBIB": {
"up_status": "1",
"title": "State Bank of India"
}
}
}Check UPI Status
Request
curl --location 'https://test.payu.in/merchant/postservice.php?form=2' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'key=JPM7Fg' \
--data-urlencode 'command=getNetbankingStatus' \
--data-urlencode 'var1=UPI' \
--data-urlencode 'hash=YOUR_GENERATED_HASH'Sample Response
{
"status": 1,
"msg": "Success",
"result": {
"UPI": {
"up_status": "1",
"title": "UPI"
}
}
}Check Wallet Status
For the list of bank codes, refer to Wallet Codes.
Request
curl --location 'https://test.payu.in/merchant/postservice.php?form=2' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'key=JPM7Fg' \
--data-urlencode 'command=getNetbankingStatus' \
--data-urlencode 'var1=OLAM' \
--data-urlencode 'hash=YOUR_GENERATED_HASH'Sample Response
{
"status": 1,
"msg": "Success",
"result": {
"OLAM": {
"up_status": "1",
"title": "Ola Money Wallet"
}
}
}Check with Performance Status (var2=1)
Request
curl --location 'https://test.payu.in/merchant/postservice.php?form=2' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'key=JPM7Fg' \
--data-urlencode 'command=getNetbankingStatus' \
--data-urlencode 'var1=default' \
--data-urlencode 'var2=1' \
--data-urlencode 'hash=YOUR_GENERATED_HASH'Note: When using
var2=1, recalculate the hash using the sequence:sha512(key|command|var1|var2|salt)
Sample Response
{
"status": 1,
"msg": "Success",
"result": {
"AXIB": {
"up_status": "1",
"title": "Axis Bank"
},
"SBIB": {
"up_status": "3",
"title": "State Bank of India"
},
"UPI": {
"up_status": "1",
"title": "UPI"
},
"PHONEPE": {
"up_status": "0",
"title": "PhonePe Wallet"
}
}
}In this example:
AXIBandUPIare fully operational (up_status=1)SBIBis available but has low success rate (up_status=3)PHONEPEis currently unavailable (up_status=0)
Response Schema
| Field | Type & Description | Example |
|---|---|---|
| status |
Integer API call status. 1 = Success, 0 = Failure
|
1 |
| msg |
String Status message describing the API response
|
Success |
| result |
Object Contains payment option codes as keys, each with nested up_status and title fields
|
{ "AXIB": {...} } |
| result.[code].up_status |
String Availability status of the payment option. "1" = Available, "0" = Down, "3" = Available but low performance (only when var2=1)
|
"1" |
| result.[code].title |
String Display name of the payment option
|
Axis Bank |
Error Codes
| Error Code | Description & Action | HTTP Status |
|---|---|---|
| INVALID_HASH | Hash validation failed. Verify that you are using the correct salt and hash sequence. Ensure hash is lowercase hexadecimal. | 200 |
| INVALID_KEY | Merchant key is invalid or inactive. Verify your merchant key from the PayU dashboard. | 200 |
| MISSING_PARAMETER | One or more required parameters are missing. Ensure key, command, var1, and hash are all provided. | 200 |
| INVALID_COMMAND | The command parameter must be getNetbankingStatus. | 200 |
