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

# Direct Transfer V1.2

> Use this API to initiate amount transfers directly to the beneficiary account via a bank transfer or UPI. You can add the beneficiary details in the same API request.

<Warning> This API will be retired soon. Please plan to migrate to the latest version, [Transfers V2](/docs/api-reference/payouts/v2/transfers-v2/get-transfer-status-v2). </Warning>

Please use this Authorization token in headers to call any payout API (Refresh this page if the token is expired)

<iframe src="https://www.cashfree.com/devstudio/preview/payouts/embed/bearerToken" width="600" />

<Accordion title="Click to view the response codes.">
  | Sub code | Status | Message | Next action |
  | :- | :- | :- | :- |
  | 200 | SUCCESS | Transfer completed successfully. | - |
  | 201 | SUCCESS | Transfer Scheduled for next working day. | - |
  | 201 | PENDING | Awaiting confirmation from beneficiary bank. | - |
  | 201 | PENDING | Transfer request pending at the bank. | - |
  | 202 | PENDING | Request received. Please check status after some time. | - |
  | 400 | ERROR | Multiple PaymentInstruments available for this payment mode. | - |
  | 400 | ERROR | Specified paymentInstrumentId not valid for this payment mode. | - |
  | 400 | ERROR | Specified paymentInstrumentId not available. | Enter a different paymentInstrumentId. |
  | 400 | ERROR | Transfer attempt failed at the bank. | - |
  | 403 | ERROR | Token is not valid | Verify the generated token |
  | 403 | ERROR | IP not whitelisted | Whitelist the IP address |
  | 403 | ERROR | Transfer to this beneficiary not allowed. | Enter different beneficiary details |
  | 403 | ERROR | This feature is not available for your account. | |
  | 403 | ERROR | Transfer mode is not available for your account. | Enter a different transfer mode. |
  | 404 | ERROR | Beneficiary does not exist. | Enter a valid beneficiary ID. |
  | 409 | ERROR | Transfer Id already exists. | Enter a different transfer ID. |
  | 412 | ERROR | Token missing in the request. | Enter a valid token in the API request. |
  | 412 | ERROR | BeneId missing in the request. | Enter a valid beneficiary ID. |
  | 412 | ERROR | Amount missing in the request. | Enter a valid transfer amount. |
  | 412 | ERROR | TransferId missing in the request. | Enter a valid transfer ID. |
  | 412 | ERROR | Please wait 30 minutes after adding the beneficiary. | - |
  | 412 | ERROR | Transfer amount is less than minimum amount of Rs. 100. | Enter a transfer amount that is equal to or more than Rs. 100. |
  | 412 | ERROR | Transfer amount is greater than the maximum amount of Rs.100000. | Enter a transfer amount that is equal to or less than Rs. 100000. |
  | 412 | ERROR | Transfer limit for beneficiary exceeded. | |
  | 412 | ERROR | Transfer limit for your account exceeded. | |
  | 412 | ERROR | Not enough available balance in the account. | Retry with sufficient balance in your account. |
  | 412 | ERROR | Invalid Tag passed in the request. | |
  | 412 | ERROR | Transfer mode not enabled for the account. | |
  | 412 | ERROR | Invalid transfer mode passed in the request. | |
  | 422 | ERROR | Invalid amount passed. | Enter a valid transfer amount. |
  | 422 | ERROR | Invalid transferId passed. | Enter a valid transferId. |
  | 422 | ERROR | No Payee Virtual Address associated with the beneficiary. | |
  | 422 | ERROR | Remarks can have only numbers, alphabets and whitespaces. | |
  | 422 | ERROR | Beneficiary details not valid. | Enter valid beneficiary details. |
  | 422 | ERROR | No Bank account or IFSC associated with the beneficiary. | Enter valid bank account details of the beneficiary. |
  | 422 | ERROR | Transfer request to paytm wallet failed. | |
  | 422 | ERROR | Invalid IFSC code provided for bank account. | Enter a valid IFSC for the provided bank account details. |
  | 422 | ERROR | Invalid bank account number or IFSC provided. | Enter valid bank account details. |
  | 520 | ERROR | Transfer request triggered. No response from bank. | |
</Accordion>


## OpenAPI

