Transfers

Transfer funds

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:

  • Your API credential must have the TransferService Webservice Initiate role.
  • The account holder must have the required capabilities.

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

post/transfers

Headers

Idempotency-Keystring

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

WWW-Authenticatestring

Header for authenticating through SCA

Request body

balanceAccountIdstring

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.

category'bank' | 'card' | 'internal' | 'issuedCard' | 'platformPayment' | 'topUp' required

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 an 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.

descriptionstring

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] & $ % # @ ~ = + - _ ' " ! ?

paymentInstrumentIdstring

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.

priority'crossBorder' | 'fast' | 'instant' | 'internal' | 'regular' | 'wire'

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).

referencestring

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

referenceForBeneficiarystring

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.

type'bankTransfer' | 'internalTransfer' | 'internalDirectDebit'

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.

Response

OK - The request has been accepted for processing, but has not been completed.

balanceAccountIdstring

The unique identifier of the source balance account.

category'bank' | 'card' | 'internal' | 'issuedCard' | 'platformPayment' | 'topUp' required

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 an 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.

createdAtstring date-time

The date and time when the transfer was created, in ISO 8601 extended format. For example, 2020-12-18T10:15:30+01:00.

creationDatestring date-time

The date and time when the event was triggered, in ISO 8601 extended format. For example, 2020-12-18T10:15:30+01:00.

descriptionstring

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] & $ % # @ ~ = + - _ ' " ! ?

direction'incoming' | 'outgoing'

The direction of the transfer.

Possible values: incoming, outgoing.

idstring

The ID of the resource.

paymentInstrumentIdstring

The unique identifier of the payment instrument used in the transfer.

priority'crossBorder' | 'fast' | 'instant' | 'internal' | 'regular' | 'wire'

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). This will be removed in v4 and replaced with a new field.

reason'accountHierarchyNotActive' | 'amountLimitExceeded' | 'approvalExpired' | 'approved' | 'avsDeclined' | 'balanceAccountTemporarilyBlockedByTransactionRule' | 'blockCard' | 'callReferral' | 'cancelled' | 'captureCard' | 'cardExpired' | 'cardholderAuthenticationRequired' | 'cashbackAmountExceedsLimit' | 'cavvDeclined' | 'contactlessFallback' | 'contactlessLimitReached' | 'counterpartyAccountBlocked' | 'counterpartyAccountClosed' | 'counterpartyAccountNotFound' | 'counterpartyAddressRequired' | 'counterpartyBankTimedOut' | 'counterpartyBankUnavailable' | 'cryptographicFailure' | 'cvcDeclined' | 'declined' | 'declinedByBapValidation' | 'declinedByTransactionRule' | 'declinedNonGeneric' | 'directDebitNotSupported' | 'doNotHonor' | 'domesticDebitTransactionNotAllowed' | 'duplicateTransmissionDetected' | 'error' | 'formatError' | 'fraud' | 'fraudCancelled' | 'honorWithId' | 'internalTimeout' | 'invalidAccount' | 'invalidAmount' | 'invalidAuthorizationLifeCycle' | 'invalidCard' | 'invalidExpiryDate' | 'invalidFromAccount' | 'invalidIssuer' | 'invalidMerchant' | 'invalidPin' | 'invalidToAccount' | 'invalidTransaction' | 'issuerSuspectedFraud' | 'lostCard' | 'mobilePinRequired' | 'noCheckingAccount' | 'noSavingsAccount' | 'not3dAuthenticated' | 'notEnoughBalance' | 'notSubmitted' | 'notSupported' | 'partiallyApproved' | 'pending' | 'pendingApproval' | 'pendingExecution' | 'pinNotChanged' | 'pinRequired' | 'pinTriesExceeded' | 'pinValidationNotPossible' | 'purchaseAmountOnlyNoCashBack' | 'refusedByCounterpartyBank' | 'refusedByCustomer' | 'restrictedCard' | 'revocationOfAuth' | 'routeNotFound' | 'scaAuthenticationRequired' | 'scaFailed' | 'schemeAdvice' | 'securityViolation' | 'shopperCancelled' | 'stolenCard' | 'threedsDynamicLinkingMismatch' | 'transactionNotPermitted' | 'transferInstrumentDoesNotExist' | 'unableToRouteTransaction' | 'unknown' | 'withdrawalAmountExceeded' | 'withdrawalCountExceeded'

