No momento, esta página não está disponível em português
Fast-payout icon

Make a payout to a third-party bank account

Make an API request to pay out funds to a third-party bank account.

This page explains how to make a payout request to transfer funds to third-party bank accounts.

After you make the payout request, you can track the status of the transfer by listening to webhooks.

Requirements

Before you make a payout request:

Initiate a payout

To send an on-demand payout, make a POST /transfers request, specifying:

Parameter name Required Description
Parameter name Required Description
amount -white_check_mark- The amount and the currency of the transfer.
balanceAccountId -white_check_mark- The balance account from which funds are deducted.
category -white_check_mark- Set to bank.
counterparty.bankAccount -white_check_mark- Contains details about the destination bank account and its owner.
priority -white_check_mark- The priority of the bank transfer, which affects the transfer speed and the fees you have to pay.
priorities -white_check_mark-
Required if priority is not included.
The list of priorities for the bank transfer. For more details see fallback priorities.
description Your description for the transfer request, which is used by most recipient banks. Check the character limit based on the location of the counterparty bank account and the priority.
reference Your reference for the transfer. This is only used within your platform and not sent to the recipient. If you do not provide this in the request, Adyen generates a unique reference.
referenceForBeneficiary Your reference for the transfer, which is also sent to the recipient. This reference is also sent in all webhooks related to the transfer, so you can use it to track statuses.
Transfer request for one-off payout
Expand view
Copy link to code block
Copy code
Copy code
curl https://balanceplatform-api-test.adyen.com/btl/v4/transfers \
-H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \
-H 'content-type: application/json' \
-X POST \
-d '{
"amount": {
"currency": "EUR",
"value": 10000
},
"counterparty": {
"bankAccount": {
"accountHolder": {
"fullName": "Adyen N.V.",
"address": {
"city": "Amsterdam",
"country": "NL",
"postalCode": "1011DJ",
"stateOrProvince": "NH",
"line1": "Simon Carmiggeltstraat 6-50"
}
},
"accountIdentification": {
"type": "iban",
"iban": "NL33ADYX1000001544"
}
}
},
"balanceAccountId": "BA00000000000000000000001",
"category": "bank",
"priority": "instant",
"reference": "YOUR_INTERNAL_REFERENCE_FOR_THE_TRANSFER",
"referenceForBeneficiary": "YOUR_REFERENCE_SENT_TO_THE_BENEFICIARY",
"description": "YOUR_DESCRIPTION_FOR_THE_TRANSFER"
}'

If the transfer request is successful, you receive an HTTP 200 OK response containing an id of the transfer request.

Depending on the transfer location, currency, and counterparty, a transfer can be subject to additional requirements or limitations. These limitations may affect the transfer route for some priorities. To prevent problems with transfer routes, you can specify a list of priorities for your transfer.

When you specify a list of priorities, Adyen tries to transfer the funds using the first priority in the list. If a transfer route is not available for this priority, Adyen tries to transfer again, but using the next priority in the list.

The following code sample shows how to include a list of priorities.

Transfer request with multiple priorities
Expand view
Copy link to code block
Copy code
Copy code
curl https://balanceplatform-api-test.adyen.com/btl/v4/transfers \
-H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \
-H 'content-type: application/json' \
-X POST \
-d '{
"balanceAccountId": "BA00000000000000000000001",
"counterparty": {
"bankAccount": {
"accountIdentification": {
"type": "iban",
"iban": "NL33ADYX1000001544"
},
"accountHolder": {
"fullName": "Adyen N.V."
}
}
},
"amount": {
"value": 100,
"currency": "EUR"
},
"category": "bank",
"priorities": [
"fast",
"regular",
"instant",
"wire"
],
"description": "YOUR_DESCRIPTION_FOR_THE_TRANSFER"
}'

In this example, a transfer route for the priority fast was not available, so Adyen transferred the funds using the priority regular.

The response contains:

  • The routingDetails object, specifying why the first priority was not selected.
  • The selected priority.
Response
Expand view
Copy link to code block
Copy code
Copy code
{
"creationDate": "2024-07-30T11:34:30+02:00",
"id": "4VXLOJ63SA8GCUWR",
"accountHolder": {
"description": "YOUR_DESCRIPTION_FOR_THE_ACCOUNT_HOLDER",
"id": "AH00000000000000000000001"
},
"amount": {
"currency": "EUR",
"value": 100
},
"balanceAccount": {
"description": "YOUR_DESCRIPTION_FOR_THE_BALANCE_ACCOUNT",
"id": "BA00000000000000000000001"
},
"category": "bank",
"categoryData": {
"priority": "regular",
"routingDetails": [
{
"detail": "No routes available for given counterparty, currency and priority.",
"errorCode": "30_081",
"priority": "fast",
"title": "Invalid transfer information provided"
},
{
"detail": "Transfer was routed using this priority.",
"priority": "regular"
}
],
"type": "bank"
},
"counterparty": {
"bankAccount": {
"accountHolder": {
"fullName": "Adyen N.V.",
"type": "unknown"
},
"accountIdentification": {
"type": "iban",
"iban": "NL33ADYX1000001544"
}
}
},
"description": "YOUR_DESCRIPTION_FOR_THE_TRANSFER",
"direction": "outgoing",
"paymentInstrument": {
"id": "PI0000000000000000000001"
},
"reason": "approved",
"reference": "THE_INTERNAL_REFERENCE_FOR_THE_TRANSFER",
"status": "authorised",
"type": "bankTransfer"
}

