Cashfree Payments Transfers v2 API

The Transfers v2 API from Cashfree Payments — 2 operation(s) for transfers v2.

OpenAPI Specification

cashfree-transfers-v2-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: '2025-01-01'
  title: Cashfree Payment Gateway APIs Authorize Transfers v2 API
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  contact:
    email: developers@cashfree.com
    name: API Support
    url: https://discord.com/invite/QdZkNSxXsB
  description: Cashfree's Payment Gateway APIs provide developers with a streamlined pathway to integrate advanced payment processing capabilities into their applications, platforms and websites.
servers:
- url: https://sandbox.cashfree.com/pg
  description: Sandbox server
- url: https://api.cashfree.com/pg
  description: Production server
tags:
- name: Transfers v2
paths:
  /transfers:
    post:
      summary: Standard Transfer V2
      x-mcp:
        enabled: true
        config:
          elicitation:
            $ref: '#/components/x-elicitationConfig/createTransfer'
      description: Use this API to initiate an amount transfer at Cashfree Payments. It is an async request by default.
      tags:
      - Transfers v2
      operationId: PayoutInitiateTransfer
      deprecated: false
      security:
      - XClientID: []
        XClientSecret: []
      parameters:
      - $ref: '#/components/parameters/apiVersionHeader'
      - $ref: '#/components/parameters/xRequestIDHeader'
      requestBody:
        description: Find the request parameters of the API request to transfer money to a beneficiary.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTransferRequest'
            examples:
              transfer_request:
                $ref: '#/components/examples/transfer_request_v2'
              transfer_request_with_bene_details:
                $ref: '#/components/examples/transfer_request_v2_with_bene_details'
              transfer_request_with_card_details:
                $ref: '#/components/examples/transfer_request_v2_with_card_details'
              transfer_request_with_fundsource_id:
                $ref: '#/components/examples/transfer_request_v2_fundsource_id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateTransferResponse'
              examples:
                transfer_received_response_v2:
                  $ref: '#/components/examples/transfer_received_response_v2'
                transfer_pending_approval_response_v2:
                  $ref: '#/components/examples/transfer_pending_approval_response_v2'
                transfer_pending_response_v2:
                  $ref: '#/components/examples/transfer_pending_response_v2'
                transfer_completed_response:
                  $ref: '#/components/examples/transfer_completed_response_v2'
                transfer_failed_response_v2:
                  $ref: '#/components/examples/transfer_failed_response_v2'
                transfer_rejected_response_v2:
                  $ref: '#/components/examples/transfer_rejected_response_v2'
          headers:
            x-api-version:
              $ref: '#/components/headers/x-api-version'
            x-ratelimit-limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            x-ratelimit-retry:
              $ref: '#/components/headers/x-ratelimit-retry'
            x-request-id:
              $ref: '#/components/headers/x-request-id'
        '400':
          description: invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV2'
              examples:
                transfer_id_missing:
                  $ref: '#/components/examples/transfer_id_missing'
                transfer_id_invalid:
                  $ref: '#/components/examples/transfer_id_invalid'
                transfer_amount_invalid:
                  $ref: '#/components/examples/transfer_amount_invalid'
                transfer_amount_missing:
                  $ref: '#/components/examples/transfer_amount_missing'
                transfer_mode_invalid:
                  $ref: '#/components/examples/transfer_mode_invalid'
                beneficiary_id_invalid:
                  $ref: '#/components/examples/beneficiary_id_invalid'
                beneficiary_name_invalid:
                  $ref: '#/components/examples/beneficiary_name_invalid'
                beneficiary_bank_account_invalid:
                  $ref: '#/components/examples/beneficiary_bank_account_invalid'
                beneficiary_bank_account_invalid_2:
                  $ref: '#/components/examples/beneficiary_bank_account_invalid_2'
                beneficiary_bank_ifsc_invalid:
                  $ref: '#/components/examples/beneficiary_bank_ifsc_invalid'
                beneficiary_bank_ifsc_invalid_2:
                  $ref: '#/components/examples/beneficiary_bank_ifsc_invalid_2'
                beneficiary_vpa_invalid:
                  $ref: '#/components/examples/beneficiary_vpa_invalid'
                beneficiary_vpa_invalid_2:
                  $ref: '#/components/examples/beneficiary_vpa_invalid_2'
        '403':
          description: Forbidden error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV2'
              examples:
                APIDisabled:
                  $ref: '#/components/examples/APIsDisabledExampleV2'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV2'
              examples:
                APIDisabled:
                  $ref: '#/components/examples/BeneficiaryNotFoundV2'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV2'
              examples:
                APIDisabled:
                  $ref: '#/components/examples/internal_server_error_v2'
                AuthenticationError:
                  $ref: '#/components/examples/authentication_internal_server_error'
    get:
      summary: Get Transfer Status V2
      x-mcp:
        enabled: true
      description: Use this API to get the status of the initiated transfer. You can use either the transfer_id or cf_transfer_id to fetch the details.
      tags:
      - Transfers v2
      operationId: PayoutFetchTransfer
      deprecated: false
      security:
      - XClientID: []
        XClientSecret: []
      parameters:
      - $ref: '#/components/parameters/apiVersionHeader'
      - $ref: '#/components/parameters/xRequestIDHeader'
      - in: query
        name: cf_transfer_id
        description: It is the unique ID created by Cashfree Payments. You receive it in the response of the initiated standard transfer request. (Either cf_transfer_id or transfer_id is mandatory)
        example: '10023'
        schema:
          type: string
      - in: query
        name: transfer_id
        description: It is the unique ID you created to identify the standard transfer request.
        example: Sample_test
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateTransferResponse'
              examples:
                transfer_received_response_v2:
                  $ref: '#/components/examples/transfer_received_response_v2'
                transfer_pending_approval_response_v2:
                  $ref: '#/components/examples/transfer_pending_approval_response_v2'
                transfer_pending_response_v2:
                  $ref: '#/components/examples/transfer_pending_response_v2'
                transfer_completed_response:
                  $ref: '#/components/examples/transfer_completed_response_v2'
                transfer_failed_response_v2:
                  $ref: '#/components/examples/transfer_failed_response_v2'
                transfer_rejected_response_v2:
                  $ref: '#/components/examples/transfer_rejected_response_v2'
                transfer_reversed_response_v2:
                  $ref: '#/components/examples/transfer_reversed_response_v2'
          headers:
            x-api-version:
              $ref: '#/components/headers/x-api-version'
            x-ratelimit-limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            x-ratelimit-retry:
              $ref: '#/components/headers/x-ratelimit-retry'
            x-request-id:
              $ref: '#/components/headers/x-request-id'
        '403':
          description: Forbidden error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV2'
              examples:
                APIDisabled:
                  $ref: '#/components/examples/APIsDisabledExampleV2'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV2'
              examples:
                CfTransferIdNotFound:
                  $ref: '#/components/examples/cf_transfer_id_not_found'
                TransferIdNotFound:
                  $ref: '#/components/examples/transfer_id_not_found'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV2'
              examples:
                APIDisabled:
                  $ref: '#/components/examples/internal_server_error_v2'
                AuthenticationError:
                  $ref: '#/components/examples/authentication_internal_server_error'
  /transfers/batch:
    post:
      summary: Batch Transfer V2
      x-mcp:
        enabled: true
      description: Use this API to initiate a batch transfer request at Cashfree Payments. You can transfer money to multiple beneficiaries. The batch transfer limit is 5,000 in the production environment and 1,000 by default in the test environment.
      tags:
      - Transfers v2
      operationId: PayoutInitiateBatchTransfer
      deprecated: false
      security:
      - XClientID: []
        XClientSecret: []
      parameters:
      - $ref: '#/components/parameters/apiVersionHeader'
      - $ref: '#/components/parameters/xRequestIDHeader'
      requestBody:
        description: Find the request parameters of the API request to transfer money to multiple beneficiaries.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBatchTransferRequest'
            examples:
              transfer_request:
                $ref: '#/components/examples/batch_transfer_request_v2'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateBatchTransferResponse'
              examples:
                batch_transfer_received_response_v2:
                  $ref: '#/components/examples/batch_transfer_received_response_v2'
          headers:
            x-api-version:
              $ref: '#/components/headers/x-api-version'
            x-ratelimit-limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            x-ratelimit-retry:
              $ref: '#/components/headers/x-ratelimit-retry'
            x-request-id:
              $ref: '#/components/headers/x-request-id'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV2'
              examples:
                batch_transfer_id_missing:
                  $ref: '#/components/examples/batch_transfer_id_missing'
                batch_transfer_id_invalid:
                  $ref: '#/components/examples/batch_transfer_id_invalid'
                transfer_id_invalid:
                  $ref: '#/components/examples/batchTransfer_transfer_id_invalid'
                transfer_id_missing:
                  $ref: '#/components/examples/batchTransfer_transfer_id_missing'
                transfer_amount_invalid:
                  $ref: '#/components/examples/batchTransfer_transfer_amount_invalid'
                transfer_amount_missing:
                  $ref: '#/components/examples/batchTransfer_transfer_amount_missing'
                transfer_mode_invalid:
                  $ref: '#/components/examples/batchTransfer_transfer_mode_invalid'
                beneficiary_id_invalid:
                  $ref: '#/components/examples/batchTransfer_beneficiary_id_invalid'
                beneficiary_name_invalid:
                  $ref: '#/components/examples/batchTransfer_beneficiary_name_invalid'
                beneficiary_bank_account_invalid:
                  $ref: '#/components/examples/batchTransfer_beneficiary_bank_account_invalid'
                beneficiary_bank_ifsc_invalid:
                  $ref: '#/components/examples/batchTransfer_beneficiary_bank_ifsc_invalid'
                beneficiary_vpa_invalid:
                  $ref: '#/components/examples/batchTransfer_beneficiary_vpa_invalid'
        '409':
          description: Batch transfer_id already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV2'
              examples:
                APIDisabled:
                  $ref: '#/components/examples/batch_transfer_id_already_exists'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV2'
              examples:
                APIDisabled:
                  $ref: '#/components/examples/internal_server_error_v2'
                AuthenticationError:
                  $ref: '#/components/examples/authentication_internal_server_error'
    get:
      summary: Get Batch Transfer Status V2
      x-mcp:
        enabled: true
      description: Use this API to get the status of the initiated batch transfer. You can use either the batch_transfer_id or cf_batch_transfer_id to fetch the details.
      tags:
      - Transfers v2
      operationId: PayoutFetchBatchTransfer
      deprecated: false
      security:
      - XClientID: []
        XClientSecret: []
      parameters:
      - $ref: '#/components/parameters/apiVersionHeader'
      - $ref: '#/components/parameters/xRequestIDHeader'
      - in: query
        name: cf_batch_transfer_id
        description: It is the unique ID created by Cashfree Payments. You receive it in the response of the initiated batch transfer request. (Either cf_batch_transfer_id or batch_transfer_id is mandatory)
        example: '10023'
        schema:
          type: string
      - in: query
        name: batch_transfer_id
        description: It is the unique ID you created to identify the batch transfer request.
        example: Sample_test
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchBatchTransferResponse'
              examples:
                transfer_received_response:
                  $ref: '#/components/examples/batch_transfer_received_response_v2'
                transfer_pending_response:
                  $ref: '#/components/examples/batch_transfer_pending_response_v2'
          headers:
            x-api-version:
              $ref: '#/components/headers/x-api-version'
            x-ratelimit-limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            x-ratelimit-retry:
              $ref: '#/components/headers/x-ratelimit-retry'
            x-request-id:
              $ref: '#/components/headers/x-request-id'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV2'
              examples:
                CfBatchTransferIdNotFound:
                  $ref: '#/components/examples/cf_batch_transfer_id_not_found'
                BatchTransferIdNotFound:
                  $ref: '#/components/examples/batch_transfer_id_not_found'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV2'
              examples:
                APIDisabled:
                  $ref: '#/components/examples/internal_server_error_v2'
                AuthenticationError:
                  $ref: '#/components/examples/authentication_internal_server_error'
