---
title: "Transfer routes"
description: "Learn how to get the optimal routes for your payouts."
url: "https://docs.adyen.com/marketplaces/payout-to-users/transfer-routes"
source_url: "https://docs.adyen.com/marketplaces/payout-to-users/transfer-routes.md"
canonical: "https://docs.adyen.com/marketplaces/payout-to-users/transfer-routes"
last_modified: "2023-03-13T23:32:00+01:00"
language: "en"
---

# Transfer routes

Learn how to get the optimal routes for your payouts.

Sending funds to transfer instruments can have additional requirements or limitations. For example, the bank that holds your user's transfer instrument may only support specific transfer priorities, or limit the amount of funds that you can send. These requirements or limitations are set by the bank or its regulating entities.

To prevent transfer failures due to such limitations, we recommend that you calculate the available transfer routes before sending funds to a new recipient.

## Requirements

Before you begin, consider the following requirements:

| Requirement                                                               | Description                                                                                                                                                                       |
| ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Integration type**                                                      | You must have an [Adyen for Platforms](/adyen-for-platforms-model) integration.                                                                                                   |
| **[API credential roles](/development-resources/api-credentials/roles/)** | Your API credential for the [Configuration API](https://docs.adyen.com/api-explorer/balanceplatform/latest/overview) must have the following role:- **Balance Platform BCL role** |

## Calculate transfer routes

You can make calculate all available transfer routes for either a specific location or a set of counterparty bank details. The following tabs explain both of these methods.

### Tab: Calculate routes by country/region

To calculate transfer routes for a specific country/region:

1. Make a POST [/transferRoutes/calculate](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/transferRoutes/calculate) request. Provide the following parameters in the request body:

   | Parameter                                                                                                                           | Required                                                                                                      | Description                                                                                                                         |
   | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
   | [balancePlatform](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/transferRoutes/calculate#request-balancePlatform) | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | The unique identifier of your balance platform.                                                                                     |
   | [currency](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/transferRoutes/calculate#request-currency)               | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | The three-character ISO currency code of the transfer.                                                                              |
   | [category](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/transferRoutes/calculate#request-category)               | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | The type of transfer. Set to **bank**.                                                                                              |
   | [country](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/transferRoutes/calculate#request-country)                 | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | The two-character ISO country code of the counterparty. For example, **US** or **NL**.                                              |
   | [priorities](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/transferRoutes/calculate#request-priorities)           |                                                                                                               | An array that contains the priorities that you want to calculate transfer routes for. For example: **regular**, **fast**, **wire**. |

   The following example shows how to make a request to calculate transfer routes for a counterparty in the Netherlands.

   **Example request—Calculate the available transfer routes by country/region**

   #### curl

   ```bash
   curl https://balanceplatform-api-test.adyen.com/bcl/v2/transferRoutes/calculate \
   -H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \
   -H 'content-type: application/json' \
   -X POST \
   -d '{
       "balancePlatform": "YOUR_BALANCE_PLATFORM",
       "currency": "USD",
       "category": "bank",
       "country": "NL",
       "priorities": [
           "regular",
           "crossBorder",
           "wire"
       ]
   }'
   ```

   #### Java

   ```java
   // Adyen Java API Library v40.0.0
   import com.adyen.Client;
   import com.adyen.enums.Environment;
   import com.adyen.model.balanceplatform.*;
   import java.time.OffsetDateTime;
   import java.util.*;
   import com.adyen.service.balancePlatform.*;

   Client client = new Client("ADYEN_BALANCE_PLATFORM_API_KEY", Environment.TEST);

   // Create the request object(s)
   TransferRouteRequest transferRouteRequest = new TransferRouteRequest()
     .country("NL")
     .priorities(Arrays.asList(TransferRouteRequest.PrioritiesEnum.REGULAR,
   TransferRouteRequest.PrioritiesEnum.CROSSBORDER,
   TransferRouteRequest.PrioritiesEnum.WIRE))
     .currency("USD")
     .category(TransferRouteRequest.CategoryEnum.BANK)
     .balancePlatform("YOUR_BALANCE_PLATFORM");

   // Send the request
   TransferRoutesApi service = new TransferRoutesApi(client);
   TransferRouteResponse response = service.calculateTransferRoutes(transferRouteRequest, null);
   ```

   #### PHP

   ```php
   <?php
   // Adyen PHP API Library v28.3.0
   use Adyen\Client;
   use Adyen\Environment;
   use Adyen\Model\BalancePlatform\TransferRouteRequest;
   use Adyen\Service\BalancePlatform\TransferRoutesApi;

   $client = new Client();
   $client->setXApiKey("ADYEN_BALANCE_PLATFORM_API_KEY");
   $client->setEnvironment(Environment::TEST);


   // Create the request object(s)
   $transferRouteRequest = new TransferRouteRequest();
   $transferRouteRequest
     ->setCountry("NL")
     ->setPriorities(array("regular", "crossBorder", "wire"))
     ->setCurrency("USD")
     ->setCategory("bank")
     ->setBalancePlatform("YOUR_BALANCE_PLATFORM");

   // Send the request
   $service = new TransferRoutesApi($client);
   $response = $service->calculateTransferRoutes($transferRouteRequest);
   ```

   #### C\#

   ```cs
   // Adyen .NET API Library v32.2.1
   using Adyen;
   using Environment = Adyen.Model.Environment;
   using Adyen.Model;
   using Adyen.Model.BalancePlatform;
   using Adyen.Service.BalancePlatform;

   var config = new Config()
   {
       XApiKey = "ADYEN_BALANCE_PLATFORM_API_KEY",
       Environment = Environment.Test
   };
   var client = new Client(config);

   // Create the request object(s)
   TransferRouteRequest transferRouteRequest = new TransferRouteRequest
   {
     Country = "NL",
     Priorities = { TransferRouteRequest.PrioritiesEnum.Regular,
       TransferRouteRequest.PrioritiesEnum.CrossBorder,
       TransferRouteRequest.PrioritiesEnum.Wire },
     Currency = "USD",
     Category = TransferRouteRequest.CategoryEnum.Bank,
     BalancePlatform = "YOUR_BALANCE_PLATFORM"
   };

   // Send the request
   var service = new TransferRoutesService(client);
   var response = service.CalculateTransferRoutes(transferRouteRequest);
   ```

   #### NodeJS (JavaScript)

   ```js
   // Adyen Node API Library v30.0.1
   const { Client, BalancePlatformAPI } = require('@adyen/api-library');

   const config = new Config({
     apiKey: "ADYEN_BALANCE_PLATFORM_API_KEY",
     environment: EnvironmentEnum.TEST
   });

   const client = new Client(config);

   // Create the request object(s)
   const transferRouteRequest = {
     balancePlatform: "YOUR_BALANCE_PLATFORM",
     currency: "USD",
     category: "bank",
     country: "NL",
     priorities: [ "regular", "crossBorder", "wire" ]
   }

   // Send the request
   const balancePlatformAPI = new BalancePlatformAPI(client);
   const response = balancePlatformAPI.TransferRoutesApi.calculateTransferRoutes(transferRouteRequest);
   ```

   #### Go

   ```go
   // Adyen Go API Library v21.1.0
   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/balancePlatform"
   )
   client := adyen.NewClient(&common.Config{
     ApiKey:      "ADYEN_BALANCE_PLATFORM_API_KEY",
     Environment: common.TestEnv,
   })

   // Create the request object(s)
   transferRouteRequest := balancePlatform.TransferRouteRequest{
     Country: common.PtrString("NL"),
     Priorities: []string{
       "regular", "crossBorder", "wire",
     },
     Currency: "USD",
     Category: "bank",
     BalancePlatform: "YOUR_BALANCE_PLATFORM",
   }

   // Send the request
   service := client.BalancePlatform()
   req := service.TransferRoutesApi.CalculateTransferRoutesInput().TransferRouteRequest(transferRouteRequest)
   res, httpRes, err := service.TransferRoutesApi.CalculateTransferRoutes(context.Background(), req)
   ```

   #### Python

   ```py
   # Adyen Python API Library v14.0.0
   import Adyen

   adyen = Adyen.Adyen()
   adyen.client.xapikey = "ADYEN_BALANCE_PLATFORM_API_KEY"
   adyen.client.platform = "test" # The environment to use library in.

   # Create the request object(s)
   json_request = {
     "balancePlatform": "YOUR_BALANCE_PLATFORM",
     "currency": "USD",
     "category": "bank",
     "country": "NL",
     "priorities": [ "regular", "crossBorder", "wire" ]
   }

   # Send the request
   result = adyen.balancePlatform.transfer_routes_api.calculate_transfer_routes(request=json_request)
   ```

   #### Ruby

   ```rb
   # Adyen Ruby API Library v11.1.0
   require "adyen-ruby-api-library"

   adyen = Adyen::Client.new
   adyen.api_key = 'ADYEN_BALANCE_PLATFORM_API_KEY'
   adyen.env = :test # Set to "live" for live environment

   # Create the request object(s)
   request_body = {
     :balancePlatform => 'YOUR_BALANCE_PLATFORM',
     :currency => 'USD',
     :category => 'bank',
     :country => 'NL',
     :priorities => [ 'regular', 'crossBorder', 'wire' ]
   }

   # Send the request
   result = adyen.balancePlatform.transfer_routes_api.calculate_transfer_routes(request_body)
   ```

   #### NodeJS (TypeScript)

   ```ts
   // Adyen Node API Library v30.0.1
   import { Client, BalancePlatformAPI, Types } from "@adyen/api-library";

   const config = new Config({
     apiKey: "ADYEN_BALANCE_PLATFORM_API_KEY",
     environment: EnvironmentEnum.TEST
   });

   const client = new Client(config);

   // Create the request object(s)
   const transferRouteRequest: Types.balancePlatform.TransferRouteRequest = {
     country: "NL",
     priorities: [
       Types.balancePlatform.TransferRouteRequest.PrioritiesEnum.Regular,
       Types.balancePlatform.TransferRouteRequest.PrioritiesEnum.CrossBorder,
       Types.balancePlatform.TransferRouteRequest.PrioritiesEnum.Wire
     ],
     currency: "USD",
     category: Types.balancePlatform.TransferRouteRequest.CategoryEnum.Bank,
     balancePlatform: "YOUR_BALANCE_PLATFORM"
   };

   // Send the request
   const balancePlatformAPI = new BalancePlatformAPI(client);
   const response = balancePlatformAPI.TransferRoutesApi.calculateTransferRoutes(transferRouteRequest);
   ```

2. In the response, note the `transferRoutes` object, which includes all transfer routes supported in a country/region. Each transfer route specifies:

   * The supported currency.
   * The supported priority.
   * Any additional requirements you must fulfill when using the transfer route.

   **Example response—Transfer routes by country/region**

   ```json
   {
       "transferRoutes": [
           {
               "currency": "USD",
               "priority": "regular",
               "requirements": []
           },
           {
               "currency": "USD",
               "priority": "crossBorder",
               "requirements": [
                   {
                       "description": "Amount of transfer must be at least 100, and no greater than 99999999999",
                       "max": 99999999999,
                       "min": 100,
                       "type": "amountMinMaxRequirement"
                   },
                   {
                       "description": "Country, street and city is required.",
                       "requiredAddressFields": [
                           "STREET",
                           "CITY"
                       ],
                       "type": "addressRequirement"
                   },
                   {
                       "description": "Bank account identification type must be iban or numberAndBic",
                       "bankAccountIdentificationTypes": [
                           "iban",
                           "numberAndBic"
                       ],
                       "type": "bankAccountIdentificationTypeRequirement"
                   },
                   {
                       "issuingCountryCode": "NL",
                       "paymentInstrumentType": "BankAccount",
                       "type": "paymentInstrumentRequirement"
                   }
               ]
           },
           {
               "currency": "USD",
               "priority": "wire",
               "requirements": []
           }
       ]
   }
   ```

### Tab: Calculate transfer routes by counterparty

To calculate transfer routes for a specific counterparty:

1. Make a POST [/transferRoutes/calculate](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/transferRoutes/calculate) request. Provide the following parameters in the request body:

   | Parameter                                                                                                                             | Required                                                                                                                                                | Description                                                                                                                                                 |
   | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
   | [balancePlatform](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/transferRoutes/calculate#request-balancePlatform)   | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto)                                           | The unique identifier of your balance platform.                                                                                                             |
   | [currency](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/transferRoutes/calculate#request-currency)                 | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto)                                           | The three-character ISO currency code of the transfer.                                                                                                      |
   | [category](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/transferRoutes/calculate#request-category)                 | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto)                                           | The type of transfer. Set to **bank**.                                                                                                                      |
   | [counterparty](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/transferRoutes/calculate#request-counterparty)         | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto)                                           | An object that contains information about the recipient of the funds transfer. The counterparty can be a third-party bank account or a transfer instrument. |
   | [priorities](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/transferRoutes/calculate#request-priorities)             |                                                                                                                                                         | An array that contains the priorities that you want to calculate transfer routes for. For example: **regular**, **fast**, **wire**.                         |
   | [balanceAccountId](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/transferRoutes/calculate#request-balanceAccountId) | ![Conditionally required](/user/pages/reuse/image-library/01.icons/conditionally-required/conditionally-required.svg?decoding=auto\&fetchpriority=auto) | The unique identifier of the source balance account. Required if `counterparty` contains a **transferInstrumentId**.                                        |

   The following example shows how to make a request to calculate transfer routes for a specific counterparty.

   **Example request—Calculate transfer routes by counterparty**

   #### curl

   ```bash
   curl https://balanceplatform-api-test.adyen.com/bcl/v2/transferRoutes/calculate \
   -H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \
   -H 'content-type: application/json' \
   -X POST \
   -d '{
       "balancePlatform": "YOUR_BALANCE_PLATFORM",
       "currency": "EUR",
       "category": "bank",
       "priorities": [
           "instant",
           "wire"
       ],
       "counterparty": {
           "bankAccount": {
               "accountIdentification": {
                   "type": "iban",
                   "iban": "NL91ABNA0417164300"
               }
           }
       }
   }'
   ```

   #### Java

   ```java
   // Adyen Java API Library v40.0.0
   import com.adyen.Client;
   import com.adyen.enums.Environment;
   import com.adyen.model.balanceplatform.*;
   import java.time.OffsetDateTime;
   import java.util.*;
   import com.adyen.service.balancePlatform.*;

   Client client = new Client("ADYEN_BALANCE_PLATFORM_API_KEY", Environment.TEST);

   // Create the request object(s)
   IbanAccountIdentification ibanAccountIdentification = new IbanAccountIdentification()
     .iban("NL91ABNA0417164300")
     .type(IbanAccountIdentification.TypeEnum.IBAN);

   BankAccount bankAccount = new BankAccount()
     .accountIdentification(new TransferRouteRequestAccountIdentification(ibanAccountIdentification));

   Counterparty counterparty = new Counterparty()
     .bankAccount(bankAccount);

   TransferRouteRequest transferRouteRequest = new TransferRouteRequest()
     .priorities(Arrays.asList(TransferRouteRequest.PrioritiesEnum.INSTANT,
   TransferRouteRequest.PrioritiesEnum.WIRE))
     .counterparty(counterparty)
     .currency("EUR")
     .category(TransferRouteRequest.CategoryEnum.BANK)
     .balancePlatform("YOUR_BALANCE_PLATFORM");

   // Send the request
   TransferRoutesApi service = new TransferRoutesApi(client);
   TransferRouteResponse response = service.calculateTransferRoutes(transferRouteRequest, null);
   ```

   #### PHP

   ```php
   <?php
   // Adyen PHP API Library v28.3.0
   use Adyen\Client;
   use Adyen\Environment;
   use Adyen\Model\BalancePlatform\TransferRouteRequestAccountIdentification;
   use Adyen\Model\BalancePlatform\BankAccount;
   use Adyen\Model\BalancePlatform\Counterparty;
   use Adyen\Service\BalancePlatform\TransferRoutesApi;

   $client = new Client();
   $client->setXApiKey("ADYEN_BALANCE_PLATFORM_API_KEY");
   $client->setEnvironment(Environment::TEST);


   // Create the request object(s)
   $transferRouteRequestAccountIdentification = new TransferRouteRequestAccountIdentification();
   $transferRouteRequestAccountIdentification
     ->setIban("NL91ABNA0417164300")
     ->setType("iban");

   $bankAccount = new BankAccount();
   $bankAccount
     ->setAccountIdentification($transferRouteRequestAccountIdentification);

   $counterparty = new Counterparty();
   $counterparty
     ->setBankAccount($bankAccount);

   $transferRouteRequest = new TransferRouteRequest();
   $transferRouteRequest
     ->setPriorities(array("instant", "wire"))
     ->setCounterparty($counterparty)
     ->setCurrency("EUR")
     ->setCategory("bank")
     ->setBalancePlatform("YOUR_BALANCE_PLATFORM");

   // Send the request
   $service = new TransferRoutesApi($client);
   $response = $service->calculateTransferRoutes($transferRouteRequest);
   ```

   #### C\#

   ```cs
   // Adyen .NET API Library v32.2.1
   using Adyen;
   using Environment = Adyen.Model.Environment;
   using Adyen.Model;
   using Adyen.Model.BalancePlatform;
   using Adyen.Service.BalancePlatform;

   var config = new Config()
   {
       XApiKey = "ADYEN_BALANCE_PLATFORM_API_KEY",
       Environment = Environment.Test
   };
   var client = new Client(config);

   // Create the request object(s)
   IbanAccountIdentification ibanAccountIdentification = new IbanAccountIdentification
   {
     Iban = "NL91ABNA0417164300",
     Type = IbanAccountIdentification.TypeEnum.Iban
   };

   BankAccount bankAccount = new BankAccount
   {
     AccountIdentification = new TransferRouteRequestAccountIdentification(ibanAccountIdentification)
   };

   Counterparty counterparty = new Counterparty
   {
     BankAccount = bankAccount
   };

   TransferRouteRequest transferRouteRequest = new TransferRouteRequest
   {
     Priorities = { TransferRouteRequest.PrioritiesEnum.Instant,
       TransferRouteRequest.PrioritiesEnum.Wire },
     Counterparty = counterparty,
     Currency = "EUR",
     Category = TransferRouteRequest.CategoryEnum.Bank,
     BalancePlatform = "YOUR_BALANCE_PLATFORM"
   };

   // Send the request
   var service = new TransferRoutesService(client);
   var response = service.CalculateTransferRoutes(transferRouteRequest);
   ```

   #### NodeJS (JavaScript)

   ```js
   // Adyen Node API Library v30.0.1
   const { Client, BalancePlatformAPI } = require('@adyen/api-library');

   const config = new Config({
     apiKey: "ADYEN_BALANCE_PLATFORM_API_KEY",
     environment: EnvironmentEnum.TEST
   });

   const client = new Client(config);

   // Create the request object(s)
   const transferRouteRequest = {
     balancePlatform: "YOUR_BALANCE_PLATFORM",
     currency: "EUR",
     category: "bank",
     priorities: [ "instant", "wire" ],
     counterparty: {
       bankAccount: {
         accountIdentification: {
           type: "iban",
           iban: "NL91ABNA0417164300"
         }
       }
     }
   }

   // Send the request
   const balancePlatformAPI = new BalancePlatformAPI(client);
   const response = balancePlatformAPI.TransferRoutesApi.calculateTransferRoutes(transferRouteRequest);
   ```

   #### Go

   ```go
   // Adyen Go API Library v21.1.0
   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/balancePlatform"
   )
   client := adyen.NewClient(&common.Config{
     ApiKey:      "ADYEN_BALANCE_PLATFORM_API_KEY",
     Environment: common.TestEnv,
   })

   // Create the request object(s)
   ibanAccountIdentification := balancePlatform.IbanAccountIdentification{
     Iban: "NL91ABNA0417164300",
     Type: "iban",
   }

   bankAccount := balancePlatform.BankAccount{
     AccountIdentification: balancePlatform.IbanAccountIdentificationAsTransferRouteRequestAccountIdentification(&ibanAccountIdentification),
   }

   counterparty := balancePlatform.Counterparty{
     BankAccount: &bankAccount,
   }

   transferRouteRequest := balancePlatform.TransferRouteRequest{
     Priorities: []string{
       "instant", "wire",
     },
     Counterparty: &counterparty,
     Currency: "EUR",
     Category: "bank",
     BalancePlatform: "YOUR_BALANCE_PLATFORM",
   }

   // Send the request
   service := client.BalancePlatform()
   req := service.TransferRoutesApi.CalculateTransferRoutesInput().TransferRouteRequest(transferRouteRequest)
   res, httpRes, err := service.TransferRoutesApi.CalculateTransferRoutes(context.Background(), req)
   ```

   #### Python

   ```py
   # Adyen Python API Library v14.0.0
   import Adyen

   adyen = Adyen.Adyen()
   adyen.client.xapikey = "ADYEN_BALANCE_PLATFORM_API_KEY"
   adyen.client.platform = "test" # The environment to use library in.

   # Create the request object(s)
   json_request = {
     "balancePlatform": "YOUR_BALANCE_PLATFORM",
     "currency": "EUR",
     "category": "bank",
     "priorities": [ "instant", "wire" ],
     "counterparty": {
       "bankAccount": {
         "accountIdentification": {
           "type": "iban",
           "iban": "NL91ABNA0417164300"
         }
       }
     }
   }

   # Send the request
   result = adyen.balancePlatform.transfer_routes_api.calculate_transfer_routes(request=json_request)
   ```

   #### Ruby

   ```rb
   # Adyen Ruby API Library v11.1.0
   require "adyen-ruby-api-library"

   adyen = Adyen::Client.new
   adyen.api_key = 'ADYEN_BALANCE_PLATFORM_API_KEY'
   adyen.env = :test # Set to "live" for live environment

   # Create the request object(s)
   request_body = {
     :balancePlatform => 'YOUR_BALANCE_PLATFORM',
     :currency => 'EUR',
     :category => 'bank',
     :priorities => [ 'instant', 'wire' ],
     :counterparty => {
       :bankAccount => {
         :accountIdentification => {
           :type => 'iban',
           :iban => 'NL91ABNA0417164300'
         }
       }
     }
   }

   # Send the request
   result = adyen.balancePlatform.transfer_routes_api.calculate_transfer_routes(request_body)
   ```

   #### NodeJS (TypeScript)

   ```ts
   // Adyen Node API Library v30.0.1
   import { Client, BalancePlatformAPI, Types } from "@adyen/api-library";

   const config = new Config({
     apiKey: "ADYEN_BALANCE_PLATFORM_API_KEY",
     environment: EnvironmentEnum.TEST
   });

   const client = new Client(config);

   // Create the request object(s)
   const ibanAccountIdentification: Types.balancePlatform.IbanAccountIdentification = {
     iban: "NL91ABNA0417164300",
     type: Types.balancePlatform.IbanAccountIdentification.TypeEnum.Iban
   };

   const bankAccount: Types.balancePlatform.BankAccount = {
     accountIdentification: ibanAccountIdentification
   };

   const counterparty: Types.balancePlatform.Counterparty = {
     bankAccount: bankAccount
   };

   const transferRouteRequest: Types.balancePlatform.TransferRouteRequest = {
     priorities: [
       Types.balancePlatform.TransferRouteRequest.PrioritiesEnum.Instant,
       Types.balancePlatform.TransferRouteRequest.PrioritiesEnum.Wire
     ],
     counterparty: counterparty,
     currency: "EUR",
     category: Types.balancePlatform.TransferRouteRequest.CategoryEnum.Bank,
     balancePlatform: "YOUR_BALANCE_PLATFORM"
   };

   // Send the request
   const balancePlatformAPI = new BalancePlatformAPI(client);
   const response = balancePlatformAPI.TransferRoutesApi.calculateTransferRoutes(transferRouteRequest);
   ```

2. In the response, note the `transferRoutes` object, which includes all transfer routes supported by a counterparty. Each transfer route specifies:

   * The country of the counterparty.
   * The supported currency.
   * The supported priority.
   * Any additional requirements you must fulfill when using the transfer route.

   **Example response—Transfer routes by counterparty**

   ```json
   {
       "transferRoutes": [
           {
               "country": "NL",
               "currency": "EUR",
               "priority": "instant",
               "requirements": [
                   {
                       "description": "Amount of transfer must be at least 1, and no greater than 9999999",
                       "max": 9999999,
                       "min": 1,
                       "type": "amountMinMaxRequirement"
                   },
                   {
                       "description": "Bank account identification type must be iban",
                       "bankAccountIdentificationTypes": [
                           "iban"
                       ],
                       "type": "bankAccountIdentificationTypeRequirement"
                   },
                   {
                       "issuingCountryCode": "NL",
                       "paymentInstrumentType": "BankAccount",
                       "type": "paymentInstrumentRequirement"
                   }
               ]
           },
           {
               "country": "NL",
               "currency": "EUR",
               "priority": "wire",
               "requirements": [
                   {
                       "description": "Amount of transfer must be at least 1, and no greater than 99999999999",
                       "max": 99999999999,
                       "min": 1,
                       "type": "amountMinMaxRequirement"
                   },
                   {
                       "issuingCountryCode": "NL",
                       "paymentInstrumentType": "BankAccount",
                       "type": "paymentInstrumentRequirement"
                   },
                   {
                       "description": "Bank account identification type must be iban",
                       "bankAccountIdentificationTypes": [
                           "iban"
                       ],
                       "type": "bankAccountIdentificationTypeRequirement"
                   }
               ]
           }
       ]
   }
   ```

## Next steps

[Set up scheduled payouts](/marketplaces/payout-to-users/scheduled-payouts)

[Trigger automatic payouts based on a schedule and amount.](/marketplaces/payout-to-users/scheduled-payouts)

[Send on-demand payouts](/marketplaces/payout-to-users/on-demand-payouts)

[Make an off-schedule payout to your users.](/marketplaces/payout-to-users/on-demand-payouts)
