--- title: "Manage transfer instruments" description: "Learn how to manage transfer instruments on your platform." url: "https://docs.adyen.com/platforms/manage-transfer-instruments" source_url: "https://docs.adyen.com/platforms/manage-transfer-instruments.md" canonical: "https://docs.adyen.com/platforms/manage-transfer-instruments" last_modified: "2023-03-28T10:48:00+02:00" language: "en" --- # Manage transfer instruments Learn how to manage transfer instruments on your platform. [View source](/platforms/manage-transfer-instruments.md) A transfer instrument is an API resource that represents an external bank account. You can use transfer instruments to send funds to and receive funds from bank accounts outside of your platform. These transfers can be generated by [managed](/platforms/managed-payouts) or [custom](/platforms/custom-payouts/scheduled-payouts) payout schedules, or [on-demand](/platforms/custom-payouts/on-demand-payouts). There are two main types of transfer instruments: * **Your users' bank accounts**: These are the bank accounts of the [account holders](/platforms/manage-account-holders/) on your platform. * **Your payout accounts**: These are your own company's bank accounts that you add to your platform. Adyen uses these accounts to settle funds to you. In an Adyen for Platforms integration, these are the transfer instruments that are connected to your liable account. This page explains how to create, view, update, and delete transfer instruments for your users using the API, and how to manage your platform's payout accounts in the Customer Area. ## Requirements | Requirement | Description | | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Integration type** | Adyen for platforms | | **[API credential roles](/development-resources/api-credentials/roles/)** | Make sure that you have a **Legal Entity Management** web service user with the following roles- **Manage LegalEntities via API** - **Balance Platform BCL Legal Entity role** | | **[Customer Area roles](/account/user-roles)** | Make sure that you have the following role:- **Manage account holders & legal entities** | ## Manage transfer instruments with the API Use the [Legal Entity Management API](https://docs.adyen.com/api-explorer/legalentity/latest/overview) to manage the transfer instruments that belong to you users or your platform. With the API you can: * [Create a transfer instrument](#create-a-transfer-instrument) * [View transfer instruments](#view-transfer-instruments) * [Update a transfer instrument](#update-a-transfer-instrument) * [Delete a transfer instrument](#delete-a-transfer-instrument) ## Create a transfer instrument To create a transfer instrument: 1. Make a POST [/transferInstruments](https://docs.adyen.com/api-explorer/legalentity/latest/post/transferInstruments) request specifying the following: | Parameter | Required | Description | | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities#request-type) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Set to **bankAccount**. | | [legalEntityId](https://docs.adyen.com/api-explorer/legalentity/latest/post/transferInstruments#request-legalEntityId) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Unique identifier of the legal entity that has the contractual relationship with your platform and owns the bank account. For sole proprietorships, this is the legal entity ID of the individual owner. | | [bankAccount](https://docs.adyen.com/api-explorer/legalentity/latest/post/transferInstruments#request-bankAccount) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Object that contains required information about the legal entity's bank account. The required parameters of this object depend on the location of your bank. Refer to [accountIdentification](https://docs.adyen.com/api-explorer/legalentity/latest/post/transferInstruments#request-bankAccount-accountIdentification) in the API Explorer to confirm which parameters are valid for each location. | Here is an example request to add a transfer instrument for a bank account in the US: **Create a bank account as a transfer instrument** #### curl ```bash curl https://kyc-test.adyen.com/lem/v3/transferInstruments \ -H 'x-api-key: ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "legalEntityId":"LE00000000000000000000001", "type":"bankAccount", "bankAccount":{ "accountIdentification":{ "type":"usLocal", "accountNumber":"0000000123", "routingNumber":"121202211" } } }' ``` #### Java ```java // Adyen Java API Library v39.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.legalentitymanagement.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.service.legalEntityManagement.*; Client client = new Client("ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment.TEST); // Create the request object(s) USLocalAccountIdentification uSLocalAccountIdentification = new USLocalAccountIdentification() .routingNumber("121202211") .type(USLocalAccountIdentification.TypeEnum.USLOCAL) .accountNumber("0000000123"); BankAccountInfo bankAccountInfo = new BankAccountInfo() .accountIdentification(new TransferInstrumentInfoAccountIdentification(uSLocalAccountIdentification)); TransferInstrumentInfo transferInstrumentInfo = new TransferInstrumentInfo() .bankAccount(bankAccountInfo) .legalEntityId("LE00000000000000000000001") .type(TransferInstrumentInfo.TypeEnum.BANKACCOUNT); // Send the request TransferInstrumentsApi service = new TransferInstrumentsApi(client); TransferInstrument response = service.createTransferInstrument(transferInstrumentInfo, null); ``` #### PHP ```php setXApiKey("ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY"); $client->setEnvironment(Environment::TEST); // Create the request object(s) $transferInstrumentInfoAccountIdentification = new TransferInstrumentInfoAccountIdentification(); $transferInstrumentInfoAccountIdentification ->setRoutingNumber("121202211") ->setType("usLocal") ->setAccountNumber("0000000123"); $bankAccountInfo = new BankAccountInfo(); $bankAccountInfo ->setAccountIdentification($transferInstrumentInfoAccountIdentification); $transferInstrumentInfo = new TransferInstrumentInfo(); $transferInstrumentInfo ->setBankAccount($bankAccountInfo) ->setLegalEntityId("LE00000000000000000000001") ->setType("bankAccount"); // Send the request $service = new TransferInstrumentsApi($client); $response = $service->createTransferInstrument($transferInstrumentInfo); ``` #### C\# ```cs // Adyen .net API Library v32.0.1 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.LegalEntityManagement; using Adyen.Service.LegalEntityManagement; var config = new Config() { XApiKey = "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Create the request object(s) USLocalAccountIdentification uSLocalAccountIdentification = new USLocalAccountIdentification { RoutingNumber = "121202211", Type = USLocalAccountIdentification.TypeEnum.UsLocal, AccountNumber = "0000000123" }; BankAccountInfo bankAccountInfo = new BankAccountInfo { AccountIdentification = new TransferInstrumentInfoAccountIdentification(uSLocalAccountIdentification) }; TransferInstrumentInfo transferInstrumentInfo = new TransferInstrumentInfo { BankAccount = bankAccountInfo, LegalEntityId = "LE00000000000000000000001", Type = TransferInstrumentInfo.TypeEnum.BankAccount }; // Send the request var service = new TransferInstrumentsService(client); var response = service.CreateTransferInstrument(transferInstrumentInfo); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v28.0.0 const { Client, LegalEntityManagementAPI } = require('@adyen/api-library'); const client = new Client({ apiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", environment: "TEST" }); // Create the request object(s) const transferInstrumentInfo = { legalEntityId: "LE00000000000000000000001", type: "bankAccount", bankAccount: { accountIdentification: { type: "usLocal", accountNumber: "0000000123", routingNumber: "121202211" } } } // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.TransferInstrumentsApi.createTransferInstrument(transferInstrumentInfo); ``` #### Go ```go // Adyen Go API Library v21.0.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/legalEntityManagement" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) uSLocalAccountIdentification := legalEntityManagement.USLocalAccountIdentification{ RoutingNumber: "121202211", Type: "usLocal", AccountNumber: "0000000123", } bankAccountInfo := legalEntityManagement.BankAccountInfo{ AccountIdentification: legalEntityManagement.USLocalAccountIdentificationAsTransferInstrumentInfoAccountIdentification(&uSLocalAccountIdentification), } transferInstrumentInfo := legalEntityManagement.TransferInstrumentInfo{ BankAccount: bankAccountInfo, LegalEntityId: "LE00000000000000000000001", Type: "bankAccount", } // Send the request service := client.LegalEntityManagement() req := service.TransferInstrumentsApi.CreateTransferInstrumentInput().TransferInstrumentInfo(transferInstrumentInfo) res, httpRes, err := service.TransferInstrumentsApi.CreateTransferInstrument(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v13.5.1 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY" adyen.client.platform = "test" # The environment to use library in. # Create the request object(s) json_request = { "legalEntityId": "LE00000000000000000000001", "type": "bankAccount", "bankAccount": { "accountIdentification": { "type": "usLocal", "accountNumber": "0000000123", "routingNumber": "121202211" } } } # Send the request result = adyen.legalEntityManagement.transfer_instruments_api.create_transfer_instrument(request=json_request) ``` #### Ruby ```rb # Adyen Ruby API Library v10.3.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' adyen.env = :test # Set to "live" for live environment # Create the request object(s) request_body = { :legalEntityId => 'LE00000000000000000000001', :type => 'bankAccount', :bankAccount => { :accountIdentification => { :type => 'usLocal', :accountNumber => '0000000123', :routingNumber => '121202211' } } } # Send the request result = adyen.legalEntityManagement.transfer_instruments_api.create_transfer_instrument(request_body) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v28.0.0 import { Client, LegalEntityManagementAPI, Types } from "@adyen/api-library"; const client = new Client({ apiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", environment: "TEST" }); // Create the request object(s) const uSLocalAccountIdentification: Types.legalEntityManagement.USLocalAccountIdentification = { routingNumber: "121202211", type: Types.legalEntityManagement.USLocalAccountIdentification.TypeEnum.UsLocal, accountNumber: "0000000123" }; const bankAccountInfo: Types.legalEntityManagement.BankAccountInfo = { accountIdentification: uSLocalAccountIdentification }; const transferInstrumentInfo: Types.legalEntityManagement.TransferInstrumentInfo = { bankAccount: bankAccountInfo, legalEntityId: "LE00000000000000000000001", type: Types.legalEntityManagement.TransferInstrumentInfo.TypeEnum.BankAccount }; // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.TransferInstrumentsApi.createTransferInstrument(transferInstrumentInfo); ``` 2. Read the response. It contains the transfer instrument resource, identified by its unique `id`. **Response** ```json { "bankAccount": { "accountIdentification": { "type": "usLocal", "accountNumber": "0000000123", "accountType": "checking", "routingNumber": "121202211" }, "countryCode": "US", "trustedSource": false }, "legalEntityId": "LE00000000000000000000001", "type": "bankAccount", "capabilities": { "sendToTransferInstrument": { "allowed": false, "requested": true, "verificationStatus": "pending" } }, "id": "SE322JV223222F5GJVKHH8DTC" } ``` 3. Look for [problems](https://docs.adyen.com/api-explorer/legalentity/latest/patch/transferInstruments/\(id\)#responses-200-problems) in the response. The `problems` array contains information about which bank account verifications had issues. See [Remediating actions](/marketplaces/kyc-verification-codes/remediating-actions/#bank-checks) for a list of possible remediating action codes and what they mean. The result is a new transfer instrument with a unique ID. Use this ID to [create a sweep](/platforms/custom-payouts/scheduled-payouts), or as a target for a [manual transfer](/platforms/custom-payouts/on-demand-payouts). ## View transfer instruments To view transfer instrument details: 1. Make a GET [/transferInstruments/{id}](https://docs.adyen.com/api-explorer/legalentity/latest/get/transferInstruments/\(id\)) specifying unique `transferInstrumentId` of the transfer instrument you want to view. | Path parameter | Required | Description | | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [/transferInstruments/{id}](https://docs.adyen.com/api-explorer/legalentity/latest/get/transferInstruments/\(id\)) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique identifier of the transfer instrument to retrieve. | **GET /transferInstruments** #### curl ```bash curl https://kyc-test.adyen.com/lem/v4/transferInstruments/{id} \ -H 'x-api-key: ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' \ -H 'content-type: application/json' \ -X GET ``` #### Java ```java // Adyen Java API Library v39.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.legalentitymanagement.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.service.legalEntityManagement.*; Client client = new Client("ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment.TEST); // Send the request TransferInstrumentsApi service = new TransferInstrumentsApi(client); TransferInstrument response = service.getTransferInstrument("id", null); ``` #### PHP ```php setXApiKey("ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY"); $client->setEnvironment(Environment::TEST); // Send the request $service = new TransferInstrumentsApi($client); $response = $service->getTransferInstrument('id'); ``` #### C\# ```cs // Adyen .net API Library v32.0.1 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.LegalEntityManagement; using Adyen.Service.LegalEntityManagement; var config = new Config() { XApiKey = "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Send the request var service = new TransferInstrumentsService(client); var response = service.GetTransferInstrument("id"); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v28.0.0 const { Client, LegalEntityManagementAPI } = require('@adyen/api-library'); const client = new Client({ apiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", environment: "TEST" }); // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.TransferInstrumentsApi.getTransferInstrument("id"); ``` #### Go ```go // Adyen Go API Library v21.0.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/legalEntityManagement" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment: common.TestEnv, }) // Send the request service := client.LegalEntityManagement() req := service.TransferInstrumentsApi.GetTransferInstrumentInput("id") res, httpRes, err := service.TransferInstrumentsApi.GetTransferInstrument(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v13.5.1 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY" adyen.client.platform = "test" # The environment to use library in. # Send the request result = adyen.legalEntityManagement.transfer_instruments_api.get_transfer_instrument(id="id") ``` #### Ruby ```rb # Adyen Ruby API Library v10.3.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' adyen.env = :test # Set to "live" for live environment # Send the request result = adyen.legalEntityManagement.transfer_instruments_api.get_transfer_instrument('id') ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v28.0.0 import { Client, LegalEntityManagementAPI, Types } from "@adyen/api-library"; const client = new Client({ apiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", environment: "TEST" }); // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.TransferInstrumentsApi.getTransferInstrument("id"); ``` 2. Read the response. A successful response, indicated by a 200 HTTP reponse code, contains the transfer instrument object with information about the bank account, such as the account number, account holder name, and verification status. **Example GET /transferInstruments response** ```json { "bankAccount": { "accountIdentification": { "type": "iban", "iban": "NL62ABNA0000000123" }, "countryCode": "NL" }, "legalEntityId": "LE00000000000000000000001", "type": "bankAccount", "id": "SE322KH223222F5GXZFNM3BGP" } ``` ## Update a transfer instrument To update a transfer instrument: 1. Make a PATCH [/transferInstruments/{id}](https://docs.adyen.com/api-explorer/legalentity/latest/patch/transferInstruments/\(id\)) specifying the unique `transferInstrumentId` of the account you want to update. Only provide values for the fields you want to modify. If you are updating the `bankAccount` object, check [accountIdentification](https://docs.adyen.com/api-explorer/legalentity/latest/post/transferInstruments#request-bankAccount-accountIdentification) in the API Explorer to confirm which parameters are valid for each location. | Parameter | Required | Description | | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [/transferInstruments/{id}](https://docs.adyen.com/api-explorer/legalentity/latest/patch/transferInstruments/\(id\)) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique identifier of the transfer instrument to update. | The following example shows how to update the bank account with a new IBAN. **Change the bank account for a transfer instrument** #### curl ```bash curl https://kyc-test.adyen.com/lem/v4/transferInstruments/{id} \ -X PATCH \ -H 'X-API-Key: YOUR_API_KEY' \ -H 'Content-Type: application/json' \ -d '{ "bankAccount": { "accountIdentification": { "type": "iban", "iban": "NL62ABNA0000000456" } } }' ``` #### Java ```java // Adyen Java API Library v39.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.legalentitymanagement.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.service.legalEntityManagement.*; Client client = new Client("YOUR_API_KEY", Environment.TEST); // Create the request object(s) IbanAccountIdentification ibanAccountIdentification = new IbanAccountIdentification() .iban("NL62ABNA0000000456") .type(IbanAccountIdentification.TypeEnum.IBAN); BankAccountInfo bankAccountInfo = new BankAccountInfo() .accountIdentification(new TransferInstrumentInfoAccountIdentification(ibanAccountIdentification)); TransferInstrumentInfo transferInstrumentInfo = new TransferInstrumentInfo() .bankAccount(bankAccountInfo); // Send the request TransferInstrumentsApi service = new TransferInstrumentsApi(client); TransferInstrument response = service.updateTransferInstrument("id", transferInstrumentInfo, null); ``` #### PHP ```php setXApiKey("YOUR_API_KEY"); $client->setEnvironment(Environment::TEST); // Create the request object(s) $transferInstrumentInfoAccountIdentification = new TransferInstrumentInfoAccountIdentification(); $transferInstrumentInfoAccountIdentification ->setIban("NL62ABNA0000000456") ->setType("iban"); $bankAccountInfo = new BankAccountInfo(); $bankAccountInfo ->setAccountIdentification($transferInstrumentInfoAccountIdentification); $transferInstrumentInfo = new TransferInstrumentInfo(); $transferInstrumentInfo ->setBankAccount($bankAccountInfo); // Send the request $service = new TransferInstrumentsApi($client); $response = $service->updateTransferInstrument('id', $transferInstrumentInfo); ``` #### C\# ```cs // Adyen .net API Library v32.0.1 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.LegalEntityManagement; using Adyen.Service.LegalEntityManagement; var config = new Config() { XApiKey = "YOUR_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Create the request object(s) IbanAccountIdentification ibanAccountIdentification = new IbanAccountIdentification { Iban = "NL62ABNA0000000456", Type = IbanAccountIdentification.TypeEnum.Iban }; BankAccountInfo bankAccountInfo = new BankAccountInfo { AccountIdentification = new TransferInstrumentInfoAccountIdentification(ibanAccountIdentification) }; TransferInstrumentInfo transferInstrumentInfo = new TransferInstrumentInfo { BankAccount = bankAccountInfo }; // Send the request var service = new TransferInstrumentsService(client); var response = service.UpdateTransferInstrument("id", transferInstrumentInfo); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v28.0.0 const { Client, LegalEntityManagementAPI } = require('@adyen/api-library'); const client = new Client({ apiKey: "YOUR_API_KEY", environment: "TEST" }); // Create the request object(s) const transferInstrumentInfo = { bankAccount: { accountIdentification: { type: "iban", iban: "NL62ABNA0000000456" } } } // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.TransferInstrumentsApi.updateTransferInstrument("id", transferInstrumentInfo); ``` #### Go ```go // Adyen Go API Library v21.0.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/legalEntityManagement" ) client := adyen.NewClient(&common.Config{ ApiKey: "YOUR_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) ibanAccountIdentification := legalEntityManagement.IbanAccountIdentification{ Iban: "NL62ABNA0000000456", Type: "iban", } bankAccountInfo := legalEntityManagement.BankAccountInfo{ AccountIdentification: legalEntityManagement.IbanAccountIdentificationAsTransferInstrumentInfoAccountIdentification(&ibanAccountIdentification), } transferInstrumentInfo := legalEntityManagement.TransferInstrumentInfo{ BankAccount: bankAccountInfo, } // Send the request service := client.LegalEntityManagement() req := service.TransferInstrumentsApi.UpdateTransferInstrumentInput("id").TransferInstrumentInfo(transferInstrumentInfo) res, httpRes, err := service.TransferInstrumentsApi.UpdateTransferInstrument(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v13.5.1 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "YOUR_API_KEY" adyen.client.platform = "test" # The environment to use library in. # Create the request object(s) json_request = { "bankAccount": { "accountIdentification": { "type": "iban", "iban": "NL62ABNA0000000456" } } } # Send the request result = adyen.legalEntityManagement.transfer_instruments_api.update_transfer_instrument(request=json_request, id="id") ``` #### Ruby ```rb # Adyen Ruby API Library v10.3.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'YOUR_API_KEY' adyen.env = :test # Set to "live" for live environment # Create the request object(s) request_body = { :bankAccount => { :accountIdentification => { :type => 'iban', :iban => 'NL62ABNA0000000456' } } } # Send the request result = adyen.legalEntityManagement.transfer_instruments_api.update_transfer_instrument(request_body, 'id') ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v28.0.0 import { Client, LegalEntityManagementAPI, Types } from "@adyen/api-library"; const client = new Client({ apiKey: "YOUR_API_KEY", environment: "TEST" }); // Create the request object(s) const ibanAccountIdentification: Types.legalEntityManagement.IbanAccountIdentification = { iban: "NL62ABNA0000000456", type: Types.legalEntityManagement.IbanAccountIdentification.TypeEnum.Iban }; const bankAccountInfo: Types.legalEntityManagement.BankAccountInfo = { accountIdentification: ibanAccountIdentification }; const transferInstrumentInfo: Types.legalEntityManagement.TransferInstrumentInfo = { bankAccount: bankAccountInfo }; // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.TransferInstrumentsApi.updateTransferInstrument("id", transferInstrumentInfo); ``` 2. Read the response. A successful response, indicated by a 200 http response code, contains the complete, updated transfer instrument object. **Example PATCH /transferInstruments response** ```json { "bankAccount": { "accountIdentification": { "type": "iban", "iban": "NL62ABNA0000000456" }, "countryCode": "NL" }, "legalEntityId": "LE00000000000000000000001", "type": "bankAccount", "id": "SE322KH223222F5GXZFNM3BGP" } ``` 3. Look for [problems](https://docs.adyen.com/api-explorer/legalentity/latest/patch/transferInstruments/\(id\)#responses-200-problems) in the response. The `problems` array contains information about which bank account verifications had issues. See [Remediating actions](/marketplaces/kyc-verification-codes/remediating-actions/#bank-checks) for a list of possible remediating action codes and what they mean. The result is an updated bank account that has the same transfer instrument ID. This means that payout schedules and transfer requests that target the existing ID still work as expected. ## Delete a transfer instrument To delete a transfer instrument, make a DELETE request to the [/transferInstruments/{id}](https://docs.adyen.com/api-explorer/legalentity/latest/delete/transferInstruments/\(id\)) endpoint. | Parameter | Required | Description | | --------- | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | id | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique identifier of the transfer instrument to be deleted. | Here is an example request to delete a transfer instrument: **DELETE /transferInstruments** #### curl ```bash curl https://kyc-test.adyen.com/lem/v4/transferInstruments/{id} \ -H 'x-api-key: YOUR_API_KEY' \ -H 'content-type: application/json' \ -X DELETE ``` #### Java ```java // Adyen Java API Library v39.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.service.legalEntityManagement.*; Client client = new Client("YOUR_API_KEY", Environment.TEST); // Send the request TransferInstrumentsApi service = new TransferInstrumentsApi(client); service.deleteTransferInstrument("id", null); ``` #### PHP ```php setXApiKey("YOUR_API_KEY"); $client->setEnvironment(Environment::TEST); // Send the request $service = new TransferInstrumentsApi($client); $service->deleteTransferInstrument('id'); ``` #### C\# ```cs // Adyen .net API Library v32.0.1 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Service.LegalEntityManagement; var config = new Config() { XApiKey = "YOUR_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Send the request var service = new TransferInstrumentsService(client); service.DeleteTransferInstrument("id"); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v28.0.0 const { Client, LegalEntityManagementAPI } = require('@adyen/api-library'); const client = new Client({ apiKey: "YOUR_API_KEY", environment: "TEST" }); // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); legalEntityManagementAPI.TransferInstrumentsApi.deleteTransferInstrument("id"); ``` #### Go ```go // Adyen Go API Library v21.0.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/legalEntityManagement" ) client := adyen.NewClient(&common.Config{ ApiKey: "YOUR_API_KEY", Environment: common.TestEnv, }) // Send the request service := client.LegalEntityManagement() req := service.TransferInstrumentsApi.DeleteTransferInstrumentInput("id") service.TransferInstrumentsApi.DeleteTransferInstrument(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v13.5.1 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "YOUR_API_KEY" adyen.client.platform = "test" # The environment to use library in. # Send the request adyen.legalEntityManagement.transfer_instruments_api.delete_transfer_instrument(id="id") ``` #### Ruby ```rb # Adyen Ruby API Library v10.3.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'YOUR_API_KEY' adyen.env = :test # Set to "live" for live environment # Send the request adyen.legalEntityManagement.transfer_instruments_api.delete_transfer_instrument('id') ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v28.0.0 import { Client, LegalEntityManagementAPI, Types } from "@adyen/api-library"; const client = new Client({ apiKey: "YOUR_API_KEY", environment: "TEST" }); // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); legalEntityManagementAPI.TransferInstrumentsApi.deleteTransferInstrument("id"); ``` You cannot undo a delete request. If you need the same account added back, [create a new transfer instrument](#create-a-transfer-instrument). Any future scheduled or on-demand payouts that use the deleted ID will fail. ## Payout accounts Your platform's payout accounts are transfer instruments that are connected to your liable account. Adyen uses these payout accounts to settle funds to your company's bank accounts. This account is typically set up for you when you get started with Adyen. You can create multiple payout accounts for your platform. When you need to make changes to your payout accounts, you can [use the Customer Area](#manage-payout-accounts) or [use the API](#manage-transfer-instruments-with-the-api). The Customer Area is only available to manage your platform's payout accounts, not your users' transfer instruments. ### Add a payout account in the Customer Area You can create payout accounts for your company in the Customer Area. Use this to create your first payout account, or add payout accounts in additional currencies. To add a payout account: 1. Log in to your [Customer Area](https://ca-test.adyen.com/). 2. Navigate to **Finance > Payout accounts** 3. Select **Add payout account**. 4. Select your prefered verification method to either log in to your bank, or enter it manually alongside a bank statement Adyen makes the payout account available as soon as it passes verification. If you logged in with your bank, verification happens instantly. You can use the payout account when its status is **valid**. ### Edit or remove a payout account in the Customer Area To manage your payout accounts: 1. Log in to your [Customer Area](https://ca-test.adyen.com/). 2. Navigate to **Finance > Payout accounts** 3. Find the payout account you want to change and select the **Remove** or **Edit** from the dropdown. Edits to transfer instruments take effect instantly. When you delete a transfer instrument, it stops receiving payouts. If you need restore the same account, [create a new transfer instrument](#add-a-payout-account). [Scheduled](/payouts/payout-service/getting-paid/scheduled-payouts) or [on-demand](/payouts/payout-service/getting-paid/on-demand-payouts) payouts that use the deleted ID will fail. You cannot undo the deletion of a transfer instrument. If you want to rotate payout accounts, [add the new transfer instrument](#add-a-payout-account) first. Then, update the managed/custom payout schedule or on-demand payouts that used the old transfer instrument ID. Finally, after you verify the new transfer instrument is receiving funds, delete the old one. ## See also * [Manage legal entities](/platforms/manage-legal-entities) * [Manage balance accounts](/platforms/manage-balance-accounts) * [Pay out to your users](/platforms/managed-payouts) * [Top up balance accounts](/platforms/top-up-balance-account)