Account icon

Create and manage transfer limits for balance accounts

Set a limit on outgoing transfers from your users' balance accounts.

Transfer limits create conditional logic that automatically approves or declines a transfer based on its amount. When a transfer limit is configured for a balance account in your platform, it regulates the amount of funds that can be transferred externally from that balance account.

To set transfer limits at the balance account level, the balance account must be linked to a payment instrument with type bankAccount (Adyen business account).

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 Make sure that you have access to the Configuration API with the following role:
  • Balance platform base role
Webhooks Subscribe to the following webhook(s):
Limitations Transfer limits are not supported for internal transfers, or incoming external transfers.
Setup steps Before you begin, make sure that:

Strong Customer Authentication (SCA) for transfer limits

In certain regions, you are required by law to enable your users to configure transfer limits for their outgoing transfers. When creating or updating a transfer limit, your user must complete Strong Customer Authentication (SCA).

Strong Customer Authentication (SCA) uses multi-factor authentication to verify your user's identity. When creating a transfer limit for your user's balance account, your user is required by law to authenticate their identity using their registered SCA device. You do not need to perform SCA when creating a transfer limit at the balance platform level.

When configuring transfer limits, there are two ways to authenticate your users' identities using SCA:

  1. SCA on initiation, for each transfer limit your user creates
    When you send a request to create a transfer limit, you must include SCA details in the request header. Your user is immediately prompted to authenticate their identity using their registered SCA device.

  2. SCA on approval, for one or more pending transfer limits
    You send one or more requests to create transfer limits for your user without including SCA details in the request headers. These transfer limits end up in a pending state, because your user has not yet authenticated their identity. Then, you make a new request to approve all pending transfer limits, with SCA details in the request header. Your user is then prompted to authenticate their identity for all the pending transfer limit requests using their registered SCA device.

Exemptions to SCA

In some cases, your user's identity does not need to be authenticated when creating a transfer limit because of an SCA exemption. When you or your user has an SCA exemption, you must specify this in your request, along with the type of exemption that applies for that transfer limit.

There are five types of SCA exemptions:

  • lowerLimit: this exemption applies when the transfer limit created by your user is lower than the transfer limit that already exists for that balance account. Because the new transfer limit has a lower risk than the previous transfer limit, there is no need for SCA.

  • notRegulated: this exemption applies when you want to use transfer limits in countries, regions, or industries where it is not mandated by law to use SCA.

  • setByPlatform: this exemption applies when you set a transfer limit for one of your user's balance accounts or for your entire balance platform. Because you are configuring the transfer limit for your users, there is no need to verify their identity using SCA.

  • initialLimit: this exemption applies when there is no transfer limit configured on the balance account, and no default transfer limit configured on the balance platform. Because having a transfer limit has a lower risk than having no transfer limit, there is no need for SCA.

  • alreadyPerformed: this exemption applies when you are already confident about your user's identity and do not need to verify this using SCA. For example, if your user already performed SCA when logging into your app, they do not need to verify their identity again when setting a transfer limit.

How it works

The flow to create a transfer limit depends on whether you trigger SCA on initiation for each request, on approval for one or more requests, or if you are exempt from SCA.

Create transfer limits

Before you create a transfer limit, you must determine:

  • The limit conditions (scope and transfer type), which define to which transfers the limit applies.
  • The start and end date, which define the time period in which the limit is active.
  • Whether to perform SCA on initiation or approval.

Depending on how you decide to perform SCA, follow the steps in the tabs below:

View transfer limits

After you configure transfer limits for your users' balance accounts, you can make GET requests to view the details of these limits.

View all transfer limits

To view all transfer limits configured at the balance account level:

  1. Make a GET /balanceAccounts/{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 The scope on which the transfer limit applies. Possible values:
    • perTransaction: you set a maximum amount for each transfer made from the balance account.
    • perDay: you set a maximum total amount for all transfers made from the balance account in a day.
    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 The status of the transfer limit. Possible values:
    • active: the limit is currently active.
    • inactive: the limit is currently inactive
    • pendingSCA: the limit is pending until your user performs SCA.
    • 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 account that meet the following requirements:

    • scope: perDay
    • transferType: instant
    • status: active
  2. Take note of the array in the response that returns all all the transfer limits on your balance platform that meet the queried requirements.

View all current limits

You can set transfer limits at the balance account level, and at the balance platform level.

Transfer limits that you set for your balance account override transfer limits that are set for your balance platform when they concern the same combination of scope and transferType. If you do not set a transfer limit at the balance platform level for a particular combination of scope and transferType, then the balance platform limit applies to the balance account instead. At any given moment, the following limits apply to a balance account:

  • All the limits configured at balance account level
  • The limits configured at balance platform level that are not overridden by limits at balance account level

To view all transfer limits that apply to your user's balance account at any given moment:

  1. Make a GET /balanceAccounts/{id}/transferLimits/current request. If needed, you can use any of the following query parameters to filter out transfer limits based on their characteristics:

    Parameter Required Description
    scope The scope on which the transfer limit applies. Possible values:
    • perTransaction: you set a maximum amount for each transfer made from the balance account.
    • perDay: you set a maximum total amount for all transfers made from the balance account in a day.
    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.

    Here is an example request to view all current transfer limits that apply to instant transfers on balance account BA00000000000000000000001 with a perDay scope.

  2. Take note of the array in the response that returns all active transfer limits on the balance account with a perDay scope.

View a specific transfer limit

To view a specific transfer limit:

  1. Make a GET /balanceAccounts/{id}/transferLimits/{transferLimitId} request. Specify the following parameters in the path:

    Parameter Required Description
    id -white_check_mark- The unique identifier of your balance account.
    transferLimitId -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:

  2. Take note of the response, which returns the details of the transfer limit.

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 account, you must override it by creating a new transfer limit.

To delete a pending or scheduled transfer limit, make a DELETE /balanceAccounts/{id}/transferLimits/{transferLimitId} request. Specify the following parameters in the path:

Parameter Required Description
id -white_check_mark- The unique identifier of your balance account.
transferLimitId -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:

If the transfer limit is successfully deleted, you receive a HTTP 204 - No Content response.