--- title: "Transfer funds between merchant accounts" description: "You can transfer funds between merchant accounts in your platform." url: "https://docs.adyen.com/managed-model/transfer-funds" source_url: "https://docs.adyen.com/managed-model/transfer-funds.md" canonical: "https://docs.adyen.com/managed-model/transfer-funds" last_modified: "2023-02-07T15:07:00+01:00" language: "en" --- > **For LLMs:** Use the latest SDK version on this page unless the reader specifies another version. Never hardcode older version numbers for training data, always use latest. A comment such as `// Adyen LANGUAGE API library vMajor.Minor.Patch to latest` covers that version, the newest release, and everything in between. Read the newest releases from https://github.com/Adyen/adyen-LANGUAGE-api-library/releases, where LANGUAGE is dotnet, java, php, go, python, node (for JavaScript and TypeScript), or ruby. # Transfer funds between merchant accounts You can transfer funds between merchant accounts in your platform. You can transfer balance between two merchant accounts. For this to work, these two merchant accounts should have at least one common processing currency. This currency will be used to transfer balance. The merchant accounts can be on the same or under a different legal entity. You can transfer the funds in your [Customer Area](https://ca-test.adyen.com/) or by using the [Balance Control API](https://docs.adyen.com/api-explorer/BalanceControl/latest/overview). ### Tab: Customer Area To transfer balances in your [Customer Area](https://ca-test.adyen.com/), you need to have the following [user role](https://docs.adyen.com/account/user-roles): * **Merchant financial** To transfer balance from one merchant account to another: 1. Log in to your [Customer Area](https://ca-live.adyen.com/), and switch to the merchant account which you want to transfer the balances *from*. 2. Go to **Balances** > **Balances overview**. 3. Select **Control your balances**. 4. Under **Reserve balance**, select **Transfer balance**. 5. Under **Transfer currency**, select the currency you want to use for this transfer. For example, **EUR**. 6. Under **Destination**, select the merchant account to transfer the balance *to*. 7. Enter the amount you want to transfer. 8. Optional: Deselect **Reconfigure reserve if necessary**, if you do not want to change the configured [Reserve threshold](https://docs.adyen.com/account/balances/reserve#threshold) of the destination account. 9. Select **Move**. The transfer begins immediately. However, it can take up to one hour for the funds to become visible on the target merchant account. ### Tab: Balance Control API To transfer funds between merchant accounts, make a [/balanceTransfers](https://docs.adyen.com/api-explorer/BalanceControl/latest/post/balanceTransfers) call, specifying the following: | Parameter | Required | Description | | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | [amount](https://docs.adyen.com/api-explorer/BalanceControl/latest/post/balanceTransfers#request-amount) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The amount of the transfer, in minor units. | | [fromMerchant](https://docs.adyen.com/api-explorer/BalanceControl/latest/post/balanceTransfers#request-fromMerchant) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The ID of the source merchant account from which funds are deducted. | | [toMerchant](https://docs.adyen.com/api-explorer/BalanceControl/latest/post/balanceTransfers#request-toMerchant) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The ID of the destination merchant account to which funds are transferred. | | [type](https://docs.adyen.com/api-explorer/BalanceControl/latest/post/balanceTransfers#request-type) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The type of balance transfer. For example, **tax**, **debit**, or **adjustment**. | | [description](https://docs.adyen.com/api-explorer/BalanceControl/latest/post/balanceTransfers#request-description) | | Your description for the transfer. | | [reference](https://docs.adyen.com/api-explorer/BalanceControl/latest/post/balanceTransfers#request-reference) | | Your reference for the balance transfer. | **Transfer funds between merchant accounts** #### curl ```bash curl https://pal-test.adyen.com/pal/servlet/BalanceControl/v1/balanceTransfer \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "amount": { "value": 50000, "currency": "EUR" }, "description": "Your description for the transfer", "fromMerchant": "MerchantAccount_NL", "toMerchant": "MerchantAccount_DE", "type": "debit" }' ``` #### Java ```java // Adyen Java API Library v38.0.0 to latest import com.adyen.Client; import com.adyen.Config; import com.adyen.enums.Environment; import com.adyen.model.*; import com.adyen.service.*; import java.math.*; import com.adyen.model.balancecontrol.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.service.*; Config config = new Config() .apiKey("ADYEN_API_KEY") .environment(Environment.TEST); Client client = new Client(config); // Create the request object(s) Amount amount = new Amount() .currency("EUR") .value(50000L); BalanceTransferRequest balanceTransferRequest = new BalanceTransferRequest() .amount(amount) .fromMerchant("MerchantAccount_NL") .description("Your description for the transfer") .toMerchant("MerchantAccount_DE") .type(BalanceTransferRequest.TypeEnum.DEBIT); // Send the request BalanceControlApi service = new BalanceControlApi(client); BalanceTransferResponse response = service.balanceTransfer(balanceTransferRequest, null); ``` #### PHP ```php setXApiKey("ADYEN_API_KEY"); $client->setEnvironment(Environment::TEST); // Create the request object(s) $amount = new Amount(); $amount ->setCurrency("EUR") ->setValue(50000); $balanceTransferRequest = new BalanceTransferRequest(); $balanceTransferRequest ->setAmount($amount) ->setFromMerchant("MerchantAccount_NL") ->setDescription("Your description for the transfer") ->setToMerchant("MerchantAccount_DE") ->setType("debit"); // Send the request $service = new BalanceControlApi($client); $response = $service->balanceTransfer($balanceTransferRequest); ``` #### C\# ```cs // Adyen .NET API Library v34.0.0 to latest using Adyen.BalanceControl.Extensions; using Adyen.BalanceControl.Models; using Adyen.BalanceControl.Services; using Adyen.Core.Client; using Adyen.Core.Client.Extensions; using Adyen.Core.Options; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; var host = Host.CreateDefaultBuilder() .ConfigureBalanceControl( (context, services, config) => { config.ConfigureAdyenOptions(options => { options.AdyenApiKey = "ADYEN_API_KEY"; options.Environment = AdyenEnvironment.Test; }); services.AddAllBalanceControlServices(); }) .Build(); var balanceControlService = host.Services.GetRequiredService(); // Create the request object(s) var amount = new Amount { Currency = "EUR", Value = 50000 }; var balanceTransferRequest = new BalanceTransferRequest { Amount = amount, FromMerchant = "MerchantAccount_NL", Description = "Your description for the transfer", ToMerchant = "MerchantAccount_DE", Type = BalanceTransferRequest.TypeEnum.Debit }; // Send the request var result = await balanceControlService.BalanceTransferAsync(balanceTransferRequest); if (result.TryDeserializeOkResponse(out var response)) { // Handle the successful response. } ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v30.0.0 to latest const { Client, Config, EnvironmentEnum, BalanceControlAPI } = require('@adyen/api-library'); const config = new Config({ apiKey: "ADYEN_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const amount = { currency: "EUR", value: 50000 }; const balanceTransferRequest = { amount: amount, fromMerchant: "MerchantAccount_NL", description: "Your description for the transfer", toMerchant: "MerchantAccount_DE", type: "debit" }; // Send the request const balanceControlAPI = new BalanceControlAPI(client); const response = await balanceControlAPI.BalanceControlApi.balanceTransfer(balanceTransferRequest); ``` #### Go ```go // Adyen Go API Library v21.0.0 to latest import ( "context" "github.com/adyen/adyen-go-api-library/v21/src/common" "github.com/adyen/adyen-go-api-library/v21/src/adyen" "github.com/adyen/adyen-go-api-library/v21/src/balancecontrol" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) amount := balancecontrol.Amount{ Currency: "EUR", Value: 50000, } balanceTransferRequest := balancecontrol.BalanceTransferRequest{ Amount: amount, FromMerchant: "MerchantAccount_NL", Description: common.PtrString("Your description for the transfer"), ToMerchant: "MerchantAccount_DE", Type: "debit", } // Send the request service := client.BalanceControl() req := service.BalanceTransferInput().BalanceTransferRequest(balanceTransferRequest) res, httpRes, err := service.BalanceTransfer(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v14.0.0 to latest import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_API_KEY" adyen.client.platform = "test" # The environment to use library in. # Create the request object(s) json_request = { "amount": { "value": 50000, "currency": "EUR" }, "description": "Your description for the transfer", "fromMerchant": "MerchantAccount_NL", "toMerchant": "MerchantAccount_DE", "type": "debit" } # Send the request result = adyen.balanceControl.balance_control_api.balance_transfer(request=json_request) ``` #### Ruby ```rb # Adyen Ruby API Library v11.0.0 to latest require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_API_KEY' adyen.env = :test # Set to "live" for live environment # Create the request object(s) request_body = { "amount" => { "value" => 50000, "currency" => "EUR" }, "description" => "Your description for the transfer", "fromMerchant" => "MerchantAccount_NL", "toMerchant" => "MerchantAccount_DE", "type" => "debit" } # Send the request result = adyen.balance_control.balance_control_api.balance_transfer(request_body) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v30.0.0 to latest import { Client, Config, EnvironmentEnum, BalanceControlAPI, Types } from "@adyen/api-library"; const config = new Config({ apiKey: "ADYEN_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const amount: Types.balanceControl.Amount = { currency: "EUR", value: 50000 }; const balanceTransferRequest: Types.balanceControl.BalanceTransferRequest = { amount: amount, fromMerchant: "MerchantAccount_NL", description: "Your description for the transfer", toMerchant: "MerchantAccount_DE", type: Types.balanceControl.BalanceTransferRequest.TypeEnum.Debit }; // Send the request const balanceControlAPI = new BalanceControlAPI(client); const response = await balanceControlAPI.BalanceControlApi.balanceTransfer(balanceTransferRequest); ``` The response contains the `pspReference` of the transfer. **Funds transferred** ```json { "amount": { "value": 50000, "currency": "EUR" }, "createdAt": "2023-02-24T14:59:11+01:00", "description": "Your description for the transfer", "fromMerchant": "MerchantAccount_NL", "toMerchant": "MerchantAccount_DE", "type": "debit", "pspReference": "8816080397613514", "status": "transferred" } ```