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.
Apple grants the entitlement in two stages:
| Stage | What it allows | Typical turnaround |
|---|---|---|
| Development entitlement | Build and test on your team's devices. | 1-2 business days in most regions. |
| Distribution entitlement | TestFlight 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.
The distribution entitlement is required even for TestFlight, so plan for the review lead time. The timelines above come from Apple and can vary.
- Sign in at developer.apple.com as the Account Holder.
- Complete Apple's Tap to Pay on iPhone entitlement request form.
- Name Finix as your payment service provider and list the countries or regions where you plan to deploy.
- When Apple approves the request, the entitlement appears in your account as a managed capability. See Apple's setup guide for the full walkthrough.
Once the entitlement is granted:
- In your developer account, add the Tap to Pay on iPhone capability to your App ID, then regenerate and download your provisioning profiles.
- Add the entitlement to your app's
.entitlementsfile:
<key>com.apple.developer.proximity-reader.payment.acceptance</key>
<true/>- Add an NFC usage description to your app's
Info.plist. iOS shows this string the first time the reader is used:
<key>NFCReaderUsageDescription</key>
<string>This app uses NFC to securely accept contactless payments via Tap to Pay on iPhone.</string>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.