{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-ios/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Prepare for App Review | iOS Tap to Pay on iPhone SDK Reference","description":"Apple's Tap to Pay on iPhone user-experience requirements, mapped onto a Finix iOS SDK integration, plus the screen recordings Apple asks for.","siteUrl":"https://docs.finix.com/","llmstxt":{"hide":false,"sections":[{"title":"Getting Started","includeFiles":["guides/getting-started/**/*.md"],"excludeFiles":[]},{"title":"Online Payments","includeFiles":["guides/online-payments/**/*.md"],"excludeFiles":["guides/online-payments/payment-features/fsa-hsa-non-healthcare-mcc.md"]},{"title":"In-Person Payments","includeFiles":["guides/in-person-payments/**/*.md"],"excludeFiles":[]},{"title":"Subscriptions","includeFiles":["guides/subscriptions/**/*.md"],"excludeFiles":[]},{"title":"After the Payment","includeFiles":["guides/after-the-payment/**/*.md"],"excludeFiles":[]},{"title":"Managing Operations","includeFiles":["guides/managing-operations/**/*.md"],"excludeFiles":[]},{"title":"Platform Payments","includeFiles":["guides/platform-payments/**/*.md"],"excludeFiles":[]},{"title":"Payouts","includeFiles":["guides/payouts/**/*.md"],"excludeFiles":[]},{"title":"Low-Code / No-Code","includeFiles":["low-code-no-code/**/*.md"],"excludeFiles":[]},{"title":"Developers","includeFiles":["additional-resources/developers/**/*.md"],"excludeFiles":[]},{"title":"Plugins","includeFiles":["additional-resources/plugins/**/*.md"],"excludeFiles":[]},{"title":"Industry Considerations","includeFiles":["guides/industry-considerations/**/*.md"],"excludeFiles":[]},{"title":"Regional Considerations","includeFiles":["guides/regional-considerations/**/*.md"],"excludeFiles":[]},{"title":"Release Notes","includeFiles":["release-notes/**/*.md"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"prepare-for-app-review","__idx":0},"children":["Prepare for App Review"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Apple reviews Tap to Pay on iPhone apps against a specific set of user-experience requirements before granting the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["distribution entitlement"]}," (required for TestFlight and the App Store, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ios/tap-to-pay/apple-entitlement"},"children":["Apple entitlement setup"]},"). Build these requirements into your app from the start rather than retrofitting them after review feedback."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To request the distribution entitlement, reply to Apple's original entitlement email once your app meets the requirements below. The process usually takes one to two weeks and may include a round or two of feedback. For Apple-side questions during the process, contact ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"mailto:ttpoientitlements@apple.com"},"children":["ttpoientitlements@apple.com"]}," with your case ID."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"requirements-and-who-implements-them","__idx":1},"children":["Requirements and who implements them"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These requirements come from Apple. The tables below map each one onto a Finix integration: \"SDK\" means ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FinixTapToPaySDK"]}," already satisfies it when used as this guide shows, and \"Your app\" means you build it."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"general","__idx":2},"children":["General"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Requirement"},"children":["Requirement"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Handled by"},"children":["Handled by"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Offer Tap to Pay on iPhone only on compatible devices (iPhone XS or later)."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app + SDK"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Gate every entry point on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FinixTapToPay.isSupported()"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Set an appropriate iOS deployment target."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The SDK requires iOS 18.1+. Either set your target to 18.1+, or guard Tap to Pay on iPhone code paths for earlier targets."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Warm up the reader at launch or foreground."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app + SDK"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prepareReader()"]}," once linked (",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ios/tap-to-pay/transactions#prepare-the-reader"},"children":["Prepare the reader"]},"); ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["autoPrepareOnForeground"]}," re-warms on foreground."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Read Terms and Conditions acceptance from Apple, never a local flag."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["SDK"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isAccountLinked()"]}," queries Apple; don't cache acceptance in your own storage."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["If Tap to Pay on iPhone is your app's sole payment method, restrict downloads to capable devices."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Add to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Info.plist"]},": see below."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Use Face ID / Touch ID for merchant login (recommended)."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Makes repeat checkout faster for merchants."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Follow the Human Interface Guidelines and Apple's Tap to Pay on iPhone marketing guidelines."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://developer.apple.com/design/human-interface-guidelines"},"children":["HIG"]}," · ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://developer.apple.com/tap-to-pay/marketing-guidelines/"},"children":["Marketing guidelines"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","data-title":"Info.plist","header":{"title":"Info.plist","controls":{"copy":{}}},"source":"<key>UIRequiredDeviceCapabilities</key>\n<array>\n    <string>iphone-ipad-minimum-performance-a12</string>\n</array>\n","lang":"xml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"onboarding-and-enabling","__idx":3},"children":["Onboarding and enabling"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Requirement"},"children":["Requirement"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Handled by"},"children":["Handled by"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Tap to Pay on iPhone access is easy to discover for a new user."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Prominent \"Enable Tap to Pay on iPhone\" / \"Get started\" entry."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Digital onboarding completes in under 15 minutes for most users."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your platform"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Measured from information submission to first accepted payment."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A clear, unambiguous action triggers Terms and Conditions acceptance."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app + SDK"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your button calls ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["linkAccount()"]},"; the SDK presents Apple's sheet."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Only an admin or authorized user can accept the Terms."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Gate the link flow by role; the SDK has no role concept."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Non-admin users are told to contact their admin."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Show messaging instead of the link flow."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Tap to Pay on iPhone can be enabled outside checkout (for example, in settings) ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["and"]}," from the checkout flow."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Both paths lead to the same ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ios/tap-to-pay/account-linking"},"children":["link flow"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["All eligible users see a Tap to Pay on iPhone announcement at least once."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Splash screen or push notification."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Show configuration progress while Tap to Pay on iPhone is being set up."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Indeterminate progress while awaiting ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prepareReader()"]},"; the SDK does not report percentages."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A \"try it out\" moment after setup (recommended)."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Prompt a first practice transaction once the reader is ready."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"merchant-education","__idx":4},"children":["Merchant education"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Requirement"},"children":["Requirement"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Handled by"},"children":["Handled by"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Education screens appear after Terms acceptance."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Teach the merchant how to take a tap payment."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Education is re-accessible later (Settings or Help)."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Keep a permanent entry point."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["On iOS 18 and later, prefer Apple's built-in education UI."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Present Apple's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ProximityReaderDiscovery"]}," directly. Apple keeps its content current and localized, and the SDK does not wrap it."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Education demonstrates contactless card acceptance ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["and"]}," Apple Pay / digital wallet acceptance."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required content if you build custom education screens; use Apple-approved assets."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"checkout-experience","__idx":5},"children":["Checkout experience"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Requirement"},"children":["Requirement"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Handled by"},"children":["Handled by"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An obvious, prominent Tap to Pay on iPhone button at checkout."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Visible without scrolling; first among multiple payment options."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The button is never hidden, grayed out, or altered based on enablement."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["If not yet enabled, the button starts the enablement flow."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Use only Apple's approved symbol if the button has an icon."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["SF Symbols ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["wave.3.right.circle"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["wave.3.right.circle.fill"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A processing screen shows after the card read."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app + SDK"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Drive it from the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".processing"]}," event (",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ios/tap-to-pay/transactions#take-a-payment"},"children":["Take a payment"]},")."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The outcome (approved, declined, timed out) is clearly communicated."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["From the returned result or thrown error."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A digital receipt can be offered after every outcome, confidentially."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your app"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["SMS, email, QR code, or share sheet (",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ios/tap-to-pay/transactions#handle-the-result"},"children":["Handle the result"]},")."]}]}]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"swift","data-title":"Checkout button","header":{"title":"Checkout button","controls":{"copy":{}}},"source":"import SwiftUI\n\nButton {\n    startTapToPayCheckout()\n} label: {\n    Label(\"Tap to Pay on iPhone\", systemImage: \"wave.3.right.circle.fill\")\n}\n","lang":"swift"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"marketing-at-launch","__idx":6},"children":["Marketing at launch"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you launch Tap to Pay on iPhone to your users, Apple expects a launch email to eligible users, an in-app splash, and a push notification, using copy aligned with Apple's ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://developer.apple.com/tap-to-pay/marketing-guidelines/"},"children":["Tap to Pay on iPhone marketing guidelines"]}," and Apple-approved assets."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"record-your-user-flows","__idx":7},"children":["Record your user flows"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Apple asks for screen recordings with the distribution entitlement request. Record with a second device where possible. Apple wants to see three flows:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["New user flow"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["New merchant onboarding, including account creation and any identity verification."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["How Tap to Pay on iPhone is introduced to the new merchant, and the Terms and Conditions acceptance."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The education screens after acceptance, and where education can be found again later."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The configuration progress indicator, through to setup completion."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Existing user flow"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Where an existing user discovers Tap to Pay on iPhone (splash, notification, settings)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Terms acceptance, education, and, if the user skips ahead, the progress indicator before first use."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Tap to Pay on iPhone button visible at checkout even before enablement."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Checkout flow"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Building a payment (amount entry or cart), the payment options, and the Tap to Pay on iPhone button."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A complete tap transaction: processing screen, outcome screen, and the receipt option."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Re-recording the Terms acceptance"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Re-recording the Terms acceptance requires an unlinked state. The most reliable option is a device and Apple Account pair that has never linked. Deleting and reinstalling the app usually works too, but the link can survive a reinstall, so check ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isAccountLinked()"]}," before recording. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," means you're still linked, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}," isn't a guarantee, since the check also returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}," on errors. See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ios/tap-to-pay/account-linking#manage-or-unlink-the-account"},"children":["unlinking"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"regional-requirements","__idx":8},"children":["Regional requirements"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Apple imposes additional requirements in some regions, including PIN entry support with accessibility guidance, and a fallback payment method where many cards cannot complete contactless transactions. SDK 1.0.0 targets US merchants and does not support PIN entry. If you plan to deploy outside the US, contact ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ios/tap-to-pay/support"},"children":["Finix Support"]}," first to confirm regional availability."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Next:"]}," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ios/tap-to-pay/support"},"children":["Troubleshooting and support"]},"."]}]},"headings":[{"value":"Prepare for App Review","id":"prepare-for-app-review","depth":1},{"value":"Requirements and who implements them","id":"requirements-and-who-implements-them","depth":2},{"value":"General","id":"general","depth":3},{"value":"Onboarding and enabling","id":"onboarding-and-enabling","depth":3},{"value":"Merchant education","id":"merchant-education","depth":3},{"value":"Checkout experience","id":"checkout-experience","depth":3},{"value":"Marketing at launch","id":"marketing-at-launch","depth":3},{"value":"Record your user flows","id":"record-your-user-flows","depth":2},{"value":"Regional requirements","id":"regional-requirements","depth":2}],"frontmatter":{"seo":{"title":"Prepare for App Review | iOS Tap to Pay on iPhone SDK Reference","description":"Apple's Tap to Pay on iPhone user-experience requirements, mapped onto a Finix iOS SDK integration, plus the screen recordings Apple asks for."}},"lastModified":"2026-08-11T19:49:07.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/ios/tap-to-pay/app-review","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}