---
page_source: https://docs.juspay.io/upi-inapp/flutter/miscellaneous/inapp-via-pp
page_title: Open IN-APP UPI via PP
---


## Open In-App UPI via Payment Page



Once the IN-APP-UPI is opened, your users can proceed with the transactions.


### 1. Onboarding & Pay




###   Request Parameters



### Payload
- **RequestId**:
  - Description: Unique uuid-v4 string
  - Value: $requestId
  - Tags: String, Mandatory
- **Service**:
  - Description: Value: in.juspay.hyperpay
  - Tags: String, Mandatory
- **Payload**:
  - Description: Parameters required to call Hyper SDK API
  - Value:
    - **Action**:
      - Description: Operation to be performed in the SDK. Should be initiate for this call.
      - Value: Value: paymentPage
      - Tags: String, Mandatory
    - **ClientId**:
      - Description: Client Id assigned by juspay. Usual convention is merchant_id_OS
      - Value: Example: stock_OS
      - Tags: String, Mandatory
    - **Environment**:
      - Description: Environment to be used for the session. Accepted values are 'sandbox' or 'production'
      - Value: Example: sandbox
      - Tags: String, Mandatory
    - **IssuingPsp**:
      - Description: Bank on which the merchant has been onboarded.
      - Value: Example: YES_BIZ
      - Tags: String, Mandatory
    - **MerchantKeyId**:
      - Description: Key ID to identify the public-private key pair used for signature generation.
      - Value: Example: 1234
      - Tags: String, Mandatory
    - **ShouldCreateCustomer**:
      - Description: Value: true
      - Tags: Boolean, Mandatory
    - **UpiEnvironment**:
      - Description: Environment to be used for the UPI. Accepted values are 'sandbox' or 'production'
      - Value: Example: sandbox
      - Tags: String, Optional
    - **LogLevel**:
      - Description: Only required for logging.
      - Value: Value: 1
      - Tags: String, Optional
    - **Signature**:
      - Description: Unique Client id shared during onboarding
      - 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
        - **Order_id**:
          - Description: Order id for the transaction.
          - Tags: String, Mandatory
        - **Amount**:
          - Description: Amount to be paid
          - Value: Example: 2.00
          - Tags: String, Mandatory
        - **Timestamp**:
          - Description: Time when request is created in milliseconds.
          - Tags: String, Mandatory
      - Tags: String, Mandatory
  - Tags: JSON, Mandatory




#### Code Snippets: -

#### Flutter Code Snippet:

```flutter
{
  "requestId": "8cbc3fad-8b3f-40c0-ae93-2d7e75a8624a",
  "service": "in.juspay.hyperapi",
  "payload": {
    "action": "paymentPage",
    "merchantKeyId": "<Merchant Key Id>",
    "clientId": "<Client Id>",
    "signature": "<Generated signature for signature payload>",
    "signaturePayload": "<Stringified signature payload>",
    "environment": "sandbox",
    "upiEnvironment": "sandbox"
    "issuingPsp": "YES_BIZ",
    "shouldCreateCustomer": true,
    "logLevel": 1
  }
}

"signaturePayload": {
  "merchant_id": "stock",
  "customer_id": "abcde12345",
  "timestamp": "1668389349848",
  "amount": "200.00",
  "order_id": "ABC1234567890"
}
```



###   Response Parameters



### 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 performed in the SDK.
      - Value: Value: onboardingAndPay
      - Tags: String
    - **Status**:
      - Description: Status of the Operation. Possible values : SUCCESS, PENDING, FAILURE
      - Value: Example: SUCCESS
      - Tags: String
    - **LinkedAccounts**:
      - Description: Array of bank accounts linked
      - Value:
        - **Vpa**:
          - Description: UPI ID linked to account
          - Value: Example: abc@xyz
          - Tags: String
        - **Account**:
          - Description: Account Details
          - Value:
            - **BankCode**:
              - Description: Bank Code
              - Value: Example: 123456
              - Tags: String
            - **BankName**:
              - Description: Bank Name
              - Value: Example: YES Bank
              - Tags: String
            - **MaskedAccountNumber**:
              - Description: Account Number with last few digits visible
              - Value: Example: XXXXXXXXX1234
              - Tags: String
            - **MpinSet**:
              - Description: Is MPIN set?
              - Value: Value: true/false
              - Tags: String
            - **ReferenceId**:
              - Description: Unique Identifier for the account
              - Value: Example: abcd1234xyz
              - Tags: String
            - **IsPrimary**:
              - Description: Is the account primary?
              - Value: Value: true/false
              - Tags: String
            - **Type**:
              - Description: Type of account: SAVINGS/CURRENT/OVERDRAFT
              - Value: Example: SAVINGS
              - Tags: String
            - **Ifsc**:
              - Description: IFSC Code
              - Value: Example: ABCD0123456
              - Tags: String
            - **Name**:
              - Description: Account Holder Name
              - Value: Example: ABC
              - Tags: String
            - **BranchName**:
              - Description: Branch Name
              - Value: Example: Bengaluru
              - Tags: String
            - **AccountNumber**:
              - Description: Encrypted Account Number
              - Tags: String
          - Tags: JSON
      - Tags: Array
    - **SelectedAccount**:
      - Description: Account selected from array of linked accounts
      - Value: Details of selected bank account
      - Tags: JSON
    - **SessionTokenResponse**:
      - Description: In case status=LINKED, this key will contain all the required user information.
      - Value: Refer section 4.1.2
      - Tags: JSON
  - 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: -

