Before a cardholder can use their card to make a payment, the balance account associated with the card needs to have funds.
You can get funds into balance accounts by:
- Depositing funds to your liable balance account and then transferring funds to other balance accounts.
- Making split payments if you are acquiring payments with Adyen.
Deposit funds to your liable account
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.
Split payments
If you are acquiring payments with Adyen, you can also fund balance accounts by distributing the payment amount in any number of ways among any number of balance accounts.
To make a split payment:
-
Make a POST /payments request, specifying the splits array.
For each split object in the array, specify the following fields:
Parameter Required Description type Set to BalanceAccount. account The unique identifier of the balance account where you want to send the funds to. amount The amount to be sent to the balance account. reference Your unique identifier for the split. Check that the balance account IDs in your request are correct. The API only validates the format of the split instructions. See validating split instructions.
For example, you can split a USD 150.00 payment such that:
- USD 3.00 goes to your liable balance account as commission.
- USD 147.00 goes to your user's balance account with
id
BAA1B2C3D4E5F6G7H8I9J0.
The response informs you if the payment was successful.
-
To know if the split has been settled to the balance account in the request, keep track of webhooks. You can also make GET /balanceAccounts/{id} request.
Validating split instructions
Adyen front-end systems only validate the format of the split instructions, and not the statuses of the balance accounts. This means that payments may succeed, but splits are not applied if the balance account specified in the request does not exist or is linked to an account holder with a closed status. When this happens, the full amount is sent to your platform's liable balance account.
To correct balances, you can transfer funds between balance accounts.