Skip to content

docs: clarify Apple's requirements for Tap to Pay on iPhone in the iOS SDK guide - #968

Draft
jadeburton-sumup wants to merge 4 commits into
mainfrom
feature/TOP-1706/ios-sdk-tap-fixes
Draft

docs: clarify Apple's requirements for Tap to Pay on iPhone in the iOS SDK guide#968
jadeburton-sumup wants to merge 4 commits into
mainfrom
feature/TOP-1706/ios-sdk-tap-fixes

Conversation

@jadeburton-sumup

@jadeburton-sumup jadeburton-sumup commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Closes TOP-1706.

Why

SDK integrators lose time in review cycles with Apple because the iOS SDK guide never said which of Apple's checklist items the SDK already satisfies. The only guidance was two links, to the Human Interface and marketing guidelines, so integrators had to infer the split by reading the SDK headers — and several asked SumUp directly instead. One such request is quoted on the ticket.

The guide also stopped short of the Tap to Pay checkout itself and never documented SMPPaymentMethod, so the flow could not be completed from the docs alone.

What changed

All changes are in src/content/docs/terminal-payments/sdks/ios-sdk.mdx.

Factual corrections (bcbec27) — verified against the SumUpSDK 7.1.2 headers and resource bundle:

  • "Tap to Pay on iPhone" rather than "Tap To Pay on iPhone" or "Tap-to-Pay". The SDK's localized string returns the lowercase form.
  • Replaced a stale minimum iOS version. The page claimed 16.4, with an undated "16.7 starting July 8th" note and a conflicting 17.5 recommendation.
  • Corrected both SMPReaderType listings, which each omitted a case and neither of which mentioned Unknown.

Tap to Pay checkout documentation (1723c29):

  • Documented SMPPaymentMethod and added a checkout example in Swift and Objective-C.
  • Added a table for error codes 100–105 and what an app should do for each.
  • Described how Tap to Pay differs from card reader checkouts (lastReaderStatus, tipping, prepareForCheckout, reader settings).

Apple's requirements (44008e7) — the substance of the ticket:

  • New "Apple's Requirements for Tap to Pay on iPhone" section: non-negotiable requirements, a table mapping each Apple checklist area to whether the SDK provides it, and ten common mistakes.
  • States that approval comes from Apple alone, not SumUp.

Country-dependent behaviour (7f4ef4c):

  • Accepted card schemes and whether a payment needs PIN entry depend on the merchant's country and are applied by SumUp at processing time. No scheme list is published, as it varies by country.

Two corrections worth reviewer attention

These are approval-critical, and both contradict what an integrator would reasonably have assumed from the old page:

  1. The card-reading and PIN screens are Apple's, not SumUp's. When Apple's reader UI appears the SDK clears its own title and status text and hides its animation. An integrator assuming SumUp owned that screen might try to restyle or overlay it, which fails review.
  2. The SDK does not use ProximityReaderDiscovery. It exists in ios-sumup-tap source but is gated behind #available(iOS 26.0, *) and post-dates the shipped build; it is absent from the 7.1.2 binary. An app claiming to present it in its review notes would be making a false statement to Apple.

Also worth noting: there is no distinct timeout outcome. pinEntryTimeout is mapped into the declined path, so the docs describe it that way rather than implying a third result.

Deliberate omissions

Confirmed with the ticket owner:

  • No CVM/PIN threshold. The limit is country-dependent and enforced server-side.
  • No supported-country list. Availability is server-driven; the docs point at checkTapToPayAvailability as the only source of truth. Chile's higher iOS 18 floor is recorded, as it is a hardcoded rule.
  • No card scheme list, per the above.

Verification

  • npm run check — passes. One pre-existing error in src/components/Forms/CopyInput/CopyInput.tsx (@sumup-oss/icons has no exported member Copy) is present on main and untouched by this branch.
  • npm run build — passes.
  • npm run lint:markdown — no issues across 150 files.
  • npm run linkcheck — all internal links valid, including the new anchors; 4384 links checked across rendered pages.

Follow-up, not for this PR

PaymentCardReaderWrapper.swift:32 in ios-sumup-tap sets recommendedMinimumiOSVersion = "18.6" with the comment "18.6 will be blocked in July 2026". That date has passed. If 18.7 is the current floor, the in-app OS alert is telling merchants on 18.6 that they are supported when they are not. That needs a code change in the SDK, not a docs change.

