Skip to main content
You are viewing early implementations that may change before release. Use them to prepare and provide feedback to our team. Check out Swan's public roadmap to see what else is in the works.

Set up the development environment

Prepare your development environment before building your in-person card payment integration.

Prerequisites

  • An Apple Developer account with organization-level access (iOS only).
  • A React Native, iOS, or Android project.

Step 1: Request Apple entitlements (iOS only)

iOS only

Skip this step if you're building for Android only.

To develop Tap to Pay on iPhone, you need the Tap to Pay on iPhone entitlement from Apple. It applies even if you're developing with React Native.

  1. Sign in to your Apple Developer account as the Account Holder.
  2. Submit a request using Apple's entitlement request form.
  3. On the form, provide the following:
    • Your PSP: Stripe.
    • Distributed apps using this entitlement: the number of existing apps that will include Tap to Pay.
    • New apps using this entitlement: the number of new apps you plan to launch with Tap to Pay.
    • Distribution method: public through the App Store.
    • Fill in the remaining fields based on your use case: expected number of users, target countries, and expected release date.
  4. After submitting, Apple sends a confirmation email. Follow Apple's guide to add the Tap to Pay capability to your App ID, download the provisioning profile, and configure the entitlements file.
Save your confirmation email

This entitlement covers development and internal testing only. Before publishing to the App Store or TestFlight, reply to this email to request the production entitlement, then resubmit the form.

Step 2: Install the Stripe Terminal SDK

Swan uses Stripe as its provider for in-person card payments. Install the Stripe Terminal SDK in your project.

Stripe docs reference

Follow this guide to install the SDK. Steps 3 and 4 in Stripe's documentation differ for Swan integrations.

The React Native SDK is open source and available on GitHub.

Install it using your package manager:

# npm
npm install @stripe/stripe-terminal-react-native

# Yarn
yarn add @stripe/stripe-terminal-react-native

# Expo
npx expo install @stripe/stripe-terminal-react-native

Step 3: Request location permissions

The Stripe Terminal SDK requires foreground location access to determine where payments are made and reduce fraud risks. Payments won't start without it.

UX best practice

Before requesting location access, explain to users why you need it. A brief in-app message before the system prompt improves acceptance rates.

Location permission configuration differs by target OS and whether you use React Native CLI or Expo.

Follow Step 2 (Configure your app) in Stripe's guide. Do not continue past that step. The remaining steps differ for Swan integrations.

Next steps

Request a merchant profile