--- title: "Assign terminals" description: "Assign your terminals using our Management API." url: "https://docs.adyen.com/point-of-sale/automating-terminal-management/assign-terminals-api" source_url: "https://docs.adyen.com/point-of-sale/automating-terminal-management/assign-terminals-api.md" canonical: "https://docs.adyen.com/point-of-sale/automating-terminal-management/assign-terminals-api" last_modified: "2026-05-25T12:55:00+02:00" language: "en" --- # Assign terminals Assign your terminals using our Management API. [View source](/point-of-sale/automating-terminal-management/assign-terminals-api.md) To enable taking payments on a payment terminal, the first step is to reassign the terminal from its initial account level and status to a level and status that allows boarding. Then the terminal needs to be boarded. You can [reassign your terminals manually](/point-of-sale/managing-terminals/assign-terminals/) in your [Customer Area](https://ca-test.adyen.com/), but Management API enables you to automate the reassignment. Support for the "classic" POS Terminal Management API has stopped. To automate assigning terminals, you must use Management API. ## Requirements Before you begin, take into account the following requirements and limitations. | Requirement | Description | | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Integration type** | A point-of-sale integration with Adyen. | | **[API credentials](/development-resources/api-credentials)** | You must have an API credential with an API key and specific [roles](/development-resources/api-credentials#api-permissions) depending on the task.- To get the store details: **Management API—Stores read** or **Management API—Stores read and write** - To get the terminal details: **Management API—Terminal actions read** - To assign terminals: **Management API—Assign Terminal** If you have a Terminal API integration with [cloud-based communications](/point-of-sale/design-your-integration/choose-your-architecture#cloud-communications), you can use the existing API key that you use for Terminal API requests. | | **[Webhooks](/development-resources/webhooks)** | Subscribe to [Terminal assignment complete](#assignment-complete-notification) webhooks. | | **Limitations** | Requests to live Management API endpoints related to assigning terminals are subject to [rate limits](/point-of-sale/automating-terminal-management#rate-limits-in-the-live-environment). | ## Account level and status of terminals When (re)assigning terminals, you need to be aware of the following: * A terminal is always assigned to a level in your account setup: Company account, merchant account, or store. Note that some account setups do not have a store level and instead use merchant accounts to represent stores. * A terminal has a status: * **inventory**: The terminal is in inventory and cannot process transactions. * **reassignmentInProgress**: A request to change the assignment of the terminal is being processed. * **deployed**: The terminal has been reassigned and is ready for boarding. * **boarded**: The terminal is boarded to a store, or to a merchant account representing a store, and can process transactions. A new terminal is pre-assigned to the company or merchant account that the terminal was ordered for, and has the **inventory** status. To be able to process transactions, you reassign the terminal to a store, and then board the terminal. Or in an account setup that uses merchant accounts to represent stores, your reassignment to a merchant account needs to explicitly take the terminal out of the **inventory** status, and then you board the terminal. ## Get a list of stores To [reassign](#assign-terminals) terminals to a specific store, you need to know the ID of the store. To find the store ID: 1. Make a GET [/merchants/{merchantId}/stores](https://docs.adyen.com/api-explorer/Management/latest/get/merchants/\(merchantId\)/stores) request, specifying path and query parameters: | Path parameter | Required | Description | | -------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------- | | `merchantId` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique identifier of the merchant account. | | Query parameter | Required | Description | | ------------------------------------------------------------------------------------------------------------------------ | -------- | -------------------------------------------------------------------------------------- | | [reference](https://docs.adyen.com/api-explorer/Management/latest/post/stores#request-reference) | | The reference of the store. | | [pageSize](https://docs.adyen.com/api-explorer/Management/latest/get/merchants/\(merchantId\)/stores#query-pageSize) | | The number of items to have on a page, maximum 100. The default is 10 items on a page. | | [pageNumber](https://docs.adyen.com/api-explorer/Management/latest/get/merchants/\(merchantId\)/stores#query-pageNumber) | | The number of the page to fetch. | **Get the stores under a merchant account** #### curl ```bash curl https://management-test.adyen.com/v3/merchants/{merchantId}/stores \ -H 'x-API-key: ADYEN_API_KEY' \ -X GET ``` #### Java ```java // Adyen Java API Library v25.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.service.management.*; Client client = new Client("ADYEN_API_KEY", Environment.TEST); // Make the request AccountStoreLevelApi service = new AccountStoreLevelApi(client); ListStoresResponse response = service.listStoresByMerchantId("merchantId", 1, 1, "String", null); ``` #### PHP ```php // Adyen PHP API Library v17.4.0 use Adyen\Client; use Adyen\Environment; use Adyen\Service\Management\AccountStoreLevelApi; $client = new Client(); $client->setXApiKey("ADYEN_API_KEY"); $client->setEnvironment(Environment::TEST); $requestOptions['queryParams'] = array('pageNumber' => 'integer', 'pageSize' => 'integer', 'reference' => 'string'); // Make the request $service = new AccountStoreLevelApi($client); $response = $service->listStoresByMerchantId('merchantId', $requestOptions); ``` #### C\# ```cs // Adyen .net API Library v14.3.0 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Service.Management; var config = new Config() { XApiKey = "ADYEN_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Make the request var service = new AccountStoreLevelService(client); var response = service.ListStoresByMerchantId("merchantId", pageNumber: 1, pageSize: 1, reference: "string"); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v16.2.0 // Require the parts of the module you want to use const { Client, ManagementAPI } = require('@adyen/api-library'); // Initialize the client object const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Make the request const managementAPI = new ManagementAPI(client); const response = managementAPI.AccountStoreLevelApi.listStoresByMerchantId("merchantId", 1, 1, "string"); ``` #### Go ```go // Adyen Go API Library v9.2.0 import ( "context" "github.com/adyen/adyen-go-api-library/v9/src/common" "github.com/adyen/adyen-go-api-library/v9/src/adyen" "github.com/adyen/adyen-go-api-library/v9/src/management" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_API_KEY", Environment: common.TestEnv, }) // Make the request service := client.Management() req := service.AccountStoreLevelApi.ListStoresByMerchantIdInput("merchantId") req = req.PageNumber(1).PageSize(1).Reference("string")res, httpRes, err := service.AccountStoreLevelApi.ListStoresByMerchantId(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v12.2.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_API_KEY" adyen.client.platform = "test" # The environment to use library in. query_parameters = { "pageNumber" : "integer", "pageSize" : "integer", "reference" : "string" } result = adyen.management.account_store_level_api.list_stores_by_merchant_id(merchantId="merchantId", query_parameters=query_parameters) ``` #### Ruby ```rb # Adyen Ruby API Library v9.2.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_API_KEY' adyen.env = :test # Set to "live" for live environment query_params = { :pageNumber => 'integer', :pageSize => 'integer', :reference => 'string' } result = adyen.management.account_store_level_api.list_stores_by_merchant_id('merchantId', query_params: query_params) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v16.2.0 // Require the parts of the module you want to use import { Client, ManagementAPI, Types } from "@adyen/api-library"; // Initialize the client object const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Make the request const managementAPI = new ManagementAPI(client); const response = managementAPI.AccountStoreLevelApi.listStoresByMerchantId("merchantId", 1, 1, "string"); ``` The response returns a paginated list of stores for the specified merchant account. 2. From the response, save the `storeId` of the store that you want to assign terminals to. You need to specify that ID when you [assign terminals](#assign-terminals) to that store. **List of stores** ```json { "_links":{ "first":{ "href":"https://management-test.adyen.com/v3/merchants/ADYEN_MERCHANT_ACCOUNT_ID/stores?pageNumber=1&pageSize=1" }, "last":{ "href":"https://management-test.adyen.com/v3/merchants/ADYEN_MERCHANT_ACCOUNT_ID/stores?pageNumber=2&pageSize=1" }, "next":{ "href":"https://management-test.adyen.com/v3/merchants/ADYEN_MERCHANT_ACCOUNT_ID/stores?pageNumber=2&pageSize=1" }, "self":{ "href":"https://management-test.adyen.com/v3/merchants/ADYEN_MERCHANT_ACCOUNT_ID/stores?pageNumber=1&pageSize=1" } }, "itemsTotal":2, "pagesTotal":1, "data":[ { "storeId":"ST322LJ223223K5F4SQNR9XL5", "address":{ "city":"Springfield", "country":"US", "line1":"200 Main Street", "line2":"Building 5A", "line3":"Suite 3", "postalCode":"20250", "stateOrProvince":"NY" }, "description":"City centre store", "merchantId":"ADYEN_MERCHANT_ACCOUNT_ID", "phoneNumber":"+1813702551707653", "reference":"Springfield Shop", "status":"active", "_links":{ "self":{ "href":"https://management-test.adyen.com/v3/stores/ST322LJ223223K5F4SQNR9XL5" } } }, { "storeId":"ST322LJ223223K5F4SQNR9XL6", "address":{ "city":"North Madison", "country":"US", "line1":"1492 Townline Road", "line2":"Rowland Business Park", "postalCode":"20577", "stateOrProvince":"NY" }, "description":"West location", "merchantId":"ADYEN_MERCHANT_ACCOUNT_ID", "phoneNumber":"+1211992213193020", "reference":"Second Madison store", "status":"active", "_links":{ "self":{ "href":"https://management-test.adyen.com/v3/stores/ST322LJ223223K5F4SQNR9XL6" } } } ] } ``` ## Get terminal details To [reassign](#assign-terminals) a terminal, you need to know the ID of the terminal. To find the terminal ID and other details like the account level to which the terminal is currently assigned: 1. Make a GET [/terminals](https://docs.adyen.com/api-explorer/Management/latest/get/terminals) request. **Get the details of your terminals** #### curl ```bash curl https://management-test.adyen.com/v3/terminals \ -H 'x-API-key: ADYEN_API_KEY' \ -X GET ``` #### Java ```java // Adyen Java API Library v25.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.service.management.*; Client client = new Client("ADYEN_API_KEY", Environment.TEST); // Make the request TerminalsTerminalLevelApi service = new TerminalsTerminalLevelApi(client); ListTerminalsResponse response = service.listTerminals("String", "String", "String", "String", "String", "String", 1, 1, null); ``` #### PHP ```php // Adyen PHP API Library v17.4.0 use Adyen\Client; use Adyen\Environment; use Adyen\Service\Management\TerminalsTerminalLevelApi; $client = new Client(); $client->setXApiKey("ADYEN_API_KEY"); $client->setEnvironment(Environment::TEST); $requestOptions['queryParams'] = array('searchQuery' => 'string', 'otpQuery' => 'string', 'countries' => 'string', 'merchantIds' => 'string', 'storeIds' => 'string', 'brandModels' => 'string', 'pageNumber' => 'integer', 'pageSize' => 'integer'); // Make the request $service = new TerminalsTerminalLevelApi($client); $response = $service->listTerminals($requestOptions); ``` #### C\# ```cs // Adyen .net API Library v14.3.0 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Service.Management; var config = new Config() { XApiKey = "ADYEN_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Make the request var service = new TerminalsTerminalLevelService(client); var response = service.ListTerminals(searchQuery: "string", otpQuery: "string", countries: "string", merchantIds: "string", storeIds: "string", brandModels: "string", pageNumber: 1, pageSize: 1); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v16.2.0 // Require the parts of the module you want to use const { Client, ManagementAPI } = require('@adyen/api-library'); // Initialize the client object const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Make the request const managementAPI = new ManagementAPI(client); const response = managementAPI.TerminalsTerminalLevelApi.listTerminals("string", "string", "string", "string", "string", "string", 1, 1); ``` #### Go ```go // Adyen Go API Library v9.2.0 import ( "context" "github.com/adyen/adyen-go-api-library/v9/src/common" "github.com/adyen/adyen-go-api-library/v9/src/adyen" "github.com/adyen/adyen-go-api-library/v9/src/management" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_API_KEY", Environment: common.TestEnv, }) // Make the request service := client.Management() req := service.TerminalsTerminalLevelApi.ListTerminalsInput() req = req.SearchQuery("string").OtpQuery("string").Countries("string").MerchantIds("string").StoreIds("string").BrandModels("string").PageNumber(1).PageSize(1)res, httpRes, err := service.TerminalsTerminalLevelApi.ListTerminals(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v12.2.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_API_KEY" adyen.client.platform = "test" # The environment to use library in. query_parameters = { "searchQuery" : "string", "otpQuery" : "string", "countries" : "string", "merchantIds" : "string", "storeIds" : "string", "brandModels" : "string", "pageNumber" : "integer", "pageSize" : "integer" } result = adyen.management.terminals_terminal_level_api.list_terminals(query_parameters=query_parameters) ``` #### Ruby ```rb # Adyen Ruby API Library v9.2.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_API_KEY' adyen.env = :test # Set to "live" for live environment query_params = { :searchQuery => 'string', :otpQuery => 'string', :countries => 'string', :merchantIds => 'string', :storeIds => 'string', :brandModels => 'string', :pageNumber => 'integer', :pageSize => 'integer' } result = adyen.management.terminals_terminal_level_api.list_terminals(query_params: query_params) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v16.2.0 // Require the parts of the module you want to use import { Client, ManagementAPI, Types } from "@adyen/api-library"; // Initialize the client object const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Make the request const managementAPI = new ManagementAPI(client); const response = managementAPI.TerminalsTerminalLevelApi.listTerminals("string", "string", "string", "string", "string", "string", 1, 1); ``` The response returns a paginated list of terminals that your API credential has access to. 2. From the response, save the `id` of the terminal that you want to assign to a specific account level. The response returns the following details for each terminal: | Response parameter | Description | | ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | [assignment](https://docs.adyen.com/api-explorer/Management/latest/get/terminals#responses-200-data-assignment) | An object with:- `companyId`: the unique identifier of the company account to which terminal is assigned. - `merchantId`: the unique identifier of the merchant account to which terminal is assigned. - `reassignmentTarget`: indicates where the terminal is in the process of being reassigned to. - `status`: the status of the reassignment. - `storeId`: the unique identifier of the store to which the terminal is assigned. | | [connectivity](https://docs.adyen.com/api-explorer/Management/latest/get/terminals#responses-200-data-connectivity) | Information about bluetooth, cellular, ethernet, and Wi-Fi connectivity for the terminal. | | [firmwareVersion](https://docs.adyen.com/api-explorer/Management/latest/get/terminals#responses-200-data-firmwareVersion) | The software release currently in use on the terminal. | | [id](https://docs.adyen.com/api-explorer/Management/latest/get/terminals#responses-200-data-id) | The unique identifier of the terminal. | | [lastActivityAt](https://docs.adyen.com/api-explorer/Management/latest/get/terminals#responses-200-data-lastActivityAt) | The date and time of the last activity on the terminal. Not included when the last activity was more than 14 days ago. | | [lastTransactionAt](https://docs.adyen.com/api-explorer/Management/latest/get/terminals#responses-200-data-lastTransactionAt) | The date and time of the last transaction on the terminal. Not included when the last transaction was more than 14 days ago. | | [model](https://docs.adyen.com/api-explorer/Management/latest/get/terminals#responses-200-data-model) | The model name of the terminal. | | [serialNumber](https://docs.adyen.com/api-explorer/Management/latest/get/terminals#responses-200-data-serialNumber) | The serial number of the terminal. | **List of terminals** ```json { "_links": { "first": { "href": "https://management-test.adyen.com/v3/terminals?pageNumber=1&pageSize=20" }, "last": { "href": "https://management-test.adyen.com/v3/terminals?pageNumber=1&pageSize=20" }, "next": { "href": "https://management-test.adyen.com/v3/terminals?pageNumber=1&pageSize=20" }, "self": { "href": "https://management-test.adyen.com/v3/terminals?pageNumber=0&pageSize=20" } }, "itemsTotal": 3, "pagesTotal": 1, "data": [ { "id": "AMS1-000150183300032", "model": "AMS1", "serialNumber": "000150183300032", "firmwareVersion": "Castles_Android 1.89.4", "assignment": { "companyId": "ADYEN_COMPANY_ACCOUNT", "merchantId": "ADYEN_MERCHANT_ACCOUNT", "storeId": "YOUR_STORE_ID", "status": "reassignmentInProgress", "reassignmentTarget": { "inventory": true } }, "connectivity": { "cellular": { "iccid": "6006491286999921374" }, "wifi": { "ipAddress": "198.51.100.1", "macAddress": "C4:6E:33:26:36:E4" } } }, { "id": "S1EL-000158204503066", "model": "S1EL", "serialNumber": "000158204503066", "firmwareVersion": "Castles_Android 1.94.5", "assignment": { "companyId": "ADYEN_COMPANY_ACCOUNT", "merchantId": "ADYEN_MERCHANT_ACCOUNT", "storeId": "YOUR_STORE_ID", "status": "boarded" }, "connectivity": { "cellular": { "iccid": "6006491286999921374" }, "wifi": { "ipAddress": "198.51.100.2", "macAddress": "C4:41:37:33:E5:0F" } } }, { "id": "V400m-347353332", "model": "V400m", "serialNumber": "347-353-332", "firmwareVersion": "Verifone_VOS 1.94.4", "assignment": { "companyId": "ADYEN_COMPANY_ACCOUNT", "merchantId": "ADYEN_MERCHANT_ACCOUNT", "storeId": "YOUR_STORE_ID", "status": "boarded" }, "connectivity": { "bluetooth": { "macAddress": "a4:60:11:af:79:76" }, "cellular": { "iccid": "6006491286999921374" }, "ethernet": { "macAddress": "a4:60:11:61:e4:c9" }, "wifi": { "ipAddress": "198.51.100.3", "macAddress": "d0:17:69:7c:02:4d", "ssid": "YOUR_WIFI" } } } ] } ``` ## Reassign terminals To enable taking payments on a payment terminal, you need to reassign the terminal from its initial account level and status to a level and status that allows boarding. Then you need to [board the terminal](/point-of-sale/managing-terminals/board-terminal/). 1. Prepare for assigning terminals: * Make sure you know the ID of the terminal that you want to reassign. See [Get terminal details](#get-terminal-details). * If you are going to reassign the terminal to a store, make sure you know the ID of the store. See [Get a list of stores](#get-stores). 2. Make a POST [/terminals/{terminalId}/reassign](https://docs.adyen.com/api-explorer/Management/latest/post/terminals/\(terminalId\)/reassign) request, specifying path and request body parameters: | Path parameter | Required | Description | | -------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | | `terminalId` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique identifier of the payment terminal in the format *\[Device model]-\[Serial number]*. | | Body parameter | Required | Description | | -------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `companyId` | | The unique identifier of the company account. | | `merchantId` | | The unique identifier of the merchant account. When reassigning terminals to a merchant account, you must also specify the `inventory` field. | | `inventory` | | Required when reassigning a terminal to a merchant account.- If **true**, the terminal is assigned to the inventory of the merchant account and cannot process transactions. - If **false**, the terminal is taken out of the inventory and can be boarded. | | `storeId` | | The unique identifier of the store. | **Reassign a terminal to your store** #### curl ```bash curl https://management-test.adyen.com/v3/terminals/AMS1-000150183300032/reassign \ -H 'x-API-key: ADYEN_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "storeId": "YOUR_STORE_ID" }' ``` #### Java ```java // Adyen Java API Library v25.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.management.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.service.management.*; Client client = new Client("ADYEN_API_KEY", Environment.TEST); // Request objects TerminalReassignmentRequest terminalReassignmentRequest = new TerminalReassignmentRequest() .storeId("YOUR_STORE_ID"); // Make the request TerminalsTerminalLevelApi service = new TerminalsTerminalLevelApi(client); service.reassignTerminal("terminalId", terminalReassignmentRequest, null); ``` #### PHP ```php // Adyen PHP API Library v17.4.0 use Adyen\Client; use Adyen\Environment; use Adyen\Model\Management\TerminalReassignmentRequest; use Adyen\Service\Management\TerminalsTerminalLevelApi; $client = new Client(); $client->setXApiKey("ADYEN_API_KEY"); $client->setEnvironment(Environment::TEST); // Request objects $terminalReassignmentRequest = new TerminalReassignmentRequest(); $terminalReassignmentRequest ->setStoreId("YOUR_STORE_ID"); // Make the request $service = new TerminalsTerminalLevelApi($client); $service->reassignTerminal('terminalId', $terminalReassignmentRequest); ``` #### C\# ```cs // Adyen .net API Library v14.3.0 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.Management; using Adyen.Service.Management; var config = new Config() { XApiKey = "ADYEN_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Fill in your request objects TerminalReassignmentRequest terminalReassignmentRequest = new TerminalReassignmentRequest { StoreId = "YOUR_STORE_ID" }; // Make the request var service = new TerminalsTerminalLevelService(client); service.ReassignTerminal("terminalId", terminalReassignmentRequest); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v16.2.0 // Require the parts of the module you want to use const { Client, ManagementAPI } = require('@adyen/api-library'); // Initialize the client object const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Create the request object const terminalReassignmentRequest = { storeId: "YOUR_STORE_ID" } // Make the request const managementAPI = new ManagementAPI(client); managementAPI.TerminalsTerminalLevelApi.reassignTerminal("terminalId", terminalReassignmentRequest); ``` #### Go ```go // Adyen Go API Library v9.2.0 import ( "context" "github.com/adyen/adyen-go-api-library/v9/src/common" "github.com/adyen/adyen-go-api-library/v9/src/adyen" "github.com/adyen/adyen-go-api-library/v9/src/management" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_API_KEY", Environment: common.TestEnv, }) // Fill in your request objects terminalReassignmentRequest := management.TerminalReassignmentRequest{ StoreId: common.PtrString("YOUR_STORE_ID"), } // Make the request service := client.Management() req := service.TerminalsTerminalLevelApi.ReassignTerminalInput("terminalId").TerminalReassignmentRequest(terminalReassignmentRequest) service.TerminalsTerminalLevelApi.ReassignTerminal(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v12.2.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_API_KEY" adyen.client.platform = "test" # The environment to use library in. json_request = { "storeId": "YOUR_STORE_ID" } adyen.management.terminals_terminal_level_api.reassign_terminal(request=json_request, terminalId="terminalId") ``` #### Ruby ```rb # Adyen Ruby API Library v9.2.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_API_KEY' adyen.env = :test # Set to "live" for live environment request_body = { :storeId => 'YOUR_STORE_ID' } adyen.management.terminals_terminal_level_api.reassign_terminal(request_body, 'terminalId') ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v16.2.0 // Require the parts of the module you want to use import { Client, ManagementAPI, Types } from "@adyen/api-library"; // Initialize the client object const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Create the request objects const terminalReassignmentRequest: Types.management.TerminalReassignmentRequest = { storeId: "YOUR_STORE_ID" }; // Make the request const managementAPI = new ManagementAPI(client); managementAPI.TerminalsTerminalLevelApi.reassignTerminal("terminalId", terminalReassignmentRequest); ``` **Reassign a terminal to your merchant account** #### curl ```bash curl https://management-test.adyen.com/v3/terminals/AMS1-000150183300032/reassign \ -H 'x-API-key: ADYEN_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "merchantId": "YOUR_MERCHANT_ID", "inventory": "false" }' ``` #### Java ```java // Adyen Java API Library v25.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.management.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.service.management.*; Client client = new Client("ADYEN_API_KEY", Environment.TEST); // Request objects TerminalReassignmentRequest terminalReassignmentRequest = new TerminalReassignmentRequest() .merchantId("YOUR_MERCHANT_ID") .inventory(false); // Make the request TerminalsTerminalLevelApi service = new TerminalsTerminalLevelApi(client); service.reassignTerminal("terminalId", terminalReassignmentRequest, null); ``` #### PHP ```php // Adyen PHP API Library v17.4.0 use Adyen\Client; use Adyen\Environment; use Adyen\Model\Management\TerminalReassignmentRequest; use Adyen\Service\Management\TerminalsTerminalLevelApi; $client = new Client(); $client->setXApiKey("ADYEN_API_KEY"); $client->setEnvironment(Environment::TEST); // Request objects $terminalReassignmentRequest = new TerminalReassignmentRequest(); $terminalReassignmentRequest ->setMerchantId("YOUR_MERCHANT_ID") ->setInventory(false); // Make the request $service = new TerminalsTerminalLevelApi($client); $service->reassignTerminal('terminalId', $terminalReassignmentRequest); ``` #### C\# ```cs // Adyen .net API Library v14.3.0 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.Management; using Adyen.Service.Management; var config = new Config() { XApiKey = "ADYEN_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Fill in your request objects TerminalReassignmentRequest terminalReassignmentRequest = new TerminalReassignmentRequest { MerchantId = "YOUR_MERCHANT_ID", Inventory = false }; // Make the request var service = new TerminalsTerminalLevelService(client); service.ReassignTerminal("terminalId", terminalReassignmentRequest); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v16.2.0 // Require the parts of the module you want to use const { Client, ManagementAPI } = require('@adyen/api-library'); // Initialize the client object const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Create the request object const terminalReassignmentRequest = { merchantId: "YOUR_MERCHANT_ID", inventory: "false" } // Make the request const managementAPI = new ManagementAPI(client); managementAPI.TerminalsTerminalLevelApi.reassignTerminal("terminalId", terminalReassignmentRequest); ``` #### Go ```go // Adyen Go API Library v9.2.0 import ( "context" "github.com/adyen/adyen-go-api-library/v9/src/common" "github.com/adyen/adyen-go-api-library/v9/src/adyen" "github.com/adyen/adyen-go-api-library/v9/src/management" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_API_KEY", Environment: common.TestEnv, }) // Fill in your request objects terminalReassignmentRequest := management.TerminalReassignmentRequest{ MerchantId: common.PtrString("YOUR_MERCHANT_ID"), Inventory: common.PtrBool(false), } // Make the request service := client.Management() req := service.TerminalsTerminalLevelApi.ReassignTerminalInput("terminalId").TerminalReassignmentRequest(terminalReassignmentRequest) service.TerminalsTerminalLevelApi.ReassignTerminal(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v12.2.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_API_KEY" adyen.client.platform = "test" # The environment to use library in. json_request = { "merchantId": "YOUR_MERCHANT_ID", "inventory": "False" } adyen.management.terminals_terminal_level_api.reassign_terminal(request=json_request, terminalId="terminalId") ``` #### Ruby ```rb # Adyen Ruby API Library v9.2.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_API_KEY' adyen.env = :test # Set to "live" for live environment request_body = { :merchantId => 'YOUR_MERCHANT_ID', :inventory => 'false' } adyen.management.terminals_terminal_level_api.reassign_terminal(request_body, 'terminalId') ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v16.2.0 // Require the parts of the module you want to use import { Client, ManagementAPI, Types } from "@adyen/api-library"; // Initialize the client object const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Create the request objects const terminalReassignmentRequest: Types.management.TerminalReassignmentRequest = { merchantId: "YOUR_MERCHANT_ID", inventory: false }; // Make the request const managementAPI = new ManagementAPI(client); managementAPI.TerminalsTerminalLevelApi.reassignTerminal("terminalId", terminalReassignmentRequest); ``` 3. Check that the response returns HTTP status code 200/OK. The request is processed asynchronously. When the terminal is online, it downloads and applies the new configuration. The terminal is then ready for [boarding](/point-of-sale/managing-terminals/board-terminal/). ## Terminal assignment complete webhooks In some cases, it is not possible to reassign a terminal immediately, and we schedule the assignment for later. To let you know when the reassignment is completed, we send you a [terminalAssignment.completed](https://docs.adyen.com/api-explorer/ManagementNotification/latest/post/terminalAssignment.completed) webhook message. This is sent as an HTTP callback to your server. To set up receiving these webhook messages, follow the [general instructions to set up webhooks](/development-resources/webhooks) but select **Terminal assignment complete** (not **Standard**) as the webhook type you want to add. After you set up the webhook type, you will receive **terminalAssignment.completed** webhook messages with: * The account (`assignedToAccount`) or store (`assignedToStore`) that the terminal is assigned to. * The date and time when the assignment was carried out. * The ID of the terminal involved. ```json { "assignedToAccount": "ADYEN_MERCHANT_ACCOUNT", "assignedToStore": "YOUR_STORE", "eventDate": "2020-06-03 22:42:13.840 CEST", "pspReference": "NO_PSP_REF_1591216933840470", "uniqueTerminalId": "V400m-324689776" } ``` ## See also * [Order terminals using API requests](/point-of-sale/automating-terminal-management/order-terminals-api) * [Configure terminals using API requests](/point-of-sale/automating-terminal-management/configure-terminals-api) * [Board the terminal](/point-of-sale/managing-terminals/board-terminal) * [Determine point-of-sale account structure](/point-of-sale/design-your-integration/determine-account-structure) * [Assign terminals in the Customer Area](/point-of-sale/managing-terminals/assign-terminals)