You can fund your liable balance account, and from there you can transfer funds to your users' balance accounts.
To find out how you can deposit funds into your liable balance account, reach out to your Adyen contact.
Transfer funds between balance accounts
After you have deposited funds in your liable account, you can move funds to balance accounts within your platform by initiating internal funds transfers. As a platform, you can also initiate internal funds transfers between two balance accounts of the same account holder, or between the balance accounts of two different account holders within your platform.
The funds can be pushed or pulled from one balance account to the other:
- When you push funds to the target balance account, that account is credited.
- When you pull funds from the target balance account, that account is debited.
To fund a cardholder's balance account, you need to make a push transfer from your liable balance account to the cardholder's balance account.
Before you can transfer funds internally, reach out to your Adyen contact to:
- Add a role for your API credential, which you will use for the Transfers API.
- Enable transfers for the source balance account.
To move funds between balance accounts, make a POST /transfers request.
In the body of the request, specify the following fields:
| Parameter | Required | Description |
|---|---|---|
| amount | ![]() |
An object containing the currency and value of the transfer. |
| balanceAccountId | ![]() |
The unique identifier of the source balance account: the balance account that initiates the transfer request. |
| counterparty.balanceAccountId | ![]() |
The unique identifier of the target balance account: the balance account that receives the transfer. The funds are credited to this balance account. |
| category | ![]() |
Set to internal. |
| description | Your description of the transfer. You can use this to identify the transfer in the webhooks that you receive. | |
| reference | Your unique reference for the transfer. You can use this to identify the transfer in the webhooks that you receive. | |
| referenceForBeneficiary | Text to inform the recipient about the push or pull transfer. This reference is also included in all webhooks. Supported characters: a-z, A-Z, 0-9. |
The following example shows how to push EUR 100 from your liable balance account to your user's balance account.
In the response, note the following:
id: the unique ID of the transfer.status: the result of the transfer.reason: an explanation of the status. Check this field if the status is not authorised.
For example, the reason for a refused status can be notEnoughBalance.
- To know if the transfer has been completed, keep track of webhooks. You can also make GET /balanceAccounts/{id} request.
