POST /transfers

Versions 1 and 2 of the Transfers API are deprecated. If you are just starting your implementation, use the latest version.

Starts a request to transfer funds to:

Adyen sends the outcome of the transfer request through webhooks.

To use this endpoint:

Reach out to your Adyen contact to set up these permissions.

Servers

Request headers

Name Type Required Description
Content-Type String Yes The media type of the request body.

Default value: "application/json"

Idempotency-Key String No

A unique identifier for the message with a maximum of 64 characters (we recommend a UUID).

WWW-Authenticate String No

Header for authenticating through SCA

Request body fields

Name Type Required Description
ultimateParty Object No

The ultimate sender of the funds of the transfer (ultimate debtor).

ultimateParty.lastName String No

The last name of the individual.

Supported characters: [a-z] [A-Z] - . / — and space.

This parameter is:

  • Allowed only when type is individual.
  • Required when category is card.
ultimateParty.type String No

The type of entity that owns the bank account or card.

Possible values: individual, organization, or unknown.

Required when category is card. In this case, the value must be individual.

Possible values:

  • "organization"
  • "individual"
  • "unknown"

Default value: "unknown"

ultimateParty.firstName String No

The first name of the individual.

Supported characters: [a-z] [A-Z] - . / — and space.

This parameter is:

  • Allowed only when type is individual.
  • Required when category is card.
ultimateParty.reference String No

A unique reference to identify the party or counterparty involved in the transfer. For example, your client's unique wallet or payee ID.

Required when you include cardIdentification.storedPaymentMethodId.

ultimateParty.fullName String No

The full name of the entity that owns the bank account or card.

Supported characters: [a-z] [A-Z] [0-9] , . ; : - — / \ + & ! ? @ ( ) " ' and space.

Required when category is bank.

ultimateParty.address Object No

The address of the bank account or card owner.

ultimateParty.address.line2 String No

The second line of the street address.

Supported characters: [a-z] [A-Z] [0-9] . - — / # , ’ ° ( ) : ; [ ] & \ | and Space.

Required when the category is card.

ultimateParty.address.line1 String No

The first line of the street address.

Supported characters: [a-z] [A-Z] [0-9] . - — / # , ’ ° ( ) : ; [ ] & \ | and Space.

Required when the category is card.

ultimateParty.address.postalCode String No

The postal code. Maximum length:

  • 5 digits for an address in the US.
  • 10 characters for an address in all other countries.

Supported characters: [a-z] [A-Z] [0-9] and Space.

Required for addresses in the US.

ultimateParty.address.stateOrProvince String No

The two-letter ISO 3166-2 state or province code. For example, CA in the US or ON in Canada.

Required for the US and Canada.

ultimateParty.address.country String Yes

The two-character ISO 3166-1 alpha-2 country code. For example, US, NL, or GB.

ultimateParty.address.city String No

The name of the city.

Supported characters: [a-z] [A-Z] [0-9] . - — / # , ’ ° ( ) : ; [ ] & \ | and Space.

Required when the category is card.

ultimateParty.dateOfBirth String No

The date of birth of the individual in ISO-8601 format. For example, YYYY-MM-DD.

Allowed only when type is individual.

review Object No

Contains information required for triggering transfer reviews.

review.scaOnApproval Boolean No

Specifies whether you will initiate Strong Customer Authentication (SCA) in thePOST /transfers/approve request.

Only applies to transfers made with an Adyen business account.

review.numberOfApprovalsRequired Integer No

Specifies the number of approvals required to process the transfer.

description String No

Your description for the transfer. It is used by most banks as the transfer description. We recommend sending a maximum of 140 characters, otherwise the description may be truncated.

Supported characters: [a-z] [A-Z] [0-9] / - ? : ( ) . , ' + Space

Supported characters for regular and fast transfers to a US counterparty: [a-z] [A-Z] [0-9] & $ % # @ ~ = + - _ ' " ! ?

priorities[] Array No

