--- title: "Create business accounts" description: "Create and manage business accounts for your users." url: "https://docs.adyen.com/business-accounts/create-business-accounts" source_url: "https://docs.adyen.com/business-accounts/create-business-accounts.md" canonical: "https://docs.adyen.com/business-accounts/create-business-accounts" last_modified: "2024-01-04T17:37:00+01:00" language: "en" --- # Create business accounts Create and manage business accounts for your users. [View source](/business-accounts/create-business-accounts.md) When you create an Adyen business account for your users, you generate a business account number linked to their balance account. Your users can share their business account number with third parties so they can receive business-related payments or fund transfers. ## Requirements Before you can create business accounts for your users, check if you meet the [requirements for business accounts](/business-accounts#requirements). Additionally, make sure that your users have: * [Legal entities](/business-accounts/manage-legal-entities) for both your user and all entities associated with the user. For example, the ultimate beneficial owners (UBOs) for an organization. * Business lines, which contain information about your user's line of business. You need to create two business lines, one for your user to receive payments and one for business accounts. * An [account holder](/business-accounts/manage-account-holders) and a [balance account](/business-accounts/manage-balance-accounts). * Completed the [verification checks for business accounts](/business-accounts/verification-requirements) and have the **issueBankAccount** [capability](/business-accounts/verification-overview/capabilities) allowed and enabled. ## Create a payment instrument After the **issueBankAccount** capability has been allowed and enabled on the account holder of your user, you can proceed with creating a payment instrument for them. Payment instruments—such as business accounts—are resources that account holders can use externally to transact with their balance account. Creating a business account payment instrument generates a business account number, such as an IBAN. To create a business account payment instrument, make a POST [/paymentInstruments](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/paymentInstruments) call specifying: | Parameter name | Required | Description | | --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [balanceAccountId](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/paymentInstruments#request-balanceAccountId) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The ID returned when you created the balance account. All financial transactions, such as receiving and sending funds, will be processed in this balance account. | | [issuingCountryCode](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/paymentInstruments__reqParam_issuingCountryCode) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The two-letter country code where the business account is issued from. We currently support **NL** and **US**. The currency of the specified country must match the currency of the balance account. | | [type](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/paymentInstruments#request-type) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Set to **bankAccount**. | | [description](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/paymentInstruments#request-description) | | Your description for the business account, which you can use to store useful information for your staff. | | [reference](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/paymentInstruments__reqParam_reference) | | Your reference for the business account, which you can map to your internal systems. | A balance account can only have one business account number. The API returns an error if a business account number already exists. ### Tab: IBAN Here is how you create an IBAN for a business account issued in the Netherlands. **Create an IBAN** #### curl ```bash curl https://balanceplatform-api-test.adyen.com/bcl/v2/paymentInstruments \ -H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "type": "bankAccount", "description": "{hint:Your human-readable description for the business account}S.Hopper - Account in NL{/hint}", "balanceAccountId": "BA00000000000000000000001", "issuingCountryCode": "NL" }' ``` #### Java ```java // Adyen Java API Library v33.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) PaymentInstrumentInfo paymentInstrumentInfo = new PaymentInstrumentInfo() .balanceAccountId("BA00000000000000000000001") .description("S.Hopper - Account in NL") .type(PaymentInstrumentInfo.TypeEnum.BANKACCOUNT) .issuingCountryCode("NL"); // Send the request PaymentInstrumentsApi service = new PaymentInstrumentsApi(client); PaymentInstrument response = service.createPaymentInstrument(paymentInstrumentInfo, null); ``` #### PHP ```php setXApiKey("ADYEN_BALANCE_PLATFORM_API_KEY"); $client->setEnvironment(Environment::TEST); // Create the request object(s) $paymentInstrumentInfo = new PaymentInstrumentInfo(); $paymentInstrumentInfo ->setBalanceAccountId("BA00000000000000000000001") ->setDescription("S.Hopper - Account in NL") ->setType("bankAccount") ->setIssuingCountryCode("NL"); // Send the request $service = new PaymentInstrumentsApi($client); $response = $service->createPaymentInstrument($paymentInstrumentInfo); ``` #### C\# ```cs // Adyen .net API Library v28.0.0 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) PaymentInstrumentInfo paymentInstrumentInfo = new PaymentInstrumentInfo { BalanceAccountId = "BA00000000000000000000001", Description = "S.Hopper - Account in NL", Type = PaymentInstrumentInfo.TypeEnum.BankAccount, IssuingCountryCode = "NL" }; // Send the request var service = new PaymentInstrumentsService(client); var response = service.CreatePaymentInstrument(paymentInstrumentInfo); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v23.3.0 const { Client, BalancePlatformAPI } = require('@adyen/api-library'); const client = new Client({ apiKey: "ADYEN_BALANCE_PLATFORM_API_KEY", environment: "TEST" }); // Create the request object(s) const paymentInstrumentInfo = { type: "bankAccount", description: "S.Hopper - Account in NL", balanceAccountId: "BA00000000000000000000001", issuingCountryCode: "NL" } // Send the request const balancePlatformAPI = new BalancePlatformAPI(client); const response = balancePlatformAPI.PaymentInstrumentsApi.createPaymentInstrument(paymentInstrumentInfo); ``` #### Go ```go // Adyen Go API Library v17.0.0 import ( "context" "github.com/adyen/adyen-go-api-library/v17/src/common" "github.com/adyen/adyen-go-api-library/v17/src/adyen" "github.com/adyen/adyen-go-api-library/v17/src/balancePlatform" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_BALANCE_PLATFORM_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) paymentInstrumentInfo := balancePlatform.PaymentInstrumentInfo{ BalanceAccountId: "BA00000000000000000000001", Description: common.PtrString("S.Hopper - Account in NL"), Type: "bankAccount", IssuingCountryCode: "NL", } // Send the request service := client.BalancePlatform() req := service.PaymentInstrumentsApi.CreatePaymentInstrumentInput().PaymentInstrumentInfo(paymentInstrumentInfo) res, httpRes, err := service.PaymentInstrumentsApi.CreatePaymentInstrument(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v13.3.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 = { "type": "bankAccount", "description": "S.Hopper - Account in NL", "balanceAccountId": "BA00000000000000000000001", "issuingCountryCode": "NL" } # Send the request result = adyen.balancePlatform.payment_instruments_api.create_payment_instrument(request=json_request) ``` #### Ruby ```rb # Adyen Ruby API Library v10.1.1 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 = { :type => 'bankAccount', :description => 'S.Hopper - Account in NL', :balanceAccountId => 'BA00000000000000000000001', :issuingCountryCode => 'NL' } # Send the request result = adyen.balancePlatform.payment_instruments_api.create_payment_instrument(request_body) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v23.3.0 import { Client, BalancePlatformAPI, Types } from "@adyen/api-library"; const client = new Client({ apiKey: "ADYEN_BALANCE_PLATFORM_API_KEY", environment: "TEST" }); // Create the request object(s) const paymentInstrumentInfo: Types.balancePlatform.PaymentInstrumentInfo = { balanceAccountId: "BA00000000000000000000001", description: "S.Hopper - Account in NL", type: Types.balancePlatform.PaymentInstrumentInfo.TypeEnum.BankAccount, issuingCountryCode: "NL" }; // Send the request const balancePlatformAPI = new BalancePlatformAPI(client); const response = balancePlatformAPI.PaymentInstrumentsApi.createPaymentInstrument(paymentInstrumentInfo); ``` The response returns the **paymentInstrument** resource, identified by its unique `id`. You also receive the `iban` which the account holder can use when sending funds to their business account. **Response** ```json { "balanceAccountId": "BA00000000000000000000001", "issuingCountryCode": "NL", "status": "Active", "type": "bankAccount", "bankAccount": { "iban": "NL20ADYB2017000035" }, "id": "PI322LJ223222B5DJS7CD9LWL" } ``` ### Tab: US account number Here is how you create an account number for a business account issued in the US. **Create a US account number** #### curl ```bash curl https://balanceplatform-api-test.adyen.com/bcl/v2/paymentInstruments \ -H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "type": "bankAccount", "description": "{hint:Your human-readable description for the business account}S.Hopper - Account in the US{/hint}", "balanceAccountId": "BA00000000000000000000001", "issuingCountryCode": "US" }' ``` #### Java ```java // Adyen Java API Library v33.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) PaymentInstrumentInfo paymentInstrumentInfo = new PaymentInstrumentInfo() .balanceAccountId("BA00000000000000000000001") .description("S.Hopper - Account in the US") .type(PaymentInstrumentInfo.TypeEnum.BANKACCOUNT) .issuingCountryCode("US"); // Send the request PaymentInstrumentsApi service = new PaymentInstrumentsApi(client); PaymentInstrument response = service.createPaymentInstrument(paymentInstrumentInfo, null); ``` #### PHP ```php setXApiKey("ADYEN_BALANCE_PLATFORM_API_KEY"); $client->setEnvironment(Environment::TEST); // Create the request object(s) $paymentInstrumentInfo = new PaymentInstrumentInfo(); $paymentInstrumentInfo ->setBalanceAccountId("BA00000000000000000000001") ->setDescription("S.Hopper - Account in the US") ->setType("bankAccount") ->setIssuingCountryCode("US"); // Send the request $service = new PaymentInstrumentsApi($client); $response = $service->createPaymentInstrument($paymentInstrumentInfo); ``` #### C\# ```cs // Adyen .net API Library v28.0.0 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) PaymentInstrumentInfo paymentInstrumentInfo = new PaymentInstrumentInfo { BalanceAccountId = "BA00000000000000000000001", Description = "S.Hopper - Account in the US", Type = PaymentInstrumentInfo.TypeEnum.BankAccount, IssuingCountryCode = "US" }; // Send the request var service = new PaymentInstrumentsService(client); var response = service.CreatePaymentInstrument(paymentInstrumentInfo); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v23.3.0 const { Client, BalancePlatformAPI } = require('@adyen/api-library'); const client = new Client({ apiKey: "ADYEN_BALANCE_PLATFORM_API_KEY", environment: "TEST" }); // Create the request object(s) const paymentInstrumentInfo = { type: "bankAccount", description: "S.Hopper - Account in the US", balanceAccountId: "BA00000000000000000000001", issuingCountryCode: "US" } // Send the request const balancePlatformAPI = new BalancePlatformAPI(client); const response = balancePlatformAPI.PaymentInstrumentsApi.createPaymentInstrument(paymentInstrumentInfo); ``` #### Go ```go // Adyen Go API Library v17.0.0 import ( "context" "github.com/adyen/adyen-go-api-library/v17/src/common" "github.com/adyen/adyen-go-api-library/v17/src/adyen" "github.com/adyen/adyen-go-api-library/v17/src/balancePlatform" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_BALANCE_PLATFORM_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) paymentInstrumentInfo := balancePlatform.PaymentInstrumentInfo{ BalanceAccountId: "BA00000000000000000000001", Description: common.PtrString("S.Hopper - Account in the US"), Type: "bankAccount", IssuingCountryCode: "US", } // Send the request service := client.BalancePlatform() req := service.PaymentInstrumentsApi.CreatePaymentInstrumentInput().PaymentInstrumentInfo(paymentInstrumentInfo) res, httpRes, err := service.PaymentInstrumentsApi.CreatePaymentInstrument(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v13.3.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 = { "type": "bankAccount", "description": "S.Hopper - Account in the US", "balanceAccountId": "BA00000000000000000000001", "issuingCountryCode": "US" } # Send the request result = adyen.balancePlatform.payment_instruments_api.create_payment_instrument(request=json_request) ``` #### Ruby ```rb # Adyen Ruby API Library v10.1.1 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 = { :type => 'bankAccount', :description => 'S.Hopper - Account in the US', :balanceAccountId => 'BA00000000000000000000001', :issuingCountryCode => 'US' } # Send the request result = adyen.balancePlatform.payment_instruments_api.create_payment_instrument(request_body) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v23.3.0 import { Client, BalancePlatformAPI, Types } from "@adyen/api-library"; const client = new Client({ apiKey: "ADYEN_BALANCE_PLATFORM_API_KEY", environment: "TEST" }); // Create the request object(s) const paymentInstrumentInfo: Types.balancePlatform.PaymentInstrumentInfo = { balanceAccountId: "BA00000000000000000000001", description: "S.Hopper - Account in the US", type: Types.balancePlatform.PaymentInstrumentInfo.TypeEnum.BankAccount, issuingCountryCode: "US" }; // Send the request const balancePlatformAPI = new BalancePlatformAPI(client); const response = balancePlatformAPI.PaymentInstrumentsApi.createPaymentInstrument(paymentInstrumentInfo); ``` The response returns the **paymentInstrument** resource, identified by its unique `id`. You also receive the `bankAccount` details that the account holder can use when sending funds to their business account. **Response** ```json { "balanceAccountId": "BA00000000000000000000001", "issuingCountryCode": "US", "status": "Active", "type": "bankAccount", "bankAccount": { "accountNumber": "333720756", "routingNumber": "21000021", "accountType": "checking" }, "id": "PI322LJ223222B5DJS7CD9LWL" } ``` ## Get payment instruments To find the existing business account number related to a specified balance account, make a GET [/balanceAccounts/{id}/paymentInstruments](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/balanceAccounts/\(id\)/paymentInstruments) request and specify the balance account `id` in the path.