<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 17.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ProximityReader",
  "identifier" : "/documentation/ProximityReader/PaymentCardReaderSession/readPaymentCard(_:vasRequest:stopOnVASResult:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "ProximityReader"
    ],
    "preciseIdentifier" : "s:15ProximityReader011PaymentCardB7SessionC04readcD0_10vasRequest15stopOnVASResultAA0cD10ReadResultVSg_AA07VASReadM0VSgtAA0cd11TransactionH0V_AA10VASRequestCSbtYaKF"
  },
  "title" : "readPaymentCard(_:vasRequest:stopOnVASResult:)"
}
-->

# readPaymentCard(_:vasRequest:stopOnVASResult:)

Presents a sheet to read both contactless payments and loyalty cards
for a purchase or refund, and returns the relevant card data.

```
func readPaymentCard(_ request: PaymentCardTransactionRequest, vasRequest: VASRequest, stopOnVASResult: Bool) async throws -> (PaymentCardReadResult?, VASReadResult?)
```

## Parameters

`request`

The transaction object you provide with the payment amount and currency details.

`vasRequest`

The object that you use to specify the loyalty card request details,
such as the list of supported merchants.

`stopOnVASResult`

A Boolean that indicates what type of result to return. See the discussion for details of how this parameter affects the return value.

## Return Value

Either [`PaymentCardReadResult`](/documentation/ProximityReader/PaymentCardReadResult), [`VASReadResult`](/documentation/ProximityReader/VASReadResult), or both when
the read operation was successful.

## Discussion

Call this method to read either a contactless payment card or a
loyalty card. This method displays a system sheet with instructions
on what the person needs to do. The system UI remains onscreen
until the system reads the person’s card, you cancel the operation,
or an error occurs. If it reads a card successfully, the method returns
the card information as a result.

When the `stopOnVasResult` parameter is `true`:

- If the customer taps their loyalty card while the UI is present, the system
  closes the sheet and returns [`VASReadResult`](/documentation/ProximityReader/VASReadResult) as a result.
- If the customer taps their payment card while the UI is present, the system
  closes the sheet and returns [`PaymentCardReadResult`](/documentation/ProximityReader/PaymentCardReadResult) as a result.

When the `stopOnVasResult` parameter is `false`:

- If the customer taps their Apple Pay Wallet, containing both a relevant loyalty card and a payment card, the system closes the sheet and returns both [`PaymentCardReadResult`](/documentation/ProximityReader/PaymentCardReadResult) and [`VASReadResult`](/documentation/ProximityReader/VASReadResult) as a result.
- If the customer taps their Apple Pay Wallet, containing only a relevant loyalty card, the system closes the sheet and returns [`VASReadResult`](/documentation/ProximityReader/VASReadResult) as a result.
- If the customer taps their payment card, the system closes the sheet and returns [`PaymentCardReadResult`](/documentation/ProximityReader/PaymentCardReadResult) as a result.

> throws: This method throws a ``doc://com.apple.ProximityReader/documentation/ProximityReader/PaymentCardReaderSession/ReadError`` if a person dismisses the sheet
> or the sheet fails to appear.

---

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)