Terminal-2 icon

Android app requirements

Learn about the specifications and testing of apps for Android payment terminals.

On your Android payment terminal, you can install and use Android apps. Here's an overview of the requirements these apps must meet, and how you can test them.

App specifications

Make sure that your app meets the following specifications:

  • APK file size:
    To distribute the app to your terminals, we need to have the app's Android Package (APK). The maximum APK file size is 200 MB on the live environment, and 700 MB on the test environment to allow for debugging apps.

  • Operating system and SDK version:
    The app must run on a specific Android version, and the AndroidManifest.xml that is included in the APK must have a minSdkVersion field. This field specifies the minimum API level required for your app to run, and allows us to verify that your app is supported on the terminal.
    For example, AMS1 running on Android 10 will support minSdkVersion 29 or earlier, but not minSdkVersion 30 and later.
    The required Android version and minimum SDK version depend on the terminal model and region, as indicated in the following table.

    Work in progress: currently not all models are available in all regions. You can check terminal availability for your region in your live Customer Area.

    Terminal Region OS version minSdkVersion Build.MODEL
    AMS1 AU/NZ, BR, EU/UK, JP, SG/HK/MY, UAE, US/CA Android 10 SDK 29 AMS1
    S1E and S1E Barcode AU/NZ, BR, EU/UK, JP, SG/HK/MY, UAE, US/CA Android 7.1.2 SDK 25 Saturn1000_Elite
    S1E2L AU/NZ, BR, EU/UK, JP, SG/HK/MY, UAE, US/CA Android 10 SDK 29 S1E2L / S1E2-L
    S1F2 EU/UK, SG/HK/MY, UAE Android 9 SDK 28 Saturn1000F2
    AU/NZ, BR, JP, US/CA Android 10 SDK 29 SATURN1000
    S1F2 Barcode EU/UK, SG/HK/MY, UAE Android 9 SDK 28 Saturn1000F2
    AU/NZ, BR, JP, US/CA Android 10 SDK 29 SATURN1000
    S1U2 AU/NZ, EU/UK, JP, SG/HK/MY, UAE, US/CA Android 10 SDK 29 S1U2
  • App version :
    The versionCode of every release of your app in the Customer Area must be unique.

Also, keep in mind the allowed permissions and the restrictions.

Allowed permissions

To keep the payment terminals as secure as possible, we allow only a carefully chosen set of app permissions. These permissions may differ from those on other Android devices that the app is deployed to.
These are the allowed app permissions:

Permission Description
ACCESS_BACKGROUND_LOCATION Allows access to location in the background.
ACCESS_COARSE_LOCATION Allows access to approximate location.
ACCESS_FINE_LOCATION Allows access to precise location.
ACCESS_MEDIA_LOCATION Allows access to any geographic locations persisted in the user's shared collection.
ACCESS_NETWORK_STATE Allows access to information about networks.
ACCESS_WIFI_STATE Allows access to information about Wi-Fi networks.
BATTERY_STATS Allows the app to collect battery statistics.
BLUETOOTH Allows the app to connect to paired Bluetooth devices.
BLUETOOTH_ADMIN Allows the app to discover and pair Bluetooth devices.
BROADCAST_STICKY Allows the app to broadcast sticky intents.
CAMERA Allows access to the camera device.
FLASHLIGHT Deprecated flashlight permission - Covered by CAMERA.
FOREGROUND_SERVICE Allows the app to use Service.startForeground.
GET_ACCOUNTS Allows access to the list of accounts in the Accounts Service.
INTERNET Allows the app to open network sockets.
READ_EXTERNAL_STORAGE Allows the app to read from external storage.
READ_PHONE_STATE Allows read-only access to phone state, including the current cellular network information, the status of any ongoing calls, and a list of any PhoneAccounts registered on the device.
RECEIVE_BOOT_COMPLETED Allows the app to receive the Intent.ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting.
RECORD_AUDIO Allows the app to record audio.
SET_ALARM Allows the app to broadcast an Intent to set an alarm for the user.
USE_BIOMETRIC Allows the app to use device-supported biometric modalities.
USE_FINGERPRINT This permission was deprecated in API level 28. Apps should request USE_BIOMETRIC instead.
VIBRATE Allows access to the vibration feature.
WAKE_LOCK Allows using PowerManager WakeLocks to keep the processor from sleeping or the screen from dimming.
WRITE_EXTERNAL_STORAGE Allows the app to write to external storage.

If your app includes a permission that is not on the preceding list, the app will be marked as invalid when you upload it.

Restrictions

Android payment terminals come with certain limitations that you need to take into account:

  • Launcher apps with the CATEGORY_HOME intent are not allowed.
  • In the AndroidManifest.xml, the testOnly flag is not allowed.
  • Creating your own accessibility service is not allowed.
  • There is no debug mode on the terminal.
  • The terminals do not have a browser installed.
  • The terminals do not have Google Play services installed.
  • Downgrading the version of an app you installed is not allowed. You can either upgrade the version of your app or uninstall it.
  • Terminals support the following Webview versions:
    • Terminals on Android 9: 91.0.4472.88.
    • Terminals on Android 10 and software version 1.107 and earlier: 74.0.3729.186.
    • Terminals on Android 10 and software version 1.109 and later: 91.0.4472.88.

Debug and test

For security reasons, we cannot enable USB debugging via Android Debug Bridge (adb) on our payment terminals. Therefore, it is not possible to debug your application directly on the terminal.

  1. To debug your Android app, install the app on a regular (non-payment) Android device that supports USB debugging, and debug the app using adb.

  2. Upload the app to us, install the app on a test terminal, and carry out integration tests by sending Terminal API requests to the terminal through local or cloud communications.

    If a bug occurs, you can ask our Support Team to check the logs from the terminal.

  3. For final integration testing, repeat the previous step using your live Customer Area and a live terminal.

Next steps