> ## 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.

# Process Validated Payout

> Initiates a UPI payout using the transfer token returned by the [Validate Payout API](/api-reference/payouts/v2/validate-payout-v2). The token is single-use and expires after one hour. When you use a transfer token, only `upi` is supported as the transfer mode.

The `transfer_id` in this request must match the `transfer_id` you used in that Validate Payout call.

Optionally set `fundsource_id` to the connected bank account to use as the fund source.




## OpenAPI

````yaml post /payout/transfers
openapi: 3.1.0
info:
  title: Payouts
  version: '4'
servers:
  - url: https://payout-api.cashfree.com
    description: Production
  - url: https://payout-gamma.cashfree.com
    description: Sandbox
security:
  - {}
paths:
  /payout/transfers:
    post:
      summary: Process Validated Payout
      description: >
        Initiates a UPI payout using the transfer token returned by the
        [Validate Payout API](/api-reference/payouts/v2/validate-payout-v2). The
        token is single-use and expires after one hour. When you use a transfer
        token, only `upi` is supported as the transfer mode.


        The `transfer_id` in this request must match the `transfer_id` you used
        in that Validate Payout call.


        Optionally set `fundsource_id` to the connected bank account to use as
        the fund source.
      operationId: process-validated-payout-v2
      parameters:
        - name: x-client-id
          in: header
          required: true
          description: >-
            Client app ID. You can find your app ID in the [Merchant
            Dashboard](https://merchant.cashfree.com/payouts/developers/api-keys).
          schema:
            type: string
            example: <CLIENT_ID>
        - name: x-client-secret
          in: header
          required: true
          description: >-
            Client secret key. You can find your secret key in the [Merchant
            Dashboard](https://merchant.cashfree.com/payouts/developers/api-keys).
          schema:
            type: string
            example: <CLIENT_SECRET>
        - name: x-api-version
          in: header
          required: true
          description: Payouts API version for this request.
          schema:
            type: string
            example: '2024-01-01'
        - 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: >-
            Request ID for the API call. Can be used to resolve tech issues.
            Communicate this in your tech related queries to Cashfree.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >-
                Amount, transfer identifiers, mode, and optional remarks for a
                Process Validated Payout. The `transfer_id` and `transfer_token`
                must come from the same [Validate Payout
                API](/api-reference/payouts/v2/validate-payout-v2) call.
              required:
                - transfer_amount
                - transfer_id
                - transfer_mode
                - transfer_token
              properties:
                transfer_amount:
                  type: string
                  description: Amount to transfer for the payout.
                  example: '1'
                transfer_id:
                  type: string
                  description: >-
                    Must match the `transfer_id` from your preceding [Validate
                    Payout API](/api-reference/payouts/v2/validate-payout-v2)
                    request for this payout.
                  example: JUNOB2018142
                transfer_token:
                  type: string
                  description: >-
                    Single-use transfer token from the [Validate Payout
                    API](/api-reference/payouts/v2/validate-payout-v2). Expires
                    in one hour and is consumed when the payout is initiated.
                  example: 0ea4a02e-ff8d-42c1-8800-73711fdbff16
                transfer_mode:
                  type: string
                  description: >-
                    Transfer mode. With a transfer token, only `upi` is
                    supported.
                  enum:
                    - upi
                  example: upi
                transfer_remarks:
                  type: string
                  description: Optional transfer remarks.
                  example: test
                fundsource_id:
                  type: string
                  description: >-
                    Optional. Identifier of the connected bank account to use as
                    the fund source.
                  example: YESB_CONNECTED
      responses:
        '200':
          description: >-
            Always returns HTTP 200 when the payout request is accepted. Use
            `status` and `status_code` for the lifecycle; other fields capture
            amounts, beneficiary context, bank reference, and timestamps.
          content:
            application/json:
              examples:
                Completed:
                  summary: Success — Payout completed
                  value:
                    transfer_id: JUNOB2018142
                    cf_transfer_id: '339'
                    status: SUCCESS
                    status_code: COMPLETED
                    status_description: >-
                      The transfer has been initiated via the partner bank
                      successfully.
                    beneficiary_details:
                      beneficiary_id: B_gewrtgfsdfgfsdf_V1ZYFF
                      beneficiary_instrument_details:
                        vpa: sXXXXXs@upi
                    currency: ''
                    transfer_amount: 1
                    transfer_service_charge: 0
                    transfer_service_tax: 0
                    transfer_mode: upi
                    transfer_utr: '1732088013492889'
                    added_on: '2024-11-20T13:03:31'
                    updated_on: '2024-11-20T13:03:33'
                Received:
                  summary: Received — Transfer accepted, processing in progress
                  value:
                    transfer_id: testTransferId3
                    cf_transfer_id: '659928176'
                    status: RECEIVED
                    status_code: RECEIVED
                    status_description: >-
                      The transfer has been received by Cashfree successfully
                      for further processing.
                    beneficiary_details:
                      beneficiary_id: B_testTransferId3_69SIX9
                      beneficiary_instrument_details: {}
                    currency: ''
                    transfer_amount: 1
                    transfer_mode: upi
                    added_on: '2024-11-28T14:58:07'
                    updated_on: '2024-11-28T14:58:07'
              schema:
                type: object
                description: >-
                  Canonical payout payload after submission: merchant and
                  Cashfree IDs, lifecycle fields, beneficiary snapshot, monetary
                  lines, rail reference when present, and audit times.
                properties:
                  transfer_id:
                    type: string
                    description: Merchant-provided transfer ID.
                  cf_transfer_id:
                    type: string
                    description: Cashfree internal transfer ID.
                  status:
                    type: string
                    description: High-level status.
                  status_code:
                    type: string
                    description: Detailed status code (RECEIVED, COMPLETED, etc.).
                  status_description:
                    type: string
                    description: >-
                      Defines the current processing state from Cashfree or the
                      partner bank.
                  beneficiary_details:
                    type: object
                    description: >-
                      Beneficiary identifiers and instrument details (for
                      example masked VPA) associated with this payout.
                  currency:
                    type: string
                    description: >-
                      ISO currency code for the payout amount (empty when not
                      applicable).
                  transfer_amount:
                    type: number
                    description: >-
                      Payout amount in major currency units as recorded for this
                      transfer.
                  transfer_service_charge:
                    type: number
                    description: Service charge applied to this payout, if any.
                  transfer_service_tax:
                    type: number
                    description: Tax on the service charge, if applicable.
                  transfer_mode:
                    type: string
                    description: >-
                      Channel used for the payout (for example `upi` when a
                      transfer token was supplied).
                  transfer_utr:
                    type: string
                    description: >-
                      Bank or network unique transaction reference, when
                      assigned.
                  added_on:
                    type: string
                    description: >-
                      Timestamp when Cashfree first recorded this payout
                      request.
                  updated_on:
                    type: string
                    description: Timestamp of the last status update for this payout.
        '400':
          description: 'Bad request: invalid or missing transfer fields.'
          content:
            application/json:
              examples:
                TokenExpired:
                  summary: Transfer token expired
                  value:
                    type: invalid_request_error
                    code: transfer_token_expired
                    message: >-
                      transfer_token is expired. Please generate new
                      transfer_token to initiate transfer.
                TransferIdMismatch:
                  summary: Transfer ID does not match the token
                  value:
                    type: invalid_request_error
                    code: invalid_transfer_id
                    message: >-
                      please use the same transfer_id that is used in the token
                      generation.
                TokenInvalid:
                  summary: Transfer token value is invalid
                  value:
                    type: invalid_request_error
                    code: transfer_token_invalid
                    message: 'transfer_token : invalid value provided.'
                TransferModeInvalidWithToken:
                  summary: Non-UPI transfer mode used with a transfer token
                  value:
                    type: invalid_request_error
                    code: transfer_mode_with_transfer_token_invalid
                    message: >-
                      transfer_mode : only upi transfer_mode is allowed with
                      transfer_token.
              schema:
                type: object
                description: Structured error for invalid transfer requests (HTTP 400).
                properties:
                  type:
                    type: string
                    description: >-
                      Error category from Cashfree (for example
                      `invalid_request_error`).
                  code:
                    type: string
                    description: Machine-readable error code for this failure.
                  message:
                    type: string
                    description: Human-readable explanation suitable for logs or support.
        '404':
          description: 'Not found: instrument for the given token does not exist.'
          content:
            application/json:
              examples:
                InstrumentNotFound:
                  summary: Instrument not found for the given token
                  value:
                    type: invalid_request_error
                    code: resource_not_found
                    message: Instrument doesn't exist.
              schema:
                type: object
                description: >-
                  Structured error when a referenced resource is missing (HTTP
                  404).
                properties:
                  type:
                    type: string
                    description: >-
                      Error category from Cashfree (for example
                      `invalid_request_error`).
                  code:
                    type: string
                    description: Machine-readable error code for this failure.
                  message:
                    type: string
                    description: Human-readable explanation suitable for logs or support.
        '422':
          description: 'Unprocessable: transfer token already used.'
          content:
            application/json:
              examples:
                TokenAlreadyUsed:
                  summary: Transfer token already used to initiate a payout
                  value:
                    type: invalid_request_error
                    code: failed_to_process_request
                    message: transfer token already used to initiate payout.
              schema:
                type: object
                description: >-
                  Structured error when the request cannot be processed (HTTP
                  422), for example a reused transfer token.
                properties:
                  type:
                    type: string
                    description: >-
                      Error category from Cashfree (for example
                      `invalid_request_error`).
                  code:
                    type: string
                    description: Machine-readable error code for this failure.
                  message:
                    type: string
                    description: Human-readable explanation suitable for logs or support.
      servers:
        - url: https://api.cashfree.com
          description: Production
        - url: https://sandbox.cashfree.com
          description: Sandbox

````