To better control money movement in your , you can trigger additional reviews for transfers. Additional reviews require a member of your team to verify a transfer before Adyen processes it.

You can trigger an additional review by including the review object in the POST /transfers request. In the object, specify the following parameter:

Parameter name Required Description
review.numberOfApprovalsRequired -white_check_mark- Specifies the number of approvals required to process the transfer.

Possible values: 1. Currently, it is possible to request only one additional review per transfer.

The following code sample shows how to include include the review object.

Trigger an additional review
Expand view
Copy link to code block
Copy code
Copy code
curl https://balanceplatform-api-test.adyen.com/btl/v4/transfers \
-H 'x-api-key: YOUR_BALANCE_PLATFORM_API_KEY' \
-H 'content-type: application/json' \
-X POST \
-d '{
"amount": {
"value": 60000,
"currency": "EUR"
},
"balanceAccountId": "BA00000000000000000000001",
"category": "bank",
"counterparty": {
"bankAccount": {
"accountHolder": {
"fullName": "Adyen N.V.",
"address": {
"city": "Amsterdam",
"country": "NL",
"postalCode": "1011DJ",
"stateOrProvince": "NH",
"line1": "Simon Carmiggeltstraat 6-50"
}
},
"accountIdentification": {
"type": "iban",
"iban": "NL33ADYX1000001544"
}
}
},
"description": "Your-description-for-the-transfer",
"priority": "fast",
"reference": "YOUR_INTERNAL_REFERENCE",
"referenceForBeneficiary": "Your-reference-for-the-beneficiary",
"review": {
"numberOfApprovalsRequired": 1
}
}'

If the transfer request is successful, you receive a response containing the following parameters:

Parameter name Description
review.numberOfApprovalsRequired Shows the number of approvals required to process the transfer.

After triggering the review, a member of your team must approve the transfer before Adyen continues processing it.

Get updates on the status of the transfer

Track the transfer request through webhooks that Adyen sends to your server. The webhooks provide the status of the request, from the time when Adyen received the request and the transfer was authorised, up to when the transfer was booked and deducted from the balance account. Additionally, you can find the estimated arrival time of the funds.

You can also view the transfer in your Customer Area.

Test the payout flow

To test the payout flow, make a POST /transfers request.

The currency and priority of the transfer request must match the values shown in the following table.

To test a successful payout, use the following counterparty bank account details for the country/region.

Only use these bank account details in your TEST environment.

Country/region Counterparty bank account details Currency Priority
Country/region Counterparty bank account details Currency Priority
AU Account #: 102201111, BSB #: 012951 AUD regular
Account #: 102201111, BSB #: 012951 AUD wire
CA Account #: 10220001111, INST #: 004, TRN #: 00012 CAD regular
Account #: 10220001111, INST #: 004, TRN #: 00012 CAD wire
DE IBAN: DE14100100109876543210 EUR regular
IBAN: DE89370400440532013000 EUR instant
IBAN: DE14100100109876543210 EUR wire
ES IBAN: ES2100490000000000000000 EUR regular
IBAN: ES9021034677010000000000 EUR instant
IBAN: ES9021034677010000000000 EUR wire
FR IBAN: FR6410096000403534259742Y90 EUR regular
IBAN: FR6410096000403534259742Y90 EUR instant
IBAN: FR6410096000403534259742Y90 EUR wire
GB Account #: 10000003, Sort code: 401199 GBP regular
Account #: 10000003, Sort code: 401199
IBAN: GB63HBUK40119910000003
GBP wire
Account #: 10000003, Sort code: 200401 GBP fast
HK Account #: 790000000, ClearingCode #: 250 HKD regular
Account #: 790000000, ClearingCode #: 250 HKD wire
IT IBAN: IT58A0300203280198574967934 EUR regular
IBAN: IT58A0300203280198574967934 EUR instant
IBAN: IT58A0300203280198574967934 EUR wire
NL IBAN: NL57INGB4654188101 EUR regular
IBAN: NL57INGB4654188101 EUR instant
IBAN: NL57INGB4654188101 EUR wire
NZ Account #: 010001011111601 NZD regular
Account #: 010001011111601 NZD wire
PL Account #: 61109010140000071219812874 PLN regular
Account #: 61109010140000071219812874
IBAN: PL61109010140000071219812874
PLN wire
SG Account #: 9999, BIC #: CITISGSG SGD regular
Account #: 9999, BIC #: CITISGSG SGD wire
Account #: 9999, BIC #: CITISGSG SGD fast
US Account #: 10220001111, Routing #: 121000248 USD regular
Account #: 10220001111, Routing #: 121000248 USD wire

See also

Próximas etapas