Token Authentication Framework Passthrough Processing
Token authentication framework overview
The Token Authentication Framework (TAF) outlines the mechanisms and data required to comply with Mastercard security principles to provide you with Fraud Liability Protection (FLP) in participating regions. TAF defines a set of rules and minimum standards to enable third parties to authenticate Mastercard cardholders in your environment.
This authentication must be done using Mastercard-qualified multi-factor authentication (MFA) methods on behalf of issuers.
The framework also includes clear entry and performance criteria for:
- Merchants
- Payment service providers
- Acquirers
- Commerce platforms
- Wallets
- Authentication service providers
Token authentication service overview
Token Authentication Service (TAS) is a Mastercard service that helps you authenticate cardholders seamlessly. It uses Mastercard passkeys for online payments with saved card details, such as Click to Pay and Secure Card on File (SCOF). Cardholders can create passkeys with Mastercard and use them to authenticate easily during checkout.
TAS is implemented under the Mastercard TAF. Merchants and commerce platforms using TAS will be able to meet the requirements of TAF without the need to implement and certify their own MFA method compliant with Mastercard rules and standards.
In compliance with Fast Identity Online 2 (FIDO2) standard which is governed by FIDO Alliance, Mastercard has implemented payment passkeys. The certified FIDO components are used for the implementation of the payment passkeys.
You can authenticate tokenized credentials for Click to Pay and SCOF externally and submit a payment with the TAS authentication result to Mastercard Gateway for processing. This model is referred to as TAF passthrough transaction processing.
TAF Flow overview
The following is the TAF flow:
- To participate in TAF, you can choose to use Mastercard TAS by following options:
- Outsource from an approved third party.
- Become an authenticating entity and operate your own MFA method.
Third-party authentication is only available for Mastercard cards tokenized with SCOF. - Use third-party or Mastercard’s SCOF and Click to Pay integrations to authenticate cardholders during online payments.
- Use your Mastercard Gateway integration to submit a payment transaction request with the TAS authentication result.
API field mapping
You must send TAF-TAS authentication data to Mastercard Gateway in the Pay
, Authorize
, or Verify
transaction request as described in the following sections:
- Passkey authentication
- 3-Domain Secure authentication
- WS API 3DS transaction status field derivation
Passkey authentication
In case of TAS passkey authentication, you must send the following authentication information.
Data | WS API fields | Mastercard Checkout Solutions (MACS)-Checkout API response field |
---|---|---|
Source of funds | sourceOfFunds.type = SCHEME_TOKEN |
NA |
ECI indicator |
|
assuranceData.eci |
Cryptogram |
|
encryptedPayload.dynamicData.dynamicDataValue |
Send all other WS API Authorize or Pay request fields as per the API specifications. |
3-Domain Secure authentication
In case of TAS 3-Domain Secure (3DS) authentication, you must send the following authentication information.
Field | WS API fields | MACS-Checkout API response field |
---|---|---|
Source of funds | sourceOfFunds.type = SCHEME_TOKEN |
NA |
ECI indicator | authentication.3ds.acsEci |
assuranceData.eci |
Cryptogram |
This is mandatory when |
encryptedPayload.dynamicData.dynamicDataValue |
AAV authentication token | authentication.3ds.authenticationToken |
assuranceData.threeDsOutputData.authenticationValue |
authentication.3ds2.transactionStatus |
See 3DS Transaction Status field mapping table to derive and populate the authentication.3ds2.transactionStatus .
This field is mandatory in case of TAS 3DS authentication. |
NA |
Send all other WS API Authorize or Pay request fields as per the API specifications. |
WS API 3DS transaction status field derivation
Refer assurance data received from token authentication response and use it to derive authentication.3ds2.transactionStatus
WS API field for the Authorize
or Pay
request.
assuranceData.verificationData[].verificationResults |
assuranceData.threeDsOutputData.authenticationValue |
authentication.3ds2.transactionStatus |
---|---|---|
01 | Present | Y |
02 | Present | A |
02 | Absent | R |
03 | N/A | U |
Examples of WS API request and response for Authorize and Pay of passkey authentication
Pay
request
{ "apiOperation": "PAY", "order": { "currency": "USD", "amount": "5" }, "sourceOfFunds": { "type": "SCHEME_TOKEN", "provided": { "card": { "devicePayment": { "onlinePaymentCryptogram": "myXxxxx7", "eciIndicator": "0x" }, "expiry": { "month": "1x", "year": "x5" }, "number": "2223001xxxxx4586", "storedOnFile": "STORED" } } }, "customer": { "lastName": "Doe", "phone": "01 9876xxxx1", "mobilePhone": "07 23xxx34", "email": "rexxxt@datxxxsh.com", "firstName": "John" }, "shipping": { "address": { "street2": "Level 21", "street": "300 Adexxxxe St", "company": "Maxxxxxard", "stateProvince": "Qld", "city": "Brisxxxx", "country": "AUS", "postcodeZip": "4000" }, "method": "ELECTRONIC", "contact": { "lastName": "Doe", "phone": "0198xxxx321", "mobilePhone": "04xxxx54321", "email": "txx.mexxxxnt@xxxxxrcard.com", "firstName": "Jane" } }, "billing": { "address": { "street2": "300 Adexxxxe Street", "company": "Masxxxxard", "street": "Level 20", "stateProvince": "Quxxxxland", "postcodeZip": "4000xxc-E2", "country": "AUD", "city": "Brxxxxne" } }, "device": { "ani": "Asf" }, "transaction": { "source": "INTERNET" } }
Pay
response
{ "authorizationResponse": { "date": "11x5", "posData": "10251040xxx00", "posEntryMode": "8x2", "processingCode": "00xx00", "responseCode": "00", "stan": "39xx00", "time": "224156" }, "billing": { "address": { "city": "Brxxxxe", "company": "MasterCard", "postcodeZip": "4000xxx-E2", "stateProvince": "Quxxxxxand", "street": "Level 20, 300 Adxxxxde Street" } }, "customer": { "email": "rxxxct@daxxxash.com", "firstName": "Jane", "lastName": "Doe", "mobilePhone": "07 xxxx334", "phone": "01 98xxxx321" }, "device": { "ani": "Asf" }, "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "AFT_TCC_AUTH", "order": { "amount": 5.00, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "certainty": "FINAL", "chargeback": { "amount": 0, "currency": "USD" }, "creationTime": "2024-11-25T22:41:56.604Z", "currency": "USD", "id": "TAF4ed2d518-c680-xx5b-acba-ab16b2f32000", "lastUpdatedTime": "2024-11-25T22:41:56.873Z", "merchantAmount": 5.00, "merchantCategoryCode": "6538", "merchantCurrency": "USD", "status": "CAPTURED", "totalAuthorizedAmount": 5.00, "totalCapturedAmount": 0.00, "totalDisbursedAmount": 0.00, "totalRefundedAmount": 0.00 }, "response": { "acquirerCode": "00", "acquirerMessage": "Approved", "gatewayCode": "APPROVED", "gatewayRecommendation": "NO_ACTION" }, "result": "SUCCESS", "shipping": { "address": { "city": "Bxxxxane", "company": "MasterCard", "country": "AUS", "postcodeZip": "4x00", "stateProvince": "Qld", "street": "300 Axxxxide St, Level 21" }, "contact": { "email": "txxx.mxxxxant@xxxxercaxx.com", "firstName": "John", "lastName": "Doe", "mobilePhone": "047xxxx4321", "phone": "0198xxxx321" }, "method": "ELECTRONIC" }, "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "deviceSpecificExpiry": { "month": "1x", "year": "x5" }, "deviceSpecificNumber": "222300xxxxxx4586", "expiry": { "month": "12", "year": "25" }, "fundingMethod": "UNKNOWN", "number": "xxxxxxxxxxxxxxxx", "scheme": "MASTERCARD", "storedOnFile": "STORED" } }, "type": "SCHEME_TOKEN" }, "timeOfLastUpdate": "2024-11-25T22:41:56.873Z", "timeOfRecord": "2024-11-25T22:41:56.649Z", "transaction": { "acquirer": { "batch": 2024xx25, "date": "1125", "id": "CBA_S2I", "merchantId": "xx09" }, "amount": 5.00, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "authorizationCode": "xx2233", "currency": "USD", "id": "bb0ef82a-aac8-49aa-a529-d00a17753687", "receipt": "433022xxx900", "source": "INTERNET", "stan": "3xx00", "terminal": "CBAxxI01", "type": "AUTHORIZATION" }, "version": "84" }
Authorize
request
{ "apiOperation": "AUTHORIZE", "order": { "currency": "USD", "amount": "5" }, "sourceOfFunds": { "type": "SCHEME_TOKEN", "provided": { "card": { "devicePayment": { "onlinePaymentCryptogram": "mxxxxx77", "eciIndicator": "02" }, "expiry": { "month": "1x", "year": "x5" }, "number": "222300xxxxx64586", "storedOnFile": "STORED" } } }, "customer": { "lastName": "Doe", "phone": "01 987xxxx21", "mobilePhone": "07 2xxxx34", "email": "xxxect@daxxxxsh.com", "firstName": "Jane" }, "shipping": { "address": { "street2": "Level 21", "street": "300 Axxxxide St", "company": "MasterCard", "stateProvince": "Qld", "city": "Brxxxane", "country": "AUS", "postcodeZip": "4x00" }, "method": "ELECTRONIC", "contact": { "lastName": "Doe", "phone": "xxxxx654321", "mobilePhone": "047xxxxx321", "email": "test.merchant@mastercard.com", "firstName": "John" } }, "billing": { "address": { "street2": "300 Axxxxide Street", "company": "MasterCard", "street": "Level 20", "stateProvince": "Qxxxxsland", "postcodeZip": "4000xxx-E2", "country": "AUD", "city": "Bxxxxane" } }, "device": { "ani": "Asf" }, "transaction": { "source": "INTERNET" } }
Authorize
response
{ "authorizationResponse": { "date": "1125", "posData": "102xxx4006600", "posEntryMode": "x12", "processingCode": "00xx00", "responseCode": "00", "stan": "3x900", "time": "224156" }, "billing": { "address": { "city": "Bxxxxane", "company": "MasterCard", "postcodeZip": "4000Abc-E2", "stateProvince": "Queensland", "street": "Level 20, 300 Adelaide Street" } }, "customer": { "email": "rxxxct@datacxxx.com", "firstName": "John", "lastName": "Doe", "mobilePhone": "07 xxxx334", "phone": "01 98xxxx321" }, "device": { "ani": "Asf" }, "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "AFT_TCC_AUTH", "order": { "amount": 5.00, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "certainty": "FINAL", "chargeback": { "amount": 0, "currency": "USD" }, "creationTime": "2024-11-25T22:41:56.604Z", "currency": "USD", "id": "TAF4ed2d518-c680-4c5b-acba-ab16b2f32000", "lastUpdatedTime": "2024-11-25T22:41:56.873Z", "merchantAmount": 5.00, "merchantCategoryCode": "6538", "merchantCurrency": "USD", "status": "AUTHORIZED", "totalAuthorizedAmount": 5.00, "totalCapturedAmount": 0.00, "totalDisbursedAmount": 0.00, "totalRefundedAmount": 0.00 }, "response": { "acquirerCode": "00", "acquirerMessage": "Approved", "gatewayCode": "APPROVED", "gatewayRecommendation": "NO_ACTION" }, "result": "SUCCESS", "shipping": { "address": { "city": "Bxxxxane", "company": "MasterCard", "country": "AUS", "postcodeZip": "4x00", "stateProvince": "Qld", "street": "300 Axxxxxde St, Level 21" }, "contact": { "email": "texxxxxxchant@xxxxxcard.com", "firstName": "Jane", "lastName": "Doe", "mobilePhone": "047xxxx4321", "phone": "019xxxx4321" }, "method": "ELECTRONIC" }, "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "deviceSpecificExpiry": { "month": "1x", "year": "x5" }, "deviceSpecificNumber": "222300xxxxxx4586", "expiry": { "month": "1x", "year": "x5" }, "fundingMethod": "UNKNOWN", "number": "xxxxxxxxxxxxxxxx", "scheme": "MASTERCARD", "storedOnFile": "STORED" } }, "type": "SCHEME_TOKEN" }, "timeOfLastUpdate": "2024-11-25T22:41:56.873Z", "timeOfRecord": "2024-11-25T22:41:56.649Z", "transaction": { "acquirer": { "batch": 2024xx25, "date": "xx25", "id": "CBA_xxI", "merchantId": "xx09" }, "amount": 5.00, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "authorizationCode": "11xx33", "currency": "USD", "id": "bb0ef82a-xxx8-49aa-a529-d00a17753687", "receipt": "4330xxx39900", "source": "INTERNET", "stan": "3xx00", "terminal": "CBxx2I01", "type": "AUTHORIZATION" }, "version": "84" }
Examples of WS API request and response for 3DS authentication of Authorize and Pay
Pay
request
{ "apiOperation": "PAY", "transaction": { "source": "INTERNET" }, "authentication": { "3ds": { "acsEci": "02", "authenticationToken": "mHyn+7YFi1xxxREAAAAvNUe6Hv8=", "transactionId": "edcb4ff8-7a5d-4739-bxxd-e96e0d16f1f2" }, "3ds2": { "transactionStatus": "Y" } }, "order": { "amount": "1", "currency": "USD" }, "customer": { "lastName": "Doe", "phone": "01 9xxxx4321", "mobilePhone": "07 2xxxx34", "email": "rxxxxt@dxxxcash.com", "firstName": "John" }, "shipping": { "address": { "street2": "Level 21", "street": "300 Adelaide St", "company": "MasterCard", "stateProvince": "Qld", "city": "Brxxxxne", "country": "AUS", "postcodeZip": "x000" }, "method": "ELECTRONIC", "contact": { "lastName": "Doe", "phone": "0198xxxx321", "mobilePhone": "047xxx54321", "email": "texxxxxrchant@mxxxxcard.com", "firstName": "Jane" } }, "billing": { "address": { "street2": "300 Adelaide Street", "company": "MasterCard", "street": "Level 20", "stateProvince": "Queensland", "postcodeZip": "4000xxx-E2", "country": "AUD", "city": "Bxxxxane" } }, "device": { "ani": "Asf" }, "sourceOfFunds": { "provided": { "card": { "devicePayment": { "onlinePaymentCryptogram": "myxxxxx7" }, "expiry": { "month": "0x", "year": "x9" }, "number": "51203xxxx0064594" } }, "type": "SCHEME_TOKEN" } }
Pay
response
{ "authentication": { "3ds": { "acsEci": "0x", "authenticationToken": "mHyn+7xxx1EUAREAAAAvNUe6Hv8=", "transactionId": "edcb4ff8-7xxx-4739-bf0d-e96e0d16f1f2" }, "3ds2": { "authenticationScheme": "MASTERCARD", "dsTransactionId": "edcb4ff8-7xxx-4739-bf0d-e96e0d16f1f2", "transactionStatus": "Y" }, "amount": 1.00, "version": "3DS2" }, "authorizationResponse": { "avsCode": "X", "commercialCardIndicator": "3", "date": "1125", "financialNetworkCode": "MCS", "financialNetworkDate": "2024-11-25", "posData": "102510xxx6600", "posEntryMode": "81x", "processingCode": "000000", "responseCode": "00", "stan": "12xx71", "time": "224728", "transactionIdentifier": "5Wxx71" }, "billing": { "address": { "city": "Brisbane", "company": "MasterCard", "postcodeZip": "4000xxx-E2", "stateProvince": "Queensland", "street": "Level 20, 300 Axxxxide Street" } }, "customer": { "email": "rexxxx@datxxxsh.com", "firstName": "John", "lastName": "Doe", "mobilePhone": "07 2xxx334", "phone": "01 98xxxx321" }, "device": { "ani": "Asf" }, "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "DOGFOOD_NW10", "order": { "amount": 1.00, "authenticationStatus": "AUTHENTICATION_SUCCESSFUL", "certainty": "FINAL", "chargeback": { "amount": 0, "currency": "USD" }, "creationTime": "2024-11-25T22:47:28.265Z", "currency": "USD", "id": "TAFaaae9312-6338-4xxx-bcef-ab2582756fbc", "lastUpdatedTime": "2024-11-25T22:47:28.952Z", "merchantAmount": 1.00, "merchantCategoryCode": "1567", "merchantCurrency": "USD", "status": "AUTHORIZED", "totalAuthorizedAmount": 1.00, "totalCapturedAmount": 0.00, "totalDisbursedAmount": 0.00, "totalRefundedAmount": 0.00 }, "response": { "acquirerCode": "00", "acquirerMessage": "Approved", "cardholderVerification": { "avs": { "acquirerCode": "X", "gatewayCode": "ADDRESS_ZIP_MATCH" } }, "gatewayCode": "APPROVED", "gatewayRecommendation": "NO_ACTION" }, "result": "SUCCESS", "shipping": { "address": { "city": "Brxxxane", "company": "MasterCard", "country": "AUS", "postcodeZip": "x000", "stateProvince": "Qld", "street": "300 Axxxxide St, Level 21" }, "contact": { "email": "texxxxxxchant@xxxxxrcard.com", "firstName": "Jane", "lastName": "Doe", "mobilePhone": "0xxxx654321", "phone": "01987xxxx21" }, "method": "ELECTRONIC" }, "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "deviceSpecificExpiry": { "month": "2", "year": "3x" }, "deviceSpecificNumber": "512035xxxxxx4594", "expiry": { "month": "2", "year": "3x" }, "fundingMethod": "UNKNOWN", "number": "xxxxxxxxxxxxxxxx", "scheme": "MASTERCARD", "storedOnFile": "NOT_STORED" } }, "type": "SCHEME_TOKEN" }, "timeOfLastUpdate": "2024-11-25T22:47:28.952Z", "timeOfRecord": "2024-11-25T22:47:28.282Z", "transaction": { "acquirer": { "batch": 2024xx26, "date": "1126", "id": "BxxOPS_S2I", "merchantId": "axx34", "transactionId": "5W6xx1" }, "amount": 1.00, "authenticationStatus": "AUTHENTICATION_SUCCESSFUL", "authorizationCode": "3xx850", "currency": "USD", "id": "deee1db6-6141-4104-xxxa-2966898aeaa4", "receipt": "433xx2125671", "source": "INTERNET", "stan": "12xx71", "terminal": "456x", "type": "PAY" }, "version": "84" }
Authorize
request
{ "apiOperation": "AUTHORIZE", "transaction": { "source": "INTERNET" }, "authentication": { "3ds": { "acsEci": "02", "authenticationToken": "mHynxxxxi1EUAREAAAAvNUe6Hv8=", "transactionId": "edcb4ff8-xxxd-4739-bf0d-e96e0d16f1f2" }, "3ds2": { "transactionStatus": "Y" } }, "order": { "amount": "1", "currency": "USD" }, "customer": { "lastName": "Doe", "phone": "01 987xxx321", "mobilePhone": "07 23xxxx4", "email": "rexxxt@dxxxxash.com", "firstName": "John" }, "shipping": { "address": { "street2": "Level 21", "street": "300 Axxxxide St", "company": "MasterCard", "stateProvince": "Qld", "city": "Brxxxane", "country": "AUS", "postcodeZip": "x000" }, "method": "ELECTRONIC", "contact": { "lastName": "Doe", "phone": "0198xxxx321", "mobilePhone": "04xxxx54321", "email": "tesxxxxxxhant@mxxxxxcard.com", "firstName": "Jane" } }, "billing": { "address": { "street2": "300 Axxxxide Street", "company": "MasterCard", "street": "Level 20", "stateProvince": "Qxxxxxland", "postcodeZip": "4000xxx-E2", "country": "AUD", "city": "Brxxxane" } }, "device": { "ani": "Asf" }, "sourceOfFunds": { "provided": { "card": { "devicePayment": { "onlinePaymentCryptogram": "mxxxxx77" }, "expiry": { "month": "0x", "year": "x9" }, "number": "51203xxxxx064594" } }, "type": "SCHEME_TOKEN" } }
Authorize
response
{ "authentication": { "3ds": { "acsEci": "02", "authenticationToken": "mHyn+7YFi1ExxxAAAAvNUe6Hv8=", "transactionId": "edcb4ff8-7a5d-4739-bxxd-e96e0d16f1f2" }, "3ds2": { "authenticationScheme": "MASTERCARD", "dsTransactionId": "edcb4ff8-7xxd-4739-bf0d-e96e0d16f1f2", "transactionStatus": "Y" }, "amount": 1.00, "version": "3DS2" }, "authorizationResponse": { "avsCode": "X", "commercialCardIndicator": "3", "date": "1125", "financialNetworkCode": "Mxx", "financialNetworkDate": "2024-11-25", "posData": "10251xxxx6600", "posEntryMode": "812", "processingCode": "000000", "responseCode": "00", "stan": "125xx1", "time": "22xx28", "transactionIdentifier": "5Wxx71" }, "billing": { "address": { "city": "Brixxxne", "company": "MasterCard", "postcodeZip": "4000xxx-E2", "stateProvince": "Quxxxxxland", "street": "Level 20, 300 Axxxxide Street" } }, "customer": { "email": "rxxxxt@xxxxcash.com", "firstName": "John", "lastName": "Doe", "mobilePhone": "07 xxxx334", "phone": "01 9xxxxx321" }, "device": { "ani": "Asf" }, "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "DOGFxxx_NW10", "order": { "amount": 1.00, "authenticationStatus": "AUTHENTICATION_SUCCESSFUL", "certainty": "FINAL", "chargeback": { "amount": 0, "currency": "USD" }, "creationTime": "2024-11-25T22:47:28.265Z", "currency": "USD", "id": "TAFaaae9312-6338-4xxx-bcef-ab2582756fbc", "lastUpdatedTime": "2024-11-25T22:47:28.952Z", "merchantAmount": 1.00, "merchantCategoryCode": "15xx", "merchantCurrency": "USD", "status": "AUTHORIZED", "totalAuthorizedAmount": 1.00, "totalCapturedAmount": 0.00, "totalDisbursedAmount": 0.00, "totalRefundedAmount": 0.00 }, "response": { "acquirerCode": "00", "acquirerMessage": "Approved", "cardholderVerification": { "avs": { "acquirerCode": "X", "gatewayCode": "ADDRESS_ZIP_MATCH" } }, "gatewayCode": "APPROVED", "gatewayRecommendation": "NO_ACTION" }, "result": "SUCCESS", "shipping": { "address": { "city": "Brxxxxne", "company": "MasterCard", "country": "AUS", "postcodeZip": "x000", "stateProvince": "Qld", "street": "300 Adxxxxde St, Level 21" }, "contact": { "email": "texxxxxrchant@xxxxxxxcard.com", "firstName": "Jane", "lastName": "Doe", "mobilePhone": "047xxxx4321", "phone": "01xxxxx4321" }, "method": "ELECTRONIC" }, "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "deviceSpecificExpiry": { "month": "2", "year": "x9" }, "deviceSpecificNumber": "512035xxxxxx4594", "expiry": { "month": "2", "year": "x9" }, "fundingMethod": "UNKNOWN", "number": "xxxxxxxxxxxxxxxx", "scheme": "MASTERCARD", "storedOnFile": "NOT_STORED" } }, "type": "SCHEME_TOKEN" }, "timeOfLastUpdate": "2024-11-25T22:47:28.952Z", "timeOfRecord": "2024-11-25T22:47:28.282Z", "transaction": { "acquirer": { "batch": 2024xx26, "date": "1126", "id": "BIZxxx_S2I", "merchantId": "axx34", "transactionId": "5Wxx71" }, "amount": 1.00, "authenticationStatus": "AUTHENTICATION_SUCCESSFUL", "authorizationCode": "3xx850", "currency": "USD", "id": "deee1db6-6141-xxxx-8c2a-2966898aeaa4", "receipt": "433xx2125671", "source": "INTERNET", "stan": "12xx71", "terminal": "456x", "type": "AUTHORIZATION" }, "version": "84" }