The list of priorities for the bank transfer. This sets the speed at which the transfer is sent and the fees that you have to pay. You can provide multiple priorities. Adyen will try to pay out using the priority you list first. If that's not possible, it moves on to the next option in the order of your provided priorities.

Possible values:

  • regular: for normal, low-value transactions.

  • fast: a faster way to transfer funds, but the fees are higher. Recommended for high-priority, low-value transactions.

  • wire: the fastest way to transfer funds, but this has the highest fees. Recommended for high-priority, high-value transactions.

  • instant: for instant funds transfers within the United States and in SEPA locations.

  • crossBorder: for high-value transfers to a recipient in a different country.

  • internal: for transfers to an Adyen-issued business bank account (by bank account number/IBAN).

Required for transfers with category bank. For more details, see fallback priorities.

referenceForBeneficiary String No

A reference that is sent to the recipient. This reference is also sent in all webhooks related to the transfer, so you can use it to track statuses for both parties involved in the funds movement.

Supported characters: a-z, A-Z, 0-9. The maximum length depends on the category.

  • internal: 80 characters

  • bank: 35 characters when transferring to an IBAN, 15 characters for others.

counterparty Object Yes

The other party involved in the funds transfer. A bank account, a balance account, a card, or a transfer instrument is required.

counterparty.transferInstrumentId String No

The unique identifier of the counterparty transfer instrument.

counterparty.bankAccount Object No

Contains information about the counterparty bank account.

counterparty.bankAccount.accountHolder Object Yes

Information about the owner of the bank account.

counterparty.bankAccount.accountHolder.lastName String No

The last name of the individual.

Supported characters: [a-z] [A-Z] - . / — and space.

This parameter is:

  • Allowed only when type is individual.
  • Required when category is card.
counterparty.bankAccount.accountHolder.type String No

The type of entity that owns the bank account or card.

Possible values: individual, organization, or unknown.

Required when category is card. In this case, the value must be individual.

Possible values:

  • "organization"
  • "individual"
  • "unknown"

Default value: "unknown"

counterparty.bankAccount.accountHolder.firstName String No

The first name of the individual.

Supported characters: [a-z] [A-Z] - . / — and space.

This parameter is:

  • Allowed only when type is individual.
  • Required when category is card.
counterparty.bankAccount.accountHolder.reference String No

A unique reference to identify the party or counterparty involved in the transfer. For example, your client's unique wallet or payee ID.

Required when you include cardIdentification.storedPaymentMethodId.

counterparty.bankAccount.accountHolder.fullName String No

The full name of the entity that owns the bank account or card.

Supported characters: [a-z] [A-Z] [0-9] , . ; : - — / \ + & ! ? @ ( ) " ' and space.

Required when category is bank.

counterparty.bankAccount.accountHolder.address Object No

The address of the bank account or card owner.

counterparty.bankAccount.accountHolder.address.line2 String No

The second line of the street address.

Supported characters: [a-z] [A-Z] [0-9] . - — / # , ’ ° ( ) : ; [ ] & \ | and Space.

Required when the category is card.

counterparty.bankAccount.accountHolder.address.line1 String No

The first line of the street address.

Supported characters: [a-z] [A-Z] [0-9] . - — / # , ’ ° ( ) : ; [ ] & \ | and Space.

Required when the category is card.

counterparty.bankAccount.accountHolder.address.postalCode String No

The postal code. Maximum length:

  • 5 digits for an address in the US.
  • 10 characters for an address in all other countries.

Supported characters: [a-z] [A-Z] [0-9] and Space.

Required for addresses in the US.

counterparty.bankAccount.accountHolder.address.stateOrProvince String No

The two-letter ISO 3166-2 state or province code. For example, CA in the US or ON in Canada.

Required for the US and Canada.

counterparty.bankAccount.accountHolder.address.country String Yes

The two-character ISO 3166-1 alpha-2 country code. For example, US, NL, or GB.