````yaml post /payout/v1.2/directTransfer
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/directTransfer:
    post:
      summary: Direct Transfer V1.2
      description: >-
        Use this API to initiate amount transfers directly to the beneficiary
        account via a bank transfer or UPI. You can add the beneficiary details
        in the same API request.
      operationId: direct-transfer-v1-21
      parameters:
        - name: Authorization
          in: header
          description: Bearer auth token.
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: Content-Type
          in: header
          description: application/json
          required: true
          style: simple
          explode: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1_2_directTransfer_body'
      responses:
        '200':
          description: 200 - Transfer Status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_200_20'
              examples:
                Pending:
                  summary: Payout pending at partner bank
                  value:
                    status: PENDING
                    subCode: '201'
                    message: Transfer request pending at the bank
                    data:
                      referenceId: '23457526'
                      utr: ''
                      acknowledged: 0
                Success:
                  summary: Transfer Successful
                  value:
                    status: SUCCESS
                    subCode: '200'
                    message: Transfer completed successfully
                    data:
                      referenceId: '10023'
                      utr: P16111765023806
                      acknowledged: 1
                Error:
                  summary: Transfer ID Error
                  value:
                    status: ERROR
                    subCode: '400'
                    message: Transfer Id already exists
        '403':
          description: '403'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_403'
      deprecated: false
      security: []
components:
  schemas:
    v1_2_directTransfer_body:
      required:
        - amount
        - beneDetails
        - transferId
        - transferMode
      type: object
      description: >-
        Amount, transfer ID, transfer mode, and inline beneficiary details for a
        synchronous direct transfer (including Process Validated Payout when you
        pass the transfer token from [Validate
        Payout](/api-reference/payouts/v1/validate-payout-v1-2)).
      properties:
        amount:
          type: number
          description: >-
            Amount to be transferred. Amount should be greater that INR 1.00.
            Decimals are allowed.
          format: float
        transferId:
          type: string
          description: >-
            A unique ID to identify this transfer. Alphanumeric characters and
            underscores are allowed (40 character limit).
        transferMode:
          type: string
          description: >-
            It is the mode of transfer. Allowed values are: banktransfer, neft,
            imps, rtgs, upi, paytm, and amazonpay. The default transferMode is
            banktransfer.
        beneDetails:
          $ref: '#/components/schemas/payoutv1directTransfer_beneDetails'
        paymentInstrumentId:
          type: string
          description: >-
            Specify the fund source ID from where you want the amount to be
            debited.
    inline_response_200_20:
      type: object
      properties:
        status:
          type: string
          description: >-
            High-level state of the transfer request (for example SUCCESS,
            PENDING, or ERROR).
          example: SUCCESS
        subCode:
          type: string
          description: Numeric sub-code that qualifies the `status` value.
          example: '200'
        message:
          type: string
          example: Transfer completed successfully
        data:
          $ref: '#/components/schemas/inline_response_200_20_data'
    inline_response_403:
      type: object
      properties:
        status:
          type: string
          example: ERROR
        subCode:
          type: string
          example: '403'
        message:
          type: string
          example: >-
            APIs not enabled. Please fill out the [Support
            Form](https://merchant.cashfree.com/merchants/landing?env=prod&raise_issue=1)
    payoutv1directTransfer_beneDetails:
      required:
        - address1
        - email
        - name
        - phone
      type: object
      properties:
        bankAccount:
          type: string
          description: >-
            Beneficiary bank account (9 - 18 alphanumeric character limit)
            (Required in case of banktransfer, imps, neft mode)
        ifsc:
          type: string
          description: >-
            Accounts IFSC (standard IFSC format) - length 11, first four bank
            IFSC and 5th digit 0 (Required in case of banktransfer, imps, neft
            mode)
        name:
          type: string
          description: >-
            Beneficiary name, only alphabets and white space (100 character
            limit)
        phone:
          type: string
          description: >-
            Beneficiary phone number, phone number registered in India (only
            digits, 8 - 12 characters after stripping +91)
        email:
          type: string
          description: >-
            Beneficiary email address, string in email Id format (Ex:
            johndoe_1@cashfree.com) - should contain @ and dot (.) - (200
            character limit)
        vpa:
          type: string
          description: >-
            Beneficiary VPA, alphanumeric, dot (.), hyphen (-), at sign (@), and
            underscore () allowed (100 character limit). Note: underscore () and
            dot (.) gets accepted before and after at sign (@), but hyphen (-)
            get only accepted before at sign (@) (Required in case of UPI)
        address1:
          type: string
          description: >-
            Beneficiary address. Alphanumeric characters and space allowed (150
            character limit).
      description: Object with the beneficiary details to whom amount is to be transferred
    inline_response_200_20_data:
      type: object
      description: >-
        Partner-facing references for the accepted transfer, including the
        Cashfree reference ID, bank or network UTR when issued, and partner
        acknowledgement.
      properties:
        referenceId:
          type: string
          description: Cashfree reference identifier for this transfer request.
          example: '10023'
        utr:
          type: string
          description: >-
            Unique transaction reference from the partner bank or network, when
            available.
          example: P16111765023806
        acknowledged:
          type: integer
          description: >-
            Flag indicating whether the partner has acknowledged receipt of the
            transfer (1 acknowledged, 0 otherwise).
          example: 1

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.