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

# Get Transfer Details

> Retrieves detailed information about a specific transfer transaction, including current status, beneficiary details.

This endpoint provides comprehensive transfer information including:
- Current transfer status and bank status
- Beneficiary and instrument details
- Transaction timestamps and reference numbers if transaction successfully completed
- Sub-wallet balance after the transfer


<Accordion title="Click to view the response codes.">
  | HTTP status code | Status              | Status code                           | Status description                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Next action                                                                                                                                                                                                                                                                                                                                                            | Try again via Cashfree Payments                             |
  | :--------------- | :------------------ | :------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------- |
  | 200              | APPROVAL\_PENDING   | VELOCITY\_CHECK\_FAILED               | The transfer requires an approval as the count of transfers to a particular beneficiary etc have breached the limit. You can approve or reject the transfer request from the Cashfree [Merchant Dashboard](https://merchant.cashfree.com/auth/login).                                                                                                                                                                                                                                   | You can approve/reject the transfer on the [Merchant Dashboard](https://merchant.cashfree.com/auth/login) and go to **Transfers > Approve**. Post the transfer is approved, the request is sent to the partner bank for further processing.                                                                                                                            | -                                                           |
  | 200              | APPROVAL\_PENDING   | TRANSFER\_LIMIT\_BREACH               | The transfer requires an approval as the transfer amount etc have breached the limit. You can approve or reject the transfer request from the Cashfree [Merchant Dashboard](https://merchant.cashfree.com/auth/login).                                                                                                                                                                                                                                                                  | You can approve/reject the transfer on the [Merchant Dashboard](https://merchant.cashfree.com/auth/login) and go to **Transfers > Approve**. Post the transfer is approved, the request is sent to the partner bank for further processing.                                                                                                                            | -                                                           |
  | 200              | APPOVAL\_PENDING    | APPROVAL\_PENDING                     | The transfer requires approval. You can approve or reject the transfer request from the Cashfree [Merchant Dashboard](https://merchant.cashfree.com/auth/login).                                                                                                                                                                                                                                                                                                                        | You can approve/reject the transfer on the [Merchant Dashboard](https://merchant.cashfree.com/auth/login) and go to **Transfers > Approve**. Post the transfer is approved, the request is sent to the partner bank for further processing.                                                                                                                            | -                                                           |
  | 200              | FAILED              | WAIT\_TIME\_EXCEEDED                  | The transfer has failed because there was an intermittent internal error at Cashfree. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                                  | You can reinitiate the transfer via Cashfree Payments to reattempt with the partner bank(s).                                                                                                                                                                                                                                                                           | Yes                                                         |
  | 200              | FAILED              | BENE\_BANK\_DECLINED                  | The transfer has failed because the beneficiary bank has declined the transfer. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again with the partner bank(s).                                                                                                                                                                                                                                                                                    | -                                                                                                                                                                                                                                                                                                                                                                      | Yes                                                         |
  | 200              | FAILED              | IMPS\_MODE\_FAIL                      | The transfer has failed because the beneficiary account doesnot support IMPS transfers. This rejection is done by the partner bank for the specific beneficiary account. You can try NEFT or other channels to do the disbursals.                                                                                                                                                                                                                                                       | You can try NEFT or other channels to do the disbursals.                                                                                                                                                                                                                                                                                                               | Yes, via a different mode.                                  |
  | 200              | FAILED              | SOURCE\_BANK\_DECLINED                | The transfer has failed because our partner bank has declined the transfer because of their internal checks, technical declines etc. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again with the partner bank(s).                                                                                                                                                                                                                               | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again with other partner bank(s).                                                                                                                                                                                                                                                 | Yes                                                         |
  | 200              | FAILED              | CONNECTION\_TIMEOUT                   | The transfer has failed because there was a connection timeout between the bank and Cashfree. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again with the partner bank(s).                                                                                                                                                                                                                                                                      | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again with the partner bank(s).                                                                                                                                                                                                                                                   | Yes                                                         |
  | 200              | FAILED              | PPI\_INTERNAL\_ERROR                  | The transfer has failed because there was an intermittent internal error at Cashfree. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                                  | -                                                                                                                                                                                                                                                                                                                                                                      | Yes                                                         |
  | 200              | FAILED              | NPCI\_UNAVAILABLE                     | The transfer has failed because NPCI was unavailable to complete the transfer request. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree. The success of the request is contingent on NPCI services being up.                                                                                                                                                                                                                      | -                                                                                                                                                                                                                                                                                                                                                                      | Yes, after some time.                                       |
  | 200              | FAILED              | DEST\_LIMIT\_REACHED                  | The transfer has failed because the beneficiary account has breached the limit of receiving funds. This rejection is done by the beneficiary bank for the specific beneficiary account. You can reinitiate the transfer after a while via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s). The success of the request is contingent on beneficiary's limit being available to receive incoming funds.                                       | -                                                                                                                                                                                                                                                                                                                                                                      | Yes, after some time.                                       |
  | 200              | FAILED              | RETURNED\_FROM\_BENEFICIARY           | The transfer has failed because the beneficiary bank has returned the transfer and has not need able to credit funds to the end beneficiary. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again with the partner bank(s).                                                                                                                                                                                                                       | -                                                                                                                                                                                                                                                                                                                                                                      | -                                                           |
  | 200              | FAILED              | PPI\_INTERNAL\_ERROR                  | The transfer has failed because there was an intermittent internal error at Cashfree. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                                  | -                                                                                                                                                                                                                                                                                                                                                                      | -                                                           |
  | 200              | FAILED              | INVALID\_BENE\_ACCOUNT\_OR\_IFSC      | The transfer has failed because the beneficiary account or IFSC is invalid. After correcting the beneficiary account or IFSC, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                          | -                                                                                                                                                                                                                                                                                                                                                                      | -                                                           |
  | 200              | FAILED              | PPI\_INTERNAL\_ERROR                  | The transfer has failed because there was an intermittent internal error at Cashfree. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                                  | -                                                                                                                                                                                                                                                                                                                                                                      | -                                                           |
  | 200              | FAILED              | FAILED                                | The transfer has failed because there was an intermittent issue at the partner bank's end. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                             | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes, after some time.                                       |
  | 200              | FAILED              | PPI\_INTERNAL\_ERROR                  | The transfer has failed because there was an intermittent internal error at Cashfree. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                                  | -                                                                                                                                                                                                                                                                                                                                                                      | -                                                           |
  | 200              | FAILED              | INSUFFICIENT\_BALANCE                 | The transfer has failed because of low balance in your Cashfree Wallet/ Bank Account. After recharging the account, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                    | After recharging the account, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                         | Yes, after recharging.                                      |
  | 200              | FAILED              | INVALID\_BENE\_VPA                    | The transfer has failed because the beneficiary VPA is invalid. After correcting the VPA handle, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                       | After correcting the VPA handle, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                      | Yes, after correcting VPA handle.                           |
  | 200              | FAILED              | INVALID\_IFSC\_FAIL                   | The transfer has failed because the IFSC is invalid. After correcting the IFSC, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                                        | After correcting the IFSC, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                            | Yes, after correcting IFSC.                                 |
  | 200              | FAILED              | BAD\_GATEWAY                          | The transfer has failed because there was an intermittent internal error at Cashfree. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                                  | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes                                                         |
  | 200              | FAILED              | INVALID\_AMOUNT\_FAIL                 | The transfer has failed because the amount entered is invalid. After correcting the amount, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                            | After correcting the amount, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                          | Yes, after correcting amount                                |
  | 200              | FAILED              | INVALID\_ACCOUNT\_FAIL                | The transfer has failed because the Account Number of the beneficiary is invalid, as per our partner bank. 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).                                                                                                                                                                                                        | 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).                                                                                                                                                                                                  | Yes, after correcting account number                        |
  | 200              | FAILED              | INVALID\_REQUEST                      | The transfer has failed because the transfer request is invalid, as per our partner bank, because of exceeding the character limit of certain parameter, wrong input etc. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                              | -                                                                                                                                                                                                                                                                                                                                                                      | -                                                           |
  | 200              | FAILED              | ACCOUNT\_BLOCKED                      | The transfer has failed because the account is blocked, as per our partner bank. After getting the account unblocked, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                  | After getting the account unblocked, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                  | Yes, after unblocking the account number                    |
  | 200              | FAILED              | DEBIT\_FAILURE                        | The transfer has failed because there was an intermittent internal error at Cashfree. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                                  | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes                                                         |
  | 200              | FAILED              | BENEFICIARY\_BANK\_OFFLINE            | The transfer has failed because the respective beneficiary bank is offline. After some time, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                           | After some time, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                      | Yes, after some time                                        |
  | 200              | FAILED              | AUTHENTICATION\_FAILURE               | The transfer has failed because there was an authentication failure at the partner bank's end. After checking with the partner bank, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                   | This is a scenario when the API access is not working at the partner bank's end. After checking with the partner bank, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                | Yes                                                         |
  | 200              | FAILED              | NRE\_ACCOUNT\_FAIL                    | The transfer has failed because the beneficiary account is an NRE Account and transfers to NRE Accounts are not supported, as per our partner bank.                                                                                                                                                                                                                                                                                                                                     | Get a new account(non-NRE account) from the beneficiary; you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                              | Yes                                                         |
  | 200              | FAILED              | SOURCE\_LIMIT\_REACHED                | The transfer has been failed by the partner bank as the source bank account has reached a limit of transferring funds. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                 | If you are on Cashfree Wallet, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s). If you are on Connected Bank, you need to recharge your bank account and then reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s). | Yes, after some time                                        |
  | 200              | FAILED              | BANK\_GATEWAY\_ERROR                  | The transfer has failed because there was an intermittent issue at the partner bank's end. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                             | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes                                                         |
  | 200              | FAILED              | BAD\_REQUEST                          | The transfer has failed because the details of the transfer request is invalid, as per our partner bank. After correcting the details in the transfer request, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                         | After correcting the details in the transfer request, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                 | Yes                                                         |
  | 200              | FAILED              | REINITIALIZE\_TRANSFER\_LATER         | The transfer has failed because there was an intermittent internal error at Cashfree. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                                  | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes                                                         |
  | 200              | MANUALLY\_REJECTED  | MANUALLY\_REJECTED                    | The transfer has failed because it has been manually rejected by the merchant or any team member user who has the permissions to do the same on [Merchant Dashboard](https://merchant.cashfree.com/auth/login). You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again with the partner bank(s).                                                                                                                                                    | If the merchant wants to reinitiate the transfer, they can reinitiate the transfer via Cashfree so that the transfer can be reattempted again with the partner bank(s).                                                                                                                                                                                                | Yes,  if you want to reinitiate the transfer                |
  | 200              | PENDING             | SENT\_TO\_BANK                        | The transfer is currently in a Pending state, as Cashfree is awaiting a final confirmation from the partner bank for a terminal status. This has been sent to the bank by our banking operations team. Please do check statuses or await webhooks to know the terminal state of the transfer request.                                                                                                                                                                                   | Rely on Check Status API or Webhooks.                                                                                                                                                                                                                                                                                                                                  | -                                                           |
  | 200              | PENDING             | BANK\_GATEWAY\_ERROR                  | 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.                                                                                                                                                                                                                               | Rely on Check Status API or Webhooks.                                                                                                                                                                                                                                                                                                                                  | -                                                           |
  | 200              | PENDING             | NO\_SUCH\_REQUEST                     | The transfer is currently in a Pending state, as Cashfree is awaiting a final confirmation from the partner bank for a terminal status. The bank is not able to find the request at their end as of now, and it has been sent to the bank by our banking operations team. Please do check statuses or await webhooks to know the terminal state of the transfer request.                                                                                                                | Rely on Check Status API or webhooks.                                                                                                                                                                                                                                                                                                                                  | -                                                           |
  | 200              | PENDING             | IN\_PROCESS                           | The transfer is currently in a Pending state, as Cashfree is awaiting a final confirmation from the partner bank for a terminal status. Please do check statuses or await webhooks to know the terminal state of the transfer request.                                                                                                                                                                                                                                                  | Rely on Check Status API or webhooks.                                                                                                                                                                                                                                                                                                                                  | -                                                           |
  | 200              | PENDING             | ERROR\_FETCHING\_STATUS               | The transfer is currently in a Pending state, as Cashfree is awaiting a final confirmation from the partner bank for a terminal status. The response received from the partner bank has a new code. This has been raised with the bank to understand the new code. Please do check statuses or await webhooks to know the terminal state of the transfer request.                                                                                                                       | Rely on Check Status API or webhooks.                                                                                                                                                                                                                                                                                                                                  | -                                                           |
  | 200              | PENDING             | TRANSACTION\_PROCESSED                | 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.                                                                                                                                                                                                                               | Rely on Check Status API or webhooks.                                                                                                                                                                                                                                                                                                                                  | -                                                           |
  | 200              | PENDING             | REQUEST\_TIMEDOUT                     | The transfer is currently in a Pending state, as Cashfree is awaiting a final confirmation from the partner bank for a terminal status. The bank is not able to find the request at their end as of now as the request between the partner bank has probably timed out, and it has been highlighted to the bank by our banking operations team. Please do check statuses or await webhooks to know the terminal state of the transfer request.                                          | Rely on Check Status API or webhooks.                                                                                                                                                                                                                                                                                                                                  | -                                                           |
  | 200              | PENDING             | DUPLICATE                             | The transfer is currently in a Pending state, as Cashfree is awaiting a final confirmation from the partner bank for a terminal status. The bank claims of receiving a duplicate request at their end as of now. You should rely only on Check Status API response or Webhooks to know the terminal state of the transfer request.                                                                                                                                                      | Rely on Check Status API or webhooks.                                                                                                                                                                                                                                                                                                                                  | -                                                           |
  | 200              | PENDING             | PENDING                               | 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.                                                                                                                                                                                                                               | Rely on Check Status API or webhooks.                                                                                                                                                                                                                                                                                                                                  | -                                                           |
  | 200              | PENDING             | SCHEDULED\_FOR\_NEXT\_WORKINGDAY      | The transfer is currently in a Pending state, as the bank has scheduled the transfer for the next working day. This typically happens for NEFT/RTGS transfers if they are initiated beyond the cut-off hours or during bank holidays. You should rely only on Check Status API response or Webhooks to know the terminal state of the transfer request.                                                                                                                                 | -                                                                                                                                                                                                                                                                                                                                                                      | -                                                           |
  | 200              | PENDING             | SUSPECT                               | The transfer is currently in a Pending state, as the bank has scheduled the transfer for the next working day. This typically happens for NEFT/RTGS transfers if they are initiated beyond the cut-off hours or during bank holidays. You should rely only on Check Status API response or Webhooks to know the terminal state of the transfer request.                                                                                                                                 | -                                                                                                                                                                                                                                                                                                                                                                      | -                                                           |
  | 200              | PENDING             | IMPLEMENTATION\_ERROR                 | 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.                                                                                                                                                                                                                               | -                                                                                                                                                                                                                                                                                                                                                                      | -                                                           |
  | 200              | PENDING             | UNKNOWN\_ERROR\_CODE                  | The transfer is currently in a Pending state, as Cashfree is awaiting a final confirmation from the partner bank for a terminal status. The response received from the partner bank has a new code. This has been raised with the bank to understand the new code. Please do check statuses or await webhooks to know the terminal state of the transfer request.                                                                                                                       | -                                                                                                                                                                                                                                                                                                                                                                      | -                                                           |
  | 200              | QUEUED              | QUEUED                                | 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.                                                                                                                                                                                                                               | Rely on Check Status API or webhooks.                                                                                                                                                                                                                                                                                                                                  | -                                                           |
  | 200              | RECEIVED            | RECEIVED                              | 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.                                                                                                                                                                                                                                                                                                | Rely on Check Status API or webhooks.                                                                                                                                                                                                                                                                                                                                  | -                                                           |
  | 200              | REJECTED            | BENE\_NOT\_EXIST                      | The transfer has been rejected because the beneficiary, added in the transfer request, does not exist. After adding the right beneficiary, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                             | After adding the right beneficiary, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                   | Yes, after adding the correct beneficiary.                  |
  | 200              | REJECTED            | INSUFFICIENT\_BALANCE                 | The transfer has been rejected because of low balance in your Cashfree Wallet. After recharging the account, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                           | After recharging the account, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                         | Yes, after recharging.                                      |
  | 200              | REJECTED            | INSIDE\_BLACKOUT\_WINDOW              | The transfer has been rejected because the transfer falls under the blackout window defined by you in PPI Protect. You can reinitiate the transfer via Cashfree, after the blackout window or after modifying the blackout window from the [Merchant Dashboard](https://merchant.cashfree.com/auth/login), so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                          | You can reinitiate the transfer via Cashfree, after the blackout window or after modifying the blackout window from the [Merchant Dashboard](https://merchant.cashfree.com/auth/login), so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                            | Yes                                                         |
  | 200              | REJECTED            | INVALID\_MODE\_FOR\_PYID              | 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.                                                                                                                                                                                                                                                 | You should get this mode activated on the payment instrument ID by contacting Cashfree, and then initiate a new transfer request.                                                                                                                                                                                                                                      | Yes, after activating model                                 |
  | 200              | REJECTED            | BENE\_BLACKLISTED                     | The transfer has been rejected because the beneficiary's bank account and/or VPA handles have been blacklisted by Risk team. You should get a different bank account and/or VPA to send the transfer, or you can connect with Cashfree Team to understand more about this.                                                                                                                                                                                                              | You should get a different bank account and/or VPA to send the transfer, or you can connect with Cashfree Team to understand more about this.                                                                                                                                                                                                                          | Yes, after correcting beneficiary details                   |
  | 200              | REJECTED            | TRANSFER\_NOT\_ATTEMPTED              | The transfer has failed because there was an intermittent internal error at Cashfree. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                                  | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes                                                         |
  | 200              | REJECTED            | INVALID\_TRANSFER\_AMOUNT             | The transfer has been rejected because the amount entered is invalid. After correcting the amount, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                     | After correcting the amount, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                          | Yes, after correcting the amount                            |
  | 200              | REJECTED            | TRANSFER\_LIMIT\_BREACH               | The transfer has been rejected because the amount entered breaches the limits set for your ppi account. After correcting the amount, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s). You can connect with Cashfree if you are not sure about the transfer limits set for your ppi account.                                                                                                             | After correcting the amount, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s). You can connect with Cashfree if you are not sure about the transfer limits set for your ppi account.                                                                                                    | Yes, after adhering to the transfer limits.                 |
  | 200              | REJECTED            | INVALID\_PAYMENT\_INSTRUMENT          | The transfer has been rejected because the payment instrument (fundsource\_id parameter in the API request) used for attempting the transfer is invalid. After correcting the payment instrument, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                              | After correcting the payment instrument, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                      | Yes, after correcting payment instrument                    |
  | 200              | REJECTED            | PPI\_INTERNAL\_ERROR                  | The transfer has been rejected because there was an intermittent internal error at Cashfree. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                           | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes                                                         |
  | 200              | REJECTED            | VELOCITY\_CHECK\_FAILED               | The transfer has been rejected because the amount entered breaches the limits set for your ppi account. After correcting the amount, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s). You can connect with Cashfree if you are not sure about the transfer limits set for your ppi account.                                                                                                             | After correcting the amount, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s). You can connect with Cashfree if you are not sure about the transfer limits set for your ppi account.                                                                                                    | Yes, after adhering to the transfer limits.                 |
  | 200              | REJECTED            | PPI\_INTERNAL\_ERROR                  | The transfer has been rejected because there was an intermittent internal error at Cashfree. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                           | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes                                                         |
  | 200              | REJECTED            | PPI\_INTERNAL\_ERROR                  | The transfer has been rejected because there was an intermittent internal error at Cashfree. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                                           | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes                                                         |
  | 200              | REJECTED            | DISABLED\_MODE                        | The transfer has been rejected because your ppi account does not support this mode of transfer. You should get this mode activated on your payout account by contacting Cashfree, and then initiate a new transfer request.                                                                                                                                                                                                                                                             | You should get this mode activated on your ppi account by contacting Cashfree, and then initiate a new transfer request.                                                                                                                                                                                                                                               | Yes, after activating mode.                                 |
  | 200              | REJECTED            | BANK\_ACCOUNT\_INVALID                | The transfer has been rejected because there is a mismatch in the Bank Account Number of the beneficiary ID and the Bank Account Number in the transfer request. After correcting the Bank Account Number, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                     | After correcting the Bank Account Number, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                     | Yes, after correcting the bank account number.              |
  | 200              | REJECTED            | BANK\_IFSC\_INVALID                   | The transfer has been rejected because there is a mismatch in the IFSC of the beneficiary ID and the IFSC in the transfer request. After correcting the IFSC, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                  | After correcting the IFSC, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                                    | Yes, after correcting the IFSC                              |
  | 200              | REJECTED            | VPA\_INVALID                          | The transfer has been rejected because there is a mismatch in the VPA handle of the beneficiary ID and the VPA handle in the transfer request. After correcting the VPA handle, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                | After correcting the VPA handle, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                              | Yes, after correcting the VPA handle                        |
  | 200              | REJECTED            | PHONE\_INVALID                        | The transfer has been rejected because there is a mismatch in the Phone Number of the beneficiary ID and the Phone Number in the transfer request. After correcting the Phone Number, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                          | After correcting the Phone Number, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                            | Yes, after correcting the phone number.                     |
  | 200              | REJECTED            | BANK\_ACCOUNT\_DETAILS\_MISSING       | The transfer has been rejected because the Bank Account Details are missing in the transfer request. After adding the Bank Account Details, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                                    | After adding the Bank Account Details, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                        | Yes, after adding the bank account details.                 |
  | 200              | REVERSED            | ACCOUNT\_BLOCKED                      | The transfer has been reversed by the beneficiary bank as the end-beneficiary's account is blocked for receiving incoming funds. After correcting the account number or getting the account unblocked, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                 | After correcting the account number or getting the account unblocked, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                 | Yes, after adding new details or getting account unblocked. |
  | 200              | REVERSED            | FAILED                                | The transfer has been reversed by the beneficiary bank as they were unable to credit the end beneficiary's bank account. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                               | -                                                                                                                                                                                                                                                                                                                                                                      | Yes                                                         |
  | 200              | REVERSED            | NRE\_ACCOUNT\_FAIL                    | The transfer has been reversed by the beneficiary bank as they were unable to credit the end beneficiary's bank account as it is an NRE Account and transfers to NRE Accounts are not supported.                                                                                                                                                                                                                                                                                        | Get a new account(non-NRE account) from the beneficiary; you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                              | No                                                          |
  | 200              | REVERSED            | RETURNED\_FROM\_BENEFICIARY           | The transfer has been reversed by the beneficiary bank as they were unable to credit the end beneficiary's bank account. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                               | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes                                                         |
  | 200              | REVERSED            | BENE\_BANK\_DECLINED                  | The transfer has been declined by the beneficiary bank and they were unable to credit the end beneficiary's bank account. You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                              | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes                                                         |
  | 200              | REVERSED            | IMPS\_MODE\_FAIL                      | The transfer has been reversed by the beneficiary bank because the beneficiary bank account doesnot support IMPS transfers. This rejection is done by the beneficiary bank for the specific beneficiary account. You can try NEFT or other channels to do the disbursals.                                                                                                                                                                                                               | You can reinitiate the transfer via Cashfree by changing the mode so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                  | Yes, after changing mode.                                   |
  | 200              | REVERSED            | DEST\_LIMIT\_REACHED                  | The transfer has been reversed by the beneficiary bank as the end-beneficiary's account has reached a limit of receiving incoming funds. This rejection is done by the beneficiary bank for the specific beneficiary account. You can reinitiate the transfer after a while via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s). The success of the request is contingent on beneficiary's limit being available to receive incoming funds. | The limits on the beneficiary account are typically refreshed every 24 hours. Its not clear when the 24 hour window shall elpase so you can then reinitiate the transfer via Cashfree after some time so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                              | Yes, after some time.                                       |
  | 200              | REVERSED            | INVALID\_ACCOUNT\_FAIL                | 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).                                                                                                                                                                                                  | 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).                                                                                                                                                                                                  | Yes, after correcting the account number                    |
  | 200              | SUCCESS             | SENT\_TO\_BENEFICIARY                 | The transfer has been initiated via the partner bank successfully. The request is waiting to be processed at the beneficiary bank to do the credit to the end beneficiary.                                                                                                                                                                                                                                                                                                              | -                                                                                                                                                                                                                                                                                                                                                                      | -                                                           |
  | 200              | SUCCESS             | COMPLETED                             | The transfer has been initiated via the partner bank successfully, hence your account is debited and the request is successfully processed by the beneficiary bank and has been credited to the end beneficiary.                                                                                                                                                                                                                                                                        | -                                                                                                                                                                                                                                                                                                                                                                      | -                                                           |
  | 200              | REJECTED            | TRANSFERID\_INVALID                   | transferid can contain only alphabets, numbers, underscore (\_), hyphen (-).                                                                                                                                                                                                                                                                                                                                                                                                            | After correcting the transferid, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                              | Yes, after correcting transfer id.                          |
  | 200              | REJECTED            | AMOUNT\_INVALID                       | amount can contain only numbers.                                                                                                                                                                                                                                                                                                                                                                                                                                                        | After correcting the amount, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                                  | Yes, after correcting amount.                               |
  | 200              | REJECTED            | REMARKS\_INVALID                      | remarks can contain only alphabets, numbers and space.                                                                                                                                                                                                                                                                                                                                                                                                                                  | After correcting the remarks, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                                 | Yes, after correcting remarks.                              |
  | 200              | REJECTED            | BENEID\_INVALID                       | beneId can contain only alphabets, numbers and underscore.                                                                                                                                                                                                                                                                                                                                                                                                                              | After correcting the beneid, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                                  | Yes, after correcting beneficiary id.                       |
  | 200              | REJECTED            | NAME\_INVALID                         | name can contain only alphabets, numbers and space.                                                                                                                                                                                                                                                                                                                                                                                                                                     | After correcting the name, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                                    | Yes, after correcting name.                                 |
  | 200              | REJECTED            | EMAIL\_INVALID                        | email is not a valid email format.                                                                                                                                                                                                                                                                                                                                                                                                                                                      | After correcting the email, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                                   | Yes, after correcting email.                                |
  | 200              | REJECTED            | IBAN\_INVALID                         | iban can contain only alphabet and numbers.                                                                                                                                                                                                                                                                                                                                                                                                                                             | After correcting the iban, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                                    | Yes, after correcting IBAN.                                 |
  | 200              | REJECTED            | TRANSFERMODE\_INVALID                 | transferMode can contain in one of banktransfer upi paytm amazonpay imps neft rtgs ppc.                                                                                                                                                                                                                                                                                                                                                                                                 | After correcting the transfermode, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                            | Yes, after correcting mode.                                 |
  | 200              | REJECTED            | CURRENCY\_INVALID                     | currency is invalid.                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | After correcting the currency, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                                | Yes, after correcting currency.                             |
  | 200              | REJECTED            | ACCOUNT\_DOES\_NOT\_EXIST             | The transfer has been rejected because the beneficiary account/ VPA does not exist as per our partner bank.                                                                                                                                                                                                                                                                                                                                                                             | 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).                                                                                                                                                                                                  | Yes, after correcting details.                              |
  | 200              | FAILED              | ACCOUNT\_DOES\_NOT\_EXIST             | The transfer has failed because the beneficiary account/ VPA does not exist as per our partner bank.                                                                                                                                                                                                                                                                                                                                                                                    | 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).                                                                                                                                                                                                  | Yes, after correcting details.                              |
  | 200              | REJECTED            | AMAZON\_AMOUNT\_EXCEED                | The transfer has been rejected because the amount entered breaches the limits set for the beneficiaries amazon account.                                                                                                                                                                                                                                                                                                                                                                 | After verifying the limits for beneficiaries amazon account, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                          | Yes, after verifying limits.                                |
  | 200              | FAILED              | AMAZON\_AMOUNT\_EXCEED                | The transfer has failed because the amount entered breaches the limits set for the beneficiaries amazon account.                                                                                                                                                                                                                                                                                                                                                                        | After verifying the limits for beneficiaries amazon account, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                          | Yes, after verifying limits.                                |
  | 200              | REJECTED            | ANOMALY\_DETECTION                    | The transfer has been rejected as Cashfree risk product has detected an anamoly.                                                                                                                                                                                                                                                                                                                                                                                                        | You can reinitiate the transfer request after validation at your end.                                                                                                                                                                                                                                                                                                  | Yes, after validation.                                      |
  | 200              | APPROVAL\_PENDING   | ANOMALY\_DETECTION                    | The transfer requires approval as Cashfree risk product has detected an anamoly.                                                                                                                                                                                                                                                                                                                                                                                                        | You can approve/reject the transfer on the merchant dashboard. Post the transfer is approved, the request is sent to the partner bank for further processing.                                                                                                                                                                                                          | -                                                           |
  | 200              | FAILED              | BAD\_CONNECTION                       | The transfer has failed because there was an intermittent internal error between Cashfree and the partner bank.                                                                                                                                                                                                                                                                                                                                                                         | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes, after some time.                                       |
  | 200              | REJECTED            | BENE\_INVALID                         | The transfer has been rejected because the beneficiary added in the transfer request does not exist.                                                                                                                                                                                                                                                                                                                                                                                    | After adding the right beneficiary, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                   | Yes, after adding beneficiary.                              |
  | 200              | FAILED              | BENE\_INVALID                         | The transfer has failed because the beneficiary added in the transfer request does not exist.                                                                                                                                                                                                                                                                                                                                                                                           | After adding the right beneficiary, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                   | Yes, after adding beneficiary.                              |
  | 200              | FAILED              | BENE\_NOT\_REGISTERED                 | The transfer has been rejected because the beneficiary added in the transfer request is not registered with the partner bank.                                                                                                                                                                                                                                                                                                                                                           | After adding the right beneficiary, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                   | Yes, after adding beneficiary.                              |
  | 200              | VALIDATION\_PENDING | BENE\_VERIFICATION\_PENDING           | The transfer is pending because the beneficiary verification is pending. Once the beneficiary is validated we will attempt the transfers with partner bank(s).                                                                                                                                                                                                                                                                                                                          | -                                                                                                                                                                                                                                                                                                                                                                      | -                                                           |
  | 200              | FAILED              | BENEFICIARY\_BANK\_UNAVAILABLE        | The transfer has failed because the respective beneficiary bank is offline.                                                                                                                                                                                                                                                                                                                                                                                                             | After some time, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                      | Yes, after some time.                                       |
  | 200              | FAILED              | BENEFICIARY\_NAME\_DIFFERS            | The transfer has failed because the beneficiary name differs as per Cashfree's partner bank.                                                                                                                                                                                                                                                                                                                                                                                            | After adding the right beneficiary, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                   | Yes, after correcting name.                                 |
  | 200              | REJECTED            | BENEFICIARY\_NAME\_DIFFERS            | The transfer has been rejected because the beneficiary name differs as per Cashfree's partner bank.                                                                                                                                                                                                                                                                                                                                                                                     | After adding the right beneficiary, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                   | Yes, after correcting name.                                 |
  | 200              | REJECTED            | BENEFICIARY\_NAME\_MISMATCH           | The transfer has been rejected because the beneficiary name differs as per Cashfree's partner bank.                                                                                                                                                                                                                                                                                                                                                                                     | After adding the right beneficiary, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                   | Yes, after correcting name.                                 |
  | 200              | REJECTED            | CARD\_UNSUPPORTED                     | The transfer has been rejected because the card is not supported.                                                                                                                                                                                                                                                                                                                                                                                                                       | After changing the payment instrument details, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                        | Yes, after changing instrument.                             |
  | 200              | FAILED              | CARD\_UNSUPPORTED                     | The transfer has failed because the card is not supported.                                                                                                                                                                                                                                                                                                                                                                                                                              | After changing the payment instrument details, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                        | Yes, after changing instrument.                             |
  | 200              | FAILED              | DUPLICATE\_FAILED                     | The transfer has failed as the bank claims of receiving a duplicate request at their end as of now.                                                                                                                                                                                                                                                                                                                                                                                     | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes, with new id.                                           |
  | 200              | FAILED              | ERROR\_RETRIEVING\_BALANCE            | The transfer has failed because there was an intermittent issue at the partner bank's end.                                                                                                                                                                                                                                                                                                                                                                                              | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes, after some time.                                       |
  | 200              | REJECTED            | INVALID\_CARD                         | The transfer has been rejected because the card details are not correct.                                                                                                                                                                                                                                                                                                                                                                                                                | After changing the payment instrument details, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                        | Yes, after correcting card.                                 |
  | 200              | FAILED              | INVALID\_CARD                         | The transfer has failed because the card details are not correct.                                                                                                                                                                                                                                                                                                                                                                                                                       | After changing the payment instrument details, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                        | Yes, after correcting card.                                 |
  | 200              | REJECTED            | INVALID\_CURRENCY\_FOR\_PYID          | The transfer has been rejected because the transfer currency passed in the transfer request is not supported by Cashfree.                                                                                                                                                                                                                                                                                                                                                               | After changing the currency to INR, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                   | Yes, after changing currency.                               |
  | 200              | FAILED              | INVALID\_CURRENCY\_FOR\_PYID          | The transfer has been rejected because the transfer currency passed in the transfer request is not supported by Cashfree.                                                                                                                                                                                                                                                                                                                                                               | After changing the currency to INR, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                   | Yes, after changing currency.                               |
  | 200              | FAILED              | INVALID\_MODE\_FAIL                   | The transfer has failed because the requested transfer mode is not supported for this beneficiary account as per the partner bank.                                                                                                                                                                                                                                                                                                                                                      | After changing the transfer mode, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                     | Yes, after changing mode.                                   |
  | 200              | REJECTED            | INVALID\_OR\_NO\_SUCH\_ACCOUNT\_TYPE  | The transfer has been rejected because the beneficiary account type is invalid or not supported as per our partner bank.                                                                                                                                                                                                                                                                                                                                                                | Get a new account from the beneficiary; you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                               | Yes, after new account.                                     |
  | 200              | FAILED              | INVALID\_OR\_NO\_SUCH\_ACCOUNT\_TYPE  | The transfer has failed because the beneficiary account type is invalid or not supported as per our partner bank.                                                                                                                                                                                                                                                                                                                                                                       | Get a new account from the beneficiary; you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                               | Yes, after new account.                                     |
  | 200              | FAILED              | INVALID\_PHONE\_BENEFICIARY           | The transfer has failed because the beneficiary's phone number is not linked to any VPA.                                                                                                                                                                                                                                                                                                                                                                                                | After adding the right phone beneficiary, You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                             | Yes, after correcting phone.                                |
  | 200              | REJECTED            | INVALID\_TRANSFER\_CURRENCY           | The transfer has been rejected because the transfer currency passed in the transfer request is not supported by Cashfree.                                                                                                                                                                                                                                                                                                                                                               | After changing the currency to INR, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                   | Yes, after changing currency.                               |
  | 200              | FAILED              | INVALID\_TRANSFER\_CURRENCY           | The transfer has failed because the transfer currency passed in the transfer request is not supported by Cashfree.                                                                                                                                                                                                                                                                                                                                                                      | After changing the currency to INR, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                   | Yes, after changing currency.                               |
  | 200              | REJECTED            | KYC\_COMPLIANCE\_VERIFICATION\_FAILED | The transfer has failed because the KYC verification has failed.                                                                                                                                                                                                                                                                                                                                                                                                                        | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes, after KYC resolution.                                  |
  | 200              | REJECTED            | KYC\_REQUIREMENTS\_NOT\_SATISFIED     | The transfer has failed because the KYC requirements have not been satisfied.                                                                                                                                                                                                                                                                                                                                                                                                           | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes, after completing KYC.                                  |
  | 200              | FAILED              | LOAD\_LIMIT\_EXHAUSTED                | The transfer has failed because the beneficiaries account has reached maximum transaction amount limit.                                                                                                                                                                                                                                                                                                                                                                                 | After 24 hours, You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                       | Yes, after 24 hours.                                        |
  | 200              | FAILED              | LOAN\_FUND\_MOVEMENT\_FAILURE         | The transfer has failed because of an intermittent issue at Cashfree's end.                                                                                                                                                                                                                                                                                                                                                                                                             | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes, after some time.                                       |
  | 200              | PENDING             | LOW\_BALANCE\_QUEUED                  | The transfer is pending because the balance in the fund source is exhausted. This transfer will be processed after you recharge the fund source, you need not reinitiate this transfer.                                                                                                                                                                                                                                                                                                 | This transfer will be processed after you recharge the fund source, you need not reinitiate this transfer. Please rely on check status API or webhook for checking the status of this transfer.                                                                                                                                                                        | -                                                           |
  | 200              | REJECTED            | MANUALLY\_REJECTED                    | The transfer has been manually rejected by you.                                                                                                                                                                                                                                                                                                                                                                                                                                         | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree.                                                                                                                                                                                                                                                                | Yes, if needed.                                             |
  | 200              | REJECTED            | PPI\_INACTIVE                         | The transfer has been rejected because your ppi account has been inactive.                                                                                                                                                                                                                                                                                                                                                                                                              | After getting the account activated, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                  | Yes, after activation.                                      |
  | 200              | PENDING             | PENDING                               | The transfer is currently in a Pending state, as Cashfree is awaiting a final confirmation from the partner bank for a terminal status.                                                                                                                                                                                                                                                                                                                                                 | Rely on Check Status API or Webhooks                                                                                                                                                                                                                                                                                                                                   | -                                                           |
  | 200              | FAILED              | POOL\_CONNECTION\_TIMEOUT             | The transfer has failed because there was a connection issue with the partner bank's end.                                                                                                                                                                                                                                                                                                                                                                                               | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes, after some time.                                       |
  | 200              | REJECTED            | QUICK\_TRANSFER\_DISABLED             | The transfer has been rejected because quick transfer is disabled for your ppi account.                                                                                                                                                                                                                                                                                                                                                                                                 | After getting quick transfer enabled, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                 | Yes, after enabling.                                        |
  | 200              | REJECTED            | REJECTED                              | Transfer rejected.                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | -                                                                                                                                                                                                                                                                                                                                                                      | Yes, after correction.                                      |
  | 200              | REVERSED            | REVERSED                              | The transfer has been reversed by the beneficiary bank as the credit to end-beneficiary's account has failed.                                                                                                                                                                                                                                                                                                                                                                           | You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                                                       | Yes, after correction.                                      |
  | 200              | FAILED              | RTGS\_MODE\_FAIL                      | The transfer has failed because the beneficiary account doesnot support RTGS transfers.                                                                                                                                                                                                                                                                                                                                                                                                 | You can try NEFT or other channels to do the disbursals.                                                                                                                                                                                                                                                                                                               | Yes, via different mode.                                    |
  | 200              | FAILED              | SUSPECTED\_FAILED                     | The transfer has failed, as the partner bank suspects that the transfer is of fraudulent nature.                                                                                                                                                                                                                                                                                                                                                                                        | -                                                                                                                                                                                                                                                                                                                                                                      | No (investigate).                                           |
  | 200              | REJECTED            | VBA\_TRANSFER\_DISABLED               | The transfer has been rejected because transfers to virtual bank accounts are not enabled for your Cashfree Account.                                                                                                                                                                                                                                                                                                                                                                    | After getting payouts to virtual bank accounts enabled, you can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s). You can connect with Cashfree for enabling payouts to virtual bank accounts.                                                                                                  | Yes, after enabling.                                        |
  | 200              | REJECTED            | ERROR\_SELECTING\_FUND\_SOURCE        | The transfer has been rejected because their is some issue with your account configuration.                                                                                                                                                                                                                                                                                                                                                                                             | You can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                                                               | Yes, after fixing config.                                   |
  | 200              | VALIDATION\_PENDING | VALIDATION\_PENDING                   | The transfer is pending because the beneficiary verification is pending. Once the beneficiary is validated we will attempt the transfers with partner bank(s).                                                                                                                                                                                                                                                                                                                          | Rely on Check Status API or Webhooks                                                                                                                                                                                                                                                                                                                                   | -                                                           |
  | 200              | REJECTED            | INVALID\_BENEFICIARY\_CODE            | The transfer has been rejected because the bene code is Invalid.                                                                                                                                                                                                                                                                                                                                                                                                                        | After correcting the beneficiary code, you can reinitiate the transfer via Cashfree so that the transfer can be attempted by Cashfree with the partner bank(s).                                                                                                                                                                                                        | Yes, after correcting code.                                 |
  | 200              | REJECTED            | DUPLICATE\_TRANSFER                   | The transfer is already present in the file or has been processed previously. Please change the transferId in the api request.                                                                                                                                                                                                                                                                                                                                                          | After changing the Transfer Id, You can reinitiate the transfer via Cashfree so that the transfer can be reattempted again by Cashfree with the partner bank(s).                                                                                                                                                                                                       | Yes, with new transfer id.                                  |
