Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The 3RI with EMV® 3DS Additional Test Case guide explores alternative authentication options outside the typical testing scenarios which require a more tailored approach. These test cases can vary by card brand/scheme, and it is important to note that you should work with your account representative at Cardinal Commerce prior to proceeding.

Table of Contents
maxLevel2
minLevel1
exclude"Important test notes:"

Test Case 1: Recurring Payments - Fixed Amount

1a. Initial/First Recurring Transaction

Scenario 

Merchant is initiating a 3RI Recurring transaction that is a fixed amount for a set or of no established expiry (Subscription purchases).

Cardinal Scenario Recommendation

Step 1: Merchant initiates transaction in the amount of $50.00 USD (Currency can be modified to the merchant's currency support if it is not in USD)

Step 2: Pass AuthenticationIndicator as 02 for Recurring Transaction

Step 3: Set RecurringEnd to 12 months in the future and RecurringFrequency for 30 (Days)

Authentication Experience

Challenged

Test Values

EXP Date: 01/****

Mastercard PAN: 
2.2.0: 5200000000002805

Required Fields - Lookup Request (cmpi_lookup)

Message Category = 01 (PA)

Code Block
languagexml
<MessageCategory>01</MessageCategory>

Device Channel = APP (01), BROWSER (02)

Code Block
languagexml
<DeviceChannel>02</DeviceChannel>

ChallengeIndicator = 04 - Challenge requested (Mandated) 

Code Block
languagexml
<ChallengeIndicator>04</ChallengeIndicator>

AuthenticationIndicator = 02 - Recurring transaction

Code Block
languagexml
<AuthenticationIndicator>02</AuthenticationIndicator>

PurchaseDate =

Format: YYYYMMDDHHMMSS

Code Block
languagexml
<PurchaseDate>20200405112438</PurchaseDate>

RecurringFrequency =

Example values accepted (31 days):

  • 31

  • 031

  • 0031

Code Block
languagexml
<RecurringFrequency>31</RecurringFrequency>

RecurringEnd =

Format: YYYYMMDD

Note: It is recommended not to exceed 12 months from PurchaseDate for recurring expiry

Code Block
languagexml
<RecurringEnd>20210121</RecurringEnd>

Expected Results - Lookup Response (cmpi_lookup)

Enrolled = Y

Code Block
languagexml
<Enrolled>Y</Enrolled>

PAResStatus = C

Code Block
languagexml
<PAResStatus>C</PAResStatus>

Cavv = (value will not be provided)

Code Block
languagexml
<Cavv></Cavv>

EciFlag = 00

Code Block
languagexml
<EciFlag>00</EciFlag>

ErrorNo = 0

Code Block
languagexml
<ErrorNo>0</ErrorNo>

ErrorDesc = (value will not be provided)

Code Block
languagexml
<ErrorDesc></ErrorDesc>

Expected Results - Authentication (cmpi_authenticate response)

PAResStatus = Y

Code Block
languagexml
<PAResStatus>Y</PAResStatus>

CAVV = <CAVV Value>

Code Block
languagexml
<Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>

EciFlag = 07

Code Block
languagexml
<EciFlag>07</EciFlag>

ErrorNo = 0

Code Block
languagexml
<ErrorNo>0</ErrorNo>

ErrorDesc = (value will not be provided)

Code Block
languagexml
<ErrorDesc></ErrorDesc>

Card Network & Version Specifications

Visa Secure 2.1

Not Supported

Visa Secure 2.2

Not Applicable

Mastercard Identity Check 2.1

For Mastercard Identity Check 2.1, 3RI is not supported for Payment Authentication (PA). Due to this, only the initial transaction is supported for Recurring Payments.

If you attempt to run a Device Channel of 3RI within Mastercard Identity Check 2.1, you will receive a transStatusReason=21 (3RI Transaction not Supported). In this case, you will also receive a transaction status of “U” rather than “Y”.

Mastercard Identity Check 2.2

EMV® 3DS 2.2 supports 3RI payments and this allows the subsequent recurring transactions to be submitted to authentication. ^

^ via Mastercard Identity Check Program Guide. 19 November 2019.

Additional Information

Visa Secure

N/A

Mastercard Identity Check

Mastercard has allocated a new ECI value, ECI 07, for 3RI transactions. This will be present on a Mastercard response message for this particular 3RI scenario.

Sample Messages

Sample Lookup Request Message

Code Block
languagexml
<CardinalMPI>
	<MsgType>cmpi_lookup</MsgType>
	<Version>1.7</Version>
	<Algorithm>SHA-512</Algorithm>
	<Identifier>{{API_KEY_IDENTIFIER}}</Identifier>
	<OrgUnit>{{ORG_UNIT_ID}}</OrgUnit>
	<Signature>{{GENERATED_SIGNATURE_VALUE}}</Signature>
	<Timestamp>{{TIMESTAMP}}</Timestamp>
	<TransactionType>C</TransactionType>
	<OrderNumber>12345678</OrderNumber>
	<Amount>94160</Amount>
	<CurrencyCode>840</CurrencyCode>
	<CardNumber>520000******2805</CardNumber>
	<CardExpMonth>01</CardExpMonth>
	<CardExpYear>2023</CardExpYear>
	<BillingFirstName>John</BillingFirstName>
	<BillingMiddleName>S</BillingMiddleName>
	<BillingLastName>Smith</BillingLastName>
	<BillingAddress1>1600 Pennsylvania Blvd.</BillingAddress1>
	<BillingAddress2/>
	<BillingPhone>555-555-5555</BillingPhone>
	<BillingCity>Washington</BillingCity>
	<BillingState>DC</BillingState>
	<BillingPostalCode>10123</BillingPostalCode>
	<BillingCountryCode>US</BillingCountryCode>
	<ShippingFirstName>John</ShippingFirstName>
	<ShippingLastName>Smith</ShippingLastName>
	<ShippingAddress1>1600 Pennsylvania Blvd.</ShippingAddress1>
	<ShippingAddress2/>
	<ShippingPhone>555-555-5555</ShippingPhone>
	<ShippingCity>Washington</ShippingCity>
	<ShippingState>DC</ShippingState>
	<ShippingPostalCode>10123</ShippingPostalCode>
	<ShippingCountryCode>US</ShippingCountryCode>
	<Item_Name_1>CC Car A</Item_Name_1>
	<Item_Desc_1>Model Aqua</Item_Desc_1>
	<Item_Price_1>10000</Item_Price_1>
	<Item_Quantity_1>1</Item_Quantity_1>
	<Item_SKU_1>8675309</Item_SKU_1>
	<PurchaseDate>20200405112438</PurchaseDate>
	<CategoryCode>01</CategoryCode>
	<MessageCategory>01</MessageCategory>
	<BrowserLanguage>English</BrowserLanguage>
	<BrowserColorDepth>500</BrowserColorDepth>
	<BrowserScreenHeight>980</BrowserScreenHeight>
	<BrowserScreenWidth>1080</BrowserScreenWidth>
	<BrowserTimeZone>-1:00</BrowserTimeZone>
	<BrowserJavaEnabled>true</BrowserJavaEnabled>
	<IPAddress>127.0.0.1</IPAddress>
	<UserAgent>Jakarta Commons-HttpClient/3.1</UserAgent>
	<DeviceChannel>02</DeviceChannel>
	<ChallengeIndicator>04</ChallengeIndicator>
	<AuthenticationIndicator>02</AuthenticationIndicator>
	<RecurringEnd>20190121</RecurringEnd>
	<RecurringFrequency>30</RecurringFrequency>
	<CategoryCode>1234</CategoryCode>
	<BrowserHeader>text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</BrowserHeader>
</CardinalMPI>

Sample Lookup Response Message

Code Block
languagexml
<CardinalMPI>
    <ErrorNo>0</ErrorNo>
    <TransactionId>IZBMo3zIjEPsnNCcGgN0</TransactionId>
    <Payload></Payload>
    <ErrorDesc></ErrorDesc>
    <Cavv/>
    <PAResStatus>C</PAResStatus>
    <Enrolled>Y</Enrolled>
    <ACSTransactionId>2cf308bf-86fc-4bee-816a-cd38909d0d92</ACSTransactionId>
    <EciFlag>00</EciFlag>
    <ACSUrl></ACSUrl>
    <ThreeDSServerTransactionId>db6e6faf-f7bb-40a1-8c9c-caaad3782458</ThreeDSServerTransactionId>
    <CardBin>520000</CardBin>
    <CardBrand>MASTERCARD</CardBrand>
    <Amount>94160</Amount>
    <DSTransactionId>1c59a512-ab4f-4370-af97-4cfe69b7276e</DSTransactionId>
    <ThreeDSVersion>2.2.0</ThreeDSVersion>
    <CurrencyCode>840</CurrencyCode>
    <OrderId>8000038870456384</OrderId>
    <SignatureVerification>Y</SignatureVerification>
</CardinalMPI>

Sample Authenticate Request Message

Code Block
languagexml
<CardinalMPI>
	<MsgType>cmpi_authenticate</MsgType>
	<Algorithm>SHA-512</Algorithm>
	<Identifier>{{API_KEY_IDENTIFIER}}</Identifier>
	<OrgUnit>{{ORG_UNIT_ID}}</OrgUnit>
	<Signature>{{GENERATED_SIGNATURE_VALUE}}</Signature>
	<Timestamp>{{TIMESTAMP}}</Timestamp>
	<TransactionId>{{TRANSACTION_ID}}</TransactionId>
	<OrderId>{{ORDER_ID}}</OrderId>
	<TransactionType>C</TransactionType>
	<Version>1.7</Version>
</CardinalMPI>

Sample Authenticate Response Message

Code Block
languagexml
<CardinalMPI>
    <CardBin>520000</CardBin>
    <ThreeDSVersion>2.2.0</ThreeDSVersion>
    <SignatureVerification>Y</SignatureVerification>
    <ErrorDesc />
    <ThreeDSServerTransactionId>c5045efa-1d2c-411f-a605-687bfd1460dd</ThreeDSServerTransactionId>
    <Cavv>MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=</Cavv>
    <Amount>12367</Amount>
    <ErrorNo>0</ErrorNo>
    <EciFlag>02</EciFlag>
    <TransactionId>ADF7ZctbyCVa0xKcivw0</TransactionId>
    <CurrencyCode>840</CurrencyCode>
    <ACSTransactionId>45be5b5a-bd58-4b9d-a298-da2beb339064</ACSTransactionId>
    <DSTransactionId>7f03c3aa-1a28-48eb-a5f7-47da91dd49c3</DSTransactionId>
    <AuthenticationType>03</AuthenticationType>
    <CardBrand>MC</CardBrand>
    <PAResStatus>Y</PAResStatus>
</CardinalMPI>



1b. Recurring Payments - Subsequent Transaction (Mastercard)

Scenario 

Merchant is running a subsequent 3RI recurring transaction that is a fixed amount for a set or of no established expiry (e.g., subscription purchases).

Authentication Experience

Frictionless

Test Values

EXP Date: 01/****

Mastercard PAN: 
2.2.0: 5200000000002235

Info

NOTE: Normally, merchants would use the same PAN as indicated in Test Case 1a. Initial/First Recurring Transaction. At this time, this functionality is not supported in our test environment.

Required Fields - Lookup Request (cmpi_lookup)

Message Category = 01 (PA)

Code Block
languagexml
<MessageCategory>01</MessageCategory>

Device Channel = 3RI (03)

Code Block
languagexml
<DeviceChannel>3RI</DeviceChannel>

Alternate Prior Authentication Data = DSTransactionId from initial transaction (available on Lookup Response)

Code Block
languagexml
<AlternatePriorAuthenticationData>7f03c3aa-1a28-48eb-a5f7-47da91dd49c3</AlternatePriorAuthenticationData>

Note: The presence of DS transaction ID in the AlternatePriorAuthenticationData field is a requirement for 3RI payment transactions for recurring payments.

AuthenticationIndicator = 03 -Installment transaction

Code Block
languagexml
<AuthenticationIndicator>02</AuthenticationIndicator>

ThreeRIIndicator = 01 - Recurring transaction

Code Block
languagexml
<ThreeRIIndicator>01</ThreeRIIndicator>

PurchaseDate =

Format: YYYYMMDDHHMMSS

Code Block
languagexml
<PurchaseDate>20230405112438</PurchaseDate>

RecurringFrequency =

Example values accepted (31 days):

  • 31

  • 031

  • 0031

Code Block
languagexml
<RecurringFrequency>31</RecurringFrequency>

RecurringEnd =

Format: YYYYMMDD

Note: It is recommended not to exceed 12 months from PurchaseDate for recurring expiry

Code Block
languagexml
<RecurringEnd>20240121</RecurringEnd>

Expected Results - Lookup Response (cmpi_lookup)

Enrolled = Y

Code Block
languagexml
<Enrolled>Y</Enrolled>

PAResStatus = Y

Code Block
languagexml
<PAResStatus>Y</PAResStatus>

CAVV = <CAVV Value>

Code Block
languagexml
<Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>

EciFlag = 07

Code Block
<EciFlag>07</EciFlag>
Info

Please note that the ECI flag currently being returned is 02. However, in a Production environment, merchants should anticipate receiving an ECI flag of 07.

ErrorNo = 0

Code Block
languagexml
<ErrorNo>0</ErrorNo>

ErrorDesc = (value will not be provided)

Code Block
languagexml
<ErrorDesc></ErrorDesc>

Additional Information

Mastercard Identity Check

Mastercard has allocated a new ECI value, ECI 07, for 3RI transactions. This will be present on a Mastercard response message for this particular 3RI scenario.

Sample Messages

Sample Lookup Message

Code Block
languagexml
<CardinalMPI>
  <MsgType>cmpi_lookup</MsgType>
  <Version>1.7</Version>
  <ThreeDSVersion>2.2.0</ThreeDSVersion>
  <Algorithm>SHA-512</Algorithm>
  <Identifier>{{API_KEY_IDENTIFIER}}</Identifier>
  <OrgUnit>{{ORG_UNIT_ID}}</OrgUnit>
  <Signature>{{GENERATED_SIGNATURE_VALUE}}</Signature>
  <Timestamp>{{TIMESTAMP}}</Timestamp>
  <OrderNumber>{{ORDER_NUMBER}}</OrderNumber>
  <CardNumber>{{TEST_CARD_NUMBER}}</CardNumber>
  <TransactionType>C</TransactionType>
  <Amount>94160</Amount>
  <CurrencyCode>840</CurrencyCode>
  <CardExpMonth>06</CardExpMonth>
  <CardExpYear>2022</CardExpYear>
  <BillingFirstName>Harry</BillingFirstName>
  <BillingMiddleName>S</BillingMiddleName>
  <BillingLastName>Truman</BillingLastName>
  <BillingAddress1>8100 Tyler Blvd</BillingAddress1>
  <BillingAddress2 />
  <BillingCity>Mentor</BillingCity>
  <BillingCountryCode>US</BillingCountryCode>
  <BillingPostalCode>10123</BillingPostalCode>
  <CategoryCode>0123</CategoryCode>
  <DeviceChannel>3RI</DeviceChannel>
  <ThreeRIIndicator>01</ThreeRIIndicator>
  <RecurringFrequency>31</RecurringFrequency>
  <RecurringEnd>20220907</RecurringEnd>
  <AuthenticationIndicator>02</AuthenticationIndicator>
  <AlternatePriorAuthenticationData>d1734c35-0663-4138-b472-dd6272aa8f77</AlternatePriorAuthenticationData>
</CardinalMPI>

Sample Response Message

Code Block
languagexml
<CardinalMPI>
  <ACSOperatorID>MerchantACS</ACSOperatorID>
  <ErrorDesc></ErrorDesc>
  <ACSUrl></ACSUrl>
  <Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>
  <ErrorNo>0</ErrorNo>
  <EciFlag>07</EciFlag>
  <Enrolled>Y</Enrolled>
  <CurrencyCode>840</CurrencyCode>
  <DSTransactionId>c340528c-1c03-4964-9a32-b9907bb5e048</DSTransactionId>
  <OrderId>8010394438358853</OrderId>
  <CardBrand>MASTERCARD</CardBrand>
  <PAResStatus>Y</PAResStatus>
  <CardBin>520000</CardBin>
  <SignatureVerification>Y</SignatureVerification>
  <ThreeDSVersion>2.2.0</ThreeDSVersion>
  <ThreeDSServerTransactionId>558dccac-45b1-4be4-9949-50a5ee2ec572</ThreeDSServerTransactionId>
  <Amount>94160</Amount>
  <ChallengeRequired></ChallengeRequired>
  <TransactionId>KN3bdqXoE0ZjIptkL9H0</TransactionId>
  <ACSTransactionId>9331946b-7d0a-4df7-8988-1c94b625e552</ACSTransactionId>
  <ACSReferenceNumber>Cardinal ACS</ACSReferenceNumber>
</CardinalMPI>

Test Case 2: Installment

2a. Installment - Customer Initiated Transaction (Mastercard)

Scenario 

An initial authentication for the total amount that the installments will amount to. Once this initial authentication is completed by the customer the subsequent installments will not require authentication and instead will jump right to authorization, per MasterCard’s preferred process.Subseques

Authentication Experience

Customer Merchant Initiated Frictionless Transaction

Test Values

EXP Date: 01/****

PAN: Mastercard PAN:  5200000000002805

Required Fields - Lookup Request (cmpi_lookup)

Message Category = 01 (PA)

Code Block
languagexml
<MessageCategory>01</MessageCategory>

Device Channel = APP (01), BROWSER (02)

Code Block
languagexml
<DeviceChannel>02</DeviceChannel>

ChallengeIndicator = 04 - Challenge requested (Madated) 

Code Block
languagexml
<ChallengeIndicator>04</ChallengeIndicator>

AuthenticationIndicator = 03 - Installment Transaction

Code Block
languagexml
<AuthenticationIndicator>02</AuthenticationIndicator>

PurchaseDate =

Format: YYYYMMDDHHMMSS

Code Block
languagexml
<PurchaseDate>20200405112438</PurchaseDate>

RecurringFrequency =

Example values accepted (31 days):

  • 31

  • 031

  • 0031

Code Block
languagexml
<RecurringFrequency>31</RecurringFrequency>

RecurringEnd =

Format: YYYYMMDD

Note: It is recommended not to exceed 12 months from PurchaseDate for recurring expiry

Code Block
languagexml
<RecurringEnd>20210121</RecurringEnd>

Expected Results - Lookup Response (cmpi_lookup)

Enrolled = Y

Code Block
languagexml
<Enrolled>Y</Enrolled>

PAResStatus = Y

Code Block
languagexml
<PAResStatus>Y</PAResStatus>

CAVV = <CAVV Value>

Code Block
languagexml
<Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>

EciFlag = 00

Code Block
languagexml
<EciFlag>00</EciFlag>

ErrorNo = 0

Code Block
languagexml
<ErrorNo>0</ErrorNo>

ErrorDesc = (value will not be provided)

Code Block
languagexml
<ErrorDesc></ErrorDesc>

Expected Results - Authentication (cmpi_authenticate response)

PAResStatus = Y

Code Block
languagexml
<PAResStatus>Y</PAResStatus>

CAVV = <CAVV Value>

Code Block
languagexml
<Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>

EciFlag = 02

Code Block
languagexml
<EciFlag>02</EciFlag>

ErrorNo = 0

Code Block
languagexml
<ErrorNo>0</ErrorNo>

ErrorDesc = (value will not be provided)

Code Block
languagexml
<ErrorDesc></ErrorDesc>

Additional Information

Mastercard Identity Check

Mastercard has allocated a new ECI value, ECI 07, for 3RI transactions. This will be present on a Mastercard response message for this particular 3RI scenario.

Info

NOTE: DS Txn ID for the initial transaction is always reference in the subsequent recurring
transactions.

Info

NOTE: The AAV & DS Txn ID for each authentication is unique and only usable one time. Each authorization requires a new AAV & DS Transaction ID which will need to be received from a 3RI PA or 3RI IDCI.

Sample cmpi_Lookup Request

Code Block
languagexml
<CardinalMPI>
	<MsgType>cmpi_lookup</MsgType>
	<Version>1.7</Version>
	<Algorithm>SHA-512</Algorithm>
	<Identifier>{{API_KEY_IDENTIFIER}}</Identifier>
	<OrgUnit>{{ORG_UNIT_ID}}</OrgUnit>
	<Signature>{{GENERATED_SIGNATURE_VALUE}}</Signature>
	<Timestamp>{{TIMESTAMP}}</Timestamp>
	<TransactionType>C</TransactionType>
	<OrderNumber>12345678</OrderNumber>
	<Amount>94160</Amount>
	<CurrencyCode>840</CurrencyCode>
	<CardNumber>520000******2805</CardNumber>
	<CardExpMonth>01</CardExpMonth>
	<CardExpYear>2023</CardExpYear>
	<BillingFirstName>John</BillingFirstName>
	<BillingMiddleName>S</BillingMiddleName>
	<BillingLastName>Smith</BillingLastName>
	<BillingAddress1>1600 Pennsylvania Blvd.</BillingAddress1>
	<BillingAddress2/>
	<BillingPhone>555-555-5555</BillingPhone>
	<BillingCity>Washington</BillingCity>
	<BillingState>DC</BillingState>
	<BillingPostalCode>10123</BillingPostalCode>
	<BillingCountryCode>US</BillingCountryCode>
	<ShippingFirstName>John</ShippingFirstName>
	<ShippingLastName>Smith</ShippingLastName>
	<ShippingAddress1>1600 Pennsylvania Blvd.</ShippingAddress1>
	<ShippingAddress2/>
	<ShippingPhone>555-555-5555</ShippingPhone>
	<ShippingCity>Washington</ShippingCity>
	<ShippingState>DC</ShippingState>
	<ShippingPostalCode>10123</ShippingPostalCode>
	<ShippingCountryCode>US</ShippingCountryCode>
	<Item_Name_1>CC Car A</Item_Name_1>
	<Item_Desc_1>Model Aqua</Item_Desc_1>
	<Item_Price_1>10000</Item_Price_1>
	<Item_Quantity_1>1</Item_Quantity_1>
	<Item_SKU_1>8675309</Item_SKU_1>
	<PurchaseDate>20200405112438</PurchaseDate>
	<CategoryCode>01</CategoryCode>
	<MessageCategory>01</MessageCategory>
	<BrowserLanguage>English</BrowserLanguage>
	<BrowserColorDepth>500</BrowserColorDepth>
	<BrowserScreenHeight>980</BrowserScreenHeight>
	<BrowserScreenWidth>1080</BrowserScreenWidth>
	<BrowserTimeZone>-1:00</BrowserTimeZone>
	<BrowserJavaEnabled>true</BrowserJavaEnabled>
	<IPAddress>127.0.0.1</IPAddress>
	<UserAgent>Jakarta Commons-HttpClient/3.1</UserAgent>
	<DeviceChannel>02</DeviceChannel>
	<ChallengeIndicator>04</ChallengeIndicator>
	<AuthenticationIndicator>03</AuthenticationIndicator>
	<RecurringEnd>20190121</RecurringEnd>
	<RecurringFrequency>31</RecurringFrequency>
	<CategoryCode>1234</CategoryCode>
	<BrowserHeader>text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</BrowserHeader>
</CardinalMPI>

Sample Lookup Response Message

Code Block
languagexml
<CardinalMPI>
    <ErrorNo>0</ErrorNo>
    <TransactionId>IZBMo3zIjEPsnNCcGgN0</TransactionId>
    <Payload></Payload>
    <ErrorDesc></ErrorDesc>
    <Cavv/>
    <PAResStatus>Y</PAResStatus>
    <Enrolled>Y</Enrolled>
    <ACSTransactionId>2cf308bf-86fc-4bee-816a-cd38909d0d92</ACSTransactionId>
    <EciFlag>00</EciFlag>
    <ACSUrl></ACSUrl>
    <ThreeDSServerTransactionId>db6e6faf-f7bb-40a1-8c9c-caaad3782458</ThreeDSServerTransactionId>
    <CardBin>520000</CardBin>
    <CardBrand>MC</CardBrand>
    <Amount>94160</Amount>
    <DSTransactionId>1c59a512-ab4f-4370-af97-4cfe69b7276e</DSTransactionId>
    <ThreeDSVersion>2.2.0</ThreeDSVersion>
    <CurrencyCode>840</CurrencyCode>
    <OrderId>8000038870456384</OrderId>
    <SignatureVerification>Y</SignatureVerification>
</CardinalMPI>

Sample Authenticate Request Message

Code Block
languagexml
<CardinalMPI>
	<MsgType>cmpi_authenticate</MsgType>
	<Algorithm>SHA-512</Algorithm>
	<Identifier>{{API_KEY_IDENTIFIER}}</Identifier>
	<OrgUnit>{{ORG_UNIT_ID}}</OrgUnit>
	<Signature>{{GENERATED_SIGNATURE_VALUE}}</Signature>
	<Timestamp>{{TIMESTAMP}}</Timestamp>
	<TransactionId>{{TRANSACTION_ID}}</TransactionId>
	<OrderId>{{ORDER_ID}}</OrderId>
	<TransactionType>C</TransactionType>
	<Version>1.7</Version>
</CardinalMPI>

Sample Authenticate Response Message

Code Block
languagexml
<CardinalMPI>
    <CardBin>520000</CardBin>
    <ThreeDSVersion>2.2.0</ThreeDSVersion>
    <SignatureVerification>Y</SignatureVerification>
    <ErrorDesc />
    <ThreeDSServerTransactionId>c5045efa-1d2c-411f-a605-687bfd1460dd</ThreeDSServerTransactionId>
    <Cavv>MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=</Cavv>
    <Amount>12367</Amount>
    <ErrorNo>0</ErrorNo>
    <EciFlag>02</EciFlag>
    <TransactionId>ADF7ZctbyCVa0xKcivw0</TransactionId>
    <CurrencyCode>840</CurrencyCode>
    <ACSTransactionId>45be5b5a-bd58-4b9d-a298-da2beb339064</ACSTransactionId>
    <DSTransactionId>7f03c3aa-1a28-48eb-a5f7-47da91dd49c3</DSTransactionId>
    <AuthenticationType>03</AuthenticationType>
    <CardBrand>MC</CardBrand>
    <PAResStatus>Y</PAResStatus>
</CardinalMPI>

Test Case 3: Split/Delayed or Partial Shipment (3RI)

3a. Split/Partial Shipment (Mastercard)

Scenario 

A purchase includes multiple items that are made available to the consumer at different periods. For example, an order contains backordered or preordered items.

Note: During the initial purchase, an authentication should be completed using the full amount total (including products not yet to be shipped).

Authentication Experience

Frictionless

Test Values

EXP Date: 01/****

Mastercard PAN: 
2.2.0: 5200000000002235

Required Fields - Lookup Request (cmpi_lookup)

Message Category = 01 (PA)

Code Block
languagexml
<MessageCategory>01</MessageCategory>

Device Channel = 3RI (03)

Code Block
languagexml
<DeviceChannel>3RI</DeviceChannel>

AuthenticationIndicator = 02 (Recurring transaction)

Code Block
languagexml
<AuthenticationIndicator>02</AuthenticationIndicator>

ThreeRIIndicator = 06 (Split/Delayed Shipment)

Code Block
languagexml
<ThreeRIIndicator>06</ThreeRIIndicator>

Alternate Prior Authentication Data = DSTransactionId from initial transaction (available on Lookup Response)

Code Block
languagexml
<AlternatePriorAuthenticationData>dsTransID:7f03c3aa-1a28-48eb-a5f7-47da91dd49c3</AlternatePriorAuthenticationData>

Alternate Prior Authentication Time = Date and time in UTC of the prior cardholder authentication.

Format: YYYYMMDDHHMM

Code Block
<AlternatePriorAuthenticationTime>202304051124</AlternatePriorAuthenticationTime>

Alternate Prior Authentication Method = 02 - Cardholder challenge occurred by ACS

Code Block
<AlternatePriorAuthenticationMethod>02</AlternatePriorAuthenticationMethod>
Info

The AlternatePriorAuthenticationMethod value will need to be determined and stored during the initial transaction and sent in on the subsequent request. Merchants should store this value alongside the ACS Transaction Id to meet the requirements of the 3RI request.

Expected Results - Lookup Response (cmpi_lookup)

Enrolled = Y

Code Block
languagexml
<Enrolled>Y</Enrolled>

PAResStatus = Y

Code Block
languagexml
<PAResStatus>Y</PAResStatus>

CAVV = <CAVV Value>

Code Block
languagexml
<Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>

EciFlag = 07

Code Block
<EciFlag>07</EciFlag>
Note

Please note that the ECIFlag currently being returned is 02. However, in a Production environment, merchants should anticipate receiving an ECIFlag of 07.

ErrorNo = 0

Code Block
languagexml
<ErrorNo>0</ErrorNo>

ErrorDesc = (value will not be provided)

Code Block
languagexml
<ErrorDesc></ErrorDesc>

Card Network & Version Specifications

Mastercard Identity Check 2.1

For Mastercard Identity Check 2.1, 3RI is not supported for Payment Authentication (PA).

If you attempt to run a Device Channel of 3RI within Mastercard Identity Check 2.1, you will receive a transStatusReason=21 (3RI Transaction not Supported). In this case, you will also receive a transaction status of “U” rather than “Y”.

Additional Information

Mastercard Identity Check

Mastercard has allocated a new ECI value, ECI 07, for 3RI transactions. This will be present on a Mastercard response message for this particular 3RI scenario.

Sample Messages

Sample Lookup Message

Code Block
languagexml
<CardinalMPI>
  <MsgType>cmpi_lookup</MsgType>
  <Version>1.7</Version>
  <ThreeDSVersion>2.2.0</ThreeDSVersion>
  <Algorithm>SHA-512</Algorithm>
  <Identifier>{{API_KEY_IDENTIFIER}}</Identifier>
  <OrgUnit>{{ORG_UNIT_ID}}</OrgUnit>
  <Signature>{{GENERATED_SIGNATURE_VALUE}}</Signature>
  <Timestamp>{{TIMESTAMP}}</Timestamp>
  <OrderNumber>{{ORDER_NUMBER}}</OrderNumber>
  <CardNumber>{{TEST_CARD_NUMBER}}</CardNumber>
  <TransactionType>C</TransactionType>
  <Amount>94160</Amount>
  <CurrencyCode>840</CurrencyCode>
  <CardExpMonth>06</CardExpMonth>
  <CardExpYear>2022</CardExpYear>
  <BillingFirstName>Harry</BillingFirstName>
  <BillingMiddleName>S</BillingMiddleName>
  <BillingLastName>Truman</BillingLastName>
  <BillingAddress1>8100 Tyler Blvd</BillingAddress1>
  <BillingAddress2 />
  <BillingCity>Mentor</BillingCity>
  <BillingCountryCode>US</BillingCountryCode>
  <BillingPostalCode>10123</BillingPostalCode>
  <CategoryCode>0123</CategoryCode>
  <DeviceChannel>3RI</DeviceChannel>
  <AuthenticationIndicator>01</AuthenticationIndicator>
  <ThreeRIIndicator>06</ThreeRIIndicator>
  <AlternatePriorAuthenticationRef>45be5b5a-bd58-4b9d-a298-da2beb339064</AlternatePriorAuthenticationRef>
  <AlternatePriorAuthenticationData>d1734c35-0663-4138-b472-dd6272aa8f77</AlternatePriorAuthenticationData>
  <AlternatePriorAuthenticationTime>202304051124</AlternatePriorAuthenticationTime>
  <AlternatePriorAuthenticationMethod>02</AlternatePriorAuthenticationMethod>
</CardinalMPI>

Sample Response Message

Code Block
languagexml
<CardinalMPI>
  <ACSOperatorID>MerchantACS</ACSOperatorID>
  <ErrorDesc></ErrorDesc>
  <ACSUrl></ACSUrl>
  <Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>
  <ErrorNo>0</ErrorNo>
  <EciFlag>07</EciFlag>
  <Enrolled>Y</Enrolled>
  <CurrencyCode>840</CurrencyCode>
  <DSTransactionId>c340528c-1c03-4964-9a32-b9907bb5e048</DSTransactionId>
  <OrderId>8010394438358853</OrderId>
  <CardBrand>MASTERCARD</CardBrand>
  <PAResStatus>Y</PAResStatus>
  <CardBin>520000</CardBin>
  <SignatureVerification>Y</SignatureVerification>
  <ThreeDSVersion>2.2.0</ThreeDSVersion>
  <ThreeDSServerTransactionId>558dccac-45b1-4be4-9949-50a5ee2ec572</ThreeDSServerTransactionId>
  <Amount>94160</Amount>
  <ChallengeRequired></ChallengeRequired>
  <TransactionId>KN3bdqXoE0ZjIptkL9H0</TransactionId>
  <ACSTransactionId>9331946b-7d0a-4df7-8988-1c94b625e552</ACSTransactionId>
  <ACSReferenceNumber>Cardinal ACS</ACSReferenceNumber>
</CardinalMPI>


3b. Split/Delayed Shipment (Visa)

Scenario 

A purchase includes multiple items that are made available to the consumer at different periods. For example, an order contains backordered or preordered items.

Note: During the initial purchase, an authentication should be completed using the full amount total (including products not yet to be shipped).

Authentication Experience

Frictionless

Test Values

EXP Date: 01/****

Visa PAN: 

2.2.0: 4000000000002701

Required Fields - Lookup Request (cmpi_lookup)

Message Category = 01 (PA)

Code Block
languagexml
<MessageCategory>01</MessageCategory>

Device Channel = 3RI (03)

Code Block
languagexml
<DeviceChannel>3RI</DeviceChannel>

AuthenticationIndicator = 01 (Payment transaction)

Code Block
languagexml
<AuthenticationIndicator>01</AuthenticationIndicator>

ThreeRIIndicator =

EMV 3DS 2.2: 06 (Split/Delayed Shipment)

Code Block
languagexml
<ThreeRIIndicator>06</ThreeRIIndicator>

Alternate Prior Authentication Ref = ACSTransactionId from initial transaction (available on Lookup Response)

Code Block
languagexml
<AlternatePriorAuthenticationRef>45be5b5a-bd58-4b9d-a298-da2beb339064</AlternatePriorAuthenticationRef>

Alternate Prior Authentication Time = Date and time in UTC of the prior cardholder authentication.

Format: YYYYMMDDHHMM

Code Block
languagexml
<AlternatePriorAuthenticationTime>202304051124</AlternatePriorAuthenticationTime>

Alternate Prior Authentication Method = 02 - Cardholder challenge occurred by ACS

Code Block
languagexml
<AlternatePriorAuthenticationMethod>02</AlternatePriorAuthenticationMethod>
Info

The AlternatePriorAuthenticationMethod value will need to be determined and stored during the initial transaction and sent in on the subsequent request. Merchants should store this value alongside the ACS Transaction Id to meet the requirements of the 3RI request.

Expected Results - Lookup Response (cmpi_lookup)

Enrolled = Y

Code Block
languagexml
<Enrolled>Y</Enrolled>

PAResStatus = Y

Code Block
languagexml
<PAResStatus>Y</PAResStatus>

CAVV = <CAVV Value>

Code Block
languagexml
<Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>

EciFlag = 05

Code Block
languagexml
<EciFlag>05</EciFlag>

ErrorNo = 0

Code Block
languagexml
<ErrorNo>0</ErrorNo>

ErrorDesc = (value will not be provided)

Code Block
languagexml
<ErrorDesc></ErrorDesc>

Sample Messages

Sample Lookup Message

Code Block
languagexml
<CardinalMPI>
  <MsgType>cmpi_lookup</MsgType>
  <Version>1.7</Version>
  <ThreeDSVersion>2.2.0</ThreeDSVersion>
  <Algorithm>SHA-512</Algorithm>
  <Identifier>{{API_KEY_IDENTIFIER}}</Identifier>
  <OrgUnit>{{ORG_UNIT_ID}}</OrgUnit>
  <Signature>{{GENERATED_SIGNATURE_VALUE}}</Signature>
  <Timestamp>{{TIMESTAMP}}</Timestamp>
  <OrderNumber>{{ORDER_NUMBER}}</OrderNumber>
  <CardNumber>{{TEST_CARD_NUMBER}}</CardNumber>
  <TransactionType>C</TransactionType>
  <Amount>94160</Amount>
  <CurrencyCode>840</CurrencyCode>
  <CardExpMonth>06</CardExpMonth>
  <CardExpYear>2022</CardExpYear>
  <BillingFirstName>Harry</BillingFirstName>
  <BillingMiddleName>S</BillingMiddleName>
  <BillingLastName>Truman</BillingLastName>
  <BillingAddress1>8100 Tyler Blvd</BillingAddress1>
  <BillingAddress2 />
  <BillingCity>Mentor</BillingCity>
  <BillingCountryCode>US</BillingCountryCode>
  <BillingPostalCode>10123</BillingPostalCode>
  <CategoryCode>0123</CategoryCode>
  <DeviceChannel>3RI</DeviceChannel>
  <AuthenticationIndicator>01</AuthenticationIndicator>
  <ThreeRIIndicator>06</ThreeRIIndicator>
  <AlternatePriorAuthenticationRef>45be5b5a-bd58-4b9d-a298-da2beb339064</AlternatePriorAuthenticationRef>
  <AlternatePriorAuthenticationTime>202304051124</AlternatePriorAuthenticationTime>
  <AlternatePriorAuthenticationMethod>02</AlternatePriorAuthenticationMethod>
</CardinalMPI>

Sample Response Message

Code Block
languagexml
<CardinalMPI>
  <ACSOperatorID>MerchantACS</ACSOperatorID>
  <ErrorDesc></ErrorDesc>
  <ACSUrl></ACSUrl>
  <Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>
  <ErrorNo>0</ErrorNo>
  <EciFlag>05</EciFlag>
  <Enrolled>Y</Enrolled>
  <CurrencyCode>840</CurrencyCode>
  <DSTransactionId>c340528c-1c03-4964-9a32-b9907bb5e048</DSTransactionId>
  <OrderId>8010394438358853</OrderId>
  <CardBrand>VISA</CardBrand>
  <PAResStatus>Y</PAResStatus>
  <CardBin>400120</CardBin>
  <SignatureVerification>Y</SignatureVerification>
  <ThreeDSVersion>2.2.0</ThreeDSVersion>
  <ThreeDSServerTransactionId>558dccac-45b1-4be4-9949-50a5ee2ec572</ThreeDSServerTransactionId>
  <Amount>94160</Amount>
  <ChallengeRequired></ChallengeRequired>
  <TransactionId>KN3bdqXoE0ZjIptkL9H0</TransactionId>
  <ACSTransactionId>9331946b-7d0a-4df7-8988-1c94b625e552</ACSTransactionId>
  <ACSReferenceNumber>Cardinal ACS</ACSReferenceNumber>
</CardinalMPI>

Test Case #4 OTA Test Cases

4a. Multi-Party Commerce or OTA (Visa)

Scenario 

Multi-Party Commerce is when a travel booking merchant creates a multi-party transaction for the cardholder, where participating merchants are required to authorize on flights, hotels, and car rentals etc. This uses case addresses what these participating merchants are required to send for a successful transaction

Info

Note: Each participating merchant will be required to send their own CAVV.

Authentication Experience

Frictionless

Test Values

EXP Date: 01/****

Visa PAN: 
2.2 4000000000002701

Required Fields - Lookup Request (cmpi_lookup)

 

Message Category = 01 (PA)

Code Block
<MessageCategory>01</MessageCategory>

Device Channel = 3RI (03)

Code Block
<DeviceChannel>3RI</DeviceChannel>

AuthenticationIndicator = 01 (Payment transaction)

Code Block
<AuthenticationIndicator>01</AuthenticationIndicator>

ThreeRIIndicator =

EMV 3DS 2.2: 11 (Other Payment) or 16 (Split Payment) with a message extension

Code Block
<ThreeRIIndicator>11</ThreeRIIndicator>

Alternate Prior Authentication Ref = ACSTransactionId from initial transaction (available on Lookup Response)

Code Block
<AlternatePriorAuthenticationRef>45be5b5a-bd58-4b9d-a298-da2beb339064</AlternatePriorAuthenticationRef>

Alternate Prior Authentication Time = Date and time in UTC of the prior cardholder authentication.

Format: YYYYMMDDHHMMSS

Code Block
<AlternatePriorAuthenticationTime>20230405112438</AlternatePriorAuthenticationTime>

Alternate Prior Authentication Method = 02 - Cardholder challenge occurred by ACS

Code Block
<AlternatePriorAuthenticationMethod>02</AlternatePriorAuthenticationMethod>
Info

The AlternatePriorAuthenticationMethod value will need to be determined and stored during the initial transaction and sent in on the subsequent request. Merchants should store this value alongside the ACS Transaction Id to meet the requirements of the 3RI request.

Expected Results - Lookup Response (cmpi_lookup)

 

Enrolled = Y

Code Block
<Enrolled>Y</Enrolled>

PAResStatus = Y

Code Block
<PAResStatus>Y</PAResStatus>

CAVV = <CAVV Value>

Code Block
<Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>

EciFlag = 05

Code Block
<EciFlag>05</EciFlag>

ErrorNo = 0

Code Block
<ErrorNo>0</ErrorNo>

ErrorDesc = (value will not be provided)

Code Block
<ErrorDesc></ErrorDesc>

Sample cmpi_Lookup Request:

Code Block
languagexml
<CardinalMPI>
  <MsgType>cmpi_lookup</MsgType>
  <Version>1.7</Version>
  <ThreeDSVersion>2.2.0</ThreeDSVersion>
  <Algorithm>SHA-512</Algorithm>
  <Identifier>{{API_KEY_IDENTIFIER}}</Identifier>
  <OrgUnit>{{ORG_UNIT_ID}}</OrgUnit>
  <Signature>{{GENERATED_SIGNATURE_VALUE}}</Signature>
  <Timestamp>{{TIMESTAMP}}</Timestamp>
  <OrderNumber>{{ORDER_NUMBER}}</OrderNumber>
  <CardNumber>{{TEST_CARD_NUMBER}}</CardNumber>
  <TransactionType>C</TransactionType>
  <Amount>94160</Amount>
  <CurrencyCode>840</CurrencyCode>
  <CardExpMonth>06</CardExpMonth>
  <CardExpYear>2022</CardExpYear>
  <BillingFirstName>Harry</BillingFirstName>
  <BillingMiddleName>S</BillingMiddleName>
  <BillingLastName>Truman</BillingLastName>
  <BillingAddress1>8100 Tyler Blvd</BillingAddress1>
  <BillingAddress2 />
  <BillingCity>Mentor</BillingCity>
  <BillingCountryCode>US</BillingCountryCode>
  <BillingPostalCode>10123</BillingPostalCode>
  <CategoryCode>0123</CategoryCode>
  <DeviceChannel>3RI</DeviceChannel>
  <AuthenticationIndicator>01</AuthenticationIndicator>
  <ThreeRIIndicator>11</ThreeRIIndicator>
  <AlternatePriorAuthenticationRef>45be5b5a-bd58-4b9d-a298-da2beb339064</AlternatePriorAuthenticationRef>
  <AlternatePriorAuthenticationTime>20230405112438</AlternatePriorAuthenticationTime>
  <AlternatePriorAuthenticationMethod>02</AlternatePriorAuthenticationMethod>
</CardinalMPI>

Sample Response:

Code Block
languagexml
<CardinalMPI>
  <ACSOperatorID>MerchantACS</ACSOperatorID>
  <ErrorDesc></ErrorDesc>
  <ACSUrl></ACSUrl>
  <Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>
  <ErrorNo>0</ErrorNo>
  <EciFlag>05</EciFlag>
  <Enrolled>Y</Enrolled>
  <CurrencyCode>840</CurrencyCode>
  <DSTransactionId>c340528c-1c03-4964-9a32-b9907bb5e048</DSTransactionId>
  <OrderId>8010394438358853</OrderId>
  <CardBrand>VISA</CardBrand>
  <PAResStatus>Y</PAResStatus>
  <CardBin>400120</CardBin>
  <SignatureVerification>Y</SignatureVerification>
  <ThreeDSVersion>2.2.0</ThreeDSVersion>
  <ThreeDSServerTransactionId>558dccac-45b1-4be4-9949-50a5ee2ec572</ThreeDSServerTransactionId>
  <Amount>94160</Amount>
  <ChallengeRequired></ChallengeRequired>
  <TransactionId>KN3bdqXoE0ZjIptkL9H0</TransactionId>
  <ACSTransactionId>9331946b-7d0a-4df7-8988-1c94b625e552</ACSTransactionId>
  <ACSReferenceNumber>Cardinal ACS</ACSReferenceNumber>
</CardinalMPI>

4b. Multi-Party Commerce or OTA (MasterCard)

Scenario 

Multi-Party Commerce is when a travel booking merchant creates a multi-party transaction for the cardholder, where participating merchants are required to authorize on flights, hotels, and car rentals etc. This uses case addresses what these participating merchants are required to send for a successful transaction

Info

Note: Each participating merchant will be required to send their own CAVV.

Authentication Experience

Customer Initiated Frictionless

Test Values

EXP Date: 01/****

MasterCard PAN: 
2.2 5200000000002805

Required Fields - Lookup Request (cmpi_lookup)

Message Category = 01 (PA)

Code Block
languagexml
<MessageCategory>01</MessageCategory>

Device Channel = APP (01), BROWSER (02)

Code Block
languagexml
<DeviceChannel>02</DeviceChannel>

ChallengeIndicator = 03 - Challenge requested (3DS Requestor preference) 

Code Block
languagexml
<ChallengeIndicator>03</ChallengeIndicator>

AuthenticationIndicator = 85 (Agent Payment)

Code Block
languagexml
<AuthenticationIndicator>85</AuthenticationIndicator>

PurchaseDate =

Format: YYYYMMDDHHMMSS

Code Block
languagexml
<PurchaseDate>20200405112438</PurchaseDate>

Expected Results for the Lookup Response

PAResStatus = C

Code Block
<PAResStatus>Y</PAResStatus>

Enrolled = Y

Code Block
<Enrolled>Y</Enrolled>

EciFlag = 00

Code Block
languagexml
<EciFlag>00</EciFlag>

ErrorNo = 0

Code Block
languagexml
<ErrorNo>0</ErrorNo>

ErrorDesc = (value will not be provided)

Code Block
languagexml
<ErrorDesc></ErrorDesc>

Cavv = (value will not be provided)

Code Block
languagexml
<Cavv></Cavv>

Expected Results - Authenticate Response (cmpi_lookup)

PAResStatus = Y

Code Block
<PAResStatus>Y</PAResStatus>

CAVV = <CAVV Value>

Code Block
<Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>

EciFlag = 02

Code Block
<EciFlag>02</EciFlag>

ErrorNo = 0

Code Block
<ErrorNo>0</ErrorNo>

ErrorDesc = (value will not be provided)

Code Block
<ErrorDesc></ErrorDesc>

Sample Request:

Code Block
languagexml
<CardinalMPI>
	<MsgType>cmpi_lookup</MsgType>
	<Version>1.7</Version>
	<Algorithm>SHA-512</Algorithm>
	<Identifier>{{API_KEY_IDENTIFIER}}</Identifier>
	<OrgUnit>{{ORG_UNIT_ID}}</OrgUnit>
	<Signature>{{GENERATED_SIGNATURE_VALUE}}</Signature>
	<Timestamp>{{TIMESTAMP}}</Timestamp>
	<TransactionType>C</TransactionType>
	<OrderNumber>12345678</OrderNumber>
	<Amount>94160</Amount>
	<CurrencyCode>840</CurrencyCode>
	<CardNumber>520000******2805</CardNumber>
	<CardExpMonth>01</CardExpMonth>
	<CardExpYear>2023</CardExpYear>
	<BillingFirstName>John</BillingFirstName>
	<BillingMiddleName>S</BillingMiddleName>
	<BillingLastName>Smith</BillingLastName>
	<BillingAddress1>1600 Pennsylvania Blvd.</BillingAddress1>
	<BillingAddress2/>
	<BillingPhone>555-555-5555</BillingPhone>
	<BillingCity>Washington</BillingCity>
	<BillingState>DC</BillingState>
	<BillingPostalCode>10123</BillingPostalCode>
	<BillingCountryCode>US</BillingCountryCode>
	<ShippingFirstName>John</ShippingFirstName>
	<ShippingLastName>Smith</ShippingLastName>
	<ShippingAddress1>1600 Pennsylvania Blvd.</ShippingAddress1>
	<ShippingAddress2/>
	<ShippingPhone>555-555-5555</ShippingPhone>
	<ShippingCity>Washington</ShippingCity>
	<ShippingState>DC</ShippingState>
	<ShippingPostalCode>10123</ShippingPostalCode>
	<ShippingCountryCode>US</ShippingCountryCode>
	<Item_Name_1>CC Car A</Item_Name_1>
	<Item_Desc_1>Model Aqua</Item_Desc_1>
	<Item_Price_1>10000</Item_Price_1>
	<Item_Quantity_1>1</Item_Quantity_1>
	<Item_SKU_1>8675309</Item_SKU_1>
	<PurchaseDate>20200405112438</PurchaseDate>
	<CategoryCode>01</CategoryCode>
	<MessageCategory>01</MessageCategory>
	<BrowserLanguage>English</BrowserLanguage>
	<BrowserColorDepth>500</BrowserColorDepth>
	<BrowserScreenHeight>980</BrowserScreenHeight>
	<BrowserScreenWidth>1080</BrowserScreenWidth>
	<BrowserTimeZone>-1:00</BrowserTimeZone>
	<BrowserJavaEnabled>true</BrowserJavaEnabled>
	<IPAddress>127.0.0.1</IPAddress>
	<UserAgent>Jakarta Commons-HttpClient/3.1</UserAgent>
	<DeviceChannel>02</DeviceChannel>
	<ChallengeIndicator>03</ChallengeIndicator>
	<AuthenticationIndicator>85</AuthenticationIndicator>
	<RecurringEnd>20190121</RecurringEnd>
	<RecurringFrequency>31</RecurringFrequency>
	<CategoryCode>1234</CategoryCode>
	<BrowserHeader>text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</BrowserHeader>
</CardinalMPI>

Sample Response:

Code Block
languagexml
<CardinalMPI>
    <ErrorNo>0</ErrorNo>
    <TransactionId>IZBMo3zIjEPsnNCcGgN0</TransactionId>
    <Payload></Payload>
    <ErrorDesc></ErrorDesc>
    <Cavv/>
    <PAResStatus>C</PAResStatus>
    <Enrolled>Y</Enrolled>
    <ACSTransactionId>2cf308bf-86fc-4bee-816a-cd38909d0d92</ACSTransactionId>
    <EciFlag>00</EciFlag>
    <ACSUrl>https://0merchantacsstag.cardinalcommerce.com/MerchantACSWeb/creq.jsp</ACSUrl>
    <ThreeDSServerTransactionId>db6e6faf-f7bb-40a1-8c9c-caaad3782458</ThreeDSServerTransactionId>
    <CardBin>520000</CardBin>
    <CardBrand>MASTERCARD</CardBrand>
    <Amount>94160</Amount>
    <DSTransactionId>1c59a512-ab4f-4370-af97-4cfe69b7276e</DSTransactionId>
    <ThreeDSVersion>2.2.0</ThreeDSVersion>
    <CurrencyCode>840</CurrencyCode>
    <OrderId>8000038870456384</OrderId>
    <SignatureVerification>Y</SignatureVerification>
</CardinalMPI>

Sample Authenticate Request

Code Block
languagexml
<CardinalMPI>
	<MsgType>cmpi_authenticate</MsgType>
	<Algorithm>SHA-512</Algorithm>
	<Identifier>{{API_KEY_IDENTIFIER}}</Identifier>
	<OrgUnit>{{ORG_UNIT_ID}}</OrgUnit>
	<Signature>{{GENERATED_SIGNATURE_VALUE}}</Signature>
	<Timestamp>{{TIMESTAMP}}</Timestamp>
	<TransactionId>{{TRANSACTION_ID}}</TransactionId>
	<OrderId>{{ORDER_ID}}</OrderId>
	<TransactionType>C</TransactionType>
	<Version>1.7</Version>
</CardinalMPI>

Sample Authenticate Response

Code Block
languagexml
<CardinalMPI>
    <CardBin>520000</CardBin>
    <ThreeDSVersion>2.2.0</ThreeDSVersion>
    <SignatureVerification>Y</SignatureVerification>
    <ErrorDesc />
    <ThreeDSServerTransactionId>c5045efa-1d2c-411f-a605-687bfd1460dd</ThreeDSServerTransactionId>
    <Cavv>MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=</Cavv>
    <Amount>12367</Amount>
    <ErrorNo>0</ErrorNo>
    <EciFlag>02</EciFlag>
    <TransactionId>ADF7ZctbyCVa0xKcivw0</TransactionId>
    <CurrencyCode>840</CurrencyCode>
    <ACSTransactionId>45be5b5a-bd58-4b9d-a298-da2beb339064</ACSTransactionId>
    <DSTransactionId>7f03c3aa-1a28-48eb-a5f7-47da91dd49c3</DSTransactionId>
    <AuthenticationType>03</AuthenticationType>
    <CardBrand>MC</CardBrand>
    <PAResStatus>Y</PAResStatus>
</CardinalMPI>

4c. Multi-Party Commerce or OTA (MasterCard)

Scenario 

Multi-Party Commerce is when a travel booking merchant creates a multi-party transaction for the cardholder, where participating merchants are required to authorize on flights, hotels, and car rentals etc. This uses case addresses what these participating merchants are required to send for a successful transaction

Info

Note: Each participating merchant will be required to send their own CAVV.

Authentication Experience

Merchant Initiated FrictionlessChallenge

Test Values

EXP Date: 01/****

MasterCard PAN: 
2.2 TBD

Required Fields - Lookup Request (cmpi_lookup)

 

Message Category = 01 (PA)

Code Block
<MessageCategory>01</MessageCategory>

Device Channel = 3RI (03)

Code Block
<DeviceChannel>3RI</DeviceChannel>

AuthenticationIndicator = 85 (Agent Payment)

Code Block
<AuthenticationIndicator>85</AuthenticationIndicator>

ThreeRIIndicator =

EMV 3DS 2.2: 85

Code Block
<ThreeRIIndicator>85</ThreeRIIndicator>

Alternate Prior Authentication Ref = ACSTransactionId from initial transaction (available on Lookup Response)

Code Block
<AlternatePriorAuthenticationRef>45be5b5a-bd58-4b9d-a298-da2beb339064</AlternatePriorAuthenticationRef>

Alternate Prior Authentication Time = Date and time in UTC of the prior cardholder authentication.

Format: YYYYMMDDHHMMSS

Code Block
<AlternatePriorAuthenticationTime>20230405112438</AlternatePriorAuthenticationTime>

Alternate Prior Authentication Method = 02 - Cardholder challenge occurred by ACS

Code Block
<AlternatePriorAuthenticationMethod>02</AlternatePriorAuthenticationMethod>
Info

The AlternatePriorAuthenticationMethod value will need to be determined and stored during the initial transaction and sent in on the subsequent request. Merchants should store this value alongside the ACS Transaction Id to meet the requirements of the 3RI request.

Expected Results - Lookup Response (cmpi_lookup)

 

Enrolled = Y

Code Block
<Enrolled>Y</Enrolled>

PAResStatus = Y

Code Block
<PAResStatus>Y</PAResStatus>

CAVV = <CAVV Value>

Code Block
<Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>

EciFlag = 07

Code Block
<EciFlag>07</EciFlag>

ErrorNo = 0

Code Block
<ErrorNo>0</ErrorNo>

ErrorDesc = (value will not be provided)

Code Block
<ErrorDesc></ErrorDesc>

Sample cmpi_Lookup Request:

Code Block
languagexml
<CardinalMPI>
  <MsgType>cmpi_lookup</MsgType>
  <Version>1.7</Version>
  <ThreeDSVersion>2.2.0</ThreeDSVersion>
  <Algorithm>SHA-512</Algorithm>
  <Identifier>{{API_KEY_IDENTIFIER}}</Identifier>
  <OrgUnit>{{ORG_UNIT_ID}}</OrgUnit>
  <Signature>{{GENERATED_SIGNATURE_VALUE}}</Signature>
  <Timestamp>{{TIMESTAMP}}</Timestamp>
  <OrderNumber>{{ORDER_NUMBER}}</OrderNumber>
  <CardNumber>{{TEST_CARD_NUMBER}}</CardNumber>
  <TransactionType>C</TransactionType>
  <Amount>94160</Amount>
  <CurrencyCode>840</CurrencyCode>
  <CardExpMonth>06</CardExpMonth>
  <CardExpYear>2022</CardExpYear>
  <BillingFirstName>Harry</BillingFirstName>
  <BillingMiddleName>S</BillingMiddleName>
  <BillingLastName>Truman</BillingLastName>
  <BillingAddress1>8100 Tyler Blvd</BillingAddress1>
  <BillingAddress2 />
  <BillingCity>Mentor</BillingCity>
  <BillingCountryCode>US</BillingCountryCode>
  <BillingPostalCode>10123</BillingPostalCode>
  <CategoryCode>0123</CategoryCode>
  <DeviceChannel>3RI</DeviceChannel>
  <AuthenticationIndicator>85</AuthenticationIndicator>
  <ThreeRIIndicator>85</ThreeRIIndicator>
  <AlternatePriorAuthenticationData>dsTransID:d1734c35-0663-4138-b472-dd6272aa8f77</AlternatePriorAuthenticationData>
</CardinalMPI>

Sample Response:

Code Block
languagexml
<CardinalMPI>
  <ACSOperatorID>MerchantACS</ACSOperatorID>
  <ErrorDesc></ErrorDesc>
  <ACSUrl></ACSUrl>
  <Cavv>Y2FyZGluYWxjb21tZXJjZWF1dGg=</Cavv>
  <ErrorNo>0</ErrorNo>
  <EciFlag>07</EciFlag>
  <Enrolled>Y</Enrolled>
  <CurrencyCode>840</CurrencyCode>
  <DSTransactionId>c340528c-1c03-4964-9a32-b9907bb5e048</DSTransactionId>
  <OrderId>8010394438358853</OrderId>
  <CardBrand>MASTERCARD</CardBrand>
  <PAResStatus>Y</PAResStatus>
  <CardBin>520000</CardBin>
  <SignatureVerification>Y</SignatureVerification>
  <ThreeDSVersion>2.2.0</ThreeDSVersion>
  <ThreeDSServerTransactionId>558dccac-45b1-4be4-9949-50a5ee2ec572</ThreeDSServerTransactionId>
  <Amount>94160</Amount>
  <ChallengeRequired></ChallengeRequired>
  <TransactionId>KN3bdqXoE0ZjIptkL9H0</TransactionId>
  <ACSTransactionId>9331946b-7d0a-4df7-8988-1c94b625e552</ACSTransactionId>
  <ACSReferenceNumber>Cardinal ACS</ACSReferenceNumber>
</CardinalMPI>

Test Case #5 3RI Transaction not Supported

5. 3RI transaction not supported

Scenario 

21 - 3RI transaction not supported

Authentication Experience

Frictionless

Test Values

EXP Date: 01/****

Visa PAN: 
2.1.0: 4000000000002248

Required Fields - Lookup Request (cmpi_lookup)

MessageCategory = 02 (NPA)

Code Block
languagexml
<MessageCategory>02</MessageCategory>

DeviceChannel = 3RI (03)

Code Block
languagexml
<DeviceChannel>3RI</DeviceChannel>

ThreeRIIndicator = 01

Code Block
languagexml
<ThreeRIIndicator>01</ThreeRIIndicator>

Expected Results - Lookup Response (cmpi_lookup)

Enrolled = Y

Code Block
languagexml
<Enrolled>Y</Enrolled>

PAResStatus = U

Code Block
languagexml
<PAResStatus>U</PAResStatus>

Cavv = (value will not be provided)

Code Block
languagexml
<Cavv></Cavv>

EciFlag = 07

Code Block
languagexml
<EciFlag>07</EciFlag>

ErrorNo = 0

Code Block
languagexml
<ErrorNo>0</ErrorNo>

ErrorDesc = (value will not be provided)

Code Block
languagexml
<ErrorDesc></ErrorDesc>

StatusReason = 21

Code Block
languagexml
<StatusReason>21</StatusReason>

Sample cmpi_lookup Request

Code Block
languagexml
<CardinalMPI>
    <MsgType>cmpi_lookup</MsgType>
    <Algorithm>SHA-512</Algorithm>
	<Identifier>{{API_KEY_IDENTIFIER}}</Identifier>
	<OrgUnit>{{ORG_UNIT_ID}}</OrgUnit>
	<Signature>{{GENERATED_SIGNATURE_VALUE}}</Signature>
	<Timestamp>{{TIMESTAMP}}</Timestamp>
    <OrderNumber>{{ORDER_NUMBER}}</OrderNumber>
    <CardNumber>{{TEST_CARD_NUMBER}}</CardNumber>
    <CardExpMonth>06</CardExpMonth>
    <CardExpYear>2022</CardExpYear>
    <AcquirerId>428448</AcquirerId>
    <AcquirerMerchantId>980020230994</AcquirerMerchantId>
    <ACSWindowSize>05</ACSWindowSize>
    <BillingAddress1>8100 Tyler Blvd</BillingAddress1>
    <BillingAddress2 />
    <BillingCity>Mentor</BillingCity>
    <BillingCountryCode>US</BillingCountryCode>
    <BillingFirstName>Chris</BillingFirstName>
    <BillingLastName>Brown</BillingLastName>
    <BillingPostalCode>K44060</BillingPostalCode>
    <BillingState>OH</BillingState>
    <UserAgent>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36</UserAgent>
    <DFReferenceId>{{DF_REFERENCE_ID}}</DFReferenceId>
    <BrowserHeader>text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8</BrowserHeader>
    <BrowserJavaEnabled>True</BrowserJavaEnabled>
    <BrowserLanguage>en-US</BrowserLanguage>
    <BrowserColorDepth>24</BrowserColorDepth>
    <BrowserScreenHeight>864</BrowserScreenHeight>
    <BrowserScreenWidth>1536</BrowserScreenWidth>
    <BrowserTimeZone>300</BrowserTimeZone>
    <CategoryCode>5999</CategoryCode>
    <CurrencyCode>USD</CurrencyCode>
    <Amount>12367</Amount>
    <DeviceChannel>3RI</DeviceChannel>
    <MessageCategory>02</MessageCategory>
    <ThreeRIIndicator>01</ThreeRIIndicator>
    <Email>support@cardinalcommerce.com</Email>
    <IPAddress>1.12.123.255</IPAddress>
    <TransactionMode>S</TransactionMode>
    <TransactionType>C</TransactionType>
    <Version>1.7</Version>
</CardinalMPI>

Sample cmpi_Lookup Response

Code Block
languagexml
<CardinalMPI>
    <ErrorNo>0</ErrorNo>
    <TransactionId>0TmYenYQaThUv4nrJKi0</TransactionId>
    <Payload/>
    <ErrorDesc/>
    <Cavv/>
    <PAResStatus>U</PAResStatus>
    <Enrolled>Y</Enrolled>
    <ACSTransactionId>c05374b4-65b3-4b9b-8dd3-9d2ed9c80d99</ACSTransactionId>
    <EciFlag>07</EciFlag>
    <ACSUrl/>
    <ThreeDSServerTransactionId>62615477-4210-4272-80b0-de04bfab191d</ThreeDSServerTransactionId>
    <CardBin>400000</CardBin>
    <CardBrand>VISA</CardBrand>
    <StatusReason>21</StatusReason>
    <DSTransactionId>6b8c2d65-58a0-4e00-a183-b325c3b0fbde</DSTransactionId>
    <ThreeDSVersion>2.1.0</ThreeDSVersion>
    <OrderId>8000009746159791</OrderId>
    <ChallengeRequired/>
    <SignatureVerification>Y</SignatureVerification>
</CardinalMPI>

EMV® is a registered trademark in the U.S. and other countries and an unregistered trademark elsewhere. The EMV trademark is owned by EMVCo, LLC.