#### Flutter Code Snippet:

```flutter
{
  "requestId": "79fc93aa-2d98-49c9-bbb1-2beaafd4f3b6",
  "service": "in.juspay.hyperupi",
  "payload": {
    "action": "paymentPage",
    "status": "SUCCESS"
  },
  "error": false,
  "errorMessage": "",
  "errorCode": "",
  "event": "process_result"
}
```



### 2. Onboarding and Create Mandate




### Step 1.1. Request Parameters


> **Note**
> This is a conditional step, and is only supposed to be implemented if you have kept shouldCreateMandate as true in ProcessPayload call.




### Payload
- **RequestId**:
  - Description: Unique uuid-v4 string
  - Value: $requestId
  - Tags: String, Mandatory
- **Service**:
  - Description: Value: in.juspay.hyperpay
  - Tags: String, Mandatory
- **Payload**:
  - Description: Parameters required to call Hyper SDK API
  - Value:
    - **Action**:
      - Description: Operation to be performed in the SDK. Should be initiate for this call.
      - Value: Value: paymentPage
      - Tags: String, Mandatory
    - **ClientId**:
      - Description: Client Id assigned by juspay. Usual convention is merchant_id_OS
      - Value: Example: stock_OS
      - Tags: String, Mandatory
    - **Environment**:
      - Description: Environment to be used for the session. Accepted values are 'sandbox' or 'production'
      - Value: Example: sandbox
      - Tags: String, Mandatory
    - **IssuingPsp**:
      - Description: Bank on which the merchant has been onboarded.
      - Value: Example: YES_BIZ
      - Tags: String, Mandatory
    - **MerchantKeyId**:
      - Description: Key ID to identify the public-private key pair used for signature generation.
      - Value: Example: 1234
      - Tags: String, Mandatory
    - **ShouldCreateCustomer**:
      - Description: Value: true
      - Tags: Boolean, Mandatory
    - **UpiEnvironment**:
      - Description: Environment to be used for the UPI. Accepted values are 'sandbox' or 'production'
      - Value: Example: sandbox
      - Tags: String, Optional
    - **LogLevel**:
      - Description: Only required for logging.
      - Value: Value: 1
      - Tags: String, Optional
    - **ShouldCreateMandate**:
      - Description: If needed to enable the mandates. True: for mandate transaction flow & False : for non mandate transaction flow
      - Value: true
      - Tags: Boolean, Optional
    - **Signature**:
      - Description: Unique Client id shared during onboarding
      - 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
        - **Order_id**:
          - Description: Order is for the transaction.
          - Tags: String, Mandatory
        - **Timestamp**:
          - Description: Time when request is created in milliseconds.
          - Tags: String, Mandatory
        - **Amount**:
          - Description: Amount.
          - Value: eg: Rs 2.00
          - Tags: String, Mandatory
        - **Currency**:
          - Description: Currency in which the amount will be added.
          - Value: INR
          - Tags: String, Optional
        - **Customer_phone**:
          - Description: Mobile Number of the customer
          - Tags: String, Optional
        - **Customer_email**:
          - Description: Email id of the customer.
          - Tags: String, Optional
        - **Metadata.YES_BIZ:mandate_name**:
          - Description: Name of the mandate
          - Tags: String, Mandatory
        - **Options.create_mandate**:
          - Description: REQUIRED means that the transaction for this order has to be definitely converted to a mandate. OPTIONAL means that the final decision of conversion of the transaction lies at the /txns api call with the flag 'should_create_mandate
          - Tags: ENUM, Mandatory
        - **Mandate.max_amount**:
          - Description: Maximum amount for a mandate.
          - Tags: String, Mandatory
        - **Mandate.amount_rule**:
          - Description: FIXED, VARIABLE. By default VARIABLE. In case of FIXED amount_rule, amount will be equal to max amount.
          - Tags: ENUM, Mandatory
        - **Mandate.frequency**:
          - Description: Defines the frequency of mandate execution, how often a customer should be charged.Eg: ONETIME, DAILY, WEEKLY, FORTNIGHTLY, MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED(By default is considered as aspresented)
          - Tags: ENUM, Mandatory
        - **Mandate.start_date**:
          - Description: Starting date of the mandate.
          - Tags: String, Mandatory
        - **Mandate.end_date**:
          - Description: Ending date of the mandate.
          - Tags: String, Mandatory
        - **Mandate.block_funds**:
          - Description: Denotes whether customer's fund should be blocked or not. Only applicable for ONETIME mandate. For recurring mandate it should always be false, for onetime it can be true or false. Default value is false.
          - Tags: String, Optional
        - **Mandate.rule_type**:
          - Description: Recurrence Rule for Mandate. It is not required for ONETIME, DAILY and ASPRENTED recurrencePattern.
          - Value: ON/BEFORE/AFTER
          - Tags: String, Optional
        - **Mandate.rule_value**:
          - Description: Recurrence Value for Mandate. It is not required for ONETIME, DAILY and ASPRENTED recurrencePattern between 1-31 and depends on recurrencePattern.
          - Tags: String, Optional
      - Tags: String, Mandatory
  - Tags: JSON, Mandatory




