> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/nfc-wallet-sdk-ios/implement-nfc-wallet/make-payments/implement-contactless-payment.md).

# Implement contactless payment

## Overview

The NFC Wallet SDK supports multiple contactless payment entry points on iOS:

* **Double-click**: The end user double-clicks the device side button to open the default digital wallet application.
* **Field detect**: The end user brings the device close to a point-of-sale (POS) terminal. When iOS detects an NFC field, it opens the default digital wallet application.
* **Manual mode**: The end user opens your digital wallet application and starts a payment from the in-app UI.

Choose the experience that matches your digital wallet application UX.

## User experience

### Double-click

<div align="center"><figure><img src="/files/DVeWIg8tobbMzFsVNK3V" alt="" width="563"><figcaption><p>Double-click experience (side / lock button).</p></figcaption></figure></div>

The end user presses the device side / lock button twice. The OS then launches the default digital wallet application. The application displays the default digital card for payment.

{% hint style="info" %}
To support **double-click**, the end user must set your digital wallet application as the default contactless payment application in iOS Settings.
{% endhint %}

### Field detect

<div align="center"><figure><img src="/files/6YSXhUzNm6X93RPG9tzb" alt="" width="563"><figcaption><p>Field detect experience (NFC field detection).</p></figcaption></figure></div>

The end user brings the device near a POS terminal. When the NFC field is detected, the OS launches the default digital wallet application. The application displays the default digital card for payment.

{% hint style="info" %}
To support **field detect**, the end user must set your digital wallet application as the default contactless payment application in iOS Settings.
{% endhint %}

### Manual mode

<figure><img src="/files/7sBTg0jUIwigCtBTFKba" alt=""><figcaption><p>Manual mode experience (in-app payment start).</p></figcaption></figure>

In this experience, the end user starts the payment from within your digital wallet application. You implement the UI and the action that triggers the payment flow.

### Common payment flow

<figure><img src="/files/QfNsAYHKbeA0e8xca3AF" alt=""><figcaption><p>Common contactless payment flow.</p></figcaption></figure>

Whatever triggers the payment, the flow is typically:

1. The end user initiates a payment (select pay button).
2. The end user authenticates (**CDCVM**).
3. iOS presents the **NFC modal UI** inviting end user to TAP.
4. The end user taps the device on the POS terminal.
5. After a successful tap:
   * iOS shows a success state.
   * Your digital wallet application can display the **transaction context**.
6. Your digital wallet application receives the authorization result (approved/declined) and displays it to the end user (**transaction notification**)

## Implementation guides

After you choose the contactless payment experience for your digital wallet application, implement contactless payment in this order:

1. [Check prerequisites](/nfc-wallet-sdk-ios/implement-nfc-wallet/make-payments/implement-contactless-payment/1.-check-prerequisites.md)

   including the Apple HCE entitlement
2. [Manage the default payment application](/nfc-wallet-sdk-ios/implement-nfc-wallet/make-payments/implement-contactless-payment/2.-manage-the-default-payment-application.md)
3. [Manage `NFCPresentmentIntentAssertion`](/nfc-wallet-sdk-ios/implement-nfc-wallet/make-payments/implement-contactless-payment/3.-manage-nfcpresentmentintentassertion.md)
4. [Implement payment](/nfc-wallet-sdk-ios/implement-nfc-wallet/make-payments/implement-contactless-payment/4.-implement-payment.md)
5. [Display the transaction context](/nfc-wallet-sdk-ios/implement-nfc-wallet/make-payments/implement-contactless-payment/5.-display-the-transaction-context.md)

For an end-to-end walkthrough, see the [full implementation example](/nfc-wallet-sdk-ios/implement-nfc-wallet/make-payments/implement-contactless-payment/full-implementation-example.md).

{% hint style="warning" %}
**Apple HCE entitlement**: When submitting your digital wallet application to the App Store or TestFlight, provide the following:

* Access to a pre-release TestFlight build of your issuer application.
* Test login credentials.
* At least one test payment credential that can be provisioned and used to perform an NFC transaction.
* Screenshots or a video of an NFC transaction at a terminal.
* A video demonstrating your implementation of the Presentment Intent Assertion API.

Refer to [HCE-based contactless transactions for apps in the European Economic Area (EEA)](https://developer.apple.com/support/hce-transactions-in-apps/) for more details.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.payments.thalescloud.io/nfc-wallet-sdk-ios/implement-nfc-wallet/make-payments/implement-contactless-payment.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
