> ## Documentation Index
> Fetch the complete documentation index at: https://razorpay-881012b3.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Resolve VPAs

> Resolve VPAs using the Razorpay API.

<div style={{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"0.35rem 0.9rem",border:"1px solid rgba(128,128,128,0.28)",borderRadius:"0.5rem",padding:"0.45rem 0.75rem",margin:"0 0 1.25rem",fontSize:"0.875rem"}}>
  <span style={{fontWeight:600}}>Available in</span>
  <span>🇮🇳 India</span>
</div>

TPAP resolves a VPA address to find the name of the entity to which the VPA belongs and its source before collecting a payment. Below are the expected responses:

* Payment source information such as `name`, `ifsc` and `upi_iin` are sent in response only when NPCI responds to switch as the  VPA is verified.
* `isMerchantVerified`, `mcc` and `merchantType` are sent in response only when the VPA of a merchant is verified.

Use this endpoint to Resolve a VPA.

<RequestExample>
  ```bash Curl theme={null}
  curl -X POST 'api.rzp.<bank>.com/v1/upi/tpap/vpa/resolve' \
  -u [YOUR_KEY_ID]:[YOUR_SECRET] \
  -H "Content-type: application/json" \
  -H "x-device-fingerprint: <device_fingerprint>" \
  -H "x-device-fingerprint-timestamp: 1496918882000" \
  -H "x-customer-reference: customer-id-from-customer" \
  -d '{
    "vpa": "pay2me@okhdfbank",
    "device": {
      "geocode": "1234.1213",
      "ip": "198.1.1.1"
    }
  }'
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "entity":"upi.vpa",
    "upi_transaction_id":"TXNxmms",
    "address":"kunal-1@rzpa",
    "fundsource":{
      "customer_name":"kunal1",
      "ifsc":"SBI00001",
      "upi_iin":""
    },
    "is_merchant_vpa":true,
    "is_merchant_verified":true,
    "mcc":"string",
    "merchant":{
      "identifier":{
        "subcode":"string",
        "mid":"string",
        "sid":"string",
        "tid":"string",
        "merchant_type":"string",
        "merchant_genre":"string",
        "onboarding_type":"string"
      },
      "name":{
        "brand":"string",
        "legal":"string",
        "franchise":"string"
      },
      "ownership":{
        "type":"string"
      }
    },
    "feature_tags":[
      "string"
    ]
  }
  ```
</ResponseExample>

## Request Parameters

<ParamField body="vpa" type="string" required>
  VPA that is to be resolved.
</ParamField>

<ParamField body="device" type="string">
  Device details.
</ParamField>

<ParamField body="ip" type="string">
  The IP address of the device.
</ParamField>

<ParamField body="geocode" type="string">
  The location coordinates of the device. For example, `12.9667,77.5667`.
</ParamField>

## Response Parameters

<ResponseField name="entity" type="string">
  Name of the entity.
</ResponseField>

<ResponseField name="upi_transaction_id" type="string">
  The transaction identifier of UPI.
</ResponseField>

<ResponseField name="address" type="string">
  The VPA address being resolved.
</ResponseField>

<ResponseField name="fundsource" type="object">
  The payment source details.
</ResponseField>

<ResponseField name="customer_name" type="string">
  Name of the account holder.
</ResponseField>

<ResponseField name="ifsc" type="string">
  IFSC of the account linked to the VPA.
</ResponseField>

<ResponseField name="upi_iin" type="string">
  UPI Issuer Identification Numbers (IIN) of the payment source provider issued by NPCI.
</ResponseField>

<ResponseField name="is_merchant_vpa" type="boolean">
  Indicates whether the VPA belongs to merchant. Possible values:

  * `true`: Merchant VPA.
  * `false`: Not merchant VPA.
</ResponseField>

<ResponseField name="is_merchant_verified" type="boolean">
  Indicates whether merchant is verified. Possible values:

  * `true`: Merchant is verified.
  * `false`: Merchant is not verified.
</ResponseField>

<ResponseField name="mcc" type="string">
  The merchant category code for the merchant.
</ResponseField>

<ResponseField name="merchant" type="object">
  Business details.
</ResponseField>

<ResponseField name="identifier" type="object">
  Merchant identifier details.
</ResponseField>

<ResponseField name="subcode" type="string">
  The merchant sub code. This is populated only when the VPA is from the merchant.
</ResponseField>

<ResponseField name="mid" type="string">
  The merchant identifier. This is populated only when the VPA is from the merchant.
</ResponseField>

<ResponseField name="sid" type="string">
  The SID of the merchant. This is populated only when the VPA is from the merchant.
</ResponseField>

<ResponseField name="tid" type="string">
  The TID of the merchant. This is populated only when the VPA is from the merchant.
</ResponseField>

<ResponseField name="merchant_type" type="string">
  Type of the merchant. This is populated only when the VPA is from the merchant.
</ResponseField>

<ResponseField name="merchant_genre" type="string">
  This is populated only when the VPA is from the merchant.
</ResponseField>

<ResponseField name="onboarding_type" type="string">
  The onboarding type. This is populated only when the VPA is from the merchant.
</ResponseField>

<ResponseField name="name" type="object">
  The merchant business details.
</ResponseField>

<ResponseField name="brand" type="string">
  The merchant brand. This is populated only when the VPA is from the merchant.
</ResponseField>

<ResponseField name="legal" type="string">
  The merchant legal information. This is populated only when the VPA is from the merchant.
</ResponseField>

<ResponseField name="franchise" type="string">
  The merchant franchise. This is populated only when the VPA is from the merchant.
</ResponseField>

<ResponseField name="ownership" type="object">
  The ownership details.
</ResponseField>

<ResponseField name="type" type="string">
  The ownership type.
</ResponseField>

<ResponseField name="feature_tags" type="string">
  Indicates an array of feature values. Each has its significance as decided by NPCI. Possible values:

  * `mandate`
  * `credit`
  * `ppi`
  * `uod`
  * `voucher`
</ResponseField>
