INTENT Request:
Headers
Request Body Parameters
| Parameters | Description | Min Length | Max Length | Data type | Mandatory/Optional |
| payeeVPA | Payee's VPA of Merchant for Payment Collection (e.g- 63705423781902@nsdl ) | 1 | 100 | String | Mandatory |
| paymentMode | Payment Mode (INTENT) | 1 | 10 | String | Mandatory |
| txnAmount | Transaction amount for which transaction is initiated Min: 1 Max: 100000.00 | 1 | 10 | String | Mandatory |
| channelId | Channel Identifier Web: “WEBUSER” Android: “Android” | 1 | 10 | String | Mandatory |
| txnNote | Transaction Note | 1 | 50 | String | Mandatory |
| clientRefId | Unique client reference needs to be generated by partner/Merchant for each transaction | 10 | 19 | String | Mandatory |
| merchantType | Type of Merchant Default Value: AGGREGATE | 1 | 10 | String | Mandatory |
| expiryTime | Time in Minutes Min Time: 1 Max Time: 30 | 1 | 2 | String | Mandatory |
| mobilenumber | Mobile Number of Customer | 10 | 10 | String | Mandatory |
Sample Request Body
Encrypted Sample Request Body
Response Body Parameters
| Parameters | Description | Min Length | Max Length | Data type |
| amount | Transaction amount for which the transaction is initiated | 1 | 10 | Integer |
| clientRefId | Unique client reference ID needs to be generated by partner/Merchant for each new transaction | 10 | 19 | String |
| intentData | UPI Intent URL (null for QR) | NA | Na | string |
| payeeVPA | Payee's VPA of Merchant for Payment Collection | 1 | 100 | String |
| payerVPA | Payer’s UPI ID | 1 | 100 | String |
| paymentState | State of the Payment | 1 | 10 | String |
| qrData | Base64 Encoded QR Data, which needs to be converted into a QR to collect payment | NA | Na | String |
| status | Status of Transaction Initiation | 1 | 10 | String |
| statusCode | Status Code | 1 | 3 | String |
| statusDesc | Status Description | 1 | 50 | String |
| txnId | Generated Transaction ID | 18 | 58 | string |
Sample Response Body
SUCCESS:
SUCCESS(Encrypted):
FAILED:
Amount is blank:
Client Reference ID is blank:
Note:
Any missing or invalid mandatory field will generate a Failed response.
Status Codes
| Status | Status Code | Description |
| INITIATED | 0 | Qr generated successfully |
| FAILED | -1 | QR generation failed due to invalid request |
QR Request:
Headers
Request Body Parameters
| Parameters | Description | Min Length | Max Length | Data type | Mandatory/Optional |
| payeeVPA | Payee's VPA of Merchant for Payment Collection (e.g- 63705423781902@nsdl ) | 1 | 100 | String | Mandatory |
| paymentMode | Payment Mode (e.g., QR) | 1 | 10 | String | Mandatory |
| txnAmount | Transaction amount for which transaction is initiated Min: 1 Max: 100000.00 | 1 | 10 | String | Mandatory |
| channelId | Channel Identifier Web: “WEBUSER” Android: “Android” | 1 | 10 | String | Mandatory |
| txnNote | Transaction Note | 1 | 50 | String | Mandatory |
| clientRefId | Unique client reference needs to be generated by partner/Merchant for each transaction | 10 | 19 | String | Mandatory |
| merchantType | Type of Merchant Default Value: AGGREGATE | 1 | 10 | String | Mandatory |
| expiryTime | Time in Minutes Min Time: 1 Max Time: 30 | 1 | 2 | String | Mandatory |
| mobilenumber | Mobile Number of Customer | 10 | 10 | String | Mandatory |
Sample Request Body
Encrypted Sample Request Body
Response Body Parameters
| Parameters | Description | Min Length | Max Length | Data type |
| amount | Transaction amount for which the transaction is initiated | 1 | 10 | Integer |
| clientRefId | Unique client reference ID needs to be generated by partner/Merchant for each new transaction | 10 | 19 | String |
| intentData | UPI Intent URL (null for QR) | NA | Na | string |
| payeeVPA | Payee's VPA of Merchant for Payment Collection | 1 | 100 | String |
| payerVPA | Payer’s UPI ID | 1 | 100 | String |
| paymentState | State of the Payment | 1 | 10 | String |
| qrData | Base64 Encoded QR Data, which needs to be converted into a QR to collect payment | NA | Na | String |
| status | Status of Transaction Initiation | 1 | 10 | String |
| statusCode | Status Code | 1 | 3 | String |
| statusDesc | Status Description | 1 | 50 | String |
| txnId | Generated Transaction ID | 18 | 58 | string |
Sample Response Body
SUCCESS:
SUCCESS(Encrypted):
FAILED:
Amount is missing:
Client Reference ID is missing:
Note:
Any missing or invalid mandatory field will generate a Failed response.
Status Codes
| Status | Status Code | Description |
| INITIATED | 0 | Qr generated successfully |
| FAILED | -1 | QR generation failed due to invalid request |
UPI Collect(VPA) API:
Headers
API Flow (High Level):
Request Body Parameters
| Parameters | Description | Min Length | Max Length | Data type | Mandatory/Optional |
| payeeVPA | VPA of the payee/merchant receiving the payment. | 3 | 255 | String | Mandatory |
| payerVPA | VPA of the payer/customer initiating the payment. | 3 | 255 | String | Mandatory |
| paymentMode | Type of UPI transaction (COLLECT only) | 2 | 7 | String | Mandatory |
| txnAmount | Transaction amount in INR | 1 | 10 | String/Decimal | Mandatory |
| channelId | Channel initiating the request (WEBUSER, ANDROID, etc.) | 3 | 10 | String | Mandatory |
| txnNote | Note or remark for the transaction | 1 | 50 | String | Mandatory |
| clientRefId | Unique reference ID generated by merchant per transaction | 10 | 19 | String | Mandatory |
| merchantType | Merchant category (AGGREGATE, DIRECT) | 3 | 10 | String | Mandatory |
| expiryTime | Time in minutes after which the request expires (Min: 1, Max: 64800 – 45 days) | 1 | 5 | Integer | Mandatory |
| merchantMobileNumber | Merchant’s registered mobile number | 10 | 10 | Integer | Mandatory |
| deviceGeoCode | Device latitude and longitude (format: lat,long) | 13 | 15 | String | Mandatory-Collect only |
| deviceLocation | Device or merchant location (City, State, Country) | 1 | 255 | String | Mandatory-Collect only |
| deviceCapability | Device capability (FULL, LIMITED) | 1 | 99 | String | Mandatory-Collect only |
| deviceTelecomOp erator | Telecom operator name (Jio, Airtel, or NA) | 1 | 99 | String | Mandatory-Collect only |
| deviceIp | Device IP address (IPv4/IPv6 only) | 7 | 45 | String | Mandatory-Collect only |
| deviceType | Device type (MOB, WEB) | 1 | 20 | String | Mandatory-Collect only |
| deviceId | Unique device identifier (IMEI / UUID / hash) | 1 | 35 | String | Mandatory-Collect only |
| deviceOs | Device OS name/version (e.g., Android 14, iOS 18) | 1 | 20 | String | Mandatory-Collect only |
| deviceApp | Application name initiating the transaction | 1 | 20 | String | Mandatory-Collect only |
Notes:
- Device-related parameters are not applicable for INTENT and QR payment modes.
Sample Request Body
Encrypted Sample Request Body
Response Body Parameters
| Parameters | Description | Data type |
| txnId | Unique transaction identifier generated by the system | String |
| txnAmount | Transaction amount in INR | String |
| clientRefId | Client reference ID provided by merchant | string |
| payeeVPA | Payee’s Virtual Payment Address | String |
| payerVPA | Payer’s Virtual Payment Address | String |
| paymentMode | Payment mode (COLLECT, INTENT, QR) | String |
| paymentState | Current payment state (INITIATED, SUCCESS, FAILED) | String |
| status | Overall transaction status | String |
| statusCode | System Status Code | String |
| statusDesc | Description of transaction status | String |
| createTime | Transaction creation timestamp (DD-MM-YYYY HH:MM:SS) | string |
| updateTime | Last transaction update timestamp (DD-MM-YYYY HH:MM:SS) | string |
| intentData | UPI Intent payload (null for Collect) | string |
| qrData | UPI QR payload (null for Collect) | string |
Sample Response Body
Encrypted:
Notes:
- clientRefId must be unique per transaction.
- Expired collect requests cannot be reused.
- Final transaction status will be communicated via callback APIs or status enquiry APIs.
- Merchants must ensure payer consent before initiating collect requests.
Security & Compliance:
- All requests must be sent over HTTPS.
- IP whitelisting and authentication mechanisms apply as per merchant onboarding.
- Sensitive data must not be logged or stored in plain text.