---
page_title: Validate QR/Fx Conversion
product: UPI TPAP SDK
platform: React Native
page_source: https://juspay.io/in/docs/upi-tpap-sdk/react-native/headless-process-payloads/validate-qr
llms_txt: https://juspay.io/in/docs/llms.txt
product_llms_txt: https://juspay.io/in/docs/upi-tpap-sdk/llms.txt
---


# **Validate QR** 



This function is used to validate the UPI International QR before proceeding for payment. There can be two types of QR codes Dynamic QR and Static QR codes. For Dynamic QR code the conversion amount is already handeled in the validate QR process, while for Static QR the conversion of amount is to be handeled by merchants by using Fx Conversion process.

> **Note**
> For Dynamic QR and Static QR - For both Dynamic and Static QR's the first step will include the Validate QR process.




###   Process Parameters



## Request Payload
- **RequestId**:
  - Description: Unique uuid-v4 string
  - Value: Example: abcd-12345-abcd-12345
  - Tags: String, Mandatory
- **Service**:
  - Description: Value: in.juspay.hyperapi
  - Tags: String, Mandatory
- **Payload**:
  - Description: Parameters required to call Hyper SDK API
  - Value:
    - **Action**:
      - Description: Operation to be performed in the SDK.
      - Value: upiInternationalValidateQr
      - Tags: String, Mandatory
    - **UpiRequestId**:
      - Description: Unique merchant id shared during onboarding
      - Tags: String, Mandatory
    - **MerchantKeyId**:
      - Description: Key ID to identify the public-private key pair used for signature generation
      - Tags: String, Mandatory
    - **QrPayload**:
      - Description: The complete URL of the QR to be verified
      - Tags: String, Mandatory
    - **Signature**:
      - Description: Signature generated for the signaturePayload
      - Value: <signature>
      - Tags: String, Mandatory
    - **SignaturePayload**:
      - Description: Signature payload is a stringified JSON of the details mentioned in the below table.
      - Value:
        - **Merchant_id**:
          - Description: Unique identifier associated with an account created by juspay.Ex: stock
          - Tags: String, Mandatory
        - **Customer_id**:
          - Description: Any unique reference associated with your customer.
          - Tags: String, Mandatory
        - **Timestamp**:
          - Description: Time when request is created in milliseconds.
          - Tags: String, Mandatory
      - Tags: String, Mandatory
  - Tags: JSON, Mandatory


## Response Payload
- **RequestId**:
  - Description: Unique uuid-v4 string
  - Value: Example: abcd-12345-abcd-12345
  - Tags: String
- **Service**:
  - Description: Value: in.juspay.hyperapi
  - Tags: String
- **Payload**:
  - Description: Response Parameters
  - Value:
    - **Action**:
      - Description: Operation to be performed in the SDK.
      - Value: upiInternationalValidateQr
      - Tags: String
    - **TxnId**:
      - Description: Unique Id for each transaction
      - Value: Example: YBL99e9db4c88e84fb7834dff54cab92d09
      - Tags: String
    - **PayeeType**:
      - Description: Merchant type who will recieve the money
      - Value: Example: SMALL, LARGE
      - Tags: String
    - **PayeeName**:
      - Description: Name of the payee.
      - Value: Example: ABCD
      - Tags: String
    - **PayeeCode**:
      - Description: Merchant Category Code of the payee merchant.
      - Value: Example: 5678
      - Tags: String
    - **PayeeAddr**:
      - Description: VPA of the Payee involved in the transaction
      - Value: Example: abc@xyz
      - Tags: String
    - **GatewayResponseStatus**:
      - Description: SUCCESS/FAILURE
      - Tags: String
    - **GatewayResponseCode**:
      - Description: Response Code received from NPCI
      - Tags: String
    - **GatewayResponseMessage**:
      - Description: Response Message received from NPCI
      - Tags: String
    - **FxList**:
      - Description: Details required for the fx conversion.
      - Value:
        - **Mkup**:
          - Description: Markup Rate to be used.
          - Tags: String
        - **Fx**:
          - Description: Foreign exchange rate for the currency.
          - Tags: String
        - **BaseAmount**:
          - Description: Amount in base currency (present only in case of dynamic QR).
          - Tags: String
        - **BaseCurr**:
          - Description: Base currency of amount.
          - Tags: String
        - **ConvertedAmount**:
          - Description: Converted amount based on the currency (present only in case of dynamic QR).
          - Tags: String
        - **Active**:
          - Description: Active status for forex as recieved from NPCI - Y/N
          - Tags: String
      - Tags: String, Mandatory
    - **ResponseCode**:
      - Description: The PSP response code for the operation
      - Tags: String
    - **ResponseMessage**:
      - Description: The PSP response message for the operation
      - Tags: String
  - Tags: JSON
