UPI Verification
Banking & CreditResolve a UPI ID to its registered account holder and match the name.
Validate a UPI ID (VPA) and retrieve the name registered to it, with an optional name-match result. A lightweight, instant alternative to account and IFSC verification for gig, marketplace and refund payouts.
Endpoint
Request parameters
| Field | Type | Description |
|---|---|---|
u_p_i_i_d_v_p_a
required
|
string | UPI ID (VPA) |
name_to_match
optional
|
string | Name to match |
Example request
curl -X POST https://app.emver.io/api/sandbox/v1/upi-verification \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"u_p_i_i_d_v_p_a": "string",
"name_to_match": "string"
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/upi-verification",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"u_p_i_i_d_v_p_a": "string",
"name_to_match": "string"
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/upi-verification", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"u_p_i_i_d_v_p_a": "string",
"name_to_match": "string"
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/upi-verification', {
"u_p_i_i_d_v_p_a": "string",
"name_to_match": "string"
});
$data = $response->json();
Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.
Response
Structure · 200
{
"status": INTEGER,
"message": STRING,
"data": {
"account_holder_name": STRING,
"name_match_result": STRING
}
}
Example · 200
{
"status": 200,
"message": "string",
"data": {
"account_holder_name": "string",
"name_match_result": "string"
}
}
Error · 4xx / 5xx
{
"status": INTEGER,
"message": STRING
}
See Errors & status codes for what each status means and which calls are billed.
About this API
UPI is how most Indian gig workers, small sellers and customers prefer to be paid. The UPI Verification API confirms the handle is active and returns the account holder's registered name, so you know the money is going to the person who signed up and not to a handle they typed in wrong.
Pass the name you expect and get a match verdict, removing the need for a separate reconciliation step.
Typical uses
- Gig and delivery partner payouts. Verify the UPI handle at onboarding.
- Marketplace seller settlements. Confirm small-seller payout details.
- Customer refunds and cashbacks. Validate before pushing money out.
- Micro-lending disbursal. Fast beneficiary confirmation for small-ticket loans.
Questions
- Does it work with every UPI app?
- Yes. Any handle on the UPI network resolves regardless of the app that issued it.
- Is this a substitute for bank account verification?
- For UPI payouts, yes. If you pay by NEFT or IMPS, verify the account and IFSC with the Bank Account Verification API instead.