<!--
{
  "availability" : [
    "iOS: 18.1.0 -",
    "iPadOS: 18.1.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SecureElementCredential",
  "identifier" : "/documentation/SecureElementCredential/CredentialSession/performTransaction(using:over:options:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "SecureElementCredential",
      "UIKit"
    ],
    "preciseIdentifier" : "s:23SecureElementCredential0C7SessionC01_abC6_UIKitE18performTransaction5using4over7optionsyAC0C0V_So7UISceneCAC20CardEmulationOptionsVtYaKF"
  },
  "title" : "performTransaction(using:over:options:)"
}
-->

# performTransaction(using:over:options:)

Prompts the user for authorization and then activate a credential for card emulation.

```
func performTransaction(using credential: CredentialSession.Credential, over scene: UIScene, options: CredentialSession.CardEmulationOptions = .init()) async throws
```

## Parameters

`credential`

The credential to activate and transition into card emulation state with.

`scene`

The <doc://com.apple.documentation/documentation/UIKit/UIScene> the authentication sheet appears over.

`options`

Options with which to transition the credential to card emulation mode.

## Discussion

1. Call [`acquirePresentmentAssertion()`](/documentation/SecureElementCredential/CredentialSession/acquirePresentmentAssertion()) before calling this function to ensure that UI from other applications’ payment tasks don’t interfere with this transaction.
2. Relinquish the asssertion with [`relinquish()`](/documentation/SecureElementCredential/CredentialSession/PresentmentIntentAssertion/relinquish()) immediately prior to calling `performTransaction(using:over:options:)`.
3. After presenting the credential, call [`endCardEmulation()`](/documentation/SecureElementCredential/CredentialSession/endCardEmulation()) to return to management mode.
4. If you have further proprietary payment UI to perform, use [`acquirePresentmentAssertion()`](/documentation/SecureElementCredential/CredentialSession/acquirePresentmentAssertion()) to re-acquire the assertion. Perform your tasks, then call [`relinquish()`](/documentation/SecureElementCredential/CredentialSession/PresentmentIntentAssertion/relinquish()) again. Re-acquiring the assertion is subject to the limit of two assertions in an 80-second span.

The credential session state must be [`CredentialSession.State.wired(credential:)`](/documentation/SecureElementCredential/CredentialSession/State-swift.enum/wired(credential:)) prior to calling this method. The state transitions to [`CredentialSession.State.management`](/documentation/SecureElementCredential/CredentialSession/State-swift.enum/management) if the call encounters a [`CredentialSession.ErrorCode.resourceUnavailable`](/documentation/SecureElementCredential/CredentialSession/ErrorCode/resourceUnavailable) error; otherwise the state remains unchanged.

If this call succeeds the credential session state transitions to the [`CredentialSession.State.cardEmulation(credential:)`](/documentation/SecureElementCredential/CredentialSession/State-swift.enum/cardEmulation(credential:)) state.

If not ended sooner, card emulation expires after 60 seconds and the credential session publishes a [`CredentialSession.Event.cardEmulationTimeout`](/documentation/SecureElementCredential/CredentialSession/Event/cardEmulationTimeout) event.

> Important: Calling this method may generate a billable event to the credential provider.

> Throws: An ``doc://SecureElementCredential/documentation/SecureElementCredential/CredentialSession/ErrorCode``. The most common errors are:
> 
> - ``doc://SecureElementCredential/documentation/SecureElementCredential/CredentialSession/ErrorCode/userCanceledAuthorization``: The user dismissed the authorization sheet.
> - ``doc://SecureElementCredential/documentation/SecureElementCredential/CredentialSession/ErrorCode/resourceUnavailable``: The system resource is unavailable. The session transitions to ``doc://SecureElementCredential/documentation/SecureElementCredential/CredentialSession/State-swift.enum/management``.

---

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)