---
page_source: https://juspay.io/in/docs/upi-merchant-stack/docs/payouts/push-to-vpa-api
page_title: Push to VPA API
---

## API Version: default


## **Push to VPA API** 



This api will be used for initiating a new Push to VPA request to transfer money directly to customer. **Also used for Penny Drop use case.** 

**Before initiating this API, it is recommended to do Verify VPA API request to the PSP to check the validity of customer’s VPA or UPI ID. If a valid response is received, then only initiate the Push to VPA API request.** 

**Payout can be also done based on Account Number & IFSC code combination by passing the value in customerVpa as Global Address i.e.** **account-no@ifsc-code.ifsc.npci** **(e.g.12345@HDFC0000001.ifsc.npci)** 

> **Warning**
> 1. Only one of **customerVpa**  or **upiNumber (UPI ID)**  is allowed in the request. Both or none are not allowed.
> 2. This API can be used only after onboarding from the bank end.
> 3. **gatewayResponseStatus**  anything other than SUCCESS and FAILURE to be considered PENDING. For **PENDING**  & **DEEMED**  cases, keep doing status check for next 3-5 days to get the terminal status.

## Endpoints:
- Production: {{host}}/api/{{uri}}/merchants/transactions/pushToVpa

## Request Type: 
POST

## Content-Type: 
application/json

## Headers:

#### jpupi-routing-id:
Header value should be same as of **merchantRequestId**  sent in request body
- Tags: String, Mandatory
## Sample Code Snippets:
### Code Snippets:

#### Shell Code Snippet:

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

### Sample Request and Response:

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

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

## Body Parameters:
### Request parameters:

#### merchantRequestId:
- Description: Request id for PushToVpa request.

**Constraints:** Max 35 characters & Alphanumeric.
- Value: value
- Tags: String, Mandatory

#### customerVpa:
- Description: VPA of the customer to be used for transaction.

**Constraint:**  VPA should only contain a-z, 0-9, . (dot), - (hyphen).
- Tags: String, Mandatory

#### amount:
- Description: Amount for the transaction. 

**Constraint:** Amount in two decimals. Decimals are mandatory.
- Tags: String, Mandatory

#### merchantVpa:
- Description: VPA of the merchant from which amount has to be deducted.

**Constraint:**  VPA should only contain a-z, 0-9, . (dot), - (hyphen).
- Tags: String, Mandatory

#### remarks:
- Description: Remarks sent by merchant for the transaction. 

**Constraint:** The transaction note must be alphanumeric, with a **minimum length of 1 character and a maximum length of 50**  characters.
- Tags: String, Mandatory

#### iat:
- Description: Current Epoch Unix timestamp string. Has to be of 13 digit in Milliseconds.

Example: 1496918882000.
- Tags: String, Mandatory

#### udfParameters:
- Description: Merchant Defined Parameters

Example: "{\"udf1\":\"value1\",\"udf2\":\"value2\",…}"**Note** : Few special characters are not allowed. Regex for the characters which are not allowed : **^[^/#-()*!%~`]+$** 
- Tags: Stringified JSON, optional
## API Responses:
### 200:

#### status:
- Description: Status of the API.
- Value: Values: SUCCESS | FAILURE.
- Tags: String, Mandatory

#### responseCode:
- Description: PSP response code for the API.

**Values:** Refer Codes Guide in Resource Section.
- Tags: String, Mandatory

#### responseMessage:
- Description: PSP response message for the API.

**Values:** Refer Codes Guide in Resource Section.
- Tags: String, Mandatory

#### payload:
- Value:
  - **CustomerVpa**:
    - Description: Vpa of the customer to be used for transaction.
    - Tags: String, Mandatory
  - **MerchantId**:
    - Description: Unique id for merchant.
    - Tags: String, Mandatory
  - **MerchantChannelId**:
    - Description: Unique id for the channel via which request is made.
    - Tags: String, Mandatory
  - **MerchantRequestId**:
    - Description: Request id used for the transaction.
    - Tags: String, Mandatory
  - **TransactionAmount**:
    - Description: The amount for which transaction was performed.
    - Tags: String, Mandatory
  - **GatewayReferenceId**:
    - Description: RRN for the transaction.
    - Tags: String, Mandatory
  - **GatewayTransactionId**:
    - Description: UPI request id returned by gateway for the transaction.
    - Tags: String, Mandatory
  - **GatewayResponseCode**:
    - Description: Response code returned by gateway for the transaction.
    - Tags: String, Mandatory
  - **GatewayResponseMessage**:
    - Description: Response message returned by gateway for the transaction.
    - Tags: String, Mandatory
  - **BankAccountHash**:
    - Description: Hashed value of accounts passed to merchant. Present if transaction is Success.
      
      **Hashing logic** **:** 
      
      bankAccountHash = sha256( account Number + first 4 digit of account IFSC)From account Number the leading zeros are removed and then the hash is calculated.Eg: Account No. = 0000123456789 & IFSC = ABCD0000345
      
      Hash will be calculated on 123456789ABCD.
    - Tags: String, optional
  - **PayeeMaskedAccountNumber**:
    - Description: Containing the account number of Customer in masked format. Present if transaction is Success.
    - Tags: String, optional
  - **PayeeName**:
    - Description: Name of the UPI user who received the payment. Only if payment is done to a non A/C+IFSC Global VPA. Present if transaction is Success.
    - Tags: String, optional
  - **PayeeIfsc**:
    - Description: Account IFSC of the customer who received the payment. Present if transaction is Success.
    - Tags: String, optional
  - **GatewayResponseStatus**:
    - Description: Response status returned by gateway for the transaction. 
      
      Values : SUCCESS, FAILURE, PENDING or DEEMED. 
      
      > **Warning**
      > Anything other than SUCCESS and FAILURE to be considered PENDING.
    - Tags: String, Mandatory
- Tags: Json, Mandatory

#### udfParameters:
- Description: Merchant Defined Parameters

Example: "{\"udf1\":\"value1\",\"udf2\":\"value2\",…}"
- Tags: Stringified Json, Optional