#### Code Snippets: -

#### Flutter Code Snippet:

```flutter
{
  "requestId": "8cbc3fad-8b3f-40c0-ae93-2d7e75a8624a",
  "service": "in.juspay.hyperapi",
  "payload": {
    "action": "paymentPage",
    "merchantKeyId": "<Merchant Key Id>",
    "clientId": "<Client Id>",
    "signature": "<Generated signature for signature payload>",
    "signaturePayload": "<Stringified signature payload>",
    "environment": "sandbox",
    "upiEnvironment": "sandbox"
    "issuingPsp": "YES_BIZ",
    "shouldCreateCustomer": true,
    "logLevel": 1
  }
}

"signaturePayload": {
  "merchant_id": "stock",
  "customer_id": "abcde12345",
  "timestamp": "1668389349848",
  "amount": "200.00",
  "order_id": "ABC1234567890",
  "metadata.YES_BIZ:mandate_name": "metadata.YES_BIZ:ABC",
  "options.create_mandate": "REQUIRED",
  "mandate.max_amount": "2000.00",
  "mandate.amount_rule": "FIXED",
  "mandate.frequency": "MONTHLY",
  "mandate.start_date": "166674893389237",
  "mandate.end_date": "16667389373820323",
}
```



### 
 Response Parameters