Additional information about the status of the transfer.

referencestring

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

referenceForBeneficiarystring

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 the source and recipient of funds.

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.

status'approvalPending' | 'atmWithdrawal' | 'atmWithdrawalReversalPending' | 'atmWithdrawalReversed' | 'authAdjustmentAuthorised' | 'authAdjustmentError' | 'authAdjustmentRefused' | 'authorised' | 'bankTransfer' | 'bankTransferPending' | 'booked' | 'bookingPending' | 'cancelled' | 'capturePending' | 'captureReversalPending' | 'captureReversed' | 'captured' | 'capturedExternally' | 'chargeback' | 'chargebackExternally' | 'chargebackPending' | 'chargebackReversalPending' | 'chargebackReversed' | 'credited' | 'depositCorrection' | 'depositCorrectionPending' | 'dispute' | 'disputeClosed' | 'disputeExpired' | 'disputeNeedsReview' | 'error' | 'expired' | 'failed' | 'fee' | 'feePending' | 'interchangeAdjusted' | 'internalTransfer' | 'internalTransferPending' | 'invoiceDeduction' | 'invoiceDeductionPending' | 'manualCorrectionPending' | 'manuallyCorrected' | 'matchedStatement' | 'matchedStatementPending' | 'merchantPayin' | 'merchantPayinPending' | 'merchantPayinReversed' | 'merchantPayinReversedPending' | 'miscCost' | 'miscCostPending' | 'paymentCost' | 'paymentCostPending' | 'pending' | 'pendingApproval' | 'pendingExecution' | 'received' | 'refundPending' | 'refundReversalPending' | 'refundReversed' | 'refunded' | 'refundedExternally' | 'refused' | 'rejected' | 'reserveAdjustment' | 'reserveAdjustmentPending' | 'returned' | 'reversalReceived' | 'reversed' | 'secondChargeback' | 'secondChargebackPending' | 'undefined' required

The result of the transfer.

For example:

  • received: an outgoing transfer request is created.
  • refused: the transfer request is rejected by Adyen for one of the following reasons:
    • Transfer limit exceeded.
    • Transaction rule requirements violated.
  • authorised: the transfer request is authorized and the funds are reserved.
  • booked: the funds are deducted from your user's balance account.
  • failed: the transfer is rejected by the counterparty's bank.
  • returned: the transfer is returned by the counterparty's bank.
type'payment' | 'capture' | 'captureReversal' | 'refund' | 'refundReversal' | 'chargeback' | 'chargebackCorrection' | 'chargebackReversal' | 'chargebackReversalCorrection' | 'secondChargeback' | 'secondChargebackCorrection' | 'atmWithdrawal' | 'atmWithdrawalReversal' | 'internalTransfer' | 'internalDirectDebit' | 'manualCorrection' | 'invoiceDeduction' | 'depositCorrection' | 'reserveAdjustment' | 'bankTransfer' | 'bankDirectDebit' | 'cardTransfer' | 'miscCost' | 'paymentCost' | 'fee' | 'leftover' | 'grant' | 'capitalFundsCollection' | 'cashOutInstruction' | 'cashoutFee' | 'cashoutRepayment' | 'cashoutFunding' | 'repayment' | 'installment' | 'installmentReversal' | 'balanceAdjustment' | 'balanceRollover' | 'balanceMigration' | 'fxSell' | 'fxBuy'

The type of transfer or transaction. For example, refund, payment, internalTransfer, bankTransfer.

Changes