counterparty.bankAccount.accountHolder.address.city String No

The name of the city.

Supported characters: [a-z] [A-Z] [0-9] . - — / # , ’ ° ( ) : ; [ ] & \ | and Space.

Required when the category is card.

counterparty.bankAccount.accountHolder.dateOfBirth String No

The date of birth of the individual in ISO-8601 format. For example, YYYY-MM-DD.

Allowed only when type is individual.

counterparty.bankAccount.accountIdentification Object Yes

Contains the bank account details. The fields required in this object depend on the country of the bank account and the currency of the transfer.

counterparty.card Object No

Contains information about the counterparty card.

counterparty.card.cardHolder Object Yes

Contains information about the cardholder.

counterparty.card.cardHolder.lastName String No

The last name of the individual.

Supported characters: [a-z] [A-Z] - . / — and space.

This parameter is:

  • Allowed only when type is individual.
  • Required when category is card.
counterparty.card.cardHolder.type String No

The type of entity that owns the bank account or card.

Possible values: individual, organization, or unknown.

Required when category is card. In this case, the value must be individual.

Possible values:

  • "organization"
  • "individual"
  • "unknown"

Default value: "unknown"

counterparty.card.cardHolder.firstName String No

The first name of the individual.

Supported characters: [a-z] [A-Z] - . / — and space.

This parameter is:

  • Allowed only when type is individual.
  • Required when category is card.
counterparty.card.cardHolder.reference String No

A unique reference to identify the party or counterparty involved in the transfer. For example, your client's unique wallet or payee ID.

Required when you include cardIdentification.storedPaymentMethodId.

counterparty.card.cardHolder.fullName String No

The full name of the entity that owns the bank account or card.

Supported characters: [a-z] [A-Z] [0-9] , . ; : - — / \ + & ! ? @ ( ) " ' and space.

Required when category is bank.

counterparty.card.cardHolder.address Object No

The address of the bank account or card owner.

counterparty.card.cardHolder.address.line2 String No

The second line of the street address.

Supported characters: [a-z] [A-Z] [0-9] . - — / # , ’ ° ( ) : ; [ ] & \ | and Space.

Required when the category is card.

counterparty.card.cardHolder.address.line1 String No

The first line of the street address.

Supported characters: [a-z] [A-Z] [0-9] . - — / # , ’ ° ( ) : ; [ ] & \ | and Space.

Required when the category is card.

counterparty.card.cardHolder.address.postalCode String No

The postal code. Maximum length:

  • 5 digits for an address in the US.
  • 10 characters for an address in all other countries.

Supported characters: [a-z] [A-Z] [0-9] and Space.

Required for addresses in the US.

counterparty.card.cardHolder.address.stateOrProvince String No

The two-letter ISO 3166-2 state or province code. For example, CA in the US or ON in Canada.

Required for the US and Canada.

counterparty.card.cardHolder.address.country String Yes

The two-character ISO 3166-1 alpha-2 country code. For example, US, NL, or GB.

counterparty.card.cardHolder.address.city String No

The name of the city.

Supported characters: [a-z] [A-Z] [0-9] . - — / # , ’ ° ( ) : ; [ ] & \ | and Space.

Required when the category is card.

counterparty.card.cardHolder.dateOfBirth String No

The date of birth of the individual in ISO-8601 format. For example, YYYY-MM-DD.

Allowed only when type is individual.

counterparty.card.cardIdentification Object Yes

Contains the identification details of the card.

counterparty.card.cardIdentification.issueNumber String No

The issue number of the card. Applies only to some UK debit cards.

counterparty.card.cardIdentification.startYear String No

The year when the card was issued. Applies only to some UK debit cards.

Format: four digits. For example: 2020

counterparty.card.cardIdentification.number String No

The card number without any separators.

For security, the response only includes the last four digits of the card number.

counterparty.card.cardIdentification.expiryMonth String No

The expiry month of the card.

Format: two digits. Add a leading zero for single-digit months. For example:

  • 03 = March
  • 11 = November
