Preparing for Development
Pre-requisites
IOS MINIMUM VERSION
In order to support all required Card Schemes, the minimum supported iOS version for
Payment Device SDK for iOS has been updated to 17.4.
APPLE SANDBOX ACCOUNT
To develop an application utilizing Apple's Tap to Pay technology, the device must be signed
into a developer sandbox account.
These can easily be created from App Store Connect under “Users And Access > Sandbox”
ENTITLEMENTS
Apple Tap to Pay requires additional entitlements, which must be requested by the Apple
Developer Account Holder. These entitlements are divided into two types:
- Developer Entitlements: Enables application development on devices registered
under the Apple Developer account. - Publishing Entitlements: Used when the application is ready for release on the
Apple App Store.
The form for requesting entitlements can be found here.
To access the request form, you must have an organization-level Apple Developer account
and be logged in as the Account Holder. Additionally, you will need to verify that NMI is your
approved Payment Service Provider (PSP) and confirm the regions where you plan to
deploy your application.
In order to receive Publishing Entitlements from Apple your app must comply with Apple’s
user experience requirements for Tap To Pay applications which can be found in Appendix B
Apple User Experience Requirements.
When you’re ready to apply for Publishing Entitlements simply reply to the email which
supplied the development entitlements and quote the Case ID assigned when submitting
your request for entitlements. Apple will be in touch with information on how to submit your
application for review.
For full details please refer to the Appendix B: Apple User Experience Requirements.
RESTRICTIONS
Tap To Mobile is an always online feature and can not function without an internet
connection at the point of interaction.
Offline transactions are not supported as they are restricted by payment industry's security
standards for Tap To Mobile transactions.
GEOFENCING RESTRICTIONS
Tap to Mobile employs geofencing as a fraud prevention measure. To ensure compliance
during development, the API key used for testing must be associated with a merchant
account registered in the same location where you are developing your application.
Additionally, transaction processing is currently restricted to the following countries:
- United States (US)
- United Kingdom (UK)
- All EEA countries (including Romania, Ukraine, and Poland)
- Canada
- China
- Indonesia
- Brazil
- South Africa
- India
- Vietnam
- Philippines
- Mexico
- Argentina
- Israel
If you require support for additional countries, please contact your account manager.
Project Setup
DEVELOPMENT ENTITLEMENTS
The development entitlement allows you to build and test your Tap to Pay on iPhone
implementation. Once you’ve received your developer entitlements you’ll need to add the
following capabilities to your application’s Identifier:
- App Attest
- NFC Tag Reading
- Tap To Pay on iPhone
Tap To Pay on iPhone will appear once your development entitlements have been approved
by Apple at which point it’ll appear under “Additional Capabilities” when configuring your
application’s Identifier.

Once the application’s Identifier is configured you must create a new provisioning profile
linked to it and link to it in your xCode project.
Within your application’s xCode project you will then need to update your entitlements file
with the following:
Key | Type | Value |
---|---|---|
App Attest Environment | String | development |
com.apple.developer.proximity-reader.payment.acceptance | Boolean | YES |
Near Field Communication Tag Reader Session Formats | Array | 1 Item |
Item 0 (Near Field Communication Tag Reader Session Formats) | String | Tag-Specific Data Protocol (TAG) |
If your project doesn’t contain an entitlements file you can create one by:
- Choose File > New > File, select Property List from the Resource section, and click
Next. - Enter your_project.entitlements as the filename. Replace your_project
with the name of your project, then click Create. - In the project editor, choose Build Settings.
- Click All and Combined in the scope bar.
- Use the search box to find the Code Signing Entitlements setting.
- Enter the full path to the .entitlements file from step 3 as the setting’s value.
As part of your development time, you should factor in adhering to Apple’s User Experience
requirements which can be found in Appendix B of this document. You’ll need to prove
you’re following these in order to receive your Publishing Entitlements.
LINKING DEPENDENCIES
In addition to the Payment Device SDKs usual dependencies, you will also need to link
against the following to work:
libChipDNAMobileAPI.a
CloudCommerce.xcframework
This means in your project you should be linked against the following:
libChipDNAMobileAPI.a
CloudCommerce.xcframework
libSqlCipher-4.6.1.a
CoreLocation
CoreData
ExternalAccessory
MessageUI
SystemConfiguration
Security
AVFoundation
MediaPlayer
CoreAudio
AudioToolbox
CoreBluetooth
When adding the CloudCommerce.xcframework do so from your application target under
the general section in “Frameworks Libraries and Embedded Content” and ensure that the
Embed drop down is set to “Embed and Sign.”

Please look at the Payment Device SDK for iOS - API for Release Documentation supplied
within the release bundle for a more detailed breakdown of required dependencies for
running the Payment Device SDK.
ADDITIONAL PERMISSION REQUIREMENTS
During configuration the Payment Device SDK will perform a suite of security checks,
including requiring the integrating application to be granted location permissions. The
recommended level of permission is
CLAuthorizationStatus.authorizedWhenInUse.
Apple has extensive documentation on the iOS CLLocationManager available here.
UPDATING INFO.PLIST
PRODUCT_TEAM_IDENTIFIER
To properly attest the security of the application when using Tap To Mobile the team
identifier must be added to the application info.plist.
Permission usage descriptions
When requesting location permissions, iOS will look for the following within the applications
info.plist:
Privacy - NFC Scan Usage Description
Privacy - Location When In Use Usage Description
Privacy - Location Always and When In Use Usage Description
Example
Key | Type | Value |
---|---|---|
PRODUCT_TEAM_IDENTIFIER | String | <your team identifier> |
Privacy - NFC Scan Usage Description | String | This application needs to read NFC card & tags in order to accept payments. |
Privacy - Location When In Use Usage Description | String | This application needs to check that you are operating the app from a permitted location. |
Privacy - Location Always and When In Use Usage Description | String | We'd like to access your location to store it with each transaction. |
Updated 16 days ago