UPI
PZ Integration option
Payment flow
- Your customer selects UPI as a payment method.
- You request a wallet number from PaySage.io and show it to the customer.
- The customer makes a transfer on the given wallet.
- The customer copies the transaction ID from the receipt and enters it on your payment form.
- You create a payment through PaySage.io API and pass that transaction ID.
- Then, PaySage.io activates the payment and notify you when the transaction will be completed.
This integration option supports the following transaction types:
Wallet number request
Request
Send a GET request to https://api.paysage.io/beyag/pkm/upi/wallet/{currency}
, where {currency} stands for the payment currency in the ISO-4217 format, for example USD.
Response
You will get a 200
response status code if your request was processed successfully, or not successfully.
Successful response example
{
"wallet": "123456789",
"status": "ok"
}
Error response example
{
"status": "fail",
"message": "An error has occurred while fetching a wallet. Try again later, please."
}
Payment
Request
Info
Confirm supported currencies and countries with your manager.
After your customer sent you the transaction ID, send a payment request with the following data:
|
Response
The upi
response section will have parameters copied from a request. Additionally, you'll get the form
parameter to build a form where the customer should be redirected to finalize the payment.
Payout
Request
Info
A fraction of the amount is ignored. For example, if you pass amount = 123456, then the actual amount is 123400.
Send a payout request with the following data:
|
Response
The imps_ib
response section will have parameters copied from a request.
PF Integration Option
This integration option supports the payment transaction:
Payment
Payment flow
- Customer selects UPI as a payment method on the merchant's website and submits their VPA (Virtual Payment Address).
- Merchant sends the payment request to PaySage.io.
- PaySage.io returns the payment status to the merchant:
pending
orfailed
. - Customer receives a payment confirmation request in their UPI application.
- Customer confirms the payment in their UPI application.
- PaySage.io sends a webhook notification with
successful
,failed
orpending
status.
Request
Send a payment request with the following additional parameters:
|
Request example
{
"request": {
"amount": 10042,
"currency": "INR",
"description": "description",
"test": false,
"customer": {
"first_name": "John",
"last_name": "Doe",
"state": "KA",
"city": "Bangalore",
"zip": "560002",
"address": "1st Street",
"phone": "17777777777",
"email": "user@example.com"
},
"method": {
"type": "upi",
"account": "1234"
}
}
}
Response
The upi
response section will have the same parameters as in the request.
PF Integration Option (with QR)
Payment
Payment flow
- The customer selects UPI as a payment method on the merchant's website and submits their VPA (Virtual Payment Address).
- The merchant sends the payment request to PaySage.io.
-
PaySage.io sends a response with 3 links:
- to the QR-code;
- to the deeplink;
- to the page that displays both the QR and the deeplink.
-
The merchant redirects the customer to one of the links in the response.
- The customer completes the payment in the UPI application.
- PaySage.io sends a webhook notification with the payment status to the merchant.
Request
Send a payment request with the following additional parameters:
|
Request example
{
"request": {
"amount": 20000,
"currency": "INR",
"description": "description",
"duplicate_check": false,
"test": false,
"expired_at": "2026-01-01T15:00:00+01:00",
"tracking_id": "your_uniq_number",
"ip": "127.0.0.1",
"language": "en",
"notification_url": "https://merchant.ltd/notification",
"return_url": "https://merchant.ltd/return",
"customer": {
"first_name": "John",
"last_name": "Doe",
"middle_name": "Mid",
"country": "IN",
"state": "KA",
"city": "Bangalore",
"zip": "560002",
"address": "1st Street",
"phone": "17777777777",
"device_id": "12312312321fff67",
"email": "example@example.com"
},
"method": {
"account": "BE11-EF898-251F-A949",
"type": "upi_qr_deeplink"
}
}
}
Response
Redirect your customer to one of the following URLs:
additional_data.payment_method.qr_code
– to display the QR-code;additional_data.payment_method.deeplink
– to redirect them to the UPI application;form.action
– to redirect them to the HTML page with both QR-code and a link to the UPI application displayed.
Response example
{
"transaction": {
"uid": "05482b9d-2ec9-4844-8763-55fc3195c9ef",
"type": "payment",
"status": "pending",
"amount": 20000,
"currency": "INR",
"description": "description",
"created_at": "2025-07-12T10:07:52Z",
"updated_at": "2025-07-12T10:07:52Z",
"method_type": "upi_qr_deeplink",
"receipt_url": "https://backoffice.paysage.io/customer/transactions/05482b9d-2ec9-4844-8763-55fc3195c9ef/27b5379b2b6796c4d9ef9f2d850000190fac077da124f4d8b14e370b4a737c27?language=en",
"payment": {
"status": "pending",
"gateway_id": 5374,
"ref_id": "178648809",
"message": "Transaction was initialized"
},
"upi_qr_deeplink": {
"type": "upi_qr_deeplink",
"account": "BE11-EF898-251F-A949"
},
"customer": {
"zip": "560002",
"city": "Bangalore",
"email": "example@example.com",
"phone": "17777777777",
"state": "KA",
"address": "1st Street",
"country": "IN",
"device_id": "12312312321fff67",
"last_name": "Doe",
"first_name": "John",
"middle_name": "Mid",
"ip": "127.0.0.1"
},
"manually_corrected_at": null,
"version": 1,
"message": "Transaction was initialized",
"tracking_id": "your_uniq_number",
"test": false,
"language": "en",
"expired_at": "2026-01-01T14:00:00Z",
"billing_address": {
"zip": "560002",
"city": "Bangalore",
"email": "example@example.com",
"phone": "17777777777",
"state": "KA",
"address": "1st Street",
"country": "IN",
"device_id": "12312312321fff67",
"last_name": "Doe",
"first_name": "John",
"middle_name": "Mid"
},
"additional_data": {
"payment_method": {
"type": "alternative",
"qr_code": "data:image/png;base64,",
"deeplink": "upi:/"
}
},
"gateway": {
"iframe": false
},
"form": {
"action": "https://api.paysage.io/beyag/transactions/redirect/05482b9d-2ec9-4844-8763-55fc3195c9ef",
"method": "GET",
"fields": []
}
}
}