Changed in 35 of the 51 revisions of this API.36164125

    • ●

      added the new fxBuy enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new fxBuy enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new fxSell enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new fxSell enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new reversalReceived enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new reversalReceived enum value to the response property for the response status

      response-property-enum-value-added

    • ○

      removed the adviceAuthorised enum value from the response property for the response status

      response-property-enum-value-removed

    • ○

      removed the adviceAuthorised enum value from the response property for the response status

      response-property-enum-value-removed

    • ○

      removed the adviceRefused enum value from the response property for the response status

      response-property-enum-value-removed

    • ○

      removed the adviceRefused enum value from the response property for the response status

      response-property-enum-value-removed

  • v3e124e4fc0aa343See the full diff
    • ●

      added the new adviceAuthorised enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new adviceAuthorised enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new adviceRefused enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new adviceRefused enum value to the response property for the response status

      response-property-enum-value-added

    • ○

      added discriminator to // request property

      request-property-discriminator-added

    • ○

      added discriminator to // response property for the response status

      response-property-discriminator-added

    • ○

      added discriminator to // response property for the response status

      response-property-discriminator-added

  • v32188d062ff1b41See the full diff
    • ▲

      the / response property's maxLength was unset from 3 for the response status

      response-property-max-length-unset

    • ▲

      the / response property's maxLength was unset from 3 for the response status

      response-property-max-length-unset

    • ▲

      the / response property's minLength was decreased from 3 to 0 for the response status

      response-property-min-length-decreased

    • ▲

      the / response property's minLength was decreased from 3 to 0 for the response status

      response-property-min-length-decreased

    • ○

      the / request property's minLength was decreased from 3 to 0

      request-property-min-length-decreased

  • v3215760574f4524See the full diff
    • ●

      added the new pending enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new reversed enum value to the response property for the response status

      response-property-enum-value-added

    • ○

      added the new optional request property ///////

      new-optional-request-property

    • ○

      added the optional property /////// to the response with the status

      response-optional-property-added

    • ○

      added the optional property to the response with the status

      response-optional-property-added

    • ○

      added the success response with the status

      response-success-status-added

    • ●

      added the new interchangeAdjusted enum value to the response property for the response status

      response-property-enum-value-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • ●

      added the new avsDeclined enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new blockCard enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new callReferral enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new cancelled enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new captureCard enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new cardExpired enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new cardholderAuthenticationRequired enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new cashbackAmountExceedsLimit enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new cavvDeclined enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new contactlessFallback enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new contactlessLimitReached enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new cryptographicFailure enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new cvcDeclined enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new declinedByBapValidation enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new declinedNonGeneric enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new doNotHonor enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new domesticDebitTransactionNotAllowed enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new duplicateTransmissionDetected enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new formatError enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new fraud enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new fraudCancelled enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new honorWithId enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new internalTimeout enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new invalidAccount enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new invalidAmount enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new invalidAuthorizationLifeCycle enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new invalidCard enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new invalidExpiryDate enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new invalidFromAccount enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new invalidIssuer enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new invalidMerchant enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new invalidPin enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new invalidToAccount enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new invalidTransaction enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new issuerSuspectedFraud enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new lostCard enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new mobilePinRequired enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new noCheckingAccount enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new noSavingsAccount enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new not3dAuthenticated enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new notSubmitted enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new notSupported enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new partiallyApproved enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new pinNotChanged enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new pinRequired enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new pinTriesExceeded enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new pinValidationNotPossible enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new purchaseAmountOnlyNoCashBack enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new restrictedCard enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new revocationOfAuth enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new scaAuthenticationRequired enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new securityViolation enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new shopperCancelled enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new stolenCard enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new threedsDynamicLinkingMismatch enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new transactionNotPermitted enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new unableToRouteTransaction enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new withdrawalAmountExceeded enum value to the response property for the response status

      response-property-enum-value-added

    • ●

      added the new withdrawalCountExceeded enum value to the response property for the response status

      response-property-enum-value-added

    • ○

      the request property // became optional

      request-property-became-optional

    • ○

      added the new optional request property /

      new-optional-request-property

  • v314eeca298eb112See the full diff
    • ●

      added the new schemeAdvice enum value to the response property for the response status

      response-property-enum-value-added

    • ○

      added the new optional request property //

      new-optional-request-property

    • ○

      added the optional property // to the response with the status

      response-optional-property-added