# 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 Tap to Pay on iPhone. 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[​](#choose-your-integration "Direct link to 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](https://docs.monei.com/monei-pay/app-integration/getting-started.md) |
| ----------------------- | ------------------------------------------ | --------------------------------------------------------------------------------------------- |
| 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[​](#how-it-works "Direct link to How it works")

<!-- -->

1. Your server gets a POS auth token from the MONEI API with your API key. The API key stays on your server.
2. Your server sends the token to your app.
3. On launch, your app calls `TapToPay.prepare(token:)`. The SDK prepares the reader in the background.
4. When the customer pays, your app calls `TapToPay.acceptPayment(amount:orderId:callbackUrl:)`.
5. Apple shows the tap screen. The customer taps the card on the iPhone.
6. The SDK sends the payment to MONEI.
7. MONEI processes the payment. `acceptPayment` returns a `PaymentResult` with the status `approved` or `declined`, the card details and the MONEI status. A declined result has the reason.
8. 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[​](#requirements "Direct link to Requirements")

* An iPhone XS or newer with iOS 18.5 or later. On other devices, `TapToPay.isSupported` is `false`.
* Xcode 26.6 or newer. See [versions and compatibility](https://docs.monei.com/monei-pay/in-app-tap-to-pay/test-and-go-live.md#versions).
* The Tap to Pay on iPhone entitlement from Apple for your developer team. See [Request the Apple entitlement](https://docs.monei.com/monei-pay/in-app-tap-to-pay/get-started.md#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](https://docs.monei.com/monei-pay/in-app-tap-to-pay/get-started.md#app-details).
* 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](https://docs.monei.com/monei-pay/in-app-tap-to-pay/backend.md).

## Integration steps[​](#integration-steps "Direct link to Integration steps")

1. [Set up your project](https://docs.monei.com/monei-pay/in-app-tap-to-pay/get-started.md): the Apple entitlement, your app details, the package, `Info.plist` and CI.
2. [Create tokens on your server](https://docs.monei.com/monei-pay/in-app-tap-to-pay/backend.md): the token endpoint, stores and token renewal.
3. [Accept payments](https://docs.monei.com/monei-pay/in-app-tap-to-pay/accept-payments.md): prepare the reader, take a payment, read the result and the webhook.
4. [Handle errors and unclear outcomes](https://docs.monei.com/monei-pay/in-app-tap-to-pay/errors.md): every error, and what to do when the outcome is unknown.
5. [Test and go live](https://docs.monei.com/monei-pay/in-app-tap-to-pay/test-and-go-live.md): test mode, the example app, versions and the go-live checklist.

## Common questions[​](#common-questions "Direct link to Common questions")

### Do I need the MONEI Pay app on the iPhone?[​](#monei-pay-app "Direct link to 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](https://docs.monei.com/monei-pay/app-integration/getting-started.md).

### Is there an Android version?[​](#android "Direct link to Is there an Android version?")

No. The SDK is for iPhone only. On Android, use the [app-to-app integration](https://docs.monei.com/monei-pay/app-integration/getting-started.md).

### Which currency can I accept?[​](#currency "Direct link to 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?[​](#access "Direct link to 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](https://docs.monei.com/monei-pay/in-app-tap-to-pay/get-started.md#add-package). To take payments, you also need:

* The Tap to Pay on iPhone entitlement from Apple. See [Request the Apple entitlement](https://docs.monei.com/monei-pay/in-app-tap-to-pay/get-started.md#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](https://docs.monei.com/monei-pay/in-app-tap-to-pay/get-started.md#app-details).
* A MONEI account and its API key.
