Users that have a sendToThirdParty capability allowed and enabled can make business-related fund transfers to third parties, such as their suppliers or providers.
Third-party accounts are external accounts not owned by your user and therefore not connected to their legal entity as a transfer instrument. Currently, Adyen only supports sending funds to third-party bank accounts. In the future, you will be able to send to third-party wallets and cards.
Before you begin
Before your user can send funds to third parties, you must:
- Reach out to your Adyen contact to:
- Add an additional role for your API credential.
- Enable transfers for the source balance account.
- Make sure that the account holder has the sendToThirdParty capability allowed and enabled.
- Implement Adyen's Authentication SDK for transfers in the European Economic Area (EEA).
Send funds to third parties
When sending funds to third-party bank accounts, the required bank account details depend on bank identification type. There are also additional required fields if you're doing a cross-border transfer.
To start a transfer, make a POST /transfers request specifying:
Parameter name | Required | Description |
---|---|---|
balanceAccountId |
![]() |
The ID of the balance account from which funds are deducted. |
category |
![]() |
Set to bank. |
counterparty.bankAccount |
![]() |
Contains details about the bank account and its owner.
|
priority |
![]() |
The priority of the bank transfer, which affects the speed of the transfer and the fees you have to pay. The possible values are regular, fast, or wire. For cross-border transfers, set the priority to wire. |
description |
Your description for the transfer. See here for allowed characters. | |
reference |
Your reference for the transfer. This is only used within your platform and not sent to the recipient. If you don't provide this in the request, Adyen generates a unique reference. | |
referenceForBeneficiary |
Your reference for the transfer that Adyen sends to the recipient. |
Select a tab below for examples.
Here is an example of a local funds transfer of EUR funds to an IBAN bank account. When providing the details of the bank account, set the accountIdentification.type
to iban.
For possible values for local transfers, see Bank account identification types.
curl https://balanceplatform-api-test.adyen.com/btl/v3/transfers \
-H "content-type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-X POST \
-d '{
"amount": {
"currency": "EUR",
"value": 150000
},
"category": "bank",
"priority": "regular",
"balanceAccountId": "BA00000000000000000000001",
"counterparty": {
"bankAccount": {
"accountHolder": {
"fullName": "A. Klaassen"
},
"accountIdentification": {
"type": "iban",
"iban": "NL91ABNA0417164300"
}
}
},
"referenceForBeneficiary": "YOUR_REFERENCE_SENT_TO_THE_BENEFICIARY",
"reference": "YOUR_INTERNAL_REFERENCE",
"description": "YOUR_DESCRIPTION"
}'
If the transfer request is successful, you receive an HTTP 200 OK response containing an id
of the transfer request. Adyen informs your server of the status of the transfer through webhooks.
Bank account identification types
When transferring funds to a third-party bank account, you need to provide the accountIdentification.type
in your API request. The type also determines the required bank account details.
- To determine the
accountIdentification.type
value, you must have:- The country of the recipient bank account.
- The currency of the funds you are transferring.
- Find the combination in the table below and select the
type
to see the required fields.
This combination also identifies if you are doing a local or cross-border transfer. Cross-border transfers must be sent as wire transfers, and you must include the address of the bank account owner.
Country of recipient bank account | Currency of funds transfer | Type | Notes | Character limits for description |
---|---|---|---|---|
Single Euro Payments Area (SEPA) countries | EUR | iban | Maximum 140 characters. Allowed characters: / - ? : ( ) . , ' + Space |
|
United States | USD | usLocal | Allowed characters: / - ? : ( ) . , ' + Space |
|
United Kingdom | GBP | ukLocal | Maximum 140 characters. Allowed characters: / - ? : ( ) . , ' + Space |
|
Poland | PLN | plLocal or iban | Maximum 140 characters. Allowed characters: / - ? : ( ) . , ' + Space |
|
Czech Republic | CZK | czLocal or iban | Maximum 140 characters. Allowed characters: / - ? : ( ) . , ' + Space |
|
Sweden | SEK | seLocal | Maximum 140 characters. Allowed characters: / - ? : ( ) . , ' + Space |
|
Countries where IBAN is required | Any | iban | This is a cross-border transfer. Make sure to:
|
Maximum 140 characters. Allowed characters: [a-z][A-Z][0-9] . , – ( ) / = ' + : ? ! ” % & * < > ; Space |
Countries where IBAN is optional (for example, Poland or Czech Republic) |
Any | iban or numberAndBic | This is a cross-border transfer. Make sure to:
|
Maximum 140 characters. Allowed characters: [a-z][A-Z][0-9] . , – ( ) / = ' + : ? ! ” % & * < > ; Space |
Other countries not listed above | Any | numberAndBic | This is a cross-border transfer. Make sure to:
|
Maximum 140 characters. Allowed characters: [a-z][A-Z][0-9] . , – ( ) / = ' + : ? ! ” % & * < > ; Space |
Required fields
The table below shows the required fields that you need to send in the accountIdentification
object based on the type
.