Apps on Devices
Learn about deploying your Android POS apps on Stripe smart readers.
Use Apps on Devices to run your point-of-sale (POS) application along with other apps on your device. You can deploy your POS app to Stripe smart readers to provide an all-in-one solution, or build a customer-facing app for payments, driven by your POS running on another device.
Stripe handles all payments and compliance with the Terminal SDK. Android and React Native SDKs support Apps on Devices.
Apps on Devices enables the key phases of your app lifecycle:
- Build and test your app
- Prepare for app review
- Submit your app
- Deploy your app to selected devices
- Monitor deployment
View the sample app to learn integration best practices, how to collect and confirm a payment, and more.
Supported integrations
Apps on Devices supports two types of integrations:
- POS Android app on a Stripe smart reader
- POS Android app paired with consumer-facing app on a Stripe smart reader
Point-of-sale app on a Stripe smart reader
In this integration, both your POS app and the Stripe Reader app run on a Stripe smart reader. When the device starts, it launches your POS app instead of the Stripe Reader app. When initiating a transaction, the Stripe Reader app becomes the primary. At the end of the transaction, the Stripe Reader app finishes and your POS app becomes the primary.
Point-of-sale app paired with consumer-facing app on a Stripe smart reader
In this integration, your POS app runs on a device that’s separate from the Stripe smart reader. Your consumer-facing Android app runs on the Stripe smart reader and supports the payment transaction.
You manage the communication between your POS app and consumer-facing app over TCP/IP.
App requirement
App resources are limited by the device specs, and app functionality might be constrained by differences from standard Android development. Make sure your app can run successfully by operating within the requirements below.
APK size limit
APK files that you upload to the Stripe API have a 200 MB size limit.
Device specs
The Stripe Reader S700 has the following hardware specifications:
CPU | Qualcomm Snapdragon 665 QCM6125 |
RAM | 4GB |
Storage | 64GB |
OS | Android 10 |
Screen dimensions | 1080x1920 pixels |
Screen pixel density | 420dpi (xxhdpi) |
Device storage
Stripe manages updates over the air for all apps and software components that run on the device. Make sure your app uses 8 GB or less of storage on the device.
Differences from standard Android
The Stripe SmartPOS OS is built for security and PCI-compliance based on the Android Open Source Project (AOSP). It differs from standard consumer Android in the following ways:
- Google Play Services aren’t available on Stripe Android devices. You can integrate Google Play Services SDKs in your app, but you must verify that your app functions as expected. For example, parts of Firebase and Google Maps SDKs won’t function on Stripe devices.
- Notifications are disabled and the device user can’t access the home screen. Either your app or the Stripe reader app persists as the primary.
- Production devices have a disabled USB port. Additionally, Android Debug Bridge (
adb
) and debugging aren’t available.
You can use a DevKit device for development purposes.
Android permissions
During installation, the Stripe SmartPOS OS automatically grants Android permissions in your app’s manifest. The device user isn’t prompted for permission approval at runtime. Your app’s permissions are verified against the allowed permissions list, and apps requesting permissions in excess of the allowlist are rejected.
Caution
The camera, Bluetooth, and location capabilities and APIs are still in the experimental phase and haven’t been fully tested, validated, and approved by Stripe. Their performance, reliability, and stability aren’t guaranteed. Use this functionality at your discretion.
The NFC functionality in the devices only supports payments – it can’t be used for non-payment related features.
Apps on Devices and Stripe Connect compatibility
Platforms using Apps on Devices can deploy apps only to connected accounts that are controlled by a single platform. A connected account is supported if its controller.
property is true
. That prevents multiple platforms from deploying apps to the same connected account.