{"title":"Use API calls to configure terminals","category":"default","creationDate":1776961627,"content":"<p>The Management API lets you define payment terminal settings at various levels using API requests instead of the <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a>.<\/p>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirements, limitations, and preparations.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Requirement<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>Integration type<\/strong><\/td>\n<td style=\"text-align: left;\">A point-of-sale integration with Adyen.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/development-resources\/api-credentials\">API credentials<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">You must have an API credential with an API key and the following <a href=\"\/pt\/development-resources\/api-credentials#api-permissions\">roles<\/a>: <ul><li markdown=\"1\">Management API\u2014Terminal settings read<\/li> <li markdown=\"1\">Management API\u2014Terminal settings read and write<\/li> <li markdown=\"1\">For <a href=\"#sensitive-terminal-settings\">sensitive terminal settings<\/a>: Management API\u2014Terminal Advanced settings read and write<\/li><\/ul> <br>If you have a Terminal API integration with <a href=\"\/pt\/point-of-sale\/design-your-integration\/choose-your-architecture#cloud-communications\">cloud-based communications<\/a>, you can use the existing API key that you use for Terminal API requests.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\">Note the following: <ul><li markdown=\"1\">See the list of terminal setting that are <a href=\"#configurable-terminal-settings\">configurable<\/a> using the Management API.<\/li> <li markdown=\"1\">Requests to live Management API endpoints related to terminal settings are subject to <a href=\"\/pt\/point-of-sale\/automating-terminal-management#rate-limits-in-the-live-environment\">rate limits<\/a>.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Configurable terminal settings<\/h2>\n<p>You can define terminal settings by making API requests to the following endpoints on a company, merchant, store, or terminal level:<\/p>\n<ul>\n<li>Terminal logos are under a dedicated <code>\/terminalLogos<\/code> endpoint.<\/li>\n<li>The other settings are under a <code>\/terminalSettings<\/code> endpoint.<\/li>\n<\/ul>\n<p>Most settings from the following table link to the company account level as an example, but are also available on the other levels.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Settings object<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-signature-deviceName\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">deviceName<\/a><\/td>\n<td style=\"text-align: left;\">Custom name that is used to identify the terminal.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-cardholderReceipt\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">cardholderReceipt<\/a><\/td>\n<td style=\"text-align: left;\">Customize the structure of the header to show on the shopper receipt by defining the order of one or two header lines and blank lines. For example, <span translate=\"no\"><strong>header1,header2,filler<\/strong><\/span>. The text of the header lines is defined in the <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a> under <strong>In-person payments<\/strong> &gt; <strong>Terminal settings<\/strong> &gt; <strong>Receipts<\/strong> in the <strong>Receipt lines<\/strong> block.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/terminals\/(terminalId)\/terminalSettings#request-connectivity\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">connectivity<\/a><\/td>\n<td style=\"text-align: left;\"><code>simcardStatus<\/code>: activate the SIM card in a specific payment terminal. This setting is only available at the terminal level.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-gratuities\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">gratuities<\/a><\/td>\n<td style=\"text-align: left;\">Enable tipping from the terminal, and predefine tipping options.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-hardware\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">hardware<\/a><\/td>\n<td style=\"text-align: left;\"><code>displayMaximumBacklight<\/code>: set the brightness level of the terminal display.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-offlineProcessing\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">offlineProcessing<\/a><\/td>\n<td style=\"text-align: left;\">Set the chip floor limit and offline swipe limit for <a href=\"\/pt\/point-of-sale\/offline-payment#enabling-offline-payments\">offline EMV payments<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-opi\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">opi<\/a><\/td>\n<td style=\"text-align: left;\">For OPI integrations: enable Pay at Table and set the URL and store number for Pay at Table.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-receiptOptions\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">receiptOptions<\/a><\/td>\n<td style=\"text-align: left;\">Add your logo to the receipt. Specify data to print on the receipt as a QR code.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-receiptPrinting\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">receiptPrinting<\/a><\/td>\n<td style=\"text-align: left;\">Determine whether the terminal should print a merchant receipt and\/or a shopper receipt for certain transaction outcomes.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-signature\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">signature<\/a><\/td>\n<td style=\"text-align: left;\">Skip asking for a signature, considering that all global card schemes (American Express, China UnionPay, Diners, Discover, JCB, MasterCard, and Visa) regard a signature as optional.<br>Or if you do not want to skip asking for a signature: determine whether you want the shopper to sign on the terminal display or on the receipt.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-standalone\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">standalone<\/a><\/td>\n<td style=\"text-align: left;\">Set up the standalone feature and the default currency for payment terminals.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/_companyId_\/terminalSettings#request-storeAndForward\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">storeAndForward<\/a><\/td>\n<td style=\"text-align: left;\">Configure settings for <a href=\"\/pt\/point-of-sale\/offline-payment\/#types-of-offline-payment\">store and forward<\/a> offline payments.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-surcharge\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">surcharge<\/a><\/td>\n<td style=\"text-align: left;\">Configure passing on scheme fees as a <a href=\"\/pt\/point-of-sale\/surcharge\">surcharge<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/_companyId_\/terminalSettings#request-tapToPay\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">tapToPay<\/a><\/td>\n<td style=\"text-align: left;\">Configure settings for <a href=\"\/pt\/point-of-sale\/mobile-ios\/build\/tap-to-pay\/\">Tap to Pay<\/a>, for example the text shown on the screen of your mobile device. This setting is not available at the terminal level.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/_companyId_\/terminalSettings#request-terminalInstructions\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">terminalInstructions<\/a><\/td>\n<td style=\"text-align: left;\">Configure the behaviour of the payment terminal, for example when the configuration update happens.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-timeouts\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">timeouts<\/a><\/td>\n<td style=\"text-align: left;\">Set the amount of time after which the terminal goes to <a href=\"\/pt\/point-of-sale\/managing-terminals\/battery-management#sleep-mode\">sleep<\/a> due to inactivity.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalLogos#request-data\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">logos<\/a><\/td>\n<td style=\"text-align: left;\">Upload a logo to use as the terminal standby screen.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Sensitive terminal settings<\/h3>\n<p>Some terminal settings are considered sensitive because they can affect the Terminal API communications. Sensitive terminal settings are under a <code>\/terminalSettings<\/code> endpoint on a company, merchant, store, or terminal level.<\/p>\n<p>To authenticate your requests to these, you need to have the following <a href=\"\/pt\/development-resources\/api-credentials#api-permissions\">role<\/a>:<\/p>\n<ul>\n<li><strong>Management API\u2014Terminal Advanced settings read and write<\/strong><\/li>\n<\/ul>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Settings object<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-nexo\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">nexo<\/a><\/td>\n<td style=\"text-align: left;\">For local Terminal API integrations: specify event and display notifications URLs, and provide the key to secure local communications.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-passcodes\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">passcodes<\/a><\/td>\n<td style=\"text-align: left;\">Manage passcodes used to access payment terminal menus and features.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-wifiProfiles\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">wifiProfiles<\/a><\/td>\n<td style=\"text-align: left;\">Provide properties of the Wi-Fi network the terminal should connect to. The terminal will connect to this network after boarding.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>If you need to define more settings, you have to go through the <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a>.<\/p>\n<h2 id=\"inheritance\">Inheritance of settings<\/h2>\n<p>You can define terminal settings at different levels. From high to low:<\/p>\n<ul>\n<li>Company account level<\/li>\n<li>Merchant account level<\/li>\n<li>Store level<\/li>\n<li>Terminal level<\/li>\n<\/ul>\n<p>The top level, above the company level, is the Adyen level. This is known as the <em>PSP level<\/em>. You cannot define settings at PSP level.<\/p>\n<p>Settings at the company level apply to all terminals under the company. Settings at the merchant account level override settings inherited from the company level and apply to all terminals under the merchant account, and so on.<\/p>\n<p>In other words: settings defined at a certain level propagate to all terminals at and under that level. But settings defined at a lower level replace values inherited from a higher level.<\/p>\n<h2 id=\"view-current-settings\">Get current settings<\/h2>\n<p>To view the terminal configuration at a specific level:<\/p>\n<ol>\n<li>\n<p>Get the ID of the account, store, or terminal you want to configure terminal settings for. You need to specify that ID in the URL of later requests.<\/p>\n<ul>\n<li>For the company ID, make a GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/companies\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/companies<\/a> request.<\/li>\n<li>For the merchant ID, make a GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/merchants\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/merchants<\/a> request.<\/li>\n<li>For the store ID, make a GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/stores\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/stores<\/a> request or a GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/merchants\/(merchantId)\/stores\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/merchants\/{merchantId}\/stores<\/a> request.<\/li>\n<li>For the terminal ID, make a GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/terminals\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/terminals<\/a> request.<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Get merchant ID'\" :id=\"'get-merchant-id-9148482716'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/management-test.adyen.com\\\/v3\\\/merchants \\\\\\n-H 'x-API-key: ADYEN_API_KEY' \\\\\\n-X GET&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v25.0.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.service.management.*;\\n\\nClient client = new Client(\\&quot;ADYEN_API_KEY\\&quot;, Environment.TEST);\\n\\\/\\\/ Make the request\\nAccountMerchantLevelApi service = new AccountMerchantLevelApi(client);\\nListMerchantResponse response = service.listMerchantAccounts(1, 1, null);&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen PHP API Library v17.4.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Service\\\\Management\\\\AccountMerchantLevelApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_API_KEY\\&quot;);\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n$requestOptions['queryParams'] = array('pageNumber' =&gt; 'integer', 'pageSize' =&gt; 'integer');\\n\\n\\\/\\\/ Make the request\\n$service = new AccountMerchantLevelApi($client);\\n$response = $service-&gt;listMerchantAccounts($requestOptions);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .net API Library v14.3.0\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Service.Management;\\n\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Make the request\\nvar service = new AccountMerchantLevelService(client);\\nvar response = service.ListMerchantAccounts(pageNumber: 1, pageSize: 1);&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nconst { Client, ManagementAPI } = require('@adyen\\\/api-library');\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Make the request\\nconst managementAPI = new ManagementAPI(client);\\nconst response = managementAPI.AccountMerchantLevelApi.listMerchantAccounts(1, 1);&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v9.2.0\\nimport (\\n\\t\\&quot;context\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/common\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/adyen\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/management\\&quot;\\n)\\n\\nclient := adyen.NewClient(&amp;common.Config{\\n    ApiKey:      \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Make the request\\nservice := client.Management()\\nreq := service.AccountMerchantLevelApi.ListMerchantAccountsInput()\\nreq = req.PageNumber(1).PageSize(1)res, httpRes, err := service.AccountMerchantLevelApi.ListMerchantAccounts(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v12.2.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_API_KEY\\&quot;\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\nquery_parameters = {\\n  \\&quot;pageNumber\\&quot; : \\&quot;integer\\&quot;,\\n  \\&quot;pageSize\\&quot; : \\&quot;integer\\&quot;\\n}\\n\\nresult = adyen.management.account_merchant_level_api.list_merchant_accounts(query_parameters=query_parameters)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v9.2.0\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_API_KEY'\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\nquery_params = {\\n  :pageNumber =&gt; 'integer',\\n  :pageSize =&gt; 'integer'\\n}\\n\\nresult = adyen.management.account_merchant_level_api.list_merchant_accounts(query_params: query_params)&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nimport { Client, ManagementAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Make the request\\nconst managementAPI = new ManagementAPI(client);\\nconst response = managementAPI.AccountMerchantLevelApi.listMerchantAccounts(1, 1);&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p><strong>To retrieve the terminal logo<\/strong>, make a GET request to the <code>\/terminalLogos<\/code> endpoint for the account, store, or terminal. You can retrieve only one logo at a time. On the account or store level, you need to specify the terminal model as a query parameter. On the terminal level no model query parameter is needed because we can infer the model from the terminal ID in the URL.<\/p>\n<p>Use the following endpoints:<\/p>\n<ul>\n<li>GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/companies\/(companyId)\/terminalLogos\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/companies\/{companyId}\/terminalLogos?model={model}<\/a><\/li>\n<li>GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/merchants\/(merchantId)\/terminalLogos\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/merchants\/{merchantId}\/terminalLogos?model={model}<\/a><\/li>\n<li>GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/stores\/(storeId)\/terminalLogos\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/stores\/{storeId}\/terminalLogos?model={model}<\/a><\/li>\n<li>GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/terminals\/(terminalId)\/terminalLogos\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/terminals\/{terminalId}\/terminalLogos<\/a><\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Get merchant account logo for V400m terminal'\" :id=\"'get-merchant-level-logo-for-v400m-terminal-0140910523'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/management-test.adyen.com\\\/v3\\\/merchants\\\/{merchantId}\\\/terminalLogos?model=V400m \\\\\\n-H 'x-API-key: ADYEN_API_KEY' \\\\\\n-X GET&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v25.0.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.service.management.*;\\n\\nClient client = new Client(\\&quot;ADYEN_API_KEY\\&quot;, Environment.TEST);\\n\\\/\\\/ Make the request\\nTerminalSettingsMerchantLevelApi service = new TerminalSettingsMerchantLevelApi(client);\\nLogo response = service.getTerminalLogo(\\&quot;merchantId\\&quot;, \\&quot;String\\&quot;, null);&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen PHP API Library v17.4.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Service\\\\Management\\\\TerminalSettingsMerchantLevelApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_API_KEY\\&quot;);\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n$requestOptions['queryParams'] = array('model' =&gt; 'string');\\n\\n\\\/\\\/ Make the request\\n$service = new TerminalSettingsMerchantLevelApi($client);\\n$response = $service-&gt;getTerminalLogo('merchantId', $requestOptions);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .net API Library v14.3.0\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Service.Management;\\n\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Make the request\\nvar service = new TerminalSettingsMerchantLevelService(client);\\nvar response = service.GetTerminalLogo(\\&quot;merchantId\\&quot;, model: \\&quot;string\\&quot;);&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nconst { Client, ManagementAPI } = require('@adyen\\\/api-library');\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Make the request\\nconst managementAPI = new ManagementAPI(client);\\nconst response = managementAPI.TerminalSettingsMerchantLevelApi.getTerminalLogo(\\&quot;merchantId\\&quot;, \\&quot;string\\&quot;);&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v9.2.0\\nimport (\\n\\t\\&quot;context\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/common\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/adyen\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/management\\&quot;\\n)\\n\\nclient := adyen.NewClient(&amp;common.Config{\\n    ApiKey:      \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Make the request\\nservice := client.Management()\\nreq := service.TerminalSettingsMerchantLevelApi.GetTerminalLogoInput(\\&quot;merchantId\\&quot;)\\nreq = req.Model(\\&quot;string\\&quot;)res, httpRes, err := service.TerminalSettingsMerchantLevelApi.GetTerminalLogo(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v12.2.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_API_KEY\\&quot;\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\nquery_parameters = {\\n  \\&quot;model\\&quot; : \\&quot;string\\&quot;\\n}\\n\\nresult = adyen.management.terminal_settings_merchant_level_api.get_terminal_logo(merchantId=\\&quot;merchantId\\&quot;, query_parameters=query_parameters)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v9.2.0\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_API_KEY'\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\nquery_params = {\\n  :model =&gt; 'string'\\n}\\n\\nresult = adyen.management.terminal_settings_merchant_level_api.get_terminal_logo('merchantId', query_params: query_params)&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nimport { Client, ManagementAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Make the request\\nconst managementAPI = new ManagementAPI(client);\\nconst response = managementAPI.TerminalSettingsMerchantLevelApi.getTerminalLogo(\\&quot;merchantId\\&quot;, \\&quot;string\\&quot;);&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>When you receive the response, Base64-decode the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/merchants\/(merchantId)\/terminalLogos#responses-200-data\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">data<\/a> string to get the image file of the logo.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Response showing current logo'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"data\\\": \\\"R0lGODlh...AAAcDgH+BADs=\\\"\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p><strong>To retrieve the other terminal settings<\/strong> (except the logo), make a GET request to the <code>\/terminalSettings<\/code> endpoint for the account, store, or terminal.<\/p>\n<p>Use the following endpoints:<\/p>\n<ul>\n<li>GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/companies\/(companyId)\/terminalSettings\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/companies\/{companyId}\/terminalSettings<\/a><\/li>\n<li>GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/merchants\/(merchantId)\/terminalSettings\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/merchants\/{merchantId}\/terminalSettings<\/a><\/li>\n<li>GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/stores\/(storeId)\/terminalSettings\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/stores\/{storeId}\/terminalSettings<\/a><\/li>\n<li>GET  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/terminals\/(terminalId)\/terminalSettings\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/terminals\/{terminalId}\/terminalSettings<\/a><\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Get merchant account terminal settings'\" :id=\"'get-merchant-level-terminal-settings-8496373560'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/management-test.adyen.com\\\/v3\\\/merchants\\\/{merchantId}\\\/terminalSettings \\\\\\n-H 'x-API-key: ADYEN_API_KEY' \\\\\\n-X GET&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v25.0.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.service.management.*;\\n\\nClient client = new Client(\\&quot;ADYEN_API_KEY\\&quot;, Environment.TEST);\\n\\\/\\\/ Make the request\\nTerminalSettingsMerchantLevelApi service = new TerminalSettingsMerchantLevelApi(client);\\nTerminalSettings response = service.getTerminalSettings(\\&quot;merchantId\\&quot;, null);&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen PHP API Library v17.4.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Service\\\\Management\\\\TerminalSettingsMerchantLevelApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_API_KEY\\&quot;);\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n\\\/\\\/ Make the request\\n$service = new TerminalSettingsMerchantLevelApi($client);\\n$response = $service-&gt;getTerminalSettings('merchantId');&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .net API Library v14.3.0\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Service.Management;\\n\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Make the request\\nvar service = new TerminalSettingsMerchantLevelService(client);\\nvar response = service.GetTerminalSettings(\\&quot;merchantId\\&quot;);&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nconst { Client, ManagementAPI } = require('@adyen\\\/api-library');\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Make the request\\nconst managementAPI = new ManagementAPI(client);\\nconst response = managementAPI.TerminalSettingsMerchantLevelApi.getTerminalSettings(\\&quot;merchantId\\&quot;);&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v9.2.0\\nimport (\\n\\t\\&quot;context\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/common\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/adyen\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/management\\&quot;\\n)\\n\\nclient := adyen.NewClient(&amp;common.Config{\\n    ApiKey:      \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Make the request\\nservice := client.Management()\\nreq := service.TerminalSettingsMerchantLevelApi.GetTerminalSettingsInput(\\&quot;merchantId\\&quot;)\\nres, httpRes, err := service.TerminalSettingsMerchantLevelApi.GetTerminalSettings(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v12.2.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_API_KEY\\&quot;\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\nresult = adyen.management.terminal_settings_merchant_level_api.get_terminal_settings(merchantId=\\&quot;merchantId\\&quot;)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v9.2.0\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_API_KEY'\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\nresult = adyen.management.terminal_settings_merchant_level_api.get_terminal_settings('merchantId')&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nimport { Client, ManagementAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Make the request\\nconst managementAPI = new ManagementAPI(client);\\nconst response = managementAPI.TerminalSettingsMerchantLevelApi.getTerminalSettings(\\&quot;merchantId\\&quot;);&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The response returns the current configuration.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Response showing current settings'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"cardholderReceipt\\\":{\\n        \\\"headerForAuthorizedReceipt\\\":\\\"header1,header2,filler\\\"\\n    },\\n    \\\"gratuities\\\":[\\n        {\\n            \\\"currency\\\":\\\"EUR\\\",\\n            \\\"usePredefinedTipEntries\\\":true,\\n            \\\"predefinedTipEntries\\\":[\\n                \\\"100\\\",\\n                \\\"1%\\\",\\n                \\\"5%\\\"\\n            ],\\n            \\\"allowCustomAmount\\\":true\\n        }\\n    ],\\n    \\\"nexo\\\":{\\n        \\\"displayUrls\\\":{\\n            \\\"localUrls\\\":[\\n                {\\n                    \\\"password\\\":\\\"YOUR_PASSWORD\\\",\\n                    \\\"url\\\":\\\"https:\\\/\\\/your-display-notifications-endpoint.com\\\",\\n                    \\\"username\\\":\\\"USERNAME\\\"\\n                }\\n            ]\\n        },\\n        \\\"encryptionKey\\\":{\\n            \\\"identifier\\\":\\\"SHARED_KEY\\\",\\n            \\\"passphrase\\\":\\\"PASSPHRASE\\\",\\n            \\\"version\\\":1\\n        },\\n        \\\"eventUrls\\\":{\\n            \\\"eventPublicUrls\\\":[\\n                {\\n                    \\\"password\\\":\\\"YOUR_PASSWORD\\\",\\n                    \\\"url\\\":\\\"https:\\\/\\\/your-event-notifications-endpoint.com\\\",\\n                    \\\"username\\\":\\\"USERNAME\\\"\\n                }\\n            ]\\n        }\\n    },\\n    \\\"opi\\\":{\\n        \\\"enablePayAtTable\\\":true,\\n        \\\"payAtTableStoreNumber\\\":\\\"1\\\",\\n        \\\"payAtTableURL\\\":\\\"https:\\\/your-pay-at-table-endpoint.com\\\"\\n    },\\n    \\\"offlineProcessing\\\":{\\n        \\\"chipFloorLimit\\\":0\\n    },\\n    \\\"receiptOptions\\\":{\\n        \\\"qrCodeData\\\":\\\"http:\\\/\\\/www.example.com\\\/order\\\/${pspreference}\\\/${merchantreference}\\\"\\n    },\\n    \\\"receiptPrinting\\\":{\\n        \\\"shopperApproved\\\":true,\\n        \\\"shopperRefused\\\":true,\\n        \\\"shopperCancelled\\\":true,\\n        \\\"shopperRefundApproved\\\":true,\\n        \\\"shopperRefundRefused\\\":true,\\n        \\\"shopperVoid\\\":true\\n    },\\n    \\\"signature\\\":{\\n        \\\"askSignatureOnScreen\\\":true,\\n        \\\"skipSignature\\\":false,\\n        \\\"deviceName\\\":\\\"Amsterdam-236203386\\\"\\n    },\\n    \\\"wifiProfiles\\\":{\\n        \\\"profiles\\\":[\\n            {\\n                \\\"authType\\\":\\\"wpa-psk\\\",\\n                \\\"autoWifi\\\":false,\\n                \\\"bssType\\\":\\\"infra\\\",\\n                \\\"channel\\\":0,\\n                \\\"defaultProfile\\\":true,\\n                \\\"hiddenSsid\\\":false,\\n                \\\"name\\\":\\\"Guest Wi-Fi\\\",\\n                \\\"psk\\\":\\\"4R8R2R3V456X\\\",\\n                \\\"ssid\\\":\\\"G470P37660D4G\\\",\\n                \\\"wsec\\\":\\\"ccmp\\\"\\n            }\\n        ],\\n        \\\"settings\\\":{\\n            \\\"band\\\":\\\"All\\\",\\n            \\\"roaming\\\":true\\n        }\\n    },\\n    \\\"timeouts\\\":{\\n        \\\"fromActiveToSleep\\\":30\\n    },\\n    \\\"hardware\\\":{\\n        \\\"displayMaximumBackLight\\\":75\\n    },\\n    \\\"passcodes\\\":{\\n        \\\"adminMenuPin\\\":\\\"1234\\\",\\n        \\\"txMenuPin\\\":\\\"1234\\\",\\n        \\\"screenLockPin\\\":\\\"1234\\\"\\n    },\\n    \\\"storeAndForward\\\":{\\n        \\\"maxAmount\\\":[\\n            {\\n                \\\"amount\\\":10000,\\n                \\\"currencyCode\\\":\\\"EUR\\\"\\n            }\\n        ],\\n        \\\"maxPayments\\\":10,\\n        \\\"supportedCardTypes\\\":{\\n            \\\"credit\\\":true,\\n            \\\"debit\\\":true,\\n            \\\"deferredDebit\\\":true,\\n            \\\"prepaid\\\":true,\\n            \\\"unknown\\\":false\\n        }\\n    },\\n    \\\"terminalInstructions\\\":{\\n        \\\"adyenAppRestart\\\":true\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>\n<h2 id=\"update\">Update settings<\/h2>\n<p>Settings are parameters grouped in objects.<\/p>\n<ul>\n<li>To change a parameter value, include the full object that contains the parameter, even if you do not want to change all parameters in the object.<\/li>\n<li>To remove a parameter value at a certain level and restore the value inherited from the next higher level, include the full object that contains the parameter, and specify an empty value for the parameter or omit the parameter.<\/li>\n<li>Objects that are not included in the request are not updated.<\/li>\n<\/ul>\n<div class=\"notices yellow\">\n<p>If you omit a parameter from an object, that setting is removed.<\/p>\n<\/div>\n<p>In the next sections we describe how to:<\/p>\n<ul>\n<li><a href=\"#update-logo\">Specify or remove a terminal logo<\/a><\/li>\n<li><a href=\"#update-other-settings\">Specify or remove other terminal settings<\/a><\/li>\n<\/ul>\n<h3 id=\"update-logo\">Update terminal logo<\/h3>\n<ol>\n<li>\n<p>Make sure that you know:<\/p>\n<ul>\n<li>The <a href=\"#inheritance\">level<\/a> where you need to add or remove a logo to get the desired effect.<\/li>\n<li>The <a href=\"#view-current-settings\">current logo<\/a> at that level. When removing a logo, you also need to know the logo that will be inherited from the next higher level.<\/li>\n<li>\n<p>The terminal model that you want to change the logo for.<\/p>\n<!-- list separator -->\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>For a new logo, make sure the file matches the logo requirements for the terminal model, and convert the file to a Base64-encoded string.<\/p>\n<div class=\"sticky-table-container\">\n    \n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\"><code>model<\/code><\/th>\n<th style=\"text-align: left;\">Logo dimensions <br> width x height<\/th>\n<th style=\"text-align: left;\">File size<\/th>\n<th style=\"text-align: left;\">Supports GIF <br> BMP JPG JPEG PNG<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">AMS1<\/td>\n<td style=\"text-align: left;\">480 x 800<\/td>\n<td style=\"text-align: left;\">Max. 1 MB<\/td>\n<td style=\"text-align: left;\">GIF and PNG<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">E280<\/td>\n<td style=\"text-align: left;\">320 x 444<\/td>\n<td style=\"text-align: left;\">Max. 512 KB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">E285<\/td>\n<td style=\"text-align: left;\">240 x 284<\/td>\n<td style=\"text-align: left;\">Max. 512 KB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">E285p<\/td>\n<td style=\"text-align: left;\">240 x 284<\/td>\n<td style=\"text-align: left;\">Max. 512 KB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">E355<\/td>\n<td style=\"text-align: left;\">320 x 150<\/td>\n<td style=\"text-align: left;\">Validation on WxH<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">M400<\/td>\n<td style=\"text-align: left;\">854 x 432<\/td>\n<td style=\"text-align: left;\">Max. 512 KB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">MX925<\/td>\n<td style=\"text-align: left;\">800 x 443<\/td>\n<td style=\"text-align: left;\">Max. 500 KB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">P400Plus<\/td>\n<td style=\"text-align: left;\">320 x 450<\/td>\n<td style=\"text-align: left;\">Max. 512 KB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">S1E<\/td>\n<td style=\"text-align: left;\">720 x 1280<\/td>\n<td style=\"text-align: left;\">Max. 1 MB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">S1E2<\/td>\n<td style=\"text-align: left;\">720 x 1280<\/td>\n<td style=\"text-align: left;\">Max. 1 MB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">S1E2L<\/td>\n<td style=\"text-align: left;\">720 x 1280<\/td>\n<td style=\"text-align: left;\">Max. 1 MB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">S1EL<\/td>\n<td style=\"text-align: left;\">720 x 1280<\/td>\n<td style=\"text-align: left;\">Max. 1 MB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">S1F2<\/td>\n<td style=\"text-align: left;\">720 x 1280<\/td>\n<td style=\"text-align: left;\">Max. 1 MB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">S1F2L<\/td>\n<td style=\"text-align: left;\">720 x 1280<\/td>\n<td style=\"text-align: left;\">Max. 1 MB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">S1U<\/td>\n<td style=\"text-align: left;\">720 x 1280<\/td>\n<td style=\"text-align: left;\">Max. 1 MB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">V200cPlus<\/td>\n<td style=\"text-align: left;\">-<\/td>\n<td style=\"text-align: left;\">-<\/td>\n<td style=\"text-align: left;\">-<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">V240m<\/td>\n<td style=\"text-align: left;\">320 x 450<\/td>\n<td style=\"text-align: left;\">Max. 512 KB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">V240mPlus<\/td>\n<td style=\"text-align: left;\">320 x 450<\/td>\n<td style=\"text-align: left;\">Max. 512 KB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">V400cPlus<\/td>\n<td style=\"text-align: left;\">320 x 450<\/td>\n<td style=\"text-align: left;\">Max. 512 KB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">V400m<\/td>\n<td style=\"text-align: left;\">320 x 450<\/td>\n<td style=\"text-align: left;\">Max. 512 KB<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">VX680<\/td>\n<td style=\"text-align: left;\">240 x 200<\/td>\n<td style=\"text-align: left;\">Validation on WxH<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">VX690<\/td>\n<td style=\"text-align: left;\">240 x 200<\/td>\n<td style=\"text-align: left;\">Validation on WxH<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">VX820<\/td>\n<td style=\"text-align: left;\">240 x 200<\/td>\n<td style=\"text-align: left;\">Validation on WxH<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">UX300<\/td>\n<td style=\"text-align: left;\">128 x 42<\/td>\n<td style=\"text-align: left;\">Validation on WxH<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">UX301<\/td>\n<td style=\"text-align: left;\">128 x 42<\/td>\n<td style=\"text-align: left;\">Validation on WxH<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">UX410<\/td>\n<td style=\"text-align: left;\">128 x 42<\/td>\n<td style=\"text-align: left;\">Validation on WxH<\/td>\n<td style=\"text-align: left;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n<\/div>\n\n<div class=\"sc-notice info\"><div>\n<p>If the dimensions of the logo do not match the requirements:<\/p>\n<ul>\n<li>BMP, JPG, JPEG, or PNG files are resized.<\/li>\n<li>A GIF file is converted to a single-frame image.\n<\/div><\/div><\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Make a PATCH request to the <code>\/terminalLogos<\/code> endpoint for the account, store, or terminal. You can update only one logo at a time. On the account or store level, you need to specify the terminal model as a query parameter. On the terminal level no model query parameter is needed because we can infer the model from the terminal ID in the URL.<\/p>\n<p>Use the following endpoints:<\/p>\n<ul>\n<li>PATCH  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalLogos\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/companies\/{companyId}\/terminalLogos?model={model}<\/a><\/li>\n<li>PATCH  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/merchants\/(merchantId)\/terminalLogos\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/merchants\/{merchantId}\/terminalLogos?model={model}<\/a><\/li>\n<li>PATCH  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/stores\/(storeId)\/terminalLogos\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/stores\/{storeId}\/terminalLogos?model={model}<\/a><\/li>\n<li>PATCH  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/terminals\/(terminalId)\/terminalLogos\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/terminals\/{terminalId}\/terminalLogos<\/a><\/li>\n<\/ul>\n<p>The request body must contain:<\/p>\n<ul>\n<li> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/stores\/(storeId)\/terminalLogos#request-data\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">data<\/a>&#58; to upload a logo, specify the Base64-encoded string of the logo file. To remove a logo, specify an empty string.<\/li>\n<\/ul>\n<p>For example, to upload a new terminal logo for use in a store:<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Upload new store logo'\" :id=\"'upload-new-store-level-logo-1118290581'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/management-test.adyen.com\\\/v3\\\/stores\\\/{storeId}\\\/terminalLogos?model=V400m \\\\\\n-H 'x-API-key: ADYEN_API_KEY' \\\\\\n-X PATCH \\\\\\n-d '{\\n     \\&quot;data\\&quot;: \\&quot;Z3lFPDxt...AAAcDgH+BADs=\\&quot;\\n}'&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v25.0.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.model.management.*;\\nimport java.time.OffsetDateTime;\\nimport java.util.*;\\nimport com.adyen.service.management.*;\\n\\nClient client = new Client(\\&quot;ADYEN_API_KEY\\&quot;, Environment.TEST);\\n\\n\\\/\\\/ Request objects\\nLogo logo = new Logo()\\n\\t.data(\\&quot;Z3lFPDxt...AAAcDgH+BADs=\\&quot;);\\n\\n\\\/\\\/ Make the request\\nTerminalSettingsStoreLevelApi service = new TerminalSettingsStoreLevelApi(client);\\nLogo response = service.updateTerminalLogoByStoreId(\\&quot;storeId\\&quot;, logo, \\&quot;String\\&quot;, null);&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen PHP API Library v17.4.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Model\\\\Management\\\\Logo;\\nuse Adyen\\\\Service\\\\Management\\\\TerminalSettingsStoreLevelApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_API_KEY\\&quot;);\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n\\n\\\/\\\/ Request objects\\n$logo = new Logo();\\n$logo\\n\\t-&gt;setData(\\&quot;Z3lFPDxt...AAAcDgH+BADs=\\&quot;);\\n\\n$requestOptions['queryParams'] = array('model' =&gt; 'string');\\n\\n\\\/\\\/ Make the request\\n$service = new TerminalSettingsStoreLevelApi($client);\\n$response = $service-&gt;updateTerminalLogoByStoreId('storeId', $logo, $requestOptions);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .net API Library v14.3.0\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Model;\\nusing Adyen.Model.Management;\\nusing Adyen.Service.Management;\\n\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Fill in your request objects\\nLogo logo = new Logo\\n{\\n\\tData = \\&quot;Z3lFPDxt...AAAcDgH+BADs=\\&quot;\\n};\\n\\n\\\/\\\/ Make the request\\nvar service = new TerminalSettingsStoreLevelService(client);\\nvar response = service.UpdateTerminalLogoByStoreId(\\&quot;storeId\\&quot;, logo, model: \\&quot;string\\&quot;);&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nconst { Client, ManagementAPI } = require('@adyen\\\/api-library');\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Create the request object\\nconst logo = {\\n  data: \\&quot;Z3lFPDxt...AAAcDgH+BADs=\\&quot;\\n}\\n\\n\\\/\\\/ Make the request\\nconst managementAPI = new ManagementAPI(client);\\nconst response = managementAPI.TerminalSettingsStoreLevelApi.updateTerminalLogoByStoreId(\\&quot;storeId\\&quot;, logo, \\&quot;string\\&quot;);&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v9.2.0\\nimport (\\n\\t\\&quot;context\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/common\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/adyen\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/management\\&quot;\\n)\\n\\nclient := adyen.NewClient(&amp;common.Config{\\n    ApiKey:      \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Fill in your request objects\\nlogo := management.Logo{\\n\\tData: common.PtrString(\\&quot;Z3lFPDxt...AAAcDgH+BADs=\\&quot;),\\n}\\n\\n\\\/\\\/ Make the request\\nservice := client.Management()\\nreq := service.TerminalSettingsStoreLevelApi.UpdateTerminalLogoByStoreIdInput(\\&quot;storeId\\&quot;).Logo(logo)\\nreq = req.Model(\\&quot;string\\&quot;)res, httpRes, err := service.TerminalSettingsStoreLevelApi.UpdateTerminalLogoByStoreId(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v12.2.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_API_KEY\\&quot;\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\njson_request = {\\n  \\&quot;data\\&quot;: \\&quot;Z3lFPDxt...AAAcDgH+BADs=\\&quot;\\n}\\n\\nquery_parameters = {\\n  \\&quot;model\\&quot; : \\&quot;string\\&quot;\\n}\\n\\nresult = adyen.management.terminal_settings_store_level_api.update_terminal_logo_by_store_id(request=json_request, storeId=\\&quot;storeId\\&quot;, query_parameters=query_parameters)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v9.2.0\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_API_KEY'\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\nrequest_body = {\\n  :data =&gt; 'Z3lFPDxt...AAAcDgH+BADs='\\n}\\n\\nquery_params = {\\n  :model =&gt; 'string'\\n}\\n\\nresult = adyen.management.terminal_settings_store_level_api.update_terminal_logo_by_store_id(request_body, 'storeId', query_params: query_params)&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nimport { Client, ManagementAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Create the request objects\\nconst logo: Types.management.Logo = {\\n\\tdata: \\&quot;Z3lFPDxt...AAAcDgH+BADs=\\&quot;\\n};\\n\\n\\\/\\\/ Make the request\\nconst managementAPI = new ManagementAPI(client);\\nconst response = managementAPI.TerminalSettingsStoreLevelApi.updateTerminalLogoByStoreId(\\&quot;storeId\\&quot;, logo, \\&quot;string\\&quot;);&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The response returns the logo data at the level where you made the request.<\/p>\n<p>When you remove a terminal logo, the terminal inherits a logo from a higher level and the response returns that other logo. For example, let's assume you changed your mind and want to replace the store logo you just added with the logo defined at the merchant account level. You'd make a PATCH&nbsp;<code>merchants\/{merchantId}\/stores\/{storeId}\/terminalLogos?model={model}<\/code> request:<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Remove store logo'\" :id=\"'remove-store-level-logo-7458929115'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/management-test.adyen.com\\\/v3\\\/stores\\\/{storeId}\\\/terminalLogos?model=V400m \\\\\\n-H 'x-API-key: ADYEN_API_KEY' \\\\\\n-X PATCH \\\\\\n-d '{\\n     \\&quot;data\\&quot;: \\&quot;\\&quot;\\n}'&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v25.0.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.model.management.*;\\nimport java.time.OffsetDateTime;\\nimport java.util.*;\\nimport com.adyen.service.management.*;\\n\\nClient client = new Client(\\&quot;ADYEN_API_KEY\\&quot;, Environment.TEST);\\n\\n\\\/\\\/ Request objects\\nLogo logo = new Logo()\\n\\t.data(\\&quot;\\&quot;);\\n\\n\\\/\\\/ Make the request\\nTerminalSettingsStoreLevelApi service = new TerminalSettingsStoreLevelApi(client);\\nLogo response = service.updateTerminalLogoByStoreId(\\&quot;storeId\\&quot;, logo, \\&quot;String\\&quot;, null);&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen PHP API Library v17.4.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Model\\\\Management\\\\Logo;\\nuse Adyen\\\\Service\\\\Management\\\\TerminalSettingsStoreLevelApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_API_KEY\\&quot;);\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n\\n\\\/\\\/ Request objects\\n$logo = new Logo();\\n$logo\\n\\t-&gt;setData(\\&quot;\\&quot;);\\n\\n$requestOptions['queryParams'] = array('model' =&gt; 'string');\\n\\n\\\/\\\/ Make the request\\n$service = new TerminalSettingsStoreLevelApi($client);\\n$response = $service-&gt;updateTerminalLogoByStoreId('storeId', $logo, $requestOptions);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .net API Library v14.3.0\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Model;\\nusing Adyen.Model.Management;\\nusing Adyen.Service.Management;\\n\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Fill in your request objects\\nLogo logo = new Logo\\n{\\n\\tData = \\&quot;\\&quot;\\n};\\n\\n\\\/\\\/ Make the request\\nvar service = new TerminalSettingsStoreLevelService(client);\\nvar response = service.UpdateTerminalLogoByStoreId(\\&quot;storeId\\&quot;, logo, model: \\&quot;string\\&quot;);&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nconst { Client, ManagementAPI } = require('@adyen\\\/api-library');\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Create the request object\\nconst logo = {\\n  data: \\&quot;\\&quot;\\n}\\n\\n\\\/\\\/ Make the request\\nconst managementAPI = new ManagementAPI(client);\\nconst response = managementAPI.TerminalSettingsStoreLevelApi.updateTerminalLogoByStoreId(\\&quot;storeId\\&quot;, logo, \\&quot;string\\&quot;);&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v9.2.0\\nimport (\\n\\t\\&quot;context\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/common\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/adyen\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/management\\&quot;\\n)\\n\\nclient := adyen.NewClient(&amp;common.Config{\\n    ApiKey:      \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Fill in your request objects\\nlogo := management.Logo{\\n\\tData: common.PtrString(\\&quot;\\&quot;),\\n}\\n\\n\\\/\\\/ Make the request\\nservice := client.Management()\\nreq := service.TerminalSettingsStoreLevelApi.UpdateTerminalLogoByStoreIdInput(\\&quot;storeId\\&quot;).Logo(logo)\\nreq = req.Model(\\&quot;string\\&quot;)res, httpRes, err := service.TerminalSettingsStoreLevelApi.UpdateTerminalLogoByStoreId(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v12.2.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_API_KEY\\&quot;\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\njson_request = {\\n  \\&quot;data\\&quot;: \\&quot;\\&quot;\\n}\\n\\nquery_parameters = {\\n  \\&quot;model\\&quot; : \\&quot;string\\&quot;\\n}\\n\\nresult = adyen.management.terminal_settings_store_level_api.update_terminal_logo_by_store_id(request=json_request, storeId=\\&quot;storeId\\&quot;, query_parameters=query_parameters)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v9.2.0\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_API_KEY'\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\nrequest_body = {\\n  :data =&gt; ''\\n}\\n\\nquery_params = {\\n  :model =&gt; 'string'\\n}\\n\\nresult = adyen.management.terminal_settings_store_level_api.update_terminal_logo_by_store_id(request_body, 'storeId', query_params: query_params)&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nimport { Client, ManagementAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Create the request objects\\nconst logo: Types.management.Logo = {\\n\\tdata: \\&quot;\\&quot;\\n};\\n\\n\\\/\\\/ Make the request\\nconst managementAPI = new ManagementAPI(client);\\nconst response = managementAPI.TerminalSettingsStoreLevelApi.updateTerminalLogoByStoreId(\\&quot;storeId\\&quot;, logo, \\&quot;string\\&quot;);&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The response returns the logo inherited from a higher level:<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Response showing current logo'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"data\\\": \\\"R0lGODlh...AAAcDgH+BADs=\\\"\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>\n<h3 id=\"update-other-settings\">Update other settings<\/h3>\n<ol>\n<li>\n<p>Make sure that you know:<\/p>\n<ul>\n<li>The <a href=\"#inheritance\">level<\/a> where you need to add or remove settings to get the desired effect.<\/li>\n<li>\n<p>The <a href=\"#view-current-settings\">current settings<\/a> at that level. When removing settings, you also need to know the settings that will be inherited from the next higher level.<\/p>\n<!-- list separator -->\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>To update settings (except the terminal logo), make a PATCH request to the <code>\/terminalSettings<\/code> endpoint for the account, store, or terminal.<\/p>\n<p>Use the following endpoints:<\/p>\n<ul>\n<li>PATCH  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/companies\/{companyId}\/terminalSettings<\/a><\/li>\n<li>PATCH  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/merchants\/(merchantId)\/terminalSettings\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/merchants\/{merchantId}\/terminalSettings<\/a><\/li>\n<li>PATCH  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/stores\/(storeId)\/terminalSettings\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/stores\/{storeId}\/terminalSettings<\/a><\/li>\n<li>PATCH  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/terminals\/(terminalId)\/terminalSettings\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/terminals\/{terminalId}\/terminalSettings<\/a><\/li>\n<\/ul>\n<p>In the request body, specify the full objects for the settings that you want to change.<\/p>\n<div class=\"notices yellow\">\n<p>If you omit a parameter from an object, that setting is removed.<\/p>\n<\/div>\n<div class=\"notices green\">\n<p>Remote Wi-Fi profiles require many different parameters depending on the type or of network: Enterprise EAP-PEAP, Enterprise EAP-TLS, or Personal PSK. For details, see <a href=\"\/pt\/point-of-sale\/design-your-integration\/network-and-connectivity\/wi-fi-profiles#set-up-with-api\">Set up Wi-Fi profiles using API calls<\/a>.<\/p>\n<\/div>\n<p>The next example shows a request that does two things:<\/p>\n<ul>\n<li>You previously defined tipping settings for a store but now want to remove those and go back to the tipping settings from the merchant level.<\/li>\n<li>You want to change the <code>skipSignature<\/code> setting for the store from <span translate=\"no\"><strong>true<\/strong><\/span> to <span translate=\"no\"><strong>false<\/strong><\/span>.<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Update store settings'\" :id=\"'update-store-level-settings-2933334214'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/management-test.adyen.com\\\/v3\\\/stores\\\/{storeId}\\\/terminalSettings \\\\\\n-H 'x-API-key: ADYEN_API_KEY' \\\\\\n-X PATCH \\\\\\n-d '{\\n     \\&quot;gratuities\\&quot;: [\\n       {\\n         \\&quot;currency\\&quot;: \\&quot;\\&quot;,\\n         \\&quot;usePredefinedTipEntries\\&quot;: \\&quot;\\&quot;,\\n         \\&quot;predefinedTipEntries\\&quot;: [],\\n         \\&quot;allowCustomAmount\\&quot;: \\&quot;\\&quot;\\n       }\\n     ],\\n     \\&quot;signatureSettings\\&quot;: {\\n        \\&quot;askSignatureOnScreen\\&quot;: true,\\n        \\&quot;skipSignature\\&quot;: false,\\n        \\&quot;deviceName\\&quot;: \\&quot;Paris1-12\\&quot;\\n      }\\n}'&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v25.0.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.model.management.*;\\nimport java.time.OffsetDateTime;\\nimport java.util.*;\\nimport com.adyen.service.management.*;\\n\\nClient client = new Client(\\&quot;ADYEN_API_KEY\\&quot;, Environment.TEST);\\n\\n\\\/\\\/ Request objects\\nGratuity gratuity1 = new Gratuity()\\n\\t.predefinedTipEntries(Arrays.asList())\\n\\t.allowCustomAmount()\\n\\t.usePredefinedTipEntries()\\n\\t.currency(\\&quot;\\&quot;);\\n\\nTerminalSettings terminalSettings = new TerminalSettings()\\n\\t.gratuities(Arrays.asList(gratuity1));\\n\\n\\\/\\\/ Make the request\\nTerminalSettingsStoreLevelApi service = new TerminalSettingsStoreLevelApi(client);\\nTerminalSettings response = service.updateTerminalSettingsByStoreId(\\&quot;storeId\\&quot;, terminalSettings, null);&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen PHP API Library v17.4.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Model\\\\Management\\\\Gratuity;\\nuse Adyen\\\\Model\\\\Management\\\\TerminalSettings;\\nuse Adyen\\\\Service\\\\Management\\\\TerminalSettingsStoreLevelApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_API_KEY\\&quot;);\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n\\n\\\/\\\/ Request objects\\n$gratuity1 = new Gratuity();\\n$gratuity1\\n\\t-&gt;setPredefinedTipEntries(array())\\n\\t-&gt;setAllowCustomAmount()\\n\\t-&gt;setUsePredefinedTipEntries()\\n\\t-&gt;setCurrency(\\&quot;\\&quot;);\\n\\n$terminalSettings = new TerminalSettings();\\n$terminalSettings\\n\\t-&gt;setGratuities(array($gratuity1));\\n\\n\\\/\\\/ Make the request\\n$service = new TerminalSettingsStoreLevelApi($client);\\n$response = $service-&gt;updateTerminalSettingsByStoreId('storeId', $terminalSettings);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .net API Library v14.3.0\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Model;\\nusing Adyen.Model.Management;\\nusing Adyen.Service.Management;\\n\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Fill in your request objects\\nGratuity gratuity1 = new Gratuity\\n{\\n\\tPredefinedTipEntries = {  },\\n\\tAllowCustomAmount = ,\\n\\tUsePredefinedTipEntries = ,\\n\\tCurrency = \\&quot;\\&quot;\\n};\\n\\nTerminalSettings terminalSettings = new TerminalSettings\\n{\\n\\tGratuities = new List&lt;Gratuity&gt;{ gratuity1 }\\n};\\n\\n\\\/\\\/ Make the request\\nvar service = new TerminalSettingsStoreLevelService(client);\\nvar response = service.UpdateTerminalSettingsByStoreId(\\&quot;storeId\\&quot;, terminalSettings);&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nconst { Client, ManagementAPI } = require('@adyen\\\/api-library');\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Create the request object\\nconst terminalSettings = {\\n  gratuities: [ {\\n    currency: \\&quot;\\&quot;,\\n    usePredefinedTipEntries: \\&quot;\\&quot;,\\n    predefinedTipEntries: [ ],\\n    allowCustomAmount: \\&quot;\\&quot;\\n  } ],\\n  signatureSettings: {\\n    askSignatureOnScreen: true,\\n    skipSignature: false,\\n    deviceName: \\&quot;Paris1-12\\&quot;\\n  }\\n}\\n\\n\\\/\\\/ Make the request\\nconst managementAPI = new ManagementAPI(client);\\nconst response = managementAPI.TerminalSettingsStoreLevelApi.updateTerminalSettingsByStoreId(\\&quot;storeId\\&quot;, terminalSettings);&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v9.2.0\\nimport (\\n\\t\\&quot;context\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/common\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/adyen\\&quot;\\n\\t\\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v9\\\/src\\\/management\\&quot;\\n)\\n\\nclient := adyen.NewClient(&amp;common.Config{\\n    ApiKey:      \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Fill in your request objects\\ngratuity1 := management.Gratuity{\\n\\tPredefinedTipEntries: []string{\\n\\t\\t,\\n\\t},\\n\\tAllowCustomAmount: common.PtrBool(),\\n\\tUsePredefinedTipEntries: common.PtrBool(),\\n\\tCurrency: common.PtrString(\\&quot;\\&quot;),\\n}\\n\\nterminalSettings := management.TerminalSettings{\\n\\tGratuities: []management.Gratuity{\\n\\t\\t\\tgratuity1,\\n\\t},\\n}\\n\\n\\\/\\\/ Make the request\\nservice := client.Management()\\nreq := service.TerminalSettingsStoreLevelApi.UpdateTerminalSettingsByStoreIdInput(\\&quot;storeId\\&quot;).TerminalSettings(terminalSettings)\\nres, httpRes, err := service.TerminalSettingsStoreLevelApi.UpdateTerminalSettingsByStoreId(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v12.2.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_API_KEY\\&quot;\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\njson_request = {\\n  \\&quot;gratuities\\&quot;: [ {\\n    \\&quot;currency\\&quot;: \\&quot;\\&quot;,\\n    \\&quot;usePredefinedTipEntries\\&quot;: \\&quot;\\&quot;,\\n    \\&quot;predefinedTipEntries\\&quot;: [ ],\\n    \\&quot;allowCustomAmount\\&quot;: \\&quot;\\&quot;\\n  } ],\\n  \\&quot;signatureSettings\\&quot;: {\\n    \\&quot;askSignatureOnScreen\\&quot;: True,\\n    \\&quot;skipSignature\\&quot;: False,\\n    \\&quot;deviceName\\&quot;: \\&quot;Paris1-12\\&quot;\\n  }\\n}\\n\\nresult = adyen.management.terminal_settings_store_level_api.update_terminal_settings_by_store_id(request=json_request, storeId=\\&quot;storeId\\&quot;)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v9.2.0\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_API_KEY'\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\nrequest_body = {\\n  :gratuities =&gt; [ {\\n    :currency =&gt; '',\\n    :usePredefinedTipEntries =&gt; '',\\n    :predefinedTipEntries =&gt; [ ],\\n    :allowCustomAmount =&gt; ''\\n  } ],\\n  :signatureSettings =&gt; {\\n    :askSignatureOnScreen =&gt; true,\\n    :skipSignature =&gt; false,\\n    :deviceName =&gt; 'Paris1-12'\\n  }\\n}\\n\\nresult = adyen.management.terminal_settings_store_level_api.update_terminal_settings_by_store_id(request_body, 'storeId')&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v16.2.0\\n\\\/\\\/ Require the parts of the module you want to use\\nimport { Client, ManagementAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\n\\\/\\\/ Initialize the client object\\nconst client = new Client({apiKey: \\&quot;ADYEN_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot;});\\n\\n\\\/\\\/ Create the request objects\\nconst gratuity1: Types.management.Gratuity = {\\n\\tpredefinedTipEntries: [],\\n\\tallowCustomAmount: ,\\n\\tusePredefinedTipEntries: ,\\n\\tcurrency: \\&quot;\\&quot;\\n};\\n\\nconst terminalSettings: Types.management.TerminalSettings = {\\n\\tgratuities: [gratuity1]\\n};\\n\\n\\\/\\\/ Make the request\\nconst managementAPI = new ManagementAPI(client);\\nconst response = managementAPI.TerminalSettingsStoreLevelApi.updateTerminalSettingsByStoreId(\\&quot;storeId\\&quot;, terminalSettings);&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The response returns the entire configuration at the level where you made the request.<\/p>\n<\/li>\n<\/ol>\n<h2>When new settings take effect<\/h2>\n<p>The terminal downloads the configuration changes when it makes a maintenance call to our systems. This happens automatically every 180 minutes. The configuration changes then take effect when the terminal restarts. This happens automatically at the restart hour, which is usually set to 6:00 AM.<\/p>\n<p>To switch to the new passcode immediately, update the configuration on your terminal manually:<\/p>\n<ul>\n<li>\n<p>Go to <strong>Settings<\/strong> &gt; <strong>Configuration<\/strong>, enter your <a href=\"\/pt\/point-of-sale\/menu-access\/#manage-passcodes\">Admin &amp; Settings passcode<\/a> and select <strong>Update<\/strong>.<\/p>\n<\/li>\n<li>\n<p>For <em>non-Android terminals<\/em> that use the <a href=\"\/pt\/point-of-sale\/menu-access#old-menu-structure\">old menu structure<\/a>: go to the <a href=\"\/pt\/point-of-sale\/pos-troubleshooting\/terminal-turns-on\/admin-pin#open-admin-menu\">Admin menu<\/a> and select <strong>Config<\/strong> &gt; <strong>Update<\/strong>.<\/p>\n<\/li>\n<\/ul>\n<p>The terminal downloads the updated configuration and then restarts.<\/p>\n<p>If you ordered new terminals and want to update the settings at terminal level, you can configure the new terminals as soon as they are shipped. You receive an email when this happens, and you can check your <a href=\"\/pt\/point-of-sale\/managing-terminals\/order-terminals#terminal-order-notifications\">Terminal order update<\/a> webhooks. Or you can go to your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a> &gt; <strong>Orders and returns<\/strong> and make sure that the order is <div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Shipped\n    <\/tag>\n<\/div>\n or <div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;success&quot;>\n        Delivered\n    <\/tag>\n<\/div>\n.<\/p>\n<p>On new terminals, the settings take effect when the terminal is <a href=\"\/pt\/point-of-sale\/managing-terminals\/board-terminal\">boarded<\/a>.<\/p>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/point-of-sale\/automating-terminal-management\/order-terminals-api\"\n                        target=\"_self\"\n                        >\n                    Order terminals using API requests\n                <\/a><\/li><li><a href=\"\/point-of-sale\/automating-terminal-management\/assign-terminals-api\"\n                        target=\"_self\"\n                        >\n                    Assign terminals using API requests\n                <\/a><\/li><li><a href=\"\/point-of-sale\/design-your-integration\/network-and-connectivity\/wi-fi-profiles#set-up-with-api\"\n                        target=\"_self\"\n                        >\n                    Set up Wi-Fi profiles using API calls\n                <\/a><\/li><li><a href=\"\/point-of-sale\/surcharge#configure-surcharges\"\n                        target=\"_self\"\n                        >\n                    Configure surcharges using API calls\n                <\/a><\/li><li><a href=\"\/point-of-sale\/design-your-integration\/network-and-connectivity\/cellular-failover#set-up-cellular-connectivity-on-the-terminal\"\n                        target=\"_self\"\n                        >\n                    Manage cellular connectivity using API calls\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/automating-terminal-management\/configure-terminals-api","articleFields":{"description":"Configure payment terminal settings using our Management API.","robots":"noindex,nofollow","process":{"markdown":true,"twig":false},"twig_first":true,"never_cache_twig":true},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/automating-terminal-management\/configure-terminals-api","title":"Use API calls to configure terminals","content":"The Management API lets you define payment terminal settings at various levels using API requests instead of the Customer Area.\nRequirements\nBefore you begin, take into account the following requirements, limitations, and preparations.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nA point-of-sale integration with Adyen.\n\n\nAPI credentials\nYou must have an API credential with an API key and the following roles: Management API\u2014Terminal settings read Management API\u2014Terminal settings read and write For sensitive terminal settings: Management API\u2014Terminal Advanced settings read and write If you have a Terminal API integration with cloud-based communications, you can use the existing API key that you use for Terminal API requests.\n\n\nLimitations\nNote the following: See the list of terminal setting that are configurable using the Management API. Requests to live Management API endpoints related to terminal settings are subject to rate limits.\n\n\n\nConfigurable terminal settings\nYou can define terminal settings by making API requests to the following endpoints on a company, merchant, store, or terminal level:\n\nTerminal logos are under a dedicated \/terminalLogos endpoint.\nThe other settings are under a \/terminalSettings endpoint.\n\nMost settings from the following table link to the company account level as an example, but are also available on the other levels.\n\n\n\nSettings object\nDescription\n\n\n\n\n deviceName\nCustom name that is used to identify the terminal.\n\n\n cardholderReceipt\nCustomize the structure of the header to show on the shopper receipt by defining the order of one or two header lines and blank lines. For example, header1,header2,filler. The text of the header lines is defined in the Customer Area under In-person payments &gt; Terminal settings &gt; Receipts in the Receipt lines block.\n\n\n connectivity\nsimcardStatus: activate the SIM card in a specific payment terminal. This setting is only available at the terminal level.\n\n\n gratuities\nEnable tipping from the terminal, and predefine tipping options.\n\n\n hardware\ndisplayMaximumBacklight: set the brightness level of the terminal display.\n\n\n offlineProcessing\nSet the chip floor limit and offline swipe limit for offline EMV payments.\n\n\n opi\nFor OPI integrations: enable Pay at Table and set the URL and store number for Pay at Table.\n\n\n receiptOptions\nAdd your logo to the receipt. Specify data to print on the receipt as a QR code.\n\n\n receiptPrinting\nDetermine whether the terminal should print a merchant receipt and\/or a shopper receipt for certain transaction outcomes.\n\n\n signature\nSkip asking for a signature, considering that all global card schemes (American Express, China UnionPay, Diners, Discover, JCB, MasterCard, and Visa) regard a signature as optional.Or if you do not want to skip asking for a signature: determine whether you want the shopper to sign on the terminal display or on the receipt.\n\n\n standalone\nSet up the standalone feature and the default currency for payment terminals.\n\n\n storeAndForward\nConfigure settings for store and forward offline payments.\n\n\n surcharge\nConfigure passing on scheme fees as a surcharge.\n\n\n tapToPay\nConfigure settings for Tap to Pay, for example the text shown on the screen of your mobile device. This setting is not available at the terminal level.\n\n\n terminalInstructions\nConfigure the behaviour of the payment terminal, for example when the configuration update happens.\n\n\n timeouts\nSet the amount of time after which the terminal goes to sleep due to inactivity.\n\n\n logos\nUpload a logo to use as the terminal standby screen.\n\n\n\nSensitive terminal settings\nSome terminal settings are considered sensitive because they can affect the Terminal API communications. Sensitive terminal settings are under a \/terminalSettings endpoint on a company, merchant, store, or terminal level.\nTo authenticate your requests to these, you need to have the following role:\n\nManagement API\u2014Terminal Advanced settings read and write\n\n\n\n\nSettings object\nDescription\n\n\n\n\n nexo\nFor local Terminal API integrations: specify event and display notifications URLs, and provide the key to secure local communications.\n\n\n passcodes\nManage passcodes used to access payment terminal menus and features.\n\n\n wifiProfiles\nProvide properties of the Wi-Fi network the terminal should connect to. The terminal will connect to this network after boarding.\n\n\n\nIf you need to define more settings, you have to go through the Customer Area.\nInheritance of settings\nYou can define terminal settings at different levels. From high to low:\n\nCompany account level\nMerchant account level\nStore level\nTerminal level\n\nThe top level, above the company level, is the Adyen level. This is known as the PSP level. You cannot define settings at PSP level.\nSettings at the company level apply to all terminals under the company. Settings at the merchant account level override settings inherited from the company level and apply to all terminals under the merchant account, and so on.\nIn other words: settings defined at a certain level propagate to all terminals at and under that level. But settings defined at a lower level replace values inherited from a higher level.\nGet current settings\nTo view the terminal configuration at a specific level:\n\n\nGet the ID of the account, store, or terminal you want to configure terminal settings for. You need to specify that ID in the URL of later requests.\n\nFor the company ID, make a GET  \/companies request.\nFor the merchant ID, make a GET  \/merchants request.\nFor the store ID, make a GET  \/stores request or a GET  \/merchants\/{merchantId}\/stores request.\nFor the terminal ID, make a GET  \/terminals request.\n\n\n\n\n\n\nTo retrieve the terminal logo, make a GET request to the \/terminalLogos endpoint for the account, store, or terminal. You can retrieve only one logo at a time. On the account or store level, you need to specify the terminal model as a query parameter. On the terminal level no model query parameter is needed because we can infer the model from the terminal ID in the URL.\nUse the following endpoints:\n\nGET  \/companies\/{companyId}\/terminalLogos?model={model}\nGET  \/merchants\/{merchantId}\/terminalLogos?model={model}\nGET  \/stores\/{storeId}\/terminalLogos?model={model}\nGET  \/terminals\/{terminalId}\/terminalLogos\n\n\n\n\n\n\nWhen you receive the response, Base64-decode the  data string to get the image file of the logo.\n\n\n\n\n\nTo retrieve the other terminal settings (except the logo), make a GET request to the \/terminalSettings endpoint for the account, store, or terminal.\nUse the following endpoints:\n\nGET  \/companies\/{companyId}\/terminalSettings\nGET  \/merchants\/{merchantId}\/terminalSettings\nGET  \/stores\/{storeId}\/terminalSettings\nGET  \/terminals\/{terminalId}\/terminalSettings\n\n\n\n\nThe response returns the current configuration.\n\n\n\n\n\nUpdate settings\nSettings are parameters grouped in objects.\n\nTo change a parameter value, include the full object that contains the parameter, even if you do not want to change all parameters in the object.\nTo remove a parameter value at a certain level and restore the value inherited from the next higher level, include the full object that contains the parameter, and specify an empty value for the parameter or omit the parameter.\nObjects that are not included in the request are not updated.\n\n\nIf you omit a parameter from an object, that setting is removed.\n\nIn the next sections we describe how to:\n\nSpecify or remove a terminal logo\nSpecify or remove other terminal settings\n\nUpdate terminal logo\n\n\nMake sure that you know:\n\nThe level where you need to add or remove a logo to get the desired effect.\nThe current logo at that level. When removing a logo, you also need to know the logo that will be inherited from the next higher level.\n\nThe terminal model that you want to change the logo for.\n\n\n\n\n\nFor a new logo, make sure the file matches the logo requirements for the terminal model, and convert the file to a Base64-encoded string.\n\n    \n\n\n\nmodel\nLogo dimensions  width x height\nFile size\nSupports GIF  BMP JPG JPEG PNG\n\n\n\n\nAMS1\n480 x 800\nMax. 1 MB\nGIF and PNG\n\n\nE280\n320 x 444\nMax. 512 KB\n\n\n\nE285\n240 x 284\nMax. 512 KB\n\n\n\nE285p\n240 x 284\nMax. 512 KB\n\n\n\nE355\n320 x 150\nValidation on WxH\n\n\n\nM400\n854 x 432\nMax. 512 KB\n\n\n\nMX925\n800 x 443\nMax. 500 KB\n\n\n\nP400Plus\n320 x 450\nMax. 512 KB\n\n\n\nS1E\n720 x 1280\nMax. 1 MB\n\n\n\nS1E2\n720 x 1280\nMax. 1 MB\n\n\n\nS1E2L\n720 x 1280\nMax. 1 MB\n\n\n\nS1EL\n720 x 1280\nMax. 1 MB\n\n\n\nS1F2\n720 x 1280\nMax. 1 MB\n\n\n\nS1F2L\n720 x 1280\nMax. 1 MB\n\n\n\nS1U\n720 x 1280\nMax. 1 MB\n\n\n\nV200cPlus\n-\n-\n-\n\n\nV240m\n320 x 450\nMax. 512 KB\n\n\n\nV240mPlus\n320 x 450\nMax. 512 KB\n\n\n\nV400cPlus\n320 x 450\nMax. 512 KB\n\n\n\nV400m\n320 x 450\nMax. 512 KB\n\n\n\nVX680\n240 x 200\nValidation on WxH\n\n\n\nVX690\n240 x 200\nValidation on WxH\n\n\n\nVX820\n240 x 200\nValidation on WxH\n\n\n\nUX300\n128 x 42\nValidation on WxH\n\n\n\nUX301\n128 x 42\nValidation on WxH\n\n\n\nUX410\n128 x 42\nValidation on WxH\n\n\n\n\n\n\n\n\nIf the dimensions of the logo do not match the requirements:\n\nBMP, JPG, JPEG, or PNG files are resized.\nA GIF file is converted to a single-frame image.\n\n\n\n\nMake a PATCH request to the \/terminalLogos endpoint for the account, store, or terminal. You can update only one logo at a time. On the account or store level, you need to specify the terminal model as a query parameter. On the terminal level no model query parameter is needed because we can infer the model from the terminal ID in the URL.\nUse the following endpoints:\n\nPATCH  \/companies\/{companyId}\/terminalLogos?model={model}\nPATCH  \/merchants\/{merchantId}\/terminalLogos?model={model}\nPATCH  \/stores\/{storeId}\/terminalLogos?model={model}\nPATCH  \/terminals\/{terminalId}\/terminalLogos\n\nThe request body must contain:\n\n data&#58; to upload a logo, specify the Base64-encoded string of the logo file. To remove a logo, specify an empty string.\n\nFor example, to upload a new terminal logo for use in a store:\n\n\n\nThe response returns the logo data at the level where you made the request.\nWhen you remove a terminal logo, the terminal inherits a logo from a higher level and the response returns that other logo. For example, let's assume you changed your mind and want to replace the store logo you just added with the logo defined at the merchant account level. You'd make a PATCH&nbsp;merchants\/{merchantId}\/stores\/{storeId}\/terminalLogos?model={model} request:\n\n\n\nThe response returns the logo inherited from a higher level:\n\n\n\n\n\nUpdate other settings\n\n\nMake sure that you know:\n\nThe level where you need to add or remove settings to get the desired effect.\n\nThe current settings at that level. When removing settings, you also need to know the settings that will be inherited from the next higher level.\n\n\n\n\n\nTo update settings (except the terminal logo), make a PATCH request to the \/terminalSettings endpoint for the account, store, or terminal.\nUse the following endpoints:\n\nPATCH  \/companies\/{companyId}\/terminalSettings\nPATCH  \/merchants\/{merchantId}\/terminalSettings\nPATCH  \/stores\/{storeId}\/terminalSettings\nPATCH  \/terminals\/{terminalId}\/terminalSettings\n\nIn the request body, specify the full objects for the settings that you want to change.\n\nIf you omit a parameter from an object, that setting is removed.\n\n\nRemote Wi-Fi profiles require many different parameters depending on the type or of network: Enterprise EAP-PEAP, Enterprise EAP-TLS, or Personal PSK. For details, see Set up Wi-Fi profiles using API calls.\n\nThe next example shows a request that does two things:\n\nYou previously defined tipping settings for a store but now want to remove those and go back to the tipping settings from the merchant level.\nYou want to change the skipSignature setting for the store from true to false.\n\n\n\n\nThe response returns the entire configuration at the level where you made the request.\n\n\nWhen new settings take effect\nThe terminal downloads the configuration changes when it makes a maintenance call to our systems. This happens automatically every 180 minutes. The configuration changes then take effect when the terminal restarts. This happens automatically at the restart hour, which is usually set to 6:00 AM.\nTo switch to the new passcode immediately, update the configuration on your terminal manually:\n\n\nGo to Settings &gt; Configuration, enter your Admin &amp; Settings passcode and select Update.\n\n\nFor non-Android terminals that use the old menu structure: go to the Admin menu and select Config &gt; Update.\n\n\nThe terminal downloads the updated configuration and then restarts.\nIf you ordered new terminals and want to update the settings at terminal level, you can configure the new terminals as soon as they are shipped. You receive an email when this happens, and you can check your Terminal order update webhooks. Or you can go to your Customer Area &gt; Orders and returns and make sure that the order is \n    \n        Shipped\n    \n\n or \n    \n        Delivered\n    \n\n.\nOn new terminals, the settings take effect when the terminal is boarded.\nSee also\n\n\n                    Order terminals using API requests\n                \n                    Assign terminals using API requests\n                \n                    Set up Wi-Fi profiles using API calls\n                \n                    Configure surcharges using API calls\n                \n                    Manage cellular connectivity using API calls\n                \n","type":"page","locale":"pt","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"Terminais","lvl2":"Automate the management of your terminals","lvl3":"Use API calls to configure terminals"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/point-of-sale","lvl2":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/automating-terminal-management","lvl3":"\/pt\/point-of-sale\/automating-terminal-management\/configure-terminals-api"},"levels":4,"category":"In-person payments","category_color":"green","tags":["calls","configure","terminals"]},"articleFiles":{"get-merchant-id-9148482716.js":"<p alt=\"\">get-merchant-id-9148482716.js<\/p>","get-merchant-level-logo-for-v400m-terminal-0140910523.js":"<p alt=\"\">get-merchant-level-logo-for-v400m-terminal-0140910523.js<\/p>","get-merchant-level-terminal-settings-8496373560.js":"<p alt=\"\">get-merchant-level-terminal-settings-8496373560.js<\/p>","remove-store-level-logo-7458929115.js":"<p alt=\"\">remove-store-level-logo-7458929115.js<\/p>","update-store-level-settings-2933334214.js":"<p alt=\"\">update-store-level-settings-2933334214.js<\/p>","upload-new-store-level-logo-1118290581.js":"<p alt=\"\">upload-new-store-level-logo-1118290581.js<\/p>"}}