Corrects factual errors in the iOS SDK guide, verified against the
SumUpSDK 7.1.2 headers and resource bundle:

- Remove a stray character that had corrupted an Objective-C doc comment.
- Use "Tap to Pay on iPhone" rather than "Tap To Pay on iPhone". The SDK's
  localized string returns the lowercase form; the capitalised spelling came
  from an incorrect comment in SMPSumUpSDK.h.
- Drop the "Tap-to-Pay" hyphenation in favour of Apple's "Tap to Pay on
  iPhone" branding, which the page already links out to. Heading slugs are
  unchanged, so existing anchors still resolve.
- Replace the stale minimum iOS version. The page claimed 16.4, with an
  undated "iOS 16.7 starting July 8th" note and a conflicting 17.5
  recommendation. The minimum rises over time and is currently 18.7, so the
  requirement is now dated and points at the runtime checks instead of a
  hardcoded version. The same stale figures are removed from three
  reproduced SDK header comments.
- Correct both SMPReaderType listings, which each omitted a case and neither
  of which mentioned Unknown, the value returned when no physical reader has
  been connected.
The guide explained how to check availability and run activation, but
stopped before the checkout itself, and never documented SMPPaymentMethod.
The Tap to Pay case was therefore not discoverable from the docs, leaving
the flow impossible to complete without reading the SDK headers.

- Document the SMPPaymentMethod cases where paymentMethod is introduced.
- Add a Tap to Pay checkout example in Swift and Objective-C.
- Add a table for error codes 100-105 describing what an app should do for
  each, and noting that the hardware, iOS version and requirement failures
  can clear if the merchant updates their device.
- Describe how Tap to Pay differs from card reader checkouts: lastReaderStatus
  stays nil, readerType is Unknown, Tip on Card Reader is unavailable so tips
  must be set programmatically, and prepareForCheckout is unnecessary and
  reports error 60 for a Tap to Pay-only integration.
- Note that the sample app does not implement Tap to Pay. Its settings screen
  has a disabled toggle that is not wired to the SDK, so it is not a usable
  reference for this flow.
Integrators lose time in review cycles with Apple because the guide did
not say which of Apple's checklist items the SDK already satisfies. The
only guidance was two links to the Human Interface and marketing
guidelines, so integrators had to infer the split by reading the headers,
and several asked SumUp directly instead.

Add an "Apple's Requirements for Tap to Pay on iPhone" section covering:

- Non-negotiable requirements, including that the entitlement must be
  granted before building, that the product name must come from
  tapToPayProductName, and that availability must be checked at runtime
  rather than against a hardcoded iOS version.
- A table mapping each checklist area to whether the SDK provides it.
  Terms and conditions, activation status, configuration progress,
  initializing/processing screens, outcomes and merchant education are
  handled by the SDK. The card-reading and PIN screens belong to Apple
  and cannot be altered. Receipts are out of scope and come from the API.
- A note that the SDK does not use ProximityReaderDiscovery and exposes
  no way to invoke it, so apps should not claim to present it in review
  notes.
- Common mistakes: Simulator testing, Sandbox Apple IDs, submitting
  before the entitlement is granted, activating on an employee account,
  missing device passcode, starting a payment during a call, and calling
  prepareForCheckout or SMPProcessAsPromptUser for Tap to Pay.

Also state that approval comes from Apple alone rather than SumUp, note
that availability is resolved at runtime rather than from a published
country list, record Chile's higher iOS 18 floor, and point Known Issues
at the new section instead of repeating it.
Integrators ask which card schemes, PIN requirements and fallback
behaviour apply to their launch markets. The answer is that none of them
are theirs to configure, but the guide did not say so, leaving the
question open for each new integration.

Note that accepted schemes and whether a payment needs PIN entry are
determined by the merchant's country and applied by SumUp at processing
time, that Apple presents the PIN screen, and that the SDK has no
fallback to another payment method, so a failed Tap to Pay payment should
be handled like any other decline.

No scheme list is given, as the accepted schemes vary by country.
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
developer-sumup-com 7f4ef4c Commit Preview URL

Branch Preview URL
Sep 09 2026, 09:08 AM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants