> ## Documentation Index
> Fetch the complete documentation index at: https://www.cashfree.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Validate Payout V1.2

> Validates either a Virtual Payment Address (VPA) on UPI or a phone number, and returns a single-use transfer token valid for one hour. Pass this token to the [Process Validated Payout API](/api-reference/payouts/v1/verify-and-pay-direct-transfer-v1-2) to initiate the payout.

In the request body, pass the value for exactly one of `vpa` or `phone`, not both.

The response contains either basic or advanced VPA details. Advanced details include Indian Financial System Code (IFSC) branch information. To enable advanced details for your account, contact your account manager or fill in the [Support Form](https://merchant.cashfree.com/merchants/landing?env=prod&raise_issue=1).




## OpenAPI

````yaml post /payout/v1.2/validatePayout
openapi: 3.0.0
info:
  title: Payouts
  version: 3.0.0
servers:
  - url: https://payout-api.cashfree.com
    description: Production
  - url: https://payout-gamma.cashfree.com
    description: Sandbox
security:
  - {}
paths:
  /payout/v1.2/validatePayout:
    post:
      summary: Validate Payout V1.2
      description: >
        Validates either a Virtual Payment Address (VPA) on UPI or a phone
        number, and returns a single-use transfer token valid for one hour. Pass
        this token to the [Process Validated Payout
        API](/api-reference/payouts/v1/verify-and-pay-direct-transfer-v1-2) to
        initiate the payout.


        In the request body, pass the value for exactly one of `vpa` or `phone`,
        not both.


        The response contains either basic or advanced VPA details. Advanced
        details include Indian Financial System Code (IFSC) branch information.
        To enable advanced details for your account, contact your account
        manager or fill in the [Support
        Form](https://merchant.cashfree.com/merchants/landing?env=prod&raise_issue=1).
      operationId: validate-payout-v1-2
      parameters:
        - name: Authorization
          in: header
          required: true
          description: >-
            Bearer token returned by the [Authorize
            API](/api-reference/payouts/v1/authorize) (`POST
            /payout/v1/authorize`).
          schema:
            type: string
            example: Bearer eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9...
        - name: Content-Type
          in: header
          required: true
          description: MIME type of the request or response content.
          schema:
            type: string
            example: application/json
        - name: X-Request-Id
          in: header
          required: false
          description: >-
            Optional. Identifier for request tracing between your systems and
            Cashfree Support.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >-
                Identifies this validation attempt and the beneficiary to
                resolve on UPI. Send `transferId` plus exactly one of `vpa` or
                `phone`.
              required:
                - transferId
              properties:
                transferId:
                  type: string
                  description: >-
                    Merchant-defined identifier for this payout attempt. Use
                    only letters, numbers, hyphens, and underscores. Maximum 40
                    characters.
                  example: JUNOB2018142
                vpa:
                  type: string
                  description: >-
                    Virtual Payment Address (VPA) on UPI to validate. In the
                    request body, pass the value for exactly one of `vpa` or
                    `phone`, not both.
                  example: success@upi
                phone:
                  type: string
                  description: >-
                    Phone number used to resolve the beneficiary VPA on UPI. In
                    the request body, pass the value for exactly one of `phone`
                    or `vpa`, not both.
                  example: '9999999999'
      responses:
        '200':
          description: >-
            Always returns HTTP 200. Use `status`, `subCode`, and `message` to
            see whether validation succeeded. When `status` is SUCCESS, `data`
            includes the transfer token and beneficiary-facing VPA fields.
          content:
            application/json:
              examples:
                VPABasicDetails:
                  summary: Success — VPA valid, basic details
                  value:
                    status: SUCCESS
                    subCode: '200'
                    message: vpa details retrieved successfully
                    data:
                      transferToken: 91328624-74e1-4f27-85cc-0c4166827cf7
                      vpa: success@upi
                      accountStatus: VALID
                      nameAtBank: JOHN SNOW
                VPAAdvancedDetails:
                  summary: Success — VPA valid, advanced details (IFSC included)
                  value:
                    status: SUCCESS
                    subCode: '200'
                    message: vpa details retrieved successfully
                    data:
                      transferToken: c3605311-57c9-476a-a09b-5a5d63ce3039
                      ifsc: IDFB0080186
                      vpa: success@upi
                      accountStatus: VALID
                      nameAtBank: JOHN SNOW
                      ifscDetails:
                        bank: IDFC FIRST Bank
                        neft: Live
                        imps: Live
                        rtgs: Live
                        upi: Live
                        address: >-
                          GROUND FLOOR, 876, KUVEMPU CIRCLE, JAWAHARLAL NEHRU
                          MAIN ROAD, BEML LAYOUT 4TH STAGE, RAJA RAJESHWARI
                          NAGAR, BANGALORE - 560098
                        city: BANGALORE
                        state: KARNATAKA
                        branch: BANGALORE - RAJA RAJESHWARI NAGAR BRANCH
                        category: SUB_MEMBER
                        swiftCode: ABCDINBBDCL
                        micr: 560751026
                        nbin: 123123
                VPAInvalid:
                  summary: Success — VPA invalid (no token issued)
                  value:
                    status: SUCCESS
                    subCode: '200'
                    message: vpa details retrieved successfully
                    data:
                      transferToken: ''
                      vpa: invalid@upi
                      accountStatus: INVALID
                ErrorFeatureNotEnabled:
                  summary: Error — Feature not enabled for this merchant
                  value:
                    status: ERROR
                    subCode: '400'
                    message: feature not enabled
                ErrorTransferIdExists:
                  summary: Error — Transfer ID already in use
                  value:
                    status: ERROR
                    subCode: '400'
                    message: transferId already exists.
                ErrorVpaOrPhoneMissing:
                  summary: Error — Neither vpa nor phone provided
                  value:
                    status: ERROR
                    subCode: '422'
                    message: >-
                      Either one of vpa or phone should be provided in the
                      request
                ErrorPhoneInvalid:
                  summary: Error — Phone number invalid
                  value:
                    status: ERROR
                    subCode: '422'
                    message: phone is invalid
                ErrorVpaFormat:
                  summary: Error — VPA format invalid
                  value:
                    status: ERROR
                    subCode: '422'
                    message: Please provide a valid Virtual Payee Address.
                ErrorTransferIdChars:
                  summary: Error — Transfer ID contains invalid characters
                  value:
                    status: ERROR
                    subCode: '422'
                    message: >-
                      transferId can contain only alphabets , numbers , hyphen
                      and underscore
                ErrorTransferIdMissing:
                  summary: Error — Transfer ID missing or blank
                  value:
                    status: ERROR
                    subCode: '422'
                    message: Please provide a valid transferId
                ErrorTransferIdTooLong:
                  summary: Error — Transfer ID exceeds 40 characters
                  value:
                    status: ERROR
                    subCode: '422'
                    message: transferId should be at max 40
              schema:
                type: object
                description: >-
                  Cashfree status envelope. When `status` is SUCCESS, `data`
                  carries the single-use token and the validated VPA payload.
                properties:
                  status:
                    type: string
                    description: >-
                      Top-level outcome of the validation request (`SUCCESS` or
                      `ERROR`).
                    enum:
                      - SUCCESS
                      - ERROR
                  subCode:
                    type: string
                    description: 200 on success, 400 or 422 on error.
                  message:
                    type: string
                  data:
                    type: object
                    description: Present on SUCCESS responses only.
                    properties:
                      transferToken:
                        type: string
                        description: >-
                          Single-use token, valid for one hour, for the [Process
                          Validated Payout
                          API](/api-reference/payouts/v1/verify-and-pay-direct-transfer-v1-2).
                          Empty string when `accountStatus` is `INVALID`.
                      vpa:
                        type: string
                        description: >-
                          Virtual Payment Address returned or confirmed for this
                          validation.
                      accountStatus:
                        type: string
                        description: >-
                          Whether the resolved beneficiary account is `VALID` or
                          `INVALID` for payout.
                        enum:
                          - VALID
                          - INVALID
                      nameAtBank:
                        type: string
                        description: Present when `accountStatus` is `VALID`.
                      ifsc:
                        type: string
                        description: >-
                          Indian Financial System Code (IFSC), an 11-character
                          identifier for a bank branch in India. Returned only
                          when the response includes advanced VPA details (with
                          `ifscDetails`).
                      ifscDetails:
                        type: object
                        description: >-
                          Branch metadata for the returned IFSC, including
                          fields such as bank name, address, city, state, and
                          which transfer rails (for example NEFT, IMPS, RTGS,
                          UPI) are live. Returned only when the response
                          includes advanced VPA details.

````