--- title: "Create and manage transfer limits for your balance platform" description: "Set a limit on outgoing transfers from your balance platform." url: "https://docs.adyen.com/business-accounts/use-transfer-limits/balance-platform" source_url: "https://docs.adyen.com/business-accounts/use-transfer-limits/balance-platform.md" canonical: "https://docs.adyen.com/business-accounts/use-transfer-limits/balance-platform" last_modified: "2026-05-24T12:54:31+02:00" language: "en" --- # Create and manage transfer limits for your balance platform Set a limit on outgoing transfers from your balance platform. [View source](/business-accounts/use-transfer-limits/balance-platform.md) Transfer limits create conditional logic that automatically approves or declines a transfer based on its amount. When a transfer limit is configured for your balance platform, it regulates the amount of funds that can be transferred externally from all the balance accounts in your platform. ## Requirements Before you begin, make sure that you complete the following requirements: | Requirement | Description | | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Integration type** | Adyen for Platforms integration with business accounts. | | **[API credential roles](/development-resources/api-credentials/roles/)** | Make sure that you have access to the [Configuration API](https://docs.adyen.com/api-explorer/balanceplatform/latest/overview) with the following role:- **Balance platform base role** | | **[Webhooks](/development-resources/webhooks)** | Subscribe to the following webhook(s):- [**Transfer webhooks**](/payouts/payout-service/pay-out-to-bank-accounts/payout-webhooks/) - [**Transaction webhooks**](/payouts/payout-service/transfer-transactions/transaction-webhooks/) | | **Limitations** | Transfer limits are not supported for [internal transfers](/business-accounts/transfer-funds-internally), or [incoming external transfers](/business-accounts/receive-funds). | | **Setup steps** | Before you begin:- Make sure you are familiar with [how transfer limits work](/business-accounts/use-transfer-limits). | ## How it works 1. You create a transfer limit by making a POST [/balancePlatforms/{id}/transferLimits](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/balancePlatforms/\(id\)/transferLimits) request. In your request, you must consider the scope and type of the transfer, and specify the time period in which the transfer limit is valid. 2. The transfer limit is created with a **scheduled** status. 3. On the start date of the transfer limit, the status of the transfer limit becomes **active**. 4. While it is **active**, the transfer limit regulates the amount of funds being transferred externally from the balance account. 5. When the end date of the transfer limit passes, it reaches an **inactive** state. ## Create transfer limits To create a new transfer limit: 1. Make a POST [/balancePlatforms/{id}/transferLimits](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/balancePlatforms/\(id\)/transferLimits) request. Include the following parameters: | Parameter | Type | Required | Description | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | | [id](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/balanceAccounts/\(id\)/transferLimits#request-id) | Path | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique identifier of your balance platform. | | | [amount.value](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/balancePlatforms/\(id\)/transferLimits#request-amount-value) | Body | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The value, in minor units, for the transfer limit. This is the maximum amount allowed per transfer or per day based on the `scope` of the limit. | | | [amount.currency](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/balancePlatforms/\(id\)/transferLimits#request-amount-currency) | Body | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The currency in which you want to set the limit. | | | [startsAt](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/balancePlatforms/\(id\)/transferLimits#request-startsAt) | Body | | The date, in [ISO date and time format](https://en.wikipedia.org/wiki/ISO_8601), when the transfer limit becomes active. Format: **YYYY-MM-DDThh:mm:ss.sssTZD** If you do not specify a start date, or set this to **null**, we default to the date and time of the request. If you specify a date in the future, we will schedule a transfer limit. You cannot schedule more than one limit in the future. | | | [endsAt](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/balancePlatforms/\(id\)/transferLimits#request-endsAt) | Body | | The date and time, in [ISO date and time format](https://en.wikipedia.org/wiki/ISO_8601), when the transfer limit becomes inactive. Format: **YYYY-MM-DDThh:mm:ss.sssTZD** If you do not specify an end date, the limit stays active until you override it with a new limit. | | | [scope](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/balancePlatforms/\(id\)/transferLimits#request-scope) | Body | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The scope on which the transfer limit applies. Possible values:- **perTransaction**: you set a maximum amount for each transfer made from the balance platform. - **perDay**: you set a maximum total amount for all transfers made from the balance platform in a day. | | | [reference](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/balancePlatforms/\(id\)/transferLimits#request-reference) | Body | | Your reference for the transfer limit. | | | [transferType](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/balancePlatforms/\(id\)/transferLimits#request-transferType) | Body | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The type of transfer to which the limit applies. Possible values:- **instant**: the limit applies to transfers with an **instant** priority. - **all**: the limit applies to all transfers, regardless of priority. | | | [scaInformation.exemption](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/balancePlatforms/\(id\)/transferLimits#request-scaInformation-exemption) | Body | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The type of exemption for Strong Customer Authentication (SCA). Set this to **setByPlatform**. | | | | | | | | Here is an example request to create a transfer limit. **Create a transfer limit** ```bash curl https://balanceplatform-api-test.adyen.com/bcl/v2/balancePlatforms/YOUR_BALANCE_PLATFORM/transferLimits \ -H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "amount": { "value": 10000 "currency: "EUR" }, "startsAt": "2025-08-14T00:00:00+01:00", "endsAt": "2026-08-14T00:00:00+01:00", "scope": "perTransaction", "reference": "Your reference for the transfer limit", "transferType": "all", "scaInformation: { "exemption": "setByPlatform" } } ``` 2. Take note of the `transferLimitId` and `status` that is returned in the response. The `status` must be either **active** or **scheduled** depending on the start date of the limit. **Response** ```json [ { "amount": { "value": 10000, "currency": "EUR" }, "id": "TRLI00000000000000000000000001", "endsAt": "2026-08-13T23:00:00Z", "scope": "perTransaction", "reference": "Your reference for the transfer limit", "scaInformation": { "exemption": "setByPlatform", "status": "notPerformed" }, "startsAt": "2025-08-13T23:00:00Z", "limitStatus": "active", "transferType": "all" } ] ``` ## View transfer limits After you configure transfer limits for your balance platform, you can make GET requests to view the details of these limits. ### View all transfer limits To view all transfer limits configured for your balance platform: 1. Make a GET [/balancePlatforms/{id}/transferLimits](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/balancePlatforms/\(id\)/transferLimits) request. To filter out transfer limits based on their characteristics, include any of the following query parameters in your request: | Parameter | Required | Description | | ------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [scope](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/balancePlatforms/\(id\)/transferLimits#request-scope) | | The scope on which the transfer limit applies. Possible values:- **perTransaction**: you set a maximum amount for each transfer made from the balance platform. - **perDay**: you set a maximum total amount for all transfers made from the balance platform in a day. | | [transferType](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/balancePlatforms/\(id\)/transferLimits#request-transferType) | | The type of transfer to which the limit applies. Possible values:- **instant**: the limit applies to transfers with an **instant** priority. - **all**: the limit applies to all transfers, regardless of priority. | | [status](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/balancePlatforms/\(id\)/transferLimits#query-status) | | The status of the transfer limit. Possible values:- **active**: the limit is currently active. - **inactive**: the limit is currently inactive - **scheduled**: the limit is scheduled to become active at a future date. | For example, you want to view all transfer limits configured on your balance platform that meet the following requirements: * `scope`: **perDay** * `transferType`: **instant** * `status`: **active** **Filter transfer limits on balance platform** ```bash curl https://balanceplatform-api-test.adyen.com/bcl/v2/balancePlatforms/YOUR_BALANCE_PLATFORM/transferLimits \ -H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \ -H 'content-type: application/json' \ -X GET \ -d scope=perDay \ -d transferType=instant \ -d status=active \ ``` 2. Take note of the array in the response that returns all the transfer limits on your balance platform that meet the queried requirements. **Response** ```json { "transfer": [ { "amount": { "value": 10000, "currency": "EUR" }, "id": "TRLI00000000000000000000000001", "endsAt": "2026-08-13T23:00:00Z", "scope": "perDay", "reference": "Your reference for the transfer limit", "scaInformation": { "exemption": "initialLimit", "status": "notPerformed" }, "startsAt": "2025-08-13T23:00:00Z", "limitStatus": "active", "transferType": "instant" }, { "amount": { "value": 20000, "currency": "EUR" }, "id": "TRLI00000000000000000000000002", "endsAt": "2026-08-13T23:00:00Z", "scope": "perDay", "reference": "Your reference for the transfer limit", "scaInformation": { "exemption": "initialLimit", "status": "notPerformed" }, "startsAt": "2025-08-13T23:00:00Z", "limitStatus": "active", "transferType": "instant" } ] } ``` ### View a specific transfer limit To view a specific transfer limit: 1. Make a GET [/balancePlatforms/{id}/transferLimits/{transferLimitId}](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/balancePlatforms/\(id\)/transferLimits/\(transferLimitId\)) request. Specify the following parameters in the path: | Parameter | Required | Description | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [id](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/balancePlatforms/\(id\)/transferLimits/\(transferLimitId\)#path-id) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique identifier of your balance platform. | | [transferLimitId](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/balancePlatforms/\(id\)/transferLimits/\(transferLimitId\)#path-transferLimitId) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique identifier of the transfer limit you want to view. | Here is an example request to view a specific transfer limit: **View specific transfer limit** ```bash curl https://balanceplatform-api-test.adyen.com/bcl/v2/balancePlatforms/YOUR_BALANCE_PLATFORM/transferLimits/{transferLimitId} \ -H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \ -H 'content-type: application/json' \ -X GET ``` 2. Take note of the response, which returns the details of the transfer limit. **Response** ```json { "amount": { "value": 10000, "currency": "EUR" }, "id": "TRLI00000000000000000000000001", "endsAt": "2026-08-13T23:00:00Z", "scope": "perTransaction", "reference": "Your reference for the transfer limit", "scaInformation": { "exemption": "initialLimit", "status": "notPerformed" }, "startsAt": "2025-08-13T23:00:00Z", "limitStatus": "active", "transferType": "all" } ``` ## Delete a transfer limit You can only delete **pending** or **scheduled** transfer limits. After a transfer limit becomes **active**, it cannot be deleted. If you no longer want to apply an **active** limit to your balance platform, you must override it by creating a new transfer limit. To delete a **pending** or **scheduled** transfer limit, make a DELETE [/balancePlatforms/{id}/transferLimits/{transferLimitId}](https://docs.adyen.com/api-explorer/balanceplatform/latest/delete/balancePlatforms/\(id\)/transferLimits/\(transferLimitId\)) request. Specify the following parameters in the path: | Parameter | Required | Description | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | [id](https://docs.adyen.com/api-explorer/balanceplatform/latest/delete/balancePlatforms/\(id\)/transferLimits/\(transferLimitId\)#path-id) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique identifier of your balance platform. | | [transferLimitId](https://docs.adyen.com/api-explorer/balanceplatform/latest/delete/balancePlatforms/\(id\)/transferLimits/\(transferLimitId\)#path-transferLimitId) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique identifier of the transfer limit you want to delete. | Here is an example request to delete a specific transfer limit: **Delete specific transfer limit** ```bash curl https://balanceplatform-api-test.adyen.com/bcl/v2/balancePlatforms/YOUR_BALANCE_PLATFORM/transferLimits/TRLI00000000000000000000000001 \ -H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \ -H 'content-type: application/json' \ -X DELETE ``` If the transfer limit is successfully deleted, you receive a `HTTP 204 - No Content` response.