</Accordion>


## OpenAPI

````yaml /openapi/ppi/ppi.yaml post /ppi/wallet/transfer/details
openapi: 3.0.3
info:
  title: PPI Wallet API
  description: >-
    API for managing PPI (Prepaid Payment Instrument) wallets and sub-wallets,
    including credit and debit operations.
  version: 1.0.0
  contact:
    name: PPI Service Team
    email: support@cashfree.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
  - url: https://api.cashfree.com
    description: Production server.
  - url: https://sandbox.cashfree.com
    description: Sandbox server.
security:
  - XClientID: []
    XClientSecret: []
tags:
  - name: Wallet Management
    description: Operations related to PPI wallet management.
  - name: User Management
    description: Operations related to user management within the PPI system.
  - name: Beneficiary Management
    description: Operations related to beneficiary management for users.
  - name: KYC Management
    description: Operations related to KYC (Know Your Customer) management.
  - name: Transfers
    description: Operations related to transfer.
paths:
  /ppi/wallet/transfer/details:
    post:
      tags:
        - Transfers
      summary: Get Transfer Details
      description: >
        Retrieves detailed information about a specific transfer transaction,
        including current status, beneficiary details.


        This endpoint provides comprehensive transfer information including:

        - Current transfer status and bank status

        - Beneficiary and instrument details

        - Transaction timestamps and reference numbers if transaction
        successfully completed

        - Sub-wallet balance after the transfer
      operationId: getWalletTransferDetails
      parameters:
        - $ref: '#/components/parameters/global_x_api_version'
      requestBody:
        $ref: '#/components/requestBodies/GetWalletTransferDetailsRequest'
      responses:
        '200':
          description: Success response for fetching wallet transfer details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletTransferGetDetailsResponse'
              examples:
                transfer_received_response:
                  $ref: '#/components/examples/transfer_received_response'
                transfer_pending_response:
                  $ref: '#/components/examples/transfer_pending_response'
                transfer_success_response:
                  $ref: '#/components/examples/transfer_success_response'
                transfer_failed_response:
                  $ref: '#/components/examples/transfer_failed_response'
                transfer_rejected_response:
                  $ref: '#/components/examples/transfer_rejected_response'
                transfer_reversed_response:
                  $ref: '#/components/examples/transfer_reversed_response'
        '400':
          description: Bad request - Invalid input parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StructuredErrorResponse'
              examples:
                transfer_id_missing:
                  $ref: '#/components/examples/transfer_id_missing'
                wallet_id_missing:
                  $ref: '#/components/examples/wallet_id_missing'
                user_id_missing:
                  $ref: '#/components/examples/user_id_missing'
                cf_sub_wallet_id_missing:
                  $ref: '#/components/examples/cf_sub_wallet_id_missing'
                transfer_id_invalid:
                  $ref: '#/components/examples/transfer_id_invalid'
                wallet_id_invalid:
                  $ref: '#/components/examples/wallet_id_invalid'
                user_id_invalid:
                  $ref: '#/components/examples/user_id_invalid'
                cf_sub_wallet_id_invalid:
                  $ref: '#/components/examples/cf_sub_wallet_id_invalid'
        '401':
          $ref: '#/components/responses/Response401'
        '403':
          $ref: '#/components/responses/Response403'
        '404':
          description: Not found - Transfer, user, wallet, or sub-wallet not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StructuredErrorResponse'
              examples:
                transferNotFound:
                  summary: Transfer not found
                  value:
                    code: transfer_not_found
                    type: validation_error
                    message: No transfer found with the provided transfer_id
                userNotFound:
                  summary: User not found
                  value:
                    code: user_not_found
                    type: validation_error
                    message: No user found with the provided user_id
                walletNotFound:
                  summary: Wallet not found
                  value:
                    code: wallet_not_found
                    type: validation_error
                    message: No wallet found with the provided wallet_id
                subWalletNotFound:
                  summary: Sub-wallet not found
                  value:
                    code: sub_wallet_not_found
                    type: validation_error
                    message: No sub-wallet found with the provided cf_sub_wallet_id
        '429':
          $ref: '#/components/responses/Response429'
        '500':
          $ref: '#/components/responses/Response500'
      security:
        - XClientID: []
          XClientSecret: []
