Search

Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Deploy apps on your terminals

Upload apps to Adyen and make them available on your Android payment terminals.

On your Android payment terminal you can install and use Android apps. For example, install a cash register app and an inventory maintenance app to enable your staff to check the inventory, operate the cash register, and take payments using a single device.

How it works

This is how you make apps available on your Android payment terminals:

  1. You upload your app to us, using your Customer Area.
  2. We sign the app, convert it to a format that the terminal can handle, and store it.
  3. When the app is ready (signed and converted), you install your app on the terminal.
  4. When the terminal makes the next automatic maintenance call to our system, the app is installed and becomes available on the terminal.

App specifications

Make sure your app meets the following requirements:

  • Operating system:

    • For use on S1E terminals, the app must be compatible with Android 7.1.
    • For use on S1F2 terminals, the app must be compatible with Android 9.

  • To distribute the app to your terminals, we need to have the app's Android Package (APK). The maximum APK file size is 150 MB.

  • App version - minSdkVersion :
    The AndroidManifest.xml that's included in the APK must have a minSdkVersion field specifying the minimum SDK version that your app needs. This allows us to verify that your app is supported on the terminal.

    • For use on S1E terminals, the app must be compatible with SDK version 25 or earlier.
    • For use on S1F2 terminals, the app must be compatible with SDK version 28 or earlier.
  • App version - versionCode :
    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. If your app includes a permission that is not on the following list, the app will be marked as invalid when you upload it.

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.

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.
  • There is no debug mode on the terminal. If a bug occurs, you can pull logs from the terminal and contact our POS Support Team for help.
  • Only the old versions of Webview are currently supported:
    • S1E: 52.0.2743.100
    • S1F2: 66.0.3359.158
  • The terminals do not have a browser installed.

Upload your app to Adyen

For this task, you need to have the following user role:

  • Merchant POS Terminal Management Admin

Upload your app as follows:

  1. Create a signed APK file of your app:

    1. In Android Studio, select Build > Generate Signed Bundle / APK.
    2. In the dialog, select APK and then Next.
    3. Configure your key store details and select Next.
    4. Select a build variant:
      • If your minSdkVersion is 23 or lower, select V1 (Jar Signature). We recommend also selecting V2 (Full APK Signature).
      • If your minSdkVersion is higher than 23, we recommend selecting V2 (Full APK Signature).
    5. Select Finish.

    For more details, see the Android APK signing documentation.

  2. Log in to your Customer Area.
  3. Go to Point of sale > Android apps.
  4. Select Upload an app.
  5. In the dialog box:
    1. Drag the APK file to the upload box or select the box and choose the APK file.
    2. Optionally enter a description of the app so that we can store this in our systems.
      On the terminal, we will use the app name that's included in the APK.
    3. Select the check box to opt in.
    4. Select Upload app.
  6. Stay on the page until the dialog box closes.
    The Android apps page now shows the icon and APK name of your app.
  7. Check the status of your app.

    Status Description
    Processing We're busy signing and converting your app. This can take up to an hour.
    Error Something went wrong. Check that your app matches the specifications and retry uploading the APK file. If the retry attempt fails as well, contact our POS Support Team or your Adyen implementation manager.
    Invalid There is something wrong with the APK file. Contact our POS Support Team or your Adyen implementation manager.
    Ready We finished signing and converting your app.

Manage apps on your terminals

To install or uninstall an app on your payment terminals, you indicate in your Customer Area what action you want to take on what terminals. The terminals will then carry out the action the next time they make an automatic maintenance call to our system. For the action to succeed, the terminal must be connected to your network and turned on for at least one maintenance interval (by default 180 minutes) before the restart hour. Before uploading the app, have a look at the permissions that are whitelisted for apps running on the Android payment terminals.

To manage apps, you need to have the following user role:

  • Merchant POS Terminal Management Admin

To check which apps are currently deployed on a terminal:

  1. On the terminal, select Settings.
  2. Select Apps and enter your passcode.

To add an app to a payment terminal:

  1. In your Customer Area > Point of sale > Android apps , verify that the app has been uploaded and has reached the Ready state.
  2. Select Install app.
  3. Select the app, and the payment terminals that you want to deploy the app to.
  4. Select Install.

To remove an app from a payment terminal:

  1. In your Customer Area, go to Point of sale > Android apps.
  2. Select Uninstall app.
  3. Select the app, and the payment terminals that you want to remove the app from.
  4. Select Uninstall.

See also