Skip to content

Apple entitlement setup

Tap to Pay on iPhone is a restricted Apple capability. Before your app can use the SDK, even on a development device, Apple must grant your Apple Developer account the Tap to Pay on iPhone entitlement.

Before you start: you need an organization Apple Developer account, and the request must be submitted by the account's Account Holder.

The two entitlements

Apple grants the entitlement in two stages:

StageWhat it allowsTypical turnaround
Development entitlementBuild and test on your team's devices.1-2 business days in most regions.
Distribution entitlementTestFlight and App Store distribution.1-2 weeks, usually with one or two rounds of Apple feedback.

Request the development entitlement first, since you need it for any on-device work. Once your user experience meets Apple's requirements, request the distribution entitlement by replying to the original email thread from Apple and re-requesting the entitlement for distribution. Prepare for App Review covers those requirements.

TestFlight requires the distribution entitlement

The distribution entitlement is required even for TestFlight, so plan for the review lead time. The timelines above come from Apple and can vary.

Request the development entitlement

  1. Sign in at developer.apple.com as the Account Holder.
  2. Complete Apple's Tap to Pay on iPhone entitlement request form.
  3. Name Finix as your payment service provider and list the countries or regions where you plan to deploy.
  4. When Apple approves the request, the entitlement appears in your account as a managed capability. See Apple's setup guide for the full walkthrough.

Configure your Xcode project

Once the entitlement is granted:

  1. In your developer account, add the Tap to Pay on iPhone capability to your App ID, then regenerate and download your provisioning profiles.
  2. Add the entitlement to your app's .entitlements file:
YourApp.entitlements
<key>com.apple.developer.proximity-reader.payment.acceptance</key>
<true/>
  1. Add an NFC usage description to your app's Info.plist. iOS shows this string the first time the reader is used:
Info.plist
<key>NFCReaderUsageDescription</key>
<string>This app uses NFC to securely accept contactless payments via Tap to Pay on iPhone.</string>

Verify your setup

Build to a physical iPhone and check device support at runtime. Gate every Tap to Pay on iPhone entry point in your UI on this check:

import FinixTapToPaySDK

if FinixTapToPay.isSupported() {
    // Show your Tap to Pay on iPhone entry points.
} else {
    // Hide Tap to Pay on iPhone and offer another payment method.
}

isSupported() returns false on unsupported hardware and on the simulator. If it returns true but reader preparation later fails immediately, re-check that the entitlement is present in the built app's signature and that your provisioning profile includes the capability. See Troubleshooting and support.

Next: Credentials and environments.