Adyen-for-platform icon

Initiate on-demand internal funds transfers

Send funds or initiate an internal direct debit between balance accounts within your platform.

In your platform, you can set up a schedule to automatically transfer funds between balance accounts. In addition to that, or instead of that, you can transfer funds between balance accounts on-demand.

With such a one-off internal transfer, you can push or pull funds. When you pull funds from another balance account, you are in effect sending an internal direct debit request.

Before you begin

  • Ensure that your server can receive and accept webhooks, and that the Transfer webhook has been added in your Balance Platform Customer Area.
  • Ask our Support Team to enable transfers for the balance account that pushes or pulls funds.
  • If the balance accounts involved in the transfer do not belong to the same account holder, check the capabilities of the account holders:
    • The account holder of the balance account where the push or pull transfer request is initiated must have the sendToBalanceAccount capability.
    • The account holder of the balance account where the push or pull transfer request is received must have the receiveFromBalanceAccount capability.

Initiate a push or pull internal transfer

Select the following tabs to learn how to initiate transfers between balance accounts using an API call, or using your Customer Area.

To move funds between balance accounts:

  1. Make a POST /transfers request specifying:

    Parameter Required Description
    amount -white_check_mark- An object containing the currency and value of the transfer.
    balanceAccountId -white_check_mark- The unique identifier of the source balance account: the balance account where the transfer request is initiated.
    counterparty.balanceAccountId -white_check_mark- The unique identifier of the target balance account: the balance account where the transfer request is received.

    For a push transfer, funds are credited to this balance account.
    For a pull transfer, funds are debited from this balance account.
    category -white_check_mark- Set to internal.
    type
    Only use this parameter when pulling funds from the counterparty balance account.
    Set to internalDirectDebit to pull funds from the counterparty balance account.
    description Your description of the transfer. You can use this to identify the transfer in the webhooks that you receive.
    reference Your unique reference for the transfer. You can use this to identify the transfer in the webhooks that you receive.
    referenceForBeneficiary Text to inform the recipient about the push or pull transfer. This reference is also included in all webhooks. Supported characters: a-z, A-Z, 0-9.

    The following example shows how to push EUR 100 from your liable balance account to another balance account.

  2. In the response, note the following:

    • id: the unique ID of the transfer.
    • status: the result of the transfer.
    • reason: an explanation of the status. Check this field if the status is not authorised.
      For example, the reason for a refused status can be notEnoughBalance.
  3. Wait for the transfer webhooks to confirm that the transfer has been booked.

Get updates on the status of the transfer

For every internal transfer request , Adyen sends multiple webhooks to your server: a series of webhooks for the balance account where the transfer is an outgoing request, and a series of webhooks for the balance account where the transfer is an incoming request.

Using these webhooks, you can track the status of the transfer: received, then authorised, and finally booked. The webhooks also inform you if the transfer failed.

You can also view the transfer details in your Customer Area. Each transfer of funds between balance accounts appears in the Customer Area as two transfer entries: one for the balance account that is credited, and one for the balance account that is debited.

See also