Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/stripe/stripe-terminal-react-native/llms.txt

Use this file to discover all available pages before exploring further.

Before integrating the Stripe Terminal React Native SDK, make sure your project meets the requirements below for your target platform.

JavaScript and TypeScript

The SDK uses TypeScript features available in Babel 7.9.0 and above. If your project uses a TypeScript transformer instead of Babel, install the plugin-transform-typescript Babel plugin. The SDK is distributed with full TypeScript type definitions — no separate @types package is needed.

React Native

The SDK declares react and react-native as peer dependencies with no version constraint ("*"), so it is compatible with any supported React Native version.

Platform requirements

SDK versions

RequirementValue
Minimum API level (minSdkVersion)26
Compile SDK version (compileSdkVersion)35
Target SDK version (targetSdkVersion)35
Attempting to override minSdkVersion to decrease the minimum supported API level will not work. The SDK performs a runtime API level validation and will reject devices below API level 26 even if your build configuration allows a lower minimum.

Required permissions

Add the following permissions to your AndroidManifest.xml:
<!-- Location permission (required for Bluetooth reader discovery on all Android versions) -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!-- Bluetooth permissions (required on Android 12 / API 31 and above) -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />

Requesting permissions at runtime

The SDK provides a requestNeededAndroidPermissions utility to request all required permissions at runtime. Call it before starting reader discovery.
import { requestNeededAndroidPermissions } from '@stripe/stripe-terminal-react-native';

const { error } = await requestNeededAndroidPermissions({
  accessFineLocation: {
    title: 'Location Permission',
    message: 'Stripe Terminal needs access to your location',
    buttonPositive: 'Accept',
  },
});

if (error) {
  console.error('Permission denied:', error);
}
On Android 12 (API 31) and above, the utility also requests BLUETOOTH_CONNECT and BLUETOOTH_SCAN. On earlier versions, only ACCESS_FINE_LOCATION is requested.
The dialog text for BLUETOOTH_CONNECT and BLUETOOTH_SCAN cannot be customized — Android does not support custom rationale for those permissions.