Adyen-for-platform icon

Initiate on-demand payouts

Initiate an on-demand payout to your user's verified bank account.

Send funds to third parties

Offer Adyen business accounts to your users so they can transfer funds to third-party bank accounts.

Additional verification requirements apply.

On-demand payouts give you the flexibility to trigger a payout off-schedule. When triggering an on-demand payout, consider the cutoff times for each bank transfer method in each region. Cutoff times affect the expected time for the account holders to receive the funds in their bank account.

This page explains how to pay out on-demand to your user's transfer instruments.

Requirements

Before you begin, take into account the following requirements:

Requirement Description

Integration type

You need an Adyen for Platforms integration.

API credentials

Your API credential for the Transfers API must have the following role:
  • TransferService Webservice Initiate role

Customer Area roles

You need the following role:
  • Initiate payouts to transfer instruments

Webhooks

  1. Make sure that your server receives and accepts webhooks.

  2. In your Customer Area, subscribe to Transfer webhooks

Capabilities

Make sure that the user is allowed to use the sendToTransferInstrument capability.
From LEM API v3, this capability is verified at the level of the transfer instrument, such as a bank account. This means that transfers are possible to a verified transfer instrument independently of the verification status of other transfer instruments that the legal entity has.

Setup steps

Before you begin your integration, contact our Support Team to:

Before submitting a transfer request, we recommend that you calculate the available transfer routes. This enables you to pay out funds faster and minimize the risk of payout failures.

How it works

To make an on-demand payout, you must initiate a payout request. The following diagram shows the stages of a payout request, from initiation to sending the funds.

As shown in the previous diagram, payout requests go through the following stages:

  1. Payout request sent: You send a payout request using the POST /transfers endpoint or your Customer Area.
  2. Capability check: Adyen verifies that your user has the required capabilities.
    • If the capabilities are verified, Adyen receives and accepts your payout request.
    • If any capabilities are missing, the payout request fails.
  3. Approval process: Before approving a payout, Adyen reviews the payout and performs internal checks. Additionally, you can trigger additional reviews for the payout request, to make sure that the payout is also approved by a member of your team.
    • If all the required reviews are completed successfully, the payout request is approved.
    • If any of the required reviews fails, the payout request also fails.
  4. Payout request authorized: The payout request is instantly authorized.
    If you specified an execution date in the future, the payout request remains pending until the execution date, and is authorized on that date.
  5. Payout request booked: The funds are deducted from the user's balance account and sent to the user's transfer instrument.

Adyen informs you about the status of a payout through webhooks.

Initiate a transfer request

To set up on-demand payouts, make a POST /transfers request or use your Customer Area.

Get updates on the status of the transfer

You can view the status of funds transfers initiated by a payout in your Customer Area, or track them by listening to webhooks.

To track the status of funds transfers initiated by a payout:

  1. Listen to the following webhooks:
  2. Acknowledge the webhooks.
  3. In the payload of the balancePlatform.transfer.updated webhook, note that:
    • The event array includes all previous transfer events.
    • The sequenceNumber defines the number of webhooks sent for the transfer, including the current one.

For more details and examples, see Payout webhooks.

Troubleshooting

The following examples show some common issues you may encounter when attempting to make a transfer.

This error indicates that the user's bank returned a previous payout attempt. Some return codes indicate a temporary issue, and can be retried. Others indicate a permanent issue and result in this error message.

Solution

To avoid this error:

  1. Listen to transfer webhooks. These webhooks tell you when a user's bank returns a payout.
  2. Read the return reason. If the reason indicates a final status, do not retry the transfer. Only retry payouts that have return reason codes that are recommended to be retried.
  3. Communicate with your user. Let them know that subsequent payouts might fail if they do not update their bank account details.

To fix this error:

  1. Update the user's bank account details. Send the user a Hosted Onboarding link, or update the bank account manually with the /transferInstruments/{id} API. This removes the block that causes the error and ensures that the user's bank account is up to date.
  2. Retry the payout using the same on demand transfer process.

Transfer statement description character limits

The following limits apply to the length and the characters that you can use when setting a transfer statement description based on the location of the counterparty and the priority.

Character limits

The following tables show the character limits for each combination of currency and priority that Adyen supports.

See also