Could you have a way to take money in person without a dedicated terminal? Anyone doing small merch sales or selling by hand at an event has probably wondered this at least once. Alongside my indie development, I've had occasions to hand small goods to people in person, and each time I thought, "if I could take payment with just an iPhone, both my bag and my mind would be lighter." Tap to Pay on iPhone grants exactly that wish — no extra reader, just have someone tap a contactless card or phone against the iPhone to take the payment.
But when you go to wire it in, several walls rise up before the code does. This article is an organized look — from a business angle — at whether you can put Tap to Pay into an app built with Rork Max. I'll show fragments of implementation, but more than that I'll be candid about "what you should know before you start." Skip this and start typing, and you tend to end up back at square one.
First, the prerequisites that stand before the code
With Tap to Pay, eligibility and contracts weigh on you before any technical difficulty. That's exactly what threw me at first. Let's go through it.
| Requirement | Detail | Impact on indies |
|---|---|---|
| Organization account | An organization-level Apple Developer account is required; you request the entitlement logged in as the account holder | You can't request it on a personal-name account |
| Entitlement | Enable com.apple.developer.proximity-reader.payment.acceptance; request development and distribution entitlements from Apple separately | A waiting period for review and approval |
| Payment provider (PSP) | Actual processing needs a contract and SDK with a provider like Stripe, Square, or Adyen | Fees and merchant underwriting apply |
| Availability | Tap to Pay is limited to supported countries and regions | Confirm your business's location is covered first |
| Accompanying capabilities | Add the App Attest, NFC Tag Reading, and Tap to Pay capabilities | More configuration items |
The biggest point in this table is twofold: you can't even stand at the entrance under a personal name, and you can't build the payment itself. Card reading is handled by Apple's ProximityReader, but the part beyond it — actually moving money — always goes through a payment provider. Assume "it's self-contained on the iPhone alone" without grasping this, and you'll break your design once.
The split between ProximityReader and the payment provider
So what does Apple handle, and what does the provider handle? Separating this makes the design far clearer at a glance.
| Handler | Role |
|---|---|
| Apple's ProximityReader | Boots the iPhone as a reader and provides the tap experience for contactless cards and phones, plus the amount display and guidance screens |
| Payment provider (PSP) SDK | Securely processes the read payment data and handles the whole chain: authorization, capture, refunds, payout |
| Your app | Manages products and amounts, instructs the payment to start, and navigates or records based on the result |
In practice, most payment providers wrap Tap to Pay inside their own SDK. That is, rather than hitting ProximityReader's low-level API directly, going through a provider-supplied layer like Stripe Terminal or Square's Mobile Payments SDK is the realistic path. Because the provider handles entitlement setup and reader initialization together, the range you build yourself shrinks sharply.
My advice is: don't try to hand-build the low-level ProximityReader from the start. In payments — a domain where you can't afford mistakes — building authorization and refund consistency yourself doesn't match indie stamina. Lean on the provider's SDK and narrow your app to just "pass the amount, receive the result." That, I think, is the sound design.