counterparty.card.cardIdentification.startMonth String No

The month when the card was issued. Applies only to some UK debit cards.

Format: two digits. Add a leading zero for single-digit months. For example:

  • 03 = March
  • 11 = November
counterparty.card.cardIdentification.storedPaymentMethodId String No

The unique token created to identify the counterparty.

counterparty.card.cardIdentification.expiryYear String No

The expiry year of the card.

Format: four digits. For example: 2020

counterparty.balanceAccountId String No

The unique identifier of the counterparty balance account.

category String Yes

The category of the transfer.

Possible values:

  • bank: a transfer involving a transfer instrument or a bank account.

  • card: a transfer involving a third-party card.

  • internal: a transfer between balance accounts within your platform.

  • issuedCard: a transfer initiated by a Adyen-issued card.

  • platformPayment: funds movements related to payments that are acquired for your users.

  • topUp: an incoming transfer initiated by your user to top up their balance account.

Possible values:

  • "topUp"
  • "bank"
  • "card"
  • "platformPayment"
  • "issuedCard"
  • "internal"
priority String No

The priority for the bank transfer. This sets the speed at which the transfer is sent and the fees that you have to pay. Required for transfers with category bank.

Possible values:

  • regular: for normal, low-value transactions.

  • fast: a faster way to transfer funds, but the fees are higher. Recommended for high-priority, low-value transactions.

  • wire: the fastest way to transfer funds, but this has the highest fees. Recommended for high-priority, high-value transactions.

  • instant: for instant funds transfers within the United States and in SEPA locations.

  • crossBorder: for high-value transfers to a recipient in a different country.

  • internal: for transfers to an Adyen-issued business bank account (by bank account number/IBAN).

Possible values:

  • "regular"
  • "crossBorder"
  • "wire"
  • "internal"
  • "fast"
  • "instant"
executionDate Object No

The date when the transfer will be processed. This date must be within 30 days of the current date.

Until the executionDate:

  • The status of the transfer remains as received.
  • The reason of the transfer remains as pending.
executionDate.timezone String No

The timezone that applies to the execution date. Use a timezone identifier from the tz database.

Example: America/Los_Angeles. Default value: Europe/Amsterdam.

executionDate.date String No

The date when the transfer will be processed. This date must be:

  • Within 30 days of the current date.
  • In the ISO 8601 format YYYY-MM-DD. For example: 2025-01-31
amount Object Yes

The amount of the transfer.

amount.value Integer Yes

The amount of the transaction, in minor units.

amount.currency String Yes

The three-character ISO currency code.

type String No

The type of transfer.

Possible values:

  • bankTransfer: for push transfers to a transfer instrument or a bank account. The category must be bank.
  • internalTransfer: for push transfers between balance accounts. The category must be internal.
  • internalDirectDebit: for pull transfers (direct debits) between balance accounts. The category must be internal.

Possible values:

  • "internalDirectDebit"
  • "bankTransfer"
  • "internalTransfer"
reference String No

Your reference for the transfer, used internally within your platform. If you don't provide this in the request, Adyen generates a unique reference.

balanceAccountId String No

The unique identifier of the source balance account.

If you want to make a transfer using a virtual bankAccount assigned to the balance account, you must specify the payment instrument ID of the virtual bankAccount. If you only specify a balance account ID, Adyen uses the default physical bankAccount payment instrument assigned to the balance account.

paymentInstrumentId String No

The unique identifier of the source payment instrument.

If you want to make a transfer using a virtual bankAccount, you must specify the payment instrument ID of the virtual bankAccount. If you only specify a balance account ID, Adyen uses the default physical bankAccount payment instrument assigned to the balance account.

How to start integrating

  1. Add HTTP Task to your workflow definition.
  2. Search for the API you want to integrate with and click on the name.
    • This loads the API reference documentation and prepares the Http request settings.
  3. Click Test request to test run your request to the API and see the API's response.