components:
  examples:
    cf_batch_transfer_id_not_found:
      summary: cf_batch_transfer_id not found
      description: cf_batch_transfer_id not found
      value:
        type: invalid_request_error
        code: cf_batch_transfer_id
        message: cf_batch_transfer_id does not exist
    transfer_id_missing:
      description: Missing transfer_id
      value:
        type: invalid_request_error
        code: transfer_id_missing
        message: transfer_id is missing in the request
    transfer_request_v2_with_bene_details:
      summary: Transfer request with beneficiary_details
      description: The API request to iniate a transfer with beneficiary_details
      value:
        transfer_id: JUNOB2018
        transfer_amount: 1
        transfer_mode: imps
        beneficiary_details:
          beneficiary_details:
            beneficiary_instrument_details:
              bank_account_number: '1234554321'
              bank_ifsc: SBIN0001161
    batchTransfer_beneficiary_bank_account_invalid:
      description: beneficiary bank account is invalid
      value:
        type: invalid_request_error
        code: transfers[0].beneficiary_details.beneficiary_instrument_details.bank_account_number_invalid
        message: bank_account_number should be alphanumeric
    batch_transfer_id_invalid:
      description: Invalid batch_transfer_id
      value:
        type: invalid_request_error
        code: batch_transfer_id_invalid
        message: batch_transfer_id should be alphanumeric
    batch_transfer_request_v2:
      summary: Batch transfer request
      description: The API request to initiate a batch transfer
      value:
        batch_transfer_id: test_batch_transfer_id
        transfers:
        - transfer_id: JUNOB2018
          transfer_amount: 1
          beneficiary_details:
            beneficiary_id: JOHN18011
        - transfer_id: JUNOB2018
          transfer_amount: 1
          transfer_mode: imps
          beneficiary_details:
            beneficiary_details:
              beneficiary_instrument_details:
                bank_account_number: '1234554321'
                bank_ifsc: SBIN0001161
        - transfer_id: JUNOB2018
          transfer_amount: 1
          transfer_mode: imps
          beneficiary_details:
            beneficiary_details:
              beneficiary_id: JOHN18011
          fundsource_id: CASHFREE_1
    transfer_amount_invalid:
      description: Invalid transfer_amount
      value:
        type: invalid_request_error
        code: transfer_amount_invalid
        message: transfer_amount should be greater then 1.00
    batch_transfer_received_response_v2:
      summary: Batch transfer received successfully
      description: Batch transfer received successfully by Cashfree Payments. Please check the status of the batch transfer after some time.
      value:
        batch_transfer_id: test_batch_transfer_id
        cf_batch_transfer_id: '123456'
        status: RECEIVED
    transfer_request_v2:
      summary: Transfer request with beneficiary_id
      description: The API request to iniate a transfer with beneficiary_id
      value:
        transfer_id: JUNOB2018
        transfer_amount: 1
        beneficiary_details:
          beneficiary_id: JOHN18011
    transfer_rejected_response_v2:
      summary: Transfer rejected
      description: The transfer has been rejected by Cashfree Oatnebts. Please review the 'status_description' field to understand the reason for rejection.
      value:
        transfer_id: JUNOB2018
        cf_transfer_id: '123456'
        status: REJECTED
        status_code: INVALID_MODE_FOR_PYID
        status_description: The transfer has been rejected because the payment instrument does not support this mode of transfer. You should get this mode activated on the payment instrument ID by contacting Cashfree, and then initiate a new transfer request.
        beneficiary_details:
          beneficiary_id: JOHN18011
        transfer_amount: 1
        transfer_mode: BANK
        fundsource_id: CASHFREE_1
        added_on: '2021-11-24T13:39:25Z'
        updated_on: '2021-11-24T13:40:27Z'
    transfer_id_invalid:
      description: Invalid transfer_id
      value:
        type: invalid_request_error
        code: transfer_id_invalid
        message: transfer_id should be alphanumeric
    batch_transfer_pending_response_v2:
      summary: Batch transfer pending
      description: Batch Transfer pending at the bank. Please check the status of batch transfer after some time.
      value:
        batch_transfer_id: test_batch_transfer_id
        cf_batch_transfer_id: '123456'
        status: PENDING
        transfers:
        - transfer_id: JUNOB2018
          cf_transfer_id: '123456'
          status: SUCCESS
          status_code: COMPLETED
          status_description: The transfer has been initiated via the partner bank successfully, hence your account is debited and the request is successfuly processed by the beneficiary bank and has been credited to the end beneficiary.
          beneficiary_details:
            beneficiary_id: JOHN18011
            beneficiary_instrument_details:
              bank_account_number: '7766671501729'
              bank_ifsc: SBIN0000003
          transfer_amount: 1
          transfer_service_charge: 1
          transfer_service_tax: 0.18
          transfer_mode: BANK
          transfer_utr: TESTUTR
          fundsource_id: CASHFREE_1
          added_on: '2021-11-24T13:39:25Z'
          updated_on: '2021-11-24T13:40:27Z'
        - transfer_id: JUNOB2018
          cf_transfer_id: '123457'
          status: PENDING
          status_code: PENDING
          status_description: The transfer is currently in a Pending state, as Cashfree is awaiting a final confirmation from the partner bank for a terminal status. You should rely only on Check Status API response or Webhooks to know the terminal state of the transfer request.
          beneficiary_details:
            beneficiary_id: JOHN18011
            beneficiary_instrument_details:
              bank_account_number: '7766671501729'
              bank_ifsc: SBIN0000003
          transfer_amount: 1
          transfer_mode: BANK
          transfer_utr: TESTUTR2
          fundsource_id: CASHFREE_1
          added_on: '2021-11-24T13:39:25Z'
          updated_on: '2021-11-24T13:40:27Z'
        - transfer_id: JUNOB2018
          cf_transfer_id: '123458'
          status: REJECTED
          status_code: INVALID_MODE_FOR_PYID
          status_description: The transfer has been rejected because the payment instrument does not support this mode of transfer. You should get this mode activated on the payment instrument ID by contacting Cashfree, and then initiate a new transfer request.
          beneficiary_details:
            beneficiary_id: JOHN18011
          transfer_amount: 1
          transfer_mode: BANK
          fundsource_id: CASHFREE_1
          added_on: '2021-11-24T13:39:25Z'
          updated_on: '2021-11-24T13:40:27Z'
    beneficiary_vpa_invalid_2:
      description: VPA in the request does not match with the beneficiary's VPA
      value:
        type: invalid_request_error
        code: beneficiary_details.beneficiary_instrument_details.vpa_invalid
        message: 'Vpa passed in the request does not match with the beneficiary with beneficiary_id :: test_beneId'
    transfer_request_v2_with_card_details:
      summary: Transfer request with card_details
      description: The API request to iniate a transfer with card_details
      value:
        transfer_id: JUNOB2018
        transfer_amount: 1
        transfer_mode: imps
        beneficiary_details:
          beneficiary_details:
            beneficiary_instrument_details:
              card_details:
                card_token: '4640837721072836'
                card_network_type: MASTERCARD
                card_cryptogram: jjoutwsdgfdou124354ljlsdhgout968957
                card_token_expiry: 2032-10
                card_type: CREDIT
                card_token_PAN_sequence_number: '001'
    transfer_reversed_response_v2:
      summary: Transfer reversed
      description: The transfer has been reversed by bank. Please review the status_description field to understand the reason reversal.
      value:
        transfer_id: JUNOB2018
        cf_transfer_id: '123456'
        status: REVERSED
        status_code: INVALID_ACCOUNT_FAIL
        status_description: The transfer has been reversed by the beneficiary bank because the Account Number of the beneficiary is invalid. After correcting the account number, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).
        beneficiary_details:
          beneficiary_id: JOHN18011
          beneficiary_instrument_details:
            bank_account_number: '7766671501729'
            bank_ifsc: SBIN0000003
        transfer_amount: 1
        transfer_mode: BANK
        fundsource_id: CASHFREE_1
        added_on: '2021-11-24T13:39:25Z'
        updated_on: '2021-11-24T13:40:27Z'
    batch_transfer_id_not_found:
      summary: batch_transfer_id not found
      description: batch_transfer_id not found
      value:
        type: invalid_request_error
        code: batch_transfer_id_not_found
        message: batch_transfer_id does not exist
    batchTransfer_transfer_amount_invalid:
      description: Invalid transfer_amount
      value:
        type: invalid_request_error
        code: transfers[0].transfer_amount_invalid
        message: transfer_amount should be greater then 1.00
    beneficiary_bank_account_invalid:
      description: Invalid beneficiary bank account details
      value:
        type: invalid_request_error
        code: beneficiary_details.beneficiary_instrument_details.bank_account_number_invalid
        message: bank_account_number should be alphanumeric
    batchTransfer_beneficiary_bank_ifsc_invalid:
      description: Invalid bank account details
      value:
        type: invalid_request_error
        code: transfers[0].beneficiary_details.beneficiary_instrument_details.bank_ifsc_invalid
        message: bank_ifsc should be in standard ifsc format
    batch_transfer_id_already_exists:
      summary: batch_transfer_id not found
      description: batch_transfer_id not found
      value:
        type: invalid_request_error
        code: batch_transfer_id_already_exists
        message: batch_transfer_id already exists. please pass unique id in each request
    beneficiary_bank_ifsc_invalid_2:
      description: IFSC in the request does not match with the beneficiary's IFSC
      value:
        type: invalid_request_error
        code: beneficiary_details.beneficiary_instrument_details.bank_ifsc_invalid
        message: 'Bank ifsc passed in the request does not match with the beneficiary with beneficiary_id :: test_beneId'
    beneficiary_bank_account_invalid_2:
      description: Bank account number in the request does not match with the beneficiary's bank account number
      value:
        type: invalid_request_error
        code: beneficiary_details.beneficiary_instrument_details.bank_account_number_invalid
        message: 'Bank account number passed in the request does not match with the beneficiary with beneficiary_id :: test_beneId'
    batchTransfer_transfer_amount_missing:
      description: Missing transfer_amount
      value:
        type: invalid_request_error
        code: transfers[0].transfer_amount_missing
        message: transfer_amount is missing in the request
    transfer_mode_invalid:
      description: Invalid transfer_mode
      value:
        type: invalid_request_error
        code: transfer_mode_invalid
        message: 'transfer_mode is invalid allowed values are : bank, imps, neft, rtgs, upi, paytm, amazonpay, card and cardupi'
    authentication_internal_server_error:
      summary: Internal server error while authenticating request
      description: Internal server error while authenticating request
      value:
        type: authentication_error
        code: internal_server_error
        message: Unable to authenticate the request. Please fill out the [Support Form](https://merchant.cashfree.com/merchants/landing?env=prod&raise_issue=1)
    batchTransfer_transfer_mode_invalid:
      description: Invalid transfer_mode
      value:
        type: invalid_request_error
        code: transfers[0].transfer_mode_invalid
        message: 'transfer_mode is invalid allowed values are : bank, imps, neft, rtgs, upi, paytm, amazonpay, card and cardupi'
    internal_server_error_v2:
      summary: Internal server error
      description: Error at Cashfree Payments' server
      value:
        type: api_error
        code: internal_server_error
        message: Error at cashfree's server
    transfer_pending_response_v2:
      summary: Transfer pending at the bank
      description: Transfer initiated by Cashfree Payments and is pending at the bank's side
      value:
        transfer_id: JUNOB2018
        cf_transfer_id: '123456'
        status: PENDING
        status_code: PENDING
        status_description: The transfer is currently in a Pending state, as Cashfree is awaiting a final confirmation from the partner bank for a terminal status. You should rely only on Check Status API response or Webhooks to know the terminal state of the transfer request.
        beneficiary_details:
          beneficiary_id: JOHN18011
          beneficiary_instrument_details:
            bank_account_number: '7766671501729'
            bank_ifsc: SBIN0000003
        transfer_amount: 1
        transfer_mode: BANK
        transfer_utr: TESTR92023012200543116
        fundsource_id: CASHFREE_1
        added_on: '2021-11-24T13:39:25Z'
        updated_on: '2021-11-24T13:40:27Z'
    batchTransfer_beneficiary_name_invalid:
      description: Invalid transfer_id
      value:
        type: invalid_request_error
        code: transfers[0].beneficiary_details.beneficiary_name_invalid
        message: beneficiary_name is invalid. only alphabets and whitespaces are allowed
    transfer_received_response_v2:
      summary: Transfer received
      description: Transfer received by Cashfree Payments. Please check the status after some time.
      value:
        transfer_id: JUNOB2018
        cf_transfer_id: '123456'
        status: RECEIVED
        status_code: RECEIVED
        status_description: The transfer has been received by Cashfree successfully for further processing. You should use Check Status API response or Webhooks to know the terminal state of the transfer request.
        beneficiary_details:
          beneficiary_id: JOHN18011
        transfer_amount: 1
        transfer_mode: BANK
        fundsource_id: CASHFREE_1
        added_on: '2021-11-24T13:39:25Z'
        updated_on: '2021-11-24T13:40:27Z'
    batchTransfer_transfer_id_missing:
      description: Missing transfer_id
      value:
        type: invalid_request_error
        code: transfers[0].transfer_id_missing
        message: transfer_id is missing in the request
    transfer_amount_missing:
      description: Misisng transfer_amount
      value:
        type: invalid_request_error
        code: transfer_amount_missing
        message: transfer_amount is missing in the request
    batchTransfer_transfer_id_invalid:
      description: Invalid transfer_id
      value:
        type: invalid_request_error
        code: transfers[0].transfer_id_invalid
        message: tr

# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cashfree/refs/heads/main/openapi/cashfree-transfers-v2-api-openapi.yml