Appearance
UPI Payments
Use this page to create payments via UPI using the common Payment API endpoint. Authentication and base URL follow the Payment API docs.
- Base URL:
https://api.paylander.com/api/v1/payment/ - Endpoint:
POST /v1/payment/
You can receive the mispaid status in this method! Please, pay your attention to the Mispaid instruction.
Supported Currencies
- INR
Integration Models
UPI payments support two integration models:
- Redirect flow: You pass only
typeand payer interaction happens in our hosted page. - Server to Server: You collect the customer data; send details in
payment_method.
Redirect Flow
Use when payer interaction happens in our hosted page. Your backend only specifies the payment method type.
Common fields (see Payment API):
channel(UUID, required)amount(object, required)currency(ISO 4217, required)value(string, required)
external_id(string, optional)return_url(string, recommended)payment_method(object, required)
payment_method (type: upi)
Required:
type→"upi"
Example Request (Hosted)
json
{
"channel": "a8262038-ee85-45c6-8789-08fe2fd2b933",
"amount": {
"currency": "INR",
"value": "111.00"
},
"payment_method": {
"type": "upi"
},
"return_url": "https://your-company.com/success",
"callback_url": "https://your-company.com/callback",
"external_id": "YOUR_ORDER_NUMBER",
}Example Response (Hosted)
json
{
"status": "processing",
"transaction_id": "269db9fa-440e-49a5-ab67-d30ecb75149e",
"amount": {
"currency": "INR",
"value": "111.00"
},
"redirect_url": "https://pay.paylander.com/upi/269db9fa-440e-49a5-ab67-d30ecb75149e/",
"channel": "a8262038-ee85-45c6-8789-08fe2fd2b933",
"payment_method": {
"type": "upi"
},
"create_date": "2025-10-15T23:54:13.008007+00:00"
}Notes:
- For redirect flow, payer completes the flow in our hosted page. Use
redirect_url.
Server-to-Server
Use when your backend collects payer details directly.
Common fields (see Payment API):
channel(UUID, required)amount(object, required)currency(ISO 4217, required)value(string, required)
external_id(string, optional)return_url(string, recommended)payment_method(object, required)
payment_method (type: upi)
Supported fields for Server to Server:
type→"upi"email→ Payer emailfirst_name→ Payer first namelast_name→ Payer last namephone→ Payer phone (E.164)
Example Request (Server to Server)
json
{
"channel": "a8262038-ee85-45c6-8789-08fe2fd2b933",
"amount": {
"currency": "INR",
"value": "111.00"
},
"payment_method": {
"type": "upi",
"phone": "919876543210",
"first_name": "Rahul",
"last_name": "Sharma",
"email": "rahul.sharma@example.in"
},
"return_url": "https://example.com/success",
"callback_url": "https://your-company.com/callback",
"external_id": "YOUR_ORDER_NUMBER"
}Example Response (Server to Server)
json
{
"status": "processing",
"transaction_id": "f4a3c2d1-8b7e-4f9a-9c1d-3e5f7a9b2c10",
"amount": {
"currency": "INR",
"value": "111.00"
},
"redirect_url": "https://pay.paylander.com/upi/f4a3c2d1-8b7e-4f9a-9c1d-3e5f7a9b2c10/",
"channel": "a8262038-ee85-45c6-8789-08fe2fd2b933",
"payment_method": {
"type": "upi",
"phone": "919876543210",
"first_name": "Rahul",
"last_name": "Sharma",
"email": "rahul.sharma@example.in",
"upi_id": "rahul.sharma@icici",
"upi_link": "upi://pay?pa=rahul.sharma@icici&pn=Rahul%20Sharma&am=111.00&cu=INR",
"state": "waiting_for_utr"
},
"create_date": "2025-10-15T11:36:06.488572+00:00"
}Confirm Flow (Server to Server)
When payment_method.state is waiting_for_utr, the client must call the confirm endpoint (/v1/payment/confirm/).
Confirm request body:
json
{
"id": "58d3f0a2-4c84-40d9-9ebe-e3b1137a49c8",
"utr": "1111"
}Possible outcomes:
- Waiting for provider approval: response remains
processingandpayment_method.statebecomeswaiting_for_provider.
Example (abbreviated, structure same as processing response):
json
{
"status": "processing",
"transaction_id": "58d3f0a2-4c84-40d9-9ebe-e3b1137a49c8",
"payment_method": {
"type": "upi",
"email": "amit.verma@example.in",
"first_name": "Amit",
"last_name": "Verma",
"phone": "919812345678",
"upi_id": "amit.verma@oksbi",
"upi_link": "upi://pay?pa=radj.ku@oksbi&pn=Amit%20Verma&am=111.00&cu=INR",
"state": "waiting_for_provider"
}
}- Confirmed: response returns
completedwithout thepayment_methodobject.
json
{
"status": "completed",
"transaction_id": "58d3f0a2-4c84-40d9-9ebe-e3b1137a49c8",
"amount": {
"currency": "INR",
"value": "111.00"
},
"redirect_url": "https://pay.paylander.com/upi/58d3f0a2-4c84-40d9-9ebe-e3b1137a49c8/",
"create_date": "2025-10-15T11:19:17.254731+00:00"
}Notes for Server to Server:
- The
statefield appears only in Server to Server responses and indicates next steps. waiting_for_utr→ collect UTR from the payer and call/v1/payment/confirm/.waiting_for_provider→ approval pending.