# Perform Transaction Authentication
source: https://developer.mastercard.com/mastercard-checkout-solutions/tutorial/integrate_apis/step5/index.md

## Step 5: Perform Transaction Authentication {#step-5-perform-transaction-authentication}

Note: This is an optional step to perform transaction authentication during checkout. For Token Authentication Service (TAS) and the passkey flow in Click to Pay, the `dpaName` field must be provided during SDK initialization. If omitted, authentication may fail without any explicit error indication, preventing passkey creation.

Refer to the [use cases](https://developer.mastercard.com/mastercard-checkout-solutions/documentation/token-authentication/click-to-pay/use-case1/index.md) and take the following steps:

1. Initiate the [checkout()](https://developer.mastercard.com/mastercard-checkout-solutions/documentation/sdk-reference/checkout-method/index.md) method by passing the below parameters for [dpaTransactionOptions](https://developer.mastercard.com/mastercard-checkout-solutions/documentation/sdk-reference/common-objects/index.md#dpa-transaction-options) within a `windowRef`. Open a center-aligned pop-up (new window) and pass the `windowRef` to Mastercard:   

* **authenticationPreferences.payloadRequested** = `AUTHENTICATED`   

  *Note : If **Issuer** requests **additional authentication** during a new card enrollment, Integrator's request for authenticated payload will be suppressed, and cardholder will undergo ID\&V before adding a new card to their Click to Pay profile.*

* **paymentOptions.dynamicDataType** = `CARD_APPLICATION_CRYPTOGRAM_SHORT_FORM`

* **transactionAmount** : Provide the final transaction amount in `transactionAmount`.

* Mandatory data fields: **acquirerMerchantId** , **acquirerBIN** , **merchantCategoryCode** , and **merchantCountryCode**

  Note: Ensure `dpaName` is provided during SDK initialization when performing transaction authentication for TAS or passkey flows.   

  <br />

2. View the authentication results in `assuranceData` object of `checkoutResponseJWSPayload` in the following table:

| Authentication method used |                                                                                                                                                                                                                Payload with an example of assuranceData                                                                                                                                                                                                                |
|----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Passkeys                   | * DSRP cryptogram and cloud token * verificationMethod = `07 - FIDO2 authentication` ```javascript { "assuranceData": { "verificationData": [ { "verificationType":"CARDHOLDER", "verificationEntity": "02", "verificationEvents": [ "01", ], "verificationMethod": "07", "verificationResults": "01", "verificationTimestamp": "2023-07-13T19:52:44.551Z", "verificationEvents": ["01"], "additionalData": "proof of passkeys authentication" } ] "eci": "02" } } ``` |
| Passive                    | * DSRP cryptogram and cloud token * verificationMethod = `24 -- Mastercard authentication with device binding and passive authentication` ```javascript { "assuranceData": { "verificationData": [ { "verificationEntity": "02", "verificationEvents": [ "01", ], "verificationMethod": "24", "verificationResults": "01", "verificationTimestamp": "2021-10-07T13:44:45.385Z", "verificationType": "CARDHOLDER" } ] "eci": "02" } } ```                               |
| 3DS                        | * **threeDSOutputData** contains `dsTransId` and `authenticationValue` * verificationMethod = `01 -- 3D Secure (3DS)` ```javascript { "assuranceData ": { "verificationData": [ { "verificationType":"CARDHOLDER", "verificationEntity": "03", "verificationMethod": "01", "verificationResults": "01", "verificationTimestamp": "2023-07-13T19:52:44.551Z", "verificationEvents": [ "01", ], } "eci": "02" ] } } ```                                                  |

