--- title: "Menus and passcodes" description: "Manage passcodes and use the Settings and Transactions menus on the terminal." url: "https://docs.adyen.com/point-of-sale/menu-access" source_url: "https://docs.adyen.com/point-of-sale/menu-access.md" canonical: "https://docs.adyen.com/point-of-sale/menu-access" last_modified: "2024-04-19T13:53:00+02:00" language: "en" --- # Menus and passcodes Manage passcodes and use the Settings and Transactions menus on the terminal. [View source](/point-of-sale/menu-access.md) Your payment terminals have a menu with options related to payments, and a menu with options related to configuration. The access to some menu options is protected by passcodes. This page describes how to manage passcodes and how to use some specific menus, and gives an overview of the menus on Android terminals and non-Android terminals. ## Requirements Before you begin, take into account the following requirements, limitations, and preparations. | Requirement | Description | | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Integration type** | A [Terminal API integration](/point-of-sale/get-started) using payment terminals, or a [Standalone solution](/point-of-sale/standalone). | | **[API credentials](/development-resources/api-credentials/)** | To manage passcodes using API requests, you need the **Management API—Terminal Advanced settings read and write** role, because passcodes are considered [sensitive settings](/point-of-sale/automating-terminal-management/configure-terminals-api#sensitive-terminal-settings). | | **[Customer Area roles](/account/user-roles)** | To manage passcodes in the Customer Area, you need the **Merchant POS Terminal Management Admin** role. | | **Hardware** | Android terminals or Verifone Engage non-Android terminals. | | **Limitations** | The [Apps menu](#android-app-menu) is only available on the Android terminal models S1U2 and S1E2L with software version 1.103 and later. | | **Setup steps** | To be able to use airplane mode, contact our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other). | ## Passcodes When operating a payment terminal, users may need to enter the following passcodes. | Passcode | Access | | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | **Admin & Settings** | Settings related to apps (on some Android terminals), configuration, network, software version, powering off (on non-Android terminals). | | **Transactions** | Settings related to transaction history and totals on an Android terminal. Starting a special transaction when used as a standalone terminal. | | **Refunds** | Starting a refund when used as a standalone terminal. | | **Screen lock** | Unlocking the terminal screen after a period of inactivity. This is only available on Android terminals. | The following animation illustrates how passcodes are entered on a terminal. [Your browser does not support the video tag.](/user/pages/docs/03.point-of-sale/49.menu-access/NewMenus.mov?loading=auto\&decoding=auto\&fetchpriority=auto) ## View and update passcodes You can view and update [passcodes](#passcodes) in your Customer Area or with an API call. With both methods, you can manage passcodes at the company, merchant, store, or terminal level. Passcodes 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. Unattended Android terminals must not have a screen lock. If a screen lock passcode is set at a higher level, you need to check on individual unattended Android terminals that the screen lock is disabled. ### Tab: Customer Area To manage passcodes in the Customer Area: 1. Log in to your [Customer Area](https://ca-test.adyen.com/). 2. Go to the account level that you want to manage passcodes for. * For a company or merchant account, select the account and go to **In-person payments** > **Terminal settings**. * For a store, go to **In-person payments** > **Stores** and select the store. * For a terminal, go to **In-person payments** > **Payment devices**, select the **Terminals** tab, and then select the terminal. You can find the serial number in the **Device info** on the terminal.\ Refer to the [manual for your terminal model](/point-of-sale/pos-troubleshooting/getting-started-with-your-terminal). 3. Select **Passcodes**. 4. To view the passcodes, under **Terminal passcodes** select **Decrypted**. * **Transactions**: the passcode to access **Transactions** menu options. * **Admin & Settings**: the passcode to access the **Admin** menu and the **Settings** menu. * **Refunds**: the passcode to access the refund feature on standalone terminals. 5. To update a passcode, enter the new value and select **Save**. The terminal downloads the new passcodes when it makes a maintenance call to our systems. This happens automatically every 180 minutes. The new passcodes then take effect when the terminal restarts. This happens automatically at the restart hour, which is usually set to 6:00 AM. To switch to the new passcode immediately: on your terminal, go to **Settings** > **Configuration** using your old passcode and select **Update**. ### Set up an Android screen lock passcode For Android terminals, you can also set up a screen lock passcode. This adds another layer of security in case mobile and portable terminals are accessed by unauthorized personnel. If you use unattended Android terminals, make sure that the screen lock is disabled on those terminals. To enable the screen lock passcode: 1. Log in to your [Customer Area](https://ca-test.adyen.com/). 2. Go to the account level or terminal that you want to manage the passcode for. 3. Select **Passcodes**. 4. Under **Screen lock passcode for Castles terminals**, select **Decrypted**. 5. At **Enable screen lock**, select the edit icon **and then select **Enabled**. 6. At **Screen lock passcode**, enter the new passcode and **Retype the passcode to confirm changes**. 7. Select **Save**. ### Tab: API You can manage your passcodes by making GET or PATCH requests to the `/terminalSettings` endpoint at the company, merchant, store, or terminal level. If you use unattended Android terminals, make sure you do not enable the screen lock on those terminals. If you enable this option at the company level, all Android payment terminals require a screen lock passcode regardless of whether they are attended or unattended. To get the current passcodes: 1. Make a GET request to one of the following endpoints: * [/companies/{companyId}/terminalSettings](https://docs.adyen.com/api-explorer/Management/latest/get/companies/\(companyId\)/terminalSettings) * [/merchants/{merchantId}/terminalSettings](https://docs.adyen.com/api-explorer/Management/latest/get/merchants/\(merchantId\)/terminalSettings) * [/stores/{storeId}/terminalSettings](https://docs.adyen.com/api-explorer/Management/latest/get/stores/\(storeId\)/terminalSettings) * [/terminals/{terminalId}/terminalSettings](https://docs.adyen.com/api-explorer/Management/latest/get/terminals/\(terminalId\)/terminalSettings) **Get passcodes request** #### curl ```bash curl https://management-test.adyen.com/v3/companies/{companyId}/terminalSettings \ -H 'x-API-key: ADYEN_API_KEY' \ -X GET ``` #### Java ```java // Adyen Java API Library v25.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.service.management.*; Client client = new Client("ADYEN_API_KEY", Environment.TEST); // Make the request TerminalSettingsCompanyLevelApi service = new TerminalSettingsCompanyLevelApi(client); TerminalSettings response = service.getTerminalSettings("companyId", null); ``` #### PHP ```php // Adyen PHP API Library v17.4.0 use Adyen\Client; use Adyen\Environment; use Adyen\Service\Management\TerminalSettingsCompanyLevelApi; $client = new Client(); $client->setXApiKey("ADYEN_API_KEY"); $client->setEnvironment(Environment::TEST); // Make the request $service = new TerminalSettingsCompanyLevelApi($client); $response = $service->getTerminalSettings('companyId'); ``` #### C\# ```cs // Adyen .net API Library v14.3.0 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Service.Management; var config = new Config() { XApiKey = "ADYEN_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Make the request var service = new TerminalSettingsCompanyLevelService(client); var response = service.GetTerminalSettings("companyId"); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v16.2.0 // Require the parts of the module you want to use const { Client, ManagementAPI } = require('@adyen/api-library'); // Initialize the client object const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Make the request const managementAPI = new ManagementAPI(client); const response = managementAPI.TerminalSettingsCompanyLevelApi.getTerminalSettings("companyId"); ``` #### Go ```go // Adyen Go API Library v9.2.0 import ( "context" "github.com/adyen/adyen-go-api-library/v9/src/common" "github.com/adyen/adyen-go-api-library/v9/src/adyen" "github.com/adyen/adyen-go-api-library/v9/src/management" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_API_KEY", Environment: common.TestEnv, }) // Make the request service := client.Management() req := service.TerminalSettingsCompanyLevelApi.GetTerminalSettingsInput("companyId") res, httpRes, err := service.TerminalSettingsCompanyLevelApi.GetTerminalSettings(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v12.2.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_API_KEY" adyen.client.platform = "test" # The environment to use library in. result = adyen.management.terminal_settings_company_level_api.get_terminal_settings(companyId="companyId") ``` #### Ruby ```rb # Adyen Ruby API Library v9.2.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_API_KEY' adyen.env = :test # Set to "live" for live environment result = adyen.management.terminal_settings_company_level_api.get_terminal_settings('companyId') ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v16.2.0 // Require the parts of the module you want to use import { Client, ManagementAPI, Types } from "@adyen/api-library"; // Initialize the client object const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Make the request const managementAPI = new ManagementAPI(client); const response = managementAPI.TerminalSettingsCompanyLevelApi.getTerminalSettings("companyId"); ``` 2. In the response, check the `passcodes` object for all passcode settings.\ The response returns all settings that your API credential has access to. **Get passcodes response** ```json { "cardholderReceipt": { "headerForAuthorizedReceipt": "header1,header2,filler" }, "gratuities": [], "nexo": { "encryptionKey": { "identifier": "KEY_IDENTIFIER", "passphrase": "KEY_PASSPHRASE", "version": 2 }, "eventUrls": { "eventPublicUrls": [ { "password": "notification", "url": "...", "username": "adyen" } ] }, "nexoEventUrls": [ "..." ] }, "opi": { "enablePayAtTable": false, "payAtTableStoreNumber": "1234", "payAtTableURL": "..." }, "receiptPrinting": {}, "signature": { "askSignatureOnScreen": true, "skipSignature": true }, "timeouts": { "fromActiveToSleep": 30 }, "offlineProcessing": { "chipFloorLimit": 0 }, "passcodes": { "adminMenuPin": "1111", "txMenuPin": "1234", "refundPin": "123456", "screenLockPin": "1111" }, "standalone": { "enableStandalone": true, "currencyCode": "EUR" } } ``` To update your passcodes: 1. Make a PATCH request to one of the following endpoints: * [/companies/{companyId}/terminalSettings](https://docs.adyen.com/api-explorer/Management/latest/patch/companies/\(companyId\)/terminalSettings) * [/merchants/{merchantId}/terminalSettings](https://docs.adyen.com/api-explorer/Management/latest/patch/merchants/\(merchantId\)/terminalSettings) * [/stores/{storeId}/terminalSettings](https://docs.adyen.com/api-explorer/Management/latest/patch/stores/\(storeId\)/terminalSettings) * [/terminals/{terminalId}/terminalSettings](https://docs.adyen.com/api-explorer/Management/latest/patch/terminals/\(terminalId\)/terminalSettings) Specify a [passcodes](https://docs.adyen.com/api-explorer/Management/latest/patch/companies/\(companyId\)/terminalSettings#request-passcodes) object with the following properties: | Parameter | Required | Type | Description | | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | | [adminMenuPin](https://docs.adyen.com/api-explorer/Management/latest/patch/companies/\(companyId\)/terminalSettings#request-passcodes-adminMenuPin) | | string | The passcode for the Admin menu and the Settings menu. | | [refundPin](https://docs.adyen.com/api-explorer/Management/latest/patch/companies/\(companyId\)/terminalSettings#request-passcodes-refundPin) | | string | The passcode for refunds on standalone terminals. | | [txMenuPin](https://docs.adyen.com/api-explorer/Management/latest/patch/companies/\(companyId\)/terminalSettings#request-passcodes-txMenuPin) | | string | The passcode for the Transactions menu. | | [screenLockPin](https://docs.adyen.com/api-explorer/Management/latest/patch/companies/\(companyId\)/terminalSettings#request-passcodes-screenLockPin) | | string | On Android terminals, the passcode to unlock the terminal screen after a period of inactivity.Do not set this passcode for unattended terminals. | **Update passcodes request** #### curl ```bash curl https://management-test.adyen.com/v3/companies/{companyId}/terminalSettings \ -H 'x-API-key: ADYEN_API_KEY' \ -X PATCH \ -d '{ "passcodes": { "adminMenuPin": "1234", "txMenuPin": "1234", "refundPin": "123456", "screenLockPin": "1234" } }' ``` #### Java ```java // Adyen Java API Library v25.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.management.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.service.management.*; Client client = new Client("ADYEN_API_KEY", Environment.TEST); // Request objects Passcodes passcodes = new Passcodes() .refundPin("123456") .screenLockPin("1234") .adminMenuPin("1234") .txMenuPin("1234"); TerminalSettings terminalSettings = new TerminalSettings() .passcodes(passcodes); // Make the request TerminalSettingsCompanyLevelApi service = new TerminalSettingsCompanyLevelApi(client); TerminalSettings response = service.updateTerminalSettings("companyId", terminalSettings, null); ``` #### PHP ```php // Adyen PHP API Library v17.4.0 use Adyen\Client; use Adyen\Environment; use Adyen\Model\Management\Passcodes; use Adyen\Model\Management\TerminalSettings; use Adyen\Service\Management\TerminalSettingsCompanyLevelApi; $client = new Client(); $client->setXApiKey("ADYEN_API_KEY"); $client->setEnvironment(Environment::TEST); // Request objects $passcodes = new Passcodes(); $passcodes ->setRefundPin("123456") ->setScreenLockPin("1234") ->setAdminMenuPin("1234") ->setTxMenuPin("1234"); $terminalSettings = new TerminalSettings(); $terminalSettings ->setPasscodes($passcodes); // Make the request $service = new TerminalSettingsCompanyLevelApi($client); $response = $service->updateTerminalSettings('companyId', $terminalSettings); ``` #### C\# ```cs // Adyen .net API Library v14.3.0 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.Management; using Adyen.Service.Management; var config = new Config() { XApiKey = "ADYEN_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Fill in your request objects Passcodes passcodes = new Passcodes { RefundPin = "123456", ScreenLockPin = "1234", AdminMenuPin = "1234", TxMenuPin = "1234" }; TerminalSettings terminalSettings = new TerminalSettings { Passcodes = passcodes }; // Make the request var service = new TerminalSettingsCompanyLevelService(client); var response = service.UpdateTerminalSettings("companyId", terminalSettings); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v16.2.0 // Require the parts of the module you want to use const { Client, ManagementAPI } = require('@adyen/api-library'); // Initialize the client object const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Create the request object const terminalSettings = { passcodes: { adminMenuPin: "1234", txMenuPin: "1234", refundPin: "123456", screenLockPin: "1234" } } // Make the request const managementAPI = new ManagementAPI(client); const response = managementAPI.TerminalSettingsCompanyLevelApi.updateTerminalSettings("companyId", terminalSettings); ``` #### Go ```go // Adyen Go API Library v9.2.0 import ( "context" "github.com/adyen/adyen-go-api-library/v9/src/common" "github.com/adyen/adyen-go-api-library/v9/src/adyen" "github.com/adyen/adyen-go-api-library/v9/src/management" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_API_KEY", Environment: common.TestEnv, }) // Fill in your request objects passcodes := management.Passcodes{ RefundPin: common.PtrString("123456"), ScreenLockPin: common.PtrString("1234"), AdminMenuPin: common.PtrString("1234"), TxMenuPin: common.PtrString("1234"), } terminalSettings := management.TerminalSettings{ Passcodes: &passcodes, } // Make the request service := client.Management() req := service.TerminalSettingsCompanyLevelApi.UpdateTerminalSettingsInput("companyId").TerminalSettings(terminalSettings) res, httpRes, err := service.TerminalSettingsCompanyLevelApi.UpdateTerminalSettings(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v12.2.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_API_KEY" adyen.client.platform = "test" # The environment to use library in. json_request = { "passcodes": { "adminMenuPin": "1234", "txMenuPin": "1234", "refundPin": "123456", "screenLockPin": "1234" } } result = adyen.management.terminal_settings_company_level_api.update_terminal_settings(request=json_request, companyId="companyId") ``` #### Ruby ```rb # Adyen Ruby API Library v9.2.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_API_KEY' adyen.env = :test # Set to "live" for live environment request_body = { :passcodes => { :adminMenuPin => '1234', :txMenuPin => '1234', :refundPin => '123456', :screenLockPin => '1234' } } result = adyen.management.terminal_settings_company_level_api.update_terminal_settings(request_body, 'companyId') ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v16.2.0 // Require the parts of the module you want to use import { Client, ManagementAPI, Types } from "@adyen/api-library"; // Initialize the client object const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Create the request objects const passcodes: Types.management.Passcodes = { refundPin: "123456", screenLockPin: "1234", adminMenuPin: "1234", txMenuPin: "1234" }; const terminalSettings: Types.management.TerminalSettings = { passcodes: passcodes }; // Make the request const managementAPI = new ManagementAPI(client); const response = managementAPI.TerminalSettingsCompanyLevelApi.updateTerminalSettings("companyId", terminalSettings); ``` 2. In the response, note that this returns all settings that your API credential has access to, including the passcodes from your request. **Update passcodes response** ```json { "cardholderReceipt": { "headerForAuthorizedReceipt": "header1,header2,filler" }, "gratuities": [], "nexo": { "encryptionKey": { "identifier": "KEY_IDENTIFIER", "passphrase": "KEY_PASSPHRASE", "version": 2 }, "eventUrls": { "eventPublicUrls": [ { "password": "notification", "url": "...", "username": "adyen" } ] }, "nexoEventUrls": [ "..." ] }, "opi": { "enablePayAtTable": false, "payAtTableStoreNumber": "1234", "payAtTableURL": "..." }, "receiptPrinting": {}, "signature": { "askSignatureOnScreen": true, "skipSignature": true }, "timeouts": { "fromActiveToSleep": 30 }, "offlineProcessing": { "chipFloorLimit": 0 }, "passcodes": { "adminMenuPin": "1234", "txMenuPin": "1234", "refundPin": "123456", "screenLockPin": "1234" }, "standalone": { "enableStandalone": true, "currencyCode": "EUR" } } ``` ## Use Airplane mode For the airline industry the payment terminal has an airplane mode. When preparing for take-off, turning on airplane mode is the quickest way to turn off all cellular and other network connections on the terminal. When you turn airplane mode off again, the previous connections are restored. ### Enable airplane mode To be able to use airplane mode, contact our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) and ask them to enable this feature. The **Network** menu on the terminal will then include an **Airplane mode** option. ### Turn airplane mode on/off To turn on airplane mode: 1. On the terminal, select **Settings** > **Network**. 2. Enter the Admin & Settings passcode. 3. In the **Network** menu, turn on the **Airplane mode** toggle.\ All connections (Wi-Fi, Bluetooth, and Cellular) are now *Off*. To turn off airplane mode: 1. On the terminal, select **Settings** > **Network**. 2. Enter the Admin & Settings passcode. 3. In the **Network** menu, turn off the **Airplane mode** toggle.\ All previous connections (Wi-Fi, Bluetooth, and Cellular) are now restored. ## Use the Android App menu On specific Android payment terminal models, the **Settings** menu has options to manage the performance of your Android apps. You can, for example, force quit an unresponsive app, or clear the cache and storage of an app. 1. Go to **Settings** > **Apps**. 2. Enter the Admin & Settings passcode. 3. Select an app from the list. 4. Select on of the following actions: * **Force quit** to stop the app's processes and shut down the app. * **Clear storage** to delete all data associated with the app, and reset the app to its initial settings. * **Clear cache** to free up the storage by deleting temporary files. ## Android terminal menus | Menu/Button | Description | Passcode | | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | ![](/user/pages/docs/03.point-of-sale/49.menu-access/menu-settings.png) **Settings** | * **Device info**: view information about the payment terminal, like the serial number, configuration version, and store details. Update the software version. Scan the QR code to connect external devices to the terminal. * **Network**: enable and configure network connections. Turn [airplane mode](/point-of-sale/menu-access#airplane-mode) on/off. * **Configuration**: view, update, or remove the configuration version. Reassign the payment terminal (only when [boarding with a one-time password](/point-of-sale/managing-terminals/board-terminal#board-with-otp) is enabled). * **Display**: adjust the screen brightness. * **Diagnostics**: run network connection tests or send us a [diagnostic report](/point-of-sale/pos-troubleshooting/hardware-tests#send-a-diagnostic-report). * **Apps**: overview of the apps and certificates installed on the terminal. If an app is scheduled to be installed or removed, this action is carried out when you open this menu. * **Power**: restart the terminal. | - No passcode required: * **Device info** * **Diagnostics** * **Display** - [Admin & Settings](/point-of-sale/menu-access?tab=manage_passcodes_in_the_customer_area_1#manage-passcodes) passcode required: * **Apps** * **Configuration** * **Network** * **Device info**> **Software version** * **Power** | | ![](/user/pages/docs/03.point-of-sale/49.menu-access/menu-transactions.png) **Transactions** | * **History**: view transactions stored on the terminal. Re-print the merchant/shopper receipt for an approved transaction. * **Totals**: view and print a transaction totals report. Reset transaction totals. View the last known totals report. * **New transaction**: **Refund**, **MOTO payment**, **MOTO refund**, **Manual key entry** as a standalone terminal. Select the AID priority. | - [Transactions](/point-of-sale/menu-access?tab=manage_passcodes_in_the_customer_area_1#manage-passcodes) passcode required: - * **History** * **Totals** * **New transaction** [Refunds](/point-of-sale/menu-access?tab=manage_passcodes_in_the_customer_area_1#manage-passcodes) passcode required: * **New transaction** > **Refund** | | ![](/user/pages/docs/03.point-of-sale/49.menu-access/bttn-standalone.png) **Payment** | * Start a normal payment when used as a [standalone terminal](/point-of-sale/standalone). | - No passcode required. | ## Non-Android terminal menus From software version 1.90, all Android and non-Android payment terminals use the same menu structure. If your terminals are on an earlier version, they might be still using the [old non-Android terminal menus](#old-menu-structure). | Menu/Button | Description | Passcode | | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](/user/pages/docs/03.point-of-sale/49.menu-access/menu-settings.svg?decoding=auto\&fetchpriority=auto) **Settings** | * **Device info**: view information about the payment terminal, like the serial number, configuration version, and store details. Update the software version. Scan the QR code to connect external devices to the terminal. * **Network**: enable and configure network connections. * **Software**: view and update the software version. * **Configuration**: view, update, or remove the configuration version. * **Diagnostics**: run network connection tests or send us a [diagnostic report](/point-of-sale/pos-troubleshooting/hardware-tests#send-a-diagnostic-report). * **Power**: restart or power off the terminal. | - No passcode required: * **Device info** * **Diagnostics** - [Admin & Settings](/point-of-sale/menu-access?tab=manage_passcodes_in_the_customer_area_1#manage-passcodes) passcode required: * **Configuration** * **Network** * **Software** * **Power** | | ![](/user/pages/docs/03.point-of-sale/49.menu-access/menu-transactions.svg?decoding=auto\&fetchpriority=auto) **Transactions** | * **Totals**: view, print, or reset the transaction totals report. Reset transaction totals. View the last known totals report. * **History**: view transactions stored on the terminal. Re-print the merchant/shopper receipt for an approved transaction. * **Normal payment**: start a normal payment when used as a standalone terminal. * The special payments menu when used as a standalone terminal: **Refund**, **Manual key entry**, **MOTO payment**, **MOTO refund**, **Bypass PIN**, **Bypass AID prio**, **Cashback**. | - [Transactions](/point-of-sale/menu-access?tab=manage_passcodes_in_the_customer_area_1#manage-passcodes) passcode required: - * **Normal payment** * Special payments menu [Refunds](/point-of-sale/menu-access?tab=manage_passcodes_in_the_customer_area_1#manage-passcodes) passcode required: * **Refund** * **MOTO refund** | | ![](/user/pages/docs/03.point-of-sale/49.menu-access/bttn-standalone.svg?decoding=auto\&fetchpriority=auto) **Payment** | * Start a normal payment when used as a [standalone terminal](/point-of-sale/standalone). | - No passcode required. | ## Old non-Android terminal menus Terminals that are on a software version earlier than 1.90 use a different menu structure. If your terminals are using a software version between 1.85 and 1.90, you can enable the latest menu structure. However, terminals should not be more than five versions behind the latest release. If your terminals are still on a software version earlier than 1.90, you need to update them to a more recent version. ** ### Admin menu ### Admin menu The **Admin** menu contains several menus with restricted access. 1. Go to the Admin menu: * On terminals with a keypad, select **9** and then the **Confirm** key **![](/images/4/4/8/1/a/4481a2ff5ee8aad088819e00c6349648882d62f9-confirm2x.png)**. * On terminals without keypad, select the **Menu** button ![](/user/pages/reuse/image-library/buttons/apps-menu/apps.svg?decoding=auto\&fetchpriority=auto) and then **Admin**. 2. Under **Admin menu**, enter the [Admin & Settings](/point-of-sale/menu-access?tab=manage_passcodes_in_the_customer_area_1#manage-passcodes) passcode that is set in your Customer Area under **In-person payments** > **Terminal settings** > **Terminal passcodes** > **Admin & Settings**. 3. Select **Confirm**. | Option | Description | | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Network | Configure network settings. Run diagnostic connection tests. | | Software | Update the software version of the terminal. | | Configuration | Update, view, or remove the configuration. You can view the configuration version, the installed software release, and hardware details such as the unique terminal ID. | | Totals | View, print, and reset transaction totals. | | Transactions | View transactions stored on the terminal. View and print the shopper or merchant receipts for a transaction. | | Power off | Turn off the terminal.On terminals without a battery, this is a Reboot button. | ** ### Standalone Payment menu On standalone non-Android terminals, the special payments menu lets you do special transactions like manual key entry or unreferenced refunds. 1. Select **8** and then the **Confirm** key **![](/images/4/4/8/1/a/4481a2ff5ee8aad088819e00c6349648882d62f9-confirm2x.png)**. 2. Under **Payment menu**, enter the [Transactions](/point-of-sale/menu-access?tab=manage_passcodes_in_the_customer_area_1#manage-passcodes) passcode that is set in your Customer Area under **In-person payments** > **Terminal settings** > **Terminal passcodes** > **Transactions**. 3. Select the **Confirm** key. When you select **Refund** or **MOTO refund**, it is possible that the terminal asks for a password again. If this happens: * Enter the **Refunds** passcode that is set in your Customer Area under **In-person payments** > **Terminal settings** > **Terminal passcodes** > **Refunds**. ** ### Enable new menus on older versions If your terminals are using a software version between 1.85 and 1.90, you can enable the latest menu structure in your Customer Area. The buttons for the **Settings** and the **Transactions** menus as well as the on-screen notifications are hidden by default. This is because the self-service terminals do not use them. To enable the new menus on your non-Android terminals: 1. Log in to your [Customer Area](https://ca-test.adyen.com/). 2. Go to the account level for which you want to enable the new menus. * For a company or merchant account, select the account and go to **In-person payments** > **Terminal settings**. * For a store, go to **In-person payments** > **Stores** and select the store. * For a terminal, go to **In-person payments** > **Payment devices**, select the **Terminals** tab, and then select the terminal. 3. Select **Customization**. 4. Under **Home screen** > **Upgraded terminal interface**, select **Enabled**. 5. To enable on-screen button and notifications: 1. Under **Settings menu button**, select **Show** for the **Settings** menu on the terminal home screen. 2. Under **Transaction menu button**, select **Show** for the **Transaction** menu on the terminal home screen. 3. Under **Notifications**, select **Show** for the on-screen notifications about important events, like software updates or Bluetooth base station pairing. 6. Select **Save** and [update the configuration](/point-of-sale/managing-terminals/maintain-performance#update-the-configuration-manually) on your terminal. ## See also * [Android terminals](/point-of-sale/android-terminals) * [Sensitive terminal settings](/point-of-sale/automating-terminal-management/configure-terminals-api#sensitive-terminal-settings)