---
page_source: https://juspay.io/in/docs/upi-plugin-direct-psp/android/miscellaneous/additional-processes
page_title: Additional Processes
---


# Additional Processes




### 1. UPI Mandate Creation (onboardingAndPay)




###   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. Should be onboardingAndPay for this call.
      - Value: Value: onboardingAndPay
      - Tags: String, Mandatory
    - **MerchantId**:
      - Description: Unique identifier associated with an account created by juspay.
      - Value: Example: stock
      - Tags: String, Mandatory
    - **ShouldCreateMandate**:
      - Description: Value: true
      - Tags: Boolean, Mandatory
    - **Protected**:
      - Description: Protected payload is a stringified JSON of the details mentioned in the below table.
      - Value:
        - **Kid**:
          - Description: Key ID to identify the public-private key pair used for signature generation.It will be provided to you by the Juspay team.
          - Value: Example: uat833359804655gg748702e324111
          - Tags: String, Mandatory
        - **Alg**:
          - Description: Algorithm to generate JWS signature in respect to base 64.
          - Value: RS256
          - Tags: String, Mandatory
      - Tags: String, Mandatory
    - **Signature**:
      - Description: Generated by base 64 encoding of signaturePayload and Protected.
      - Tags: String, Mandatory
    - **SignaturePayload**:
      - Description: Base 64 encoded stringified signature payload
      - Value:
        - **MerchantId**:
          - Description: Unique identifier associated with an account created by juspay.
          - Value: Example: stock
          - Tags: String, Mandatory
        - **MerchantChannelId**:
          - Description: As provided by Juspay.
          - Value: Example: ABC123
          - Tags: String, Mandatory
        - **Amount**:
          - Description: Amount to be paid. Numeric String with two decimals. If it's use for mutual funds then total amount of the mutual fund would be considered.
          - Value: Example: 2.00
          - Tags: String, Mandatory
        - **Currency**:
          - Description: Currency code
            
            **Constraints:** String - INR
          - Tags: optional
        - **AmountRule**:
          - Description: Rule on Mandate Amount. If amountRule is MAX, then mandate can be executed for amount less than or equal to the passed amount . If amountRule is EXACT, then mandate should always be executed for the same amount.
            
            **Constraints:** `MAX`,`EXACT`
          - Tags: String, Mandatory
        - **BlockFund**:
          - 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. If blockFund and payerRevocable are both send false for a request then request will be rejected. Default value is false.
            
            **Constraints:** String - true,false
          - Tags: optional
        - **MerchantRequestId**:
          - Description: Merchant generated unique request Id for the transaction.
          - Value: Example: ABC123456789
          - Tags: String, Mandatory
        - **MerchantCustomerId**:
          - Description: Any unique reference associated with your customer.
          - Value: Example: abcde12345
          - Tags: String, Mandatory
        - **Timestamp**:
          - Description: Time when request is created in milliseconds.
          - Value: Example: 1665996901100
          - Tags: String, Mandatory
        - **RecipientName**:
          - Description: Name against which mandate is triggered. If initiatedBy is PAYER then payeeName or vice-versa. If name is not present with merchant payerVpa can be sent.
          - Tags: String, Mandatory
        - **RecurrencePattern**:
          - Description: Recurrence Pattern for Mandate. Denotes at what frequency mandate can be executed.
            
            **Constraints:** ONETIME, DAILY, WEEKLY, FORTNIGHTLY,MONTHLY, BIMONTHLY, QUARTERLY, HALFYEARLY, YEARLY, ASPRESENTED
          - Tags: String, Mandatory
        - **RecurrenceRule**:
          - Description: Recurrence Rule for Mandate. It is not required for ONETIME, DAILY and ASPRENTED recurrencePattern.
            
            **Constraints:** ON, BEFORE, AFTER.
          - Tags: optional
        - **RecurrencValue**:
          - Description: Recurrence Value for Mandate. It is not required for ONETIME, DAILY and ASPRENTED recurrencePattern.
            
            **Constraints:** between 1-31 and depends on recurrencePattern.
          - Tags: optional
        - **MandateName**:
          - Description: Name of the mandate
          - Tags: String
        - **PayeeVpa**:
          - Description: Vpa of the payee.
            
            **Constraints:** Valid VPA
          - Tags: String, Mandatory
        - **PayerRevocable**:
          - Description: Defines whether mandate is revocable by PAYER or not. Applicable only when it is ONETIME mandate and initiatedBy PAYEE. For recurring mandate it should always be true, for onetime it can be true or false. If blockFund and payerRevocable are both send false for a request then request will be rejected. Default value is true.
            
            **Constraints:** String - true/false.
          - Tags: optional
        - **ValidityEnd**:
          - Description: Date before which mandate can be execute
            
            **Constraints:** String with proper date format YYYY/MM/DD
          - Tags: String, Mandatory
        - **ValidityStart**:
          - Description: Date after which mandate can be executed
            
            **Constraints:** String with proper date format YYYY/MM/DD
          - Tags: String, Mandatory
        - **RefUrl**:
          - Description: Reference url for the mandate. It is mainly kept for future purpose for invoice in inbox feature, if nothing is passed then a default value is set for this tag and same will be send back in response.
          - Tags: optional
        - **Remarks**:
          - Description: Any mandate summary
          - Tags: String, Optional
        - **ShareToPayee**:
          - Description: Descibes whether mandate will be shared with payee or not. Required only when it is ONETIME mandate and initiatedBy PAYER. For recurring mandate it should always be true, for onetime it can be true or false. Default value is true.
            
            **Constraints:** String - true,false
          - Tags: String, optional
        - **BankAccountHashes**:
          - Description: Array of bank account hashes generated using below method:bankAccountHashes = sha256( account Number + first 4 digit of account IFSC)
            
            From account Number the leading zeros should be removed and then the hash should be calculated.
            
            Eg: accNo = 0000123456789 ifsc = ABCD0000345 Hash will be calculated on 123456789ABCD
          - Value: Example: ["fejgfvhef67t376", "gryiu349rewiufdhsy8934"]
          - Tags: Array, Optional
      - Tags: String, Mandatory
    - **ShowStatusScreen**:
      - Description: Pass false to hide payment status screen. Default value: true
      - Value: Possible values: true/false
      - Tags: String, Optional
    - **BankCodes**:
      - Description: Array of bank codes for the respective bank accounts.
      - Value: Example: ["550055", "551100"]
      - Tags: Array, Optional
  - 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 performed in the SDK.
      - Value: Value: onboardingAndPay
      - Tags: String
    - **Status**:
      - Description: Status of the Operation. Possible values : SUCCESS, PENDING, FAILURE, Pay_Failure, BACKPRESS, USER_ABORTED
      - Value: Example: SUCCESS
      - Tags: String
    - **LinkedAccounts**:
      - Description: Account selected for payment
      - 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
            - **Ifsc**:
              - Description: IFSC Code
              - Value: Example: ABCD0123456
              - Tags: String
          - Tags: JSON
      - Tags: JSON
    - **SelectedAccount**:
      - Description: Account selected for payment
      - Value:
        - **Vpa**:
          - Description: UPI ID linked to account
          - Value: Example: abc@xyz
          - Tags: String
        - **Account**:
          - Description: Accounts linked to this vpa
          - Value:
            - **BankCode**:
              - Description: IIN Code for the bank
              - Tags: String
            - **BankName**:
              - Description: Name of bank
              - Tags: String
            - **MaskedAccountNumber**:
              - Description: Account Number with last few digits visible
              - Tags: String
            - **MpinLength**:
              - Description: Length of mpin
              - Tags: String
            - **MpinSet**:
              - Description: Is mpin set?
              - Value: Possible values: true/false
              - Tags: String
            - **ReferenceId**:
              - Description: Account Reference Id
              - Tags: String
            - **OtpLength**:
              - Description: Length of OTP
              - Value: Example: 6
              - Tags: String
            - **AtmPinLength**:
              - Description: Length of atm pin
              - Value: Example: 6
              - Tags: String
            - **Type**:
              - Description: Type of account
              - Value: Example: Savings
              - Tags: String
            - **BranchName**:
              - Description: Name of branch in which account is registered
              - Tags: String
            - **BankAccountUniqueId**:
              - Description: Unique Identifier for bank account across banks
              - Tags: String
            - **Ifsc**:
              - Description: Account IFSC
              - Tags: String
            - **IsPrimary**:
              - Description: Is this account the primary account
              - Value: Possible values: true/false
              - Tags: String
            - **Name**:
              - Description: Name of account holder
              - Value: Example: ABC
              - Tags: String
          - Tags: Array of JSON
      - Tags: JSON
    - **SessionTokenResponse**:
      - Description: Session token data for the user.
      - Value:
        - **Status**:
          - Description: Status of the Operation. Possible values : FAILURE / FRESH / BOUND / LINKED. Accounts will be available only in case status is LINKED.
          - Tags: String
        - **VpaAccounts**:
          - Description: It's an array of Vpa Accounts. We will get this only after successful linking of accounts.
          - Value:
            - **Vpa**:
              - Description: Vpa
              - Tags: String
            - **Account**:
              - Description: Accounts linked to this vpa
              - Value:
                - **BankCode**:
                  - Description: IIN Code for the bank
                  - Tags: String
                - **BankName**:
                  - Description: Name of bank
                  - Tags: String
                - **MaskedAccountNumber**:
                  - Description: Account Number with last few digits visible
                  - Tags: String
                - **MpinLength**:
                  - Description: Length of mpin
                  - Tags: String
                - **MpinSet**:
                  - Description: Is mpin set?
                  - Value: Possible values: true/false
                  - Tags: String
                - **ReferenceId**:
                  - Description: Account Reference Id
                  - Tags: String
                - **OtpLength**:
                  - Description: Length of OTP
                  - Value: Example: 6
                  - Tags: String
                - **AtmPinLength**:
                  - Description: Length of atm pin
                  - Value: Example: 6
                  - Tags: String
                - **Type**:
                  - Description: Type of account
                  - Value: Example: Savings
                  - Tags: String
                - **BranchName**:
                  - Description: Name of branch in which account is registered
                  - Tags: String
                - **BankAccountUniqueId**:
                  - Description: Unique Identifier for bank account across banks
                  - Tags: String
                - **Ifsc**:
                  - Description: Account IFSC
                  - Tags: String
                - **IsPrimary**:
                  - Description: Is this account the primary account
                  - Value: Possible values: true/false
                  - Tags: String
                - **Name**:
                  - Description: Name of account holder
                  - Value: Example: ABC
                  - Tags: String
              - Tags: Array of JSON
          - Tags: Array of JSON
        - **IsDeviceBound**:
          - Description: If the current device is in bound state or not.
          - Value: Possible values: true/false
          - Tags: String
      - Tags: JSON
    - **Mandate**:
      - Description: Contains relevant mandate data
      - Value:
        - **Amount**:
          - Description: Amount to be paid. Numeric String with two decimals
          - 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: -

#### Java Code Snippet:

```java
{"success":false,"message":"No Data found for the given path"}
```

#### Kotlin Code Snippet:

```kotlin
{"success":false,"message":"No Data found for the given path"}
```
