In-app Tap to Pay on iPhone
The MONEI Tap to Pay SDK for iOS (MoneiTapToPay) lets your own iOS app accept contactless card payments with . The payment runs inside your app, with your own Apple entitlement. MONEI processes the payment and sends the result to your app and to your server.
Choose your integration
MONEI Pay has two ways to accept card payments from your own app. Use this table to choose.
| In-app Tap to Pay (this SDK) | App-to-app integration | |
|---|---|---|
| Where the payment runs | Inside your iOS app | In the MONEI Pay app, which your app opens |
| Platforms | iPhone | iOS, Android, React Native and web |
| Apple entitlement | Your own Tap to Pay on iPhone entitlement | Not necessary |
| MONEI Pay app on device | Not necessary | Necessary |
| Server | Creates a POS auth token with your API key | Creates a POS auth token with your API key |
| Trusted result | Signed webhook to your callbackUrl | Signed webhook to your callbackUrl |
Choose in-app Tap to Pay when the customer must stay in your app and your team can get the Tap to Pay on iPhone entitlement from Apple. Choose the app-to-app integration when you also need Android or web, or when you do not want to request the Apple entitlement.
How it works
- Your server gets a from the MONEI API with your API key. The API key stays on your server.
- Your server sends the token to your app.
- On launch, your app calls
TapToPay.prepare(token:). The SDK prepares the reader in the background. - When the customer pays, your app calls
TapToPay.acceptPayment(amount:orderId:callbackUrl:). - Apple shows the tap screen. The customer taps the card on the iPhone.
- The SDK sends the payment to MONEI.
- MONEI processes the payment.
acceptPaymentreturns aPaymentResultwith the statusapprovedordeclined. - MONEI sends a signed webhook with the payment result to your
callbackUrl. This webhook is the only trusted result. Use the result in the app for the UI only.
Requirements
- An iPhone XS or newer with iOS 18.5 or later. On other devices,
TapToPay.isSupportedisfalse. - Xcode 26.6 or newer. See versions and compatibility.
- The Tap to Pay on iPhone entitlement from Apple for your developer team. See Request the Apple entitlement.
- Your Apple Team ID and the bundle ID of each app that takes payments, sent to MONEI. See Send your app details to MONEI.
- A MONEI account and its API key. A test mode API key gives sandbox tokens.
- A server that creates tokens and receives the signed webhook. See Create tokens on your server.
Integration steps
- Set up your project: the Apple entitlement, your app details, the package,
Info.plistand CI. - Create tokens on your server: the token endpoint, stores and token renewal.
- Accept payments: prepare the reader, take a payment, read the result and the webhook.
- Handle errors and unclear outcomes: every error, and what to do when the outcome is unknown.
- Test and go live: test mode, the example app, versions and the go-live checklist.
Common questions
Do I need the MONEI Pay app on the iPhone?
No. The SDK runs Tap to Pay on iPhone inside your app. The MONEI Pay app is necessary only for the app-to-app integration.
Is there an Android version?
No. The SDK is for iPhone only. On Android, use the app-to-app integration.
Which currency can I accept?
Euros. You give the amount in euro cents, for example 1050 for 10.50 EUR.
How do I get access to the SDK?
The package is public. Add it to your project without a GitHub account. See Add the package. To take payments, you also need:
- The Tap to Pay on iPhone entitlement from Apple. See Request the Apple entitlement.
- MONEI must enable your app. Send MONEI your Apple Team ID and the bundle ID of each app that takes payments. See Send your app details to MONEI.
- A MONEI account and its API key.