<!--
{
  "availability" : [
    "iOS: 26.0.0 -",
    "iPadOS: 26.0.0 -",
    "macCatalyst: 26.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreNFC",
  "identifier" : "/documentation/CoreNFC/NFCPaymentTagReaderSession",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Core NFC"
    ],
    "preciseIdentifier" : "c:objc(cs)NFCPaymentTagReaderSession"
  },
  "title" : "NFCPaymentTagReaderSession"
}
-->

# NFCPaymentTagReaderSession

A reader session that supports the use of payment tags.

```
class NFCPaymentTagReaderSession
```

## Overview

This subclass of [`NFCTagReaderSession`](/documentation/CoreNFC/NFCTagReaderSession) adds support for payment tags, when someone uses your app in certain regions. To support payment tags in your app, intialize this class with a [`NFCTagReaderSessionDelegate`](/documentation/CoreNFC/NFCTagReaderSessionDelegate-2joku). The delegate receives an object that conforms to the [`NFCISO7816Tag`](/documentation/CoreNFC/NFCISO7816Tag) protocol when the [`NFCTagReaderSession`](/documentation/CoreNFC/NFCTagReaderSession) detects an ISO 7816-compatible tag. For the delegate to receive the tag object, your app must include:

- The <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.developer.nfc.readersession.formats>
- A list of supported application identifiers in the <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.developer.nfc.readersession.iso7816.select-identifiers> information property list key

When the session discovers an ISO 7816-compatible tag, the session performs a `SELECT` command for each application identifier provided in <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.developer.nfc.readersession.iso7816.select-identifiers>. The `SELECT` command searches for the identifiers in the order in which they appear in the array. The session calls the [`tagReaderSession:didDetectTags:`](/documentation/CoreNFC/NFCTagReaderSessionDelegate-5gxiw/tagReaderSession:didDetectTags:) delegate method after the first successful `SELECT` command. The [`initialSelectedAID`](/documentation/CoreNFC/NFCISO7816Tag/initialSelectedAID) property of the found tag contains the selected identifier.

The tag must be available to the reader session, so it can read and write data to the tag. Use the [`isAvailable`](/documentation/CoreNFC/NFCTag-swift.enum/isAvailable) property to check the tag’s availability. To connect to an available tag, call the superclass’s [`connect(to:completionHandler:)`](/documentation/CoreNFC/NFCTagReaderSession/connect(to:completionHandler:)) method.

The system only supports one active [`NFCReaderSession`](/documentation/CoreNFC/NFCReaderSession-swift.class) at a time. The system queues and processes subsequently opened sessions in first-in-first-out order.

> Important: The system supports use of `NFCPaymentTagReaderSession` only within the European Union (EU). To develop and test an app that uses this feature, see [Request the NFCTagReaderSession Development Entitlement](https://developer.apple.com/contact/request/nfc-payment-tag-reader/). People using your app must have an account registered in the EU, and their device must be located within the EU. If the device isn’t currently eligible to use `NFCPaymentTagReaderSession`, the `NFCPaymentTagReaderSession.readingAvailable` property is `false`.

## Topics

### Creating a tag reader session

[`convenience init(delegate: any NFCTagReaderSessionDelegate, queue: DispatchQueue?)`](/documentation/CoreNFC/NFCPaymentTagReaderSession/init(delegate:queue:))

Creates a new session instance for processing NFC payment tags.

[`protocol NFCTagReaderSessionDelegate`](/documentation/CoreNFC/NFCTagReaderSessionDelegate-2joku)

A protocol that an object implements to receive callbacks sent from an NFC tag reader session.

[`- (instancetype) initWithDelegate:(id<NFCTagReaderSessionDelegate>) delegate queue:(dispatch_queue_t) queue;`](/documentation/CoreNFC/NFCPaymentTagReaderSession/initWithDelegate:queue:)

Creates a new session instance for processing NFC payment tags.

[`@protocol NFCTagReaderSessionDelegate <NSObject>`](/documentation/CoreNFC/NFCTagReaderSessionDelegate-5gxiw)

A protocol that an object implements to receive callbacks sent from an NFC tag reader session.

## Relationships

### Conforms To

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`Equatable`](/documentation/Swift/Equatable)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`CVarArg`](/documentation/Swift/CVarArg)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`NFCReaderSessionProtocol`](/documentation/CoreNFC/NFCReaderSessionProtocol)

[`Hashable`](/documentation/Swift/Hashable)

### Inherits From

[`NFCTagReaderSession`](/documentation/CoreNFC/NFCTagReaderSession)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)