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 | Data type | Mandatory/Optional |
| payeeVPA | VPA of the payee/merchant receiving the payment. | String | Mandatory |
| payerVPA | VPA of the payer/customer initiating the payment. | String | Mandatory |
| payerName | Name of the payer. | String | Mandatory |
| txnAmount | Transaction amount in INR Amount > 0 . It must Not be NULL. E.g. - 1 - 100000 |
String | Mandatory |
| merchantType | Merchant category (AGGREGATE, DIRECT) | String | Mandatory |
| paymentMode | Type of UPI transaction It must Not be NULL. (VPA) | String | Mandatory |
| channelId | Channel initiating the request (WEBUSER, ANDROID,IOS) | String | Mandatory |
| clientRefId | Unique reference ID regexp = "^[A-Za-z0-9]{10,19}$" Must be between 10 to 19 characters. |
String | Mandatory |
| expiryTime | Expiry Time (1-30) | Integer | Mandatory |
| txnNote | Note or remark for the transaction. Max size 50 | String | Mandatory |
| mobilenumber | Valid registered mobile number | Integer | Mandatory |
| geoCode | Latitude and longitude of the current location of the user | String | Mandatory |
| deviceId | MAC ID of the device of the user | String | Mandatory |
| deviceIp | IP Address of the user's device | String | Mandatory |
| deviceType | MOBILE or WEB) | String | Mandatory |
| location | Location of the user(City State and Country) | String | Mandatory |
| app | Name of the app from which the user is performing transaction e.g. PhonePe, paytm or GPay | String | Mandatory |
| os | Operating System of the user's environment | String | Mandatory |
| capability | Capability | String | Mandatory |
| telecom | Operator network company i.e. AIRTEL or JIO | String | Mandatory |
| simNo | SIM Number of the User | String | Mandatory |
| payerCode | Payer Code of the User | String | Mandatory |
| paramA | To be used as per user's need. | String | Optional |
| paramB | To be used as per user's need. | String | Optional |
| paramC | To be used as per user's need. | String | Optional |
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 |
| amount | Transaction amount in INR | String |
| status | Overall transaction status | String |
| statusDesc | Description of transaction status | String |
| paymentState | Current payment state (INITIATED, SUCCESS, FAILED) | String |
| payeeVPA | Payee’s Virtual Payment Address | String |
| payerVPA | Payer’s Virtual Payment Address | String |
| qrData | UPI QR payload (null for Collect) | string |
| intentData | UPI Intent payload (null for Collect) | string |
| statusCode | System Status Code | String |
| clientRefId | Client reference ID provided by merchant | 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.