Skip to content

Tap to Pay on iPhone Quickstart

Accept in-person contactless payments on iPhone with no extra hardware. FinixTapToPaySDK uses Apple's Tap to Pay on iPhone technology and processes payments through Finix from start to finish. Your app starts a transaction, the Buyer taps a card or digital wallet on the merchant's iPhone, and the SDK returns a completed Finix Transfer.

Using the Finix Checkout app?

This guide is for developers integrating FinixTapToPaySDK into their own iOS app. To accept Tap to Pay on iPhone payments without writing code, see Accept Payments with Tap to Pay on iPhone in the Finix Checkout app.

How it works

  1. Your app starts a transaction with an amount and a transaction type.
  2. The SDK presents Apple's secure card-reading sheet and the Buyer taps a card or device. The card read happens inside Apple's Tap to Pay on iPhone technology, and neither your app nor the SDK ever sees raw card data.
  3. The SDK submits the payment to Finix and waits for the outcome. You do not make a separate API call to create the Transfer.
  4. The SDK returns a TapToPayTransactionResult with the Finix Transfer ID, its state, and masked card details.

The SDK also publishes progress events during the transaction (card reading, processing, success or failure) that you can use to drive your UI.

System requirements

Device and OS

RequirementValue
DeviceiPhone XS or later.
iOS version18.1 or later.
TestingPhysical iPhone required. The simulator cannot accept taps.
iPad is not supported

Tap to Pay on iPhone is not available on iPad.

Development environment

RequirementValue
Xcode16.0 or later.
Swift5.9 or later.

Apple requirements

  • Membership in the Apple Developer Program with an organization account.
  • The Tap to Pay on iPhone entitlement, com.apple.developer.proximity-reader.payment.acceptance, granted by Apple. See Apple entitlement setup in the iOS SDK reference.

Finix requirements

  • A Finix account with access to the Finix Dashboard.
  • API credentials (username and password) for the environment you are targeting.
  • An approved merchant (MUxxxxxxxxxxxxx), its processing MID, and its display name.
  • An activated Finix Device resource representing the iPhone. See Set up a Device in the iOS SDK reference.

Environments

Finix Sandbox and Production are separate environments, and credentials and merchants in one don't exist in the other. The environment is explicit in the SDK configuration (.sandbox or .production), and a configuration's credentials, Merchant, and Device must all belong to the same environment.

All examples in this guide run against Sandbox. See Credentials and environments for details.

Integration steps

Work through the steps below in order. Each links to the detailed section in the iOS SDK reference that covers it.

Step 1: Confirm system requirements

Verify you have an iPhone XS or later running iOS 18.1 or later, and a physical device for testing.

Step 2: Set up your Apple entitlement

Request the com.apple.developer.proximity-reader.payment.acceptance entitlement from Apple and configure your Xcode project.

See Apple entitlement setup.

Step 3: Gather your Finix credentials

Collect your Finix Sandbox API credentials and merchant details (Merchant ID, MID, and display name).

See Credentials and environments.

Step 4: Create a Device resource

Provision a Finix Device resource for the iPhone from your backend. Create it once and cache the Device ID.

See Set up a Device.

Step 5: Install and initialize the SDK

Add the Swift package and build a TapToPayConfiguration with your credentials, merchant details, and Device ID, then create the SDK entry point with FinixTapToPay(configuration:).

The SDK is hosted on GitHub.

See Installation and initialization.

Present Apple's account-linking flow so the merchant accepts Apple's Terms and Conditions. This must complete before the first transaction.

See Account linking.

Step 7: Warm up the reader

Call prepareReader() at app launch and enable autoPrepareOnForeground so the session stays warm. This keeps the first tap fast.

See Prepare the reader.

Step 8: Run a transaction

Start a transaction with startTransaction(amount:currency:type:identityId:), subscribe to transactionEvents to drive your UI, and handle the TapToPayTransactionResult.

See Transactions.

Step 9: Test and submit for App Review

Test end to end on a physical iPhone, review privacy disclosures, and prepare your App Review submission.

See Test your integration, Privacy and data collection, and Prepare for App Review.

Demo App

Finix provides a demo app you can use as a reference for your integration.

Learn more