### 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 performed in the SDK.
      - Value: Value: onboardingAndPay
      - Tags: String
    - **Status**:
      - Description: Status of the Operation. Possible values : SUCCESS, PENDING, FAILURE
      - Value: Example: SUCCESS
      - Tags: String
    - **Mandate**:
      - Description: Contains relevant mandate data
      - Value:
        - **Amount**:
          - Description: Amount to be paid
          - Value: Example: 500.00
          - Tags: String
        - **AmountRule**:
          - Description: Values possible: FIXED/VARIABLE
          - Value: Example: FIXED
          - Tags: String
        - **BlockFund**:
          - Description: Values possible: true/false
          - Tags: Boolean
        - **Expiry**:
          - Description: Timestamp upto which mandate creation request is valid. It will only be present if mandate is initiated by PAYEE.
          - Value: Timestamp in YYYY-MM-DDTHH:MM:SS+05:30 format, request timestamp plus expiry minutes passed in request.
          - Tags: Timestamp
        - **GatewayMandateId**:
          - Description: UPI request id returned by gateway for the mandate
          - Value: Example: abc12345
          - Tags: String
        - **GatewayReferenceId**:
          - Description: Customer reference number (rrn) for the mandate Operation
          - Value: Example: 1234567890
          - Tags: String
        - **GatewayResponseCode**:
          - Description: Response code returned by gateway for the mandate Operation.
          - Value: Example: 00
          - Tags: String
        - **GatewayResponseMessage**:
          - Description: Response message returned by gateway for the mandate Operation.
          - Value: Example: Your transaction is successful.
          - Tags: String
        - **GatewayResponseStatus**:
          - Description: Response status returned by gateway
          - Value: Example: SUCCESS
          - Tags: String
        - **InitiatedBy**:
          - Description: Describes whether PAYER or PAYEE has initiated the mandate.
          - Value: Example: PAYER
          - Tags: String
        - **MandateName**:
          - Description: Name of the mandate
          - Value: Example: Test Mandate
          - Tags: String
        - **MandateTimestamp**:
          - Description: Timestamp of when this request was attempted
          - Value: Example: 2021-12-30T14:17:06+05:30.
          - Tags: YYYY-MM-DDTHH:MM:SS+05:30
        - **OrgMandateId**:
          - Description: upiRequestId of the create request.
          - Value: Example: abcd123456
          - Tags: String
        - **PayeeMcc**:
          - Description: Merchant Category Code of the payee merchant.
          - Value: Example: 1234
          - Tags: String
        - **PayeeName**:
          - Description: Name of the Payee involved in mandate. It will be present only if role is PAYER.
          - Value: Example: ABC
          - Tags: String
        - **PayeeVpa**:
          - Description: VPA of payee
          - Value: Example: abc@xyz
          - Tags: String
        - **PayerName**:
          - Description: Name of the Payer involved in mandate. It will be present only if role is PAYEE.
          - Value: Example: XYZ
          - Tags: String
        - **PayerRevocable**:
          - Description: Defines whether mandate is revocable by PAYER or not. For onetime mandate it can be true or false. Default value is true.
          - Value: Value: true/false
          - Tags: String
        - **PayerVpa**:
          - Description: vpa of payer
          - Value: Example: pqr@xyz
          - Tags: String
        - **RecurrencePattern**:
          - Description: Recurrence Pattern for Mandate
          - Value: Example: WEEKLY
          - Tags: String
        - **RecurrenceRule**:
          - Description: Recurrence Rule for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
          - Value: Example: ASPRESENTED
          - Tags: String
        - **RecurrenceValue**:
          - Description: Recurrence Value for Mandate. It will not be present for ONETIME, DAILY and ASPRESENTED recurrence pattern.
          - Value: Example: 2
          - Tags: String
        - **RefUrl**:
          - Description: Reference url for the mandate. It will be same value if passed in request else it will be a default url.
          - Value: Example: www.abcxyz.com
          - Tags: String
        - **Remarks**:
          - Description: Any mandate summary. If passed in request, it will be same in response else a default value is sent.
          - Value: Example: UPI Mandate
          - Tags: String
        - **Role**:
          - Description: Role of the customer for this mandate.
          - Value: Value: PAYER/PAYEE
          - Tags: String
        - **ShareToPayee**:
          - Description: Describes whether the mandate will be shared with payee or not. For onetime mandate it can be true or false. Default value is true.
          - Value: Value: true/false
          - Tags: String
        - **TransactionType**:
          - Description: Type of Mandate Creation
          - Value: Example: UPI_MANDATE
          - Tags: String
        - **Umn**:
          - Description: Unique Mandate Number used for execution of the mandate. Will be sent only if mandate is initiated by Payer.
          - Value: Example: uniqueMandateNumber@xyz
          - Tags: String
        - **ValidityEnd**:
          - Description: Date before which mandate can be executed.
          - Value: Example: 2022/09/20
          - Tags: String
        - **ValidityStart**:
          - Description: As passed for validityStart in request
          - Value: Example: 2022/01/20
          - Tags: String
      - Tags: JSON
  - 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: -

#### Flutter Code Snippet:

```flutter
{
  "requestId": "79fc93aa-2d98-49c9-bbb1-2beaafd4f3b6",
  "service": "in.juspay.hyperupi",
  "payload": {
    "action": "paymentPage",
    "status": "SUCCESS",
    "mandate": {
      "amount": "10.00",
      "amountRule": "EXACT",
      "blockFund": "false",
      "expiry": "2022-01-02T14:17:06+05:30",
      "gatewayMandateId": "YJPMe5c9711f1ede1f5524e2fadb48003aa0",
      "gatewayReferenceId": "806115044725",
      "gatewayResponseCode": "00",
      "gatewayResponseMessage": "Your transaction is successful",
      "gatewayResponseStatus": "SUCCESS",
      "initiatedBy": "PAYER",
      "mandateName": "Test Mandate",
      "mandateTimestamp": "2021-12-30T14:17:06+05:30",
      "merchantCustomerId": "DEMO-1234",
      "merchantRequestId": "eulb1a4418b4ac",
      "orgMandateId": "BJJMe5c9711f1ede1f5524e2f92648y03aa0",
      "payeeMcc": "4924",
      "payeeName": "GROWW",
      "payeeVpa": "growwuat@ypay",
      "payerName": "customer1",
      "payerRevocable": "true",
      "payerVpa": "customer1@ypay",
      "recurrencePattern": "WEEKLY",
      "recurrenceRule": "BEFORE",
      "recurrenceValue": "2",
      "refUrl": "https://www.google.com",
      "remarks": "Sample Remarks",
      "role": "PAYER",
      "shareToPayee": "true",
      "transactionType": "UPI_MANDATE",
      "umn": "uniqueMandateNumber@ypay",
      "validityEnd": "2022/09/20",
      "validityStart": "2022/01/20"
    }
  },
  "error": false,
  "errorMessage": "",
  "errorCode": "",
  "event": "process_result"
}
```



###    


> **Note**
> For more calls refer this section [Management Calls](management)



