---
title: "Release On-Hold Funds"
source_url: https://docs.rapyd.net/en/release-on-hold-funds.html
lang: en
---

# Release On-Hold Funds

Release a hold on funds in the wallet. Sandbox only.

This action transfers funds from the on-hold balance to the available balance. If the wallet does not have enough funds in the on-hold balance in the specified currency, the transfer fails.

This method triggers the **Transfer Funds Between Balances** webhook. This webhook contains the same information as the response.

This method is relevant for person and company wallets.

> **Note:**
>
> - Deprecated endpoint - `POST /v1/account/balance/release`
> - Rapyd no longer supports the deprecated endpoint.
> - The code samples include successful requests (200) and bad requests (400).
>
>   - For error messages that appear due to bad requests (400), see: [General Errors](https://docs.rapyd.net/en/general-errors.md "General Errors")
>   - For information about unauthorized request (401) and other authentication errors, see [Wallet Transaction Errors](https://docs.rapyd.net/en/wallet-transaction-errors.md "Wallet Transaction Errors").

### Parameters

### Request Header Parameters

- - access_key
  - Unique access key provided by Rapyd for each authorized user.

    See [Developers](https://docs.rapyd.net/en/developers.md "Developers").
- - Content-Type
  - Indicates that the data appears in JSON format. Set to **application/json**.
- - idempotency
  - A unique key that prevents the platform from creating the same object twice.

    See [Idempotency](https://docs.rapyd.net/en/idempotency.md "Idempotency").
- - salt
  - Random string. Recommended length: 8-16 characters.
- - signature
  - Signature calculated for each request individually.

    See [Request Signatures](https://docs.rapyd.net/en/request-signatures.md "Request Signatures").
- - timestamp
  - Timestamp for the request, in [Unix time](https://docs.rapyd.net/en/glossary.md#UUID-945d98cf-adae-e1cf-2606-c7fae8b4a7e1_unix_time "Unix time") (seconds).

### Request Body Parameters

- - amount
  - Amount of the transfer. Decimal.
- - currency
  - Three-letter ISO 4217 code for the currency used in the `amount` field.
- - ewallet
  - ID of the wallet associated with the contact. String starting with **ewallet_**.

### Response Parameters

- - amount
  - - **Transactions** - Amount of the transaction, in units of the currency defined in `currency`. Decimal, including the correct number of decimal places for the currency exponent, as defined in ISO 4217:2015.
    - **Wallet Account Operations** - Amount of the account limit.
- - currency_code
  - Three-letter ISO 4217 code for the currency used in the `amount` field.
- - destination_account_id
  - ID of the wallet owner's user. UUID.
- - destination_amount
  - Amount received by the destination balance.
- - destination_balance_type
  - Balance type that the funds are transferred to. See [Wallet Balance Types](https://docs.rapyd.net/en/wallet-balance-types.md "Wallet Balance Types"). One of the following:

    - **available_balance**
    - **on_hold_balance**
    - **received_balance**
    - **reserve_balance**
- - destination_currency
  - Currency received by the destination balance.
- - destination_transaction_id
  - ID of the transaction with regard to the destination. String starting with **wt_**.
- - destination_transaction_pk
  - Numeric ID of the transaction with regard to the destination.
- - destination_user_profile_id
  - ID of the wallet owner's user. UUID.
- - id
  - ID of the transaction. UUID.
- - source_account_id
  - ID of the wallet owner's user. UUID.
- - source_balance_type
  - Balance type that the funds are transferred from. See [Wallet Balance Types](https://docs.rapyd.net/en/wallet-balance-types.md "Wallet Balance Types"). One of the following:

    - **available_balance**
    - **on_hold_balance**
    - **received_balance**
    - **reserve_balance**
- - source_transaction_id
  - ID of the transaction with regard to the source. String starting with **wt_**.
- - source_transaction_pk
  - Numeric ID of the transaction with regard to the source.
- - source_user_profile_id
  - ID of the wallet owner's user. UUID.

- /v1/ewallets/accounts/balance/release

- Release On-Hold Funds
- ```curl
  curl -X post 'https://sandboxapi.rapyd.net/v1/ewallets/accounts/balance/release' \
  -H 'access_key: your-access-key-here' \
  -H 'Content-Type: application/json' \
  -H 'idempotency: your-idempotency-parameter-here' \
  -H 'salt: your-random-string-here' \
  -H 'signature: your-calculated-signature-here' \
  -H 'timestamp: your-unix-timestamp-here' \
  --data-raw '{
    "ewallet": "ewallet_31fb2dbbaf6519461ee4fbe1062220d3",
    "amount": 50,
    "currency": "EUR"
  }'
  ```
- ```json
  {
      "status": {
          "error_code": "",
          "status": "SUCCESS",
          "message": "",
          "response_code": "",
          "operation_id": "7ebb4ec0-dab9-4953-93a4-6c71139e0ccc"
      },
      "data": {
          "id": "d8403116-ce6a-4390-92cb-fc7359da9372",
          "source_transaction_id": "a60f741f-3d9e-49aa-8b88-337b4f7b6296",
          "destination_transaction_id": "2d08c84e-7ba2-40ba-85bf-3ada9ad7930a",
          "source_user_profile_id": "7f5e489a-6d48-11f0-a9a0-027388e3b881",
          "destination_user_profile_id": "7f5e489a-6d48-11f0-a9a0-027388e3b881",
          "source_account_id": "49b2c1db-dd26-444f-8667-5508ae901de5",
          "destination_account_id": "49b2c1db-dd26-444f-8667-5508ae901de5",
          "source_balance_type": "on_hold_balance",
          "destination_balance_type": "available_balance",
          "currency_code": "EUR",
          "amount": 50,
          "destination_currency_code": "EUR",
          "destination_amount": 50,
          "source_transaction_pk": 20522384,
          "destination_transaction_pk": 20522385
      }
  }
  ```

- Bad Request - Insufficient Funds
- ```curl
  curl -X post 'https://sandboxapi.rapyd.net/v1/ewallets/accounts/balance/release' \
  -H 'access_key: your-access-key-here' \
  -H 'Content-Type: application/json' \
  -H 'idempotency: your-idempotency-parameter-here' \
  -H 'salt: your-random-string-here' \
  -H 'signature: your-calculated-signature-here' \
  -H 'timestamp: your-unix-timestamp-here' \
  --data-raw '{
    "ewallet": "ewallet_31fb2dbbaf6519461ee4fbe1062220d3",
    "amount": 50,
    "currency": "COP"
  }'
  ```
- ```json
  {
      "status": {
          "error_code": "NOT_ENOUGH_FUNDS",
          "status": "ERROR",
          "message": "The request attempted an operation that requires funds in a specific currency, but there were not sufficient funds in that currency. The request was rejected. Corrective action: Transfer funds to the wallet in the required currency.",
          "response_code": "NOT_ENOUGH_FUNDS",
          "operation_id": "1db24064-c59f-4cf8-9389-49ff051897e3"
      }
  }
  ```

- Bad Request - Wallet Not Found
- ```curl
  curl -X post 'https://sandboxapi.rapyd.net/v1/ewallets/accounts/balance/release' \
  -H 'access_key: your-access-key-here' \
  -H 'Content-Type: application/json' \
  -H 'idempotency: your-idempotency-parameter-here' \
  -H 'salt: your-random-string-here' \
  -H 'signature: your-calculated-signature-here' \
  -H 'timestamp: your-unix-timestamp-here' \
  --data-raw '{
    "ewallet": "ewallet_31fb2dbbaf6519461ee4fbe1062220d",
    "amount": 50,
    "currency": "EUR"
  }'
  ```
- ```json
  {
      "status": {
          "error_code": "ERROR_GET_USER",
          "status": "ERROR",
          "message": "The request attempted an operation that requires a wallet, but the wallet was not found. The request was rejected. Corrective action: Use the ID of a valid wallet that has not been deleted. The ID is a string starting with 'ewallet_'.",
          "response_code": "ERROR_GET_USER",
          "operation_id": "a2c0eda9-b77f-47e5-b67f-33c649a9e44f"
      }
  }
  ```