components:
  parameters:
    global_x_api_version:
      description: API version to be used. Format is in YYYY-MM-DD.
      name: x-api-version
      in: header
      required: true
      schema:
        type: string
        default: '2025-11-01'
        example: '2025-11-01'
      example: '2025-11-01'
  requestBodies:
    GetWalletTransferDetailsRequest:
      description: Request parameters to fetch the details and status of a wallet transfer.
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/WalletTransferDetailsRequest'
          examples:
            getTransferDetails:
              summary: Get transfer details
              value:
                user_id: USER827364
                wallet_id: WALLET936721
                cf_sub_wallet_id: '35246543210987654321'
                transfer_id: TRANSFER123456
  schemas:
    WalletTransferGetDetailsResponse:
      type: object
      properties:
        user_id:
          type: string
          description: >-
            Unique identifier for the user, as provided by you during PPI user
            creation.
          example: USER827364
        wallet_id:
          type: string
          description: >-
            Unique identifier for the wallet, as provided by you during wallet
            creation.
          example: WALLET936721
        cf_transfer_id:
          type: string
          description: >-
            Unique identifier for the transfer transaction, generated by
            Cashfree.
          example: '8901234567890123456'
        transfer_id:
          type: string
          description: >-
            Unique identifier for the transfer transaction, as provided by you
            during the transfer request.
          example: TRANSFER123456
        amount:
          type: number
          format: double
          description: Amount that was transferred.
          example: 1250.5
        transfer_mode:
          type: string
          description: Mode of transfer used.
          enum:
            - RTGS
            - NEFT
            - IMPS
            - UPI
          example: IMPS
        sub_wallet:
          $ref: '#/components/schemas/SubWallet'
        status:
          type: string
          description: |
            Current status of the transfer operation.
          enum:
            - RECEIVED
            - PENDING
            - SUCCESS
            - FAILED
            - REJECTED
            - VALIDATION_PENDING
            - REVERSED
            - APPROVAL_PENDING
            - QUEUED
            - MANUALLY_REJECTED
          example: SUCCESS
        bank_ref_no:
          type: string
          nullable: true
          description: >-
            Bank reference number for the transfer. Will be null if transfer is
            not yet processed by the bank.
          example: BNK202502101530001
        status_code:
          type: string
          description: |
            Overall status code for this transfer.
          example: RECEIVED
        bene_details:
          $ref: '#/components/schemas/BeneDetails'
        purpose:
          type: string
          description: Purpose of the transfer.
          example: PERSONAL
        remarks:
          type: string
          description: Remarks for the transfer transaction.
          example: Monthly groceries transfer
        notes:
          $ref: '#/components/schemas/Notes'
        initiated_at:
          type: string
          format: date-time
          description: Timestamp when the transfer transaction was initiated.
          example: '2025-09-02T10:15:30Z'
        processed_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Timestamp when the transfer transaction was processed by the bank.
            Will be null if still pending.
          example: '2025-09-02T10:17:45Z'
    StructuredErrorResponse:
      type: object
      properties:
        type:
          type: string
          description: A broad category of the error.
          example: internal_error
        code:
          type: string
          description: A machine-readable error code specific to the issue.
          example: internal_server_error
        message:
          type: string
          description: >-
            A message providing more details about the error, dynamic based on
            the specific issue.
          example: Internal server error
    WalletTransferDetailsRequest:
      type: object
      required:
        - user_id
        - wallet_id
        - cf_sub_wallet_id
        - transfer_id
      properties:
        user_id:
          type: string
          description: >-
            Unique identifier for the user, as provided by you during PPI user
            creation.
          example: USER827364
          minLength: 1
          maxLength: 50
        wallet_id:
          type: string
          description: >-
            Unique identifier for the wallet, as provided by you during wallet
            creation.
          example: WALLET936721
          minLength: 1
          maxLength: 50
        cf_sub_wallet_id:
          type: string
          description: >-
            Unique identifier of the sub-wallet from which the transfer was
            made.
          example: '35246543210987654321'
          minLength: 1
          maxLength: 50
        transfer_id:
          type: string
          description: >-
            Unique identifier for the transfer transaction, as provided during
            transfer creation.
          example: TRANSFER123456
          minLength: 1
          maxLength: 50
    SubWallet:
      type: object
      properties:
        cf_sub_wallet_id:
          type: string
          description: >-
            Unique identifier for the sub-wallet provided in response while
            creating the wallet.
          example: '5432109876543210987'
        name:
          type: string
          description: Name for the sub-wallet.
          example: Gift Wallet
        type:
          type: string
          description: Type of the sub-wallet.
          example: GIFT_PPI
        status:
          type: string
          description: Status of the sub-wallet.
          example: ACTIVE
        balance:
          type: number
          format: double
          description: Current balance of the sub-wallet.
          example: 1500.75
        available_balance:
          type: number
          format: double
          description: Available balance in the sub-wallet.
          example: 1500.75
        funds_on_hold:
          type: number
          format: double
          description: Funds on hold in the sub-wallet.
          example: 0
    BeneDetails:
      type: object
      description: Beneficiary details used for the transfer.
      properties:
        bene_id:
          type: string
          description: Beneficiary ID assigned by Cashfree.
          example: BENE789
        cf_bene_instrument_id:
          type: string
          description: Instrument ID assigned by Cashfree for the beneficiary.
          example: INST123456
        instrument_details:
          $ref: '#/components/schemas/BeneTransferInstrumentDetails'
    Notes:
      type: object
      description: >-
        Optional key-value pairs for any extra information. Keys and values must
        be strings.
      properties:
        example_key:
          type: string
          description: value of the note
          example: example_value
    BeneTransferInstrumentDetails:
      type: object
      description: Instrument details used for the transfer.
      oneOf:
        - type: object
          additionalProperties: false
          properties:
            bank_account_number:
              type: string
              description: Bank account number of the beneficiary.
              example: '1234567890'
            ifsc:
              type: string
              description: IFSC code of the beneficiary's bank.
              example: HDFC0000123
        - type: object
          additionalProperties: false
          properties:
            vpa:
              type: string
              description: Virtual Payment Address (UPI ID) of the beneficiary.
              example: john.doe@paytm
  examples:
    transfer_received_response:
      summary: Transfer received and being processed
      value:
        user_id: USER827364
        wallet_id: WALLET936721
        cf_transfer_id: '8901234567890123456'
        transfer_id: TRANSFER123456
        amount: 500.75
        transfer_mode: NEFT
        sub_wallet:
          cf_sub_wallet_id: '35246543210987654321'
          name: Cashfree payout Wallet
          type: FULL_KYC_PPI
          status: ACTIVE
          balance: 9500.86
          available_balance: 9500.86
          funds_on_hold: 0
        status: RECEIVED
        status_code: RECEIVED
        bank_ref_no: null
        bene_details:
          bene_id: BENE123
          cf_bene_instrument_id: '35246543210987654323'
          instrument_details:
            bank_account_number: '1234567890'
            ifsc: HDFC0000123
        auth:
          mode: OTP_VERIFICATION
          data:
            notification_modes:
              - SMS
              - WHATSAPP
        purpose: BUSINESS
        remarks: Vendor payment
        notes:
          example_key: example_value
        initiated_at: '2025-09-02T10:15:30Z'
        processed_at: null
    transfer_pending_response:
      summary: Transfer is pending at bank
      value:
        user_id: USER827364
        wallet_id: WALLET936721
        cf_transfer_id: '8901234567890123457'
        transfer_id: TRANSFER123456
        amount: 500.75
        transfer_mode: NEFT
        sub_wallet:
          cf_sub_wallet_id: '35246543210987654321'
          name: Cashfree payout Wallet
          type: FULL_KYC_PPI
          status: ACTIVE
          balance: 8000.88
          available_balance: 8000.88
          funds_on_hold: 0
        status: PENDING
        status_code: PENDING
        bank_ref_no: BNK202502101600002
        bene_details:
          bene_id: BENE123
          cf_bene_instrument_id: '35246543210987654323'
          instrument_details:
            bank_account_number: '1234567890'
            ifsc: HDFC0000123
        purpose: BUSINESS
        remarks: Vendor payment
        notes:
          example_key: example_value
        initiated_at: '2025-09-02T10:30:00Z'
        processed_at: null
    transfer_success_response:
      summary: Transfer completed successfully
      value:
        user_id: USER827364
        wallet_id: WALLET936721
        cf_transfer_id: '8901234567890123458'
        transfer_id: TRANSFER123456
        amount: 500.75
        transfer_mode: NEFT
        sub_wallet:
          cf_sub_wallet_id: '35246543210987654321'
          name: Cashfree payout Wallet
          type: FULL_KYC_PPI
          status: ACTIVE
          balance: 8749.55
          available_balance: 8749.55
          funds_on_hold: 0
        status: SUCCESS
        status_code: COMPLETED
        bank_ref_no: BNK202502101530001
        bene_details:
          bene_id: BENE123
          cf_bene_instrument_id: '35246543210987654323'
          instrument_details:
            bank_account_number: '1234567890'
            ifsc: HDFC0000123
        purpose: BUSINESS
        remarks: Vendor payment
        notes:
          example_key: example_value
        initiated_at: '2025-09-02T10:15:30Z'
        processed_at: '2025-09-02T10:17:45Z'
    transfer_failed_response:
      summary: Transfer failed
      value:
        user_id: USER827364
        wallet_id: WALLET936721
        cf_transfer_id: '8901234567890123459'
        transfer_id: TRANSFER123456
        amount: 500.75
        transfer_mode: NEFT
        sub_wallet:
          cf_sub_wallet_id: '35246543210987654321'
          name: Cashfree payout Wallet
          type: FULL_KYC_PPI
          status: ACTIVE
          balance: 10000.99
          available_balance: 10000.99
          funds_on_hold: 0
        status: FAILED
        status_code: INVALID_ACCOUNT_FAIL
        bank_ref_no: null
        bene_details:
          bene_id: BENE123
          cf_bene_instrument_id: '35246543210987654323'
          instrument_details:
            bank_account_number: '1234567890'
            ifsc: HDFC0000123
        purpose: BUSINESS
        remarks: Vendor payment
        notes:
          example_key: example_value
        initiated_at: '2025-09-02T11:00:00Z'
        processed_at: '2025-09-02T11:02:15Z'
    transfer_rejected_response:
      summary: Transfer was rejected
      value:
        user_id: USER827364
        wallet_id: WALLET936721
        cf_transfer_id: '8901234567890123460'
        transfer_id: TRANSFER123456
        amount: 500.75
        transfer_mode: NEFT
        sub_wallet:
          cf_sub_wallet_id: '35246543210987654321'
          name: Cashfree payout Wallet
          type: FULL_KYC_PPI
          status: ACTIVE
          balance: 10000
          available_balance: 10000
          funds_on_hold: 0
        status: REJECTED
        status_code: REJECTED
        bank_ref_no: null
        bene_details:
          bene_id: BENE123
          cf_bene_instrument_id: '35246543210987654323'
          instrument_details:
            bank_account_number: '1234567890'
            ifsc: HDFC0000123
        purpose: BUSINESS
        remarks: Vendor payment
        notes:
          example_key: example_value
        initiated_at: '2025-09-02T12:00:00Z'
        processed_at: '2025-09-02T12:05:30Z'
    transfer_reversed_response:
      summary: Transfer was reversed
      value:
        user_id: USER827364
        wallet_id: WALLET936721
        cf_transfer_id: '8901234567890123461'
        transfer_id: TRANSFER123456
        amount: 500.75
        transfer_mode: NEFT
        sub_wallet:
          cf_sub_wallet_id: '35246543210987654321'
          name: Cashfree payout Wallet
          type: FULL_KYC_PPI
          status: ACTIVE
          balance: 10750.5
          available_balance: 10750.5
          funds_on_hold: 0
        status: REVERSED
        status_code: REVERSED
        bank_ref_no: BNK202502101800003
        bene_details:
          bene_id: BENE123
          cf_bene_instrument_id: '35246543210987654323'
          instrument_details:
            bank_account_number: '1234567890'
            ifsc: HDFC0000123
        purpose: BUSINESS
        remarks: Vendor payment
        notes:
          example_key: example_value
        initiated_at: '2025-09-02T13:00:00Z'
        processed_at: '2025-09-02T13:30:15Z'
    transfer_id_missing:
      description: Missing transfer_id
      value:
        type: validation_error
        code: transfer_id_missing
        message: transfer_id parameter missing in the request
    wallet_id_missing:
      summary: Wallet ID missing
      value:
        code: wallet_id_missing
        type: validation_error
        message: wallet_id parameter is missing
    user_id_missing:
      summary: User ID missing
      value:
        code: user_id_missing
        type: validation_error
        message: user_id parameter is missing
    cf_sub_wallet_id_missing:
      summary: Sub Wallet ID missing
      value:
        code: cf_sub_wallet_id_missing
        type: validation_error
        message: cf_sub_wallet_id parameter is missing
    transfer_id_invalid:
      summary: Invalid transfer_id
      value:
        type: validation_error
        code: transfer_id_invalid
        message: transfer_id value invalid
    wallet_id_invalid:
      summary: Wallet ID value is Invalid
      value:
        code: wallet_id_value_invalid
        type: validation_error
        message: wallet_id invalid value
    user_id_invalid:
      summary: User ID value is Invalid
      value:
        code: user_id_value_invalid
        type: validation_error
        message: user_id invalid value
    cf_sub_wallet_id_invalid:
      summary: Sub-wallet ID value is Invalid
      value:
        code: cf_sub_wallet_id_value_invalid
        type: validation_error
        message: cf_sub_wallet_id invalid value
  responses:
    Response401:
      description: Unauthorised - Invalid or missing authentication.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StructuredErrorResponse'
          examples:
            invalidCredentials:
              summary: Invalid client credentials
              value:
                code: authentication_failed
                type: authentication_error
                message: Invalid client ID and client secret combination
    Response403:
      description: Forbidden - Access denied.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StructuredErrorResponse'
          examples:
            ipNotWhitelisted:
              summary: IP not whitelisted
              value:
                code: ip_not_whitelisted
                type: authentication_error
                message: Authentication error (IP not whitelisted)
    Response429:
      description: Too Many Requests - Rate limit exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StructuredErrorResponse'
          examples:
            internalError:
              summary: Internal server error
              value:
                code: too_many_requests_per_operation
                type: rate_limit_error
                message: Rate limit exceeded. Please try again after some time
    Response500:
      description: Internal server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StructuredErrorResponse'
          examples:
            internalError:
              summary: Internal server error
              value:
                code: internal_server_error
                type: internal_error
                message: An internal error occurred while processing the request
  securitySchemes:
    XClientID:
      type: apiKey
      in: header
      name: x-client-id
      description: >-
        Your unique client identifier issued by Cashfree. You can find this in
        your [Merchant
        Dashboard](https://merchant.cashfree.com/merchants/landing?env=prod).
    XClientSecret:
      type: apiKey
      in: header
      name: x-client-secret
      description: >-
        The secret key associated with your client ID. Use this to authenticate
        your API requests. You can find this in your [Merchant
        Dashboard](https://merchant.cashfree.com/merchants/landing?env=prod).

````