- **Error**:
  - Description: Possible values :- true/false
  - Tags: Boolean
- **ErrorMessage**:
  - Description: Error Message
  - Tags: String
- **ErrorCode**:
  - Description: Error Code
  - Tags: String
- **Event**:
  - Description: Value: process_result
  - Tags: String





#### Code Snippets: -

#### Java Code Snippet:

```java
{"success":false,"message":"Failed to fetch snippet"}
```

#### Kotlin Code Snippet:

```kotlin
{"success":false,"message":"Failed to fetch snippet"}
```


> **Note**
> For static QR only Fx Conversion - Merchants have to handle the amount conversion using the Fx conversion process based on the mark up and Fx rate received in the validate QR response. The Fx process is given below




###   Process Parameters



## Request Payload
- **RequestId**:
  - Description: Unique uuid-v4 string
  - Value: Example: abcd-12345-abcd-12345
  - Tags: String, Mandatory
- **Service**:
  - Description: Value: in.juspay.hyperapi
  - Tags: String, Mandatory
- **Payload**:
  - Description: Parameters required to call Hyper SDK API
  - Value:
    - **Action**:
      - Description: Operation to be performed in the SDK.
      - Value: UpiInternationalFxConversion
      - Tags: String, Mandatory
    - **BaseAmount**:
      - Description: Amount in base Currency
      - Value: Example: 36.00
      - Tags: String, Mandatory
    - **BaseCurrency**:
      - Description: The code for base currency for conversion.
      - Tags: String, Mandatory
    - **FxRate**:
      - Description: Foreign exchange rate.
      - Value: Example: 1.00
      - Tags: String, Mandatory
    - **MarkupPercentage**:
      - Description: The markup rate to be used for conversion.
      - Value: Example: 1.00
      - Tags: String, Mandatory
  - Tags: JSON, Mandatory


## Response Payload
- **RequestId**:
  - Description: Unique uuid-v4 string
  - Value: Example: abcd-12345-abcd-12345
  - Tags: String
- **Service**:
  - Description: Value: in.juspay.hyperapi
  - Tags: String
- **Payload**:
  - Description: Response Parameters
  - Value:
    - **Action**:
      - Description: Operation to be performed in the SDK.
      - Value: UpiInternationalFxConversion
      - Tags: String
    - **Amount**:
      - Description: The converted amount according to the parameters passed.
      - Value: Example: 26.03
      - Tags: String
    - **ResponseCode**:
      - Description: The PSP response code for the operation.
      - Value: Example: SUCCESS
      - Tags: String
    - **ResponseMessage**:
      - Description: The PSP response message for the operation.
      - Value: Example: SUCCESS
      - Tags: String
  - Tags: JSON
- **Error**:
  - Description: Possible values :- true/false
  - Tags: Boolean
- **ErrorMessage**:
  - Description: Error Message
  - Tags: String
- **ErrorCode**:
  - Description: Error Code
  - Tags: String
- **Event**:
  - Description: Value: process_result
  - Tags: String





#### Code Snippets: -

#### Java Code Snippet:

```java
{"success":false,"message":"Failed to fetch snippet"}
```

#### Kotlin Code Snippet:

```kotlin
{"success":false,"message":"Failed to fetch snippet"}
```


> **Note**
> After the conversion of money is completed UPI Send Money can be called with pay type as SCAN_PAY.



---

## Complete Code Reference

The following code files are referenced in the steps above:

### InappInternational.txt

```
{"success":false,"message":"Failed to fetch snippet"}
```


---

## See Also

- [International Activation ](https://juspay.io/in/docs/upi-tpap-sdk/react-native/headless-process-payloads/international-activation)
- [Update UPI Number Status](https://juspay.io/in/docs/upi-tpap-sdk/react-native/headless-process-payloads/update-upi-number-status)
