3DS Authentication

Authentication Request Model

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
public class ThreeDSServerAuthenticationRequest {
 
  /**
   * Specifies the preferred version of 3D Secure protocol to be utilized while executing 3D Secure authentication.
   * 3DS Server initiates an authentication request with the preferred version and if this version is not supported by
   * other 3D Secure components, it falls back to the next supported version(s) and continues authentication.
   *
   * If the preferred version is enforced by setting {@link #enforcePreferredProtocolVersion} flag, but this version
   * is not supported by one of the 3D Secure components, 3DS Server does not initiate an authentication and provides
   * corresponding error message to the customer.
   *
   * For application initiated transactions (deviceChannel = '01'), the preferred protocol version must be enforced
   * ({@link #enforcePreferredProtocolVersion} must be set to true).
   *
   * The accepted values are:
   *  2.1.0 -> prefer authentication with 2.1.0 version,
   *  2.2.0 -> prefer authentication with 2.2.0 version,
   *  latest -> prefer authentication with the latest version, the 3DS Server is certified for. 2.2.0 at this moment.
   *
   *  If no value is provided, EMV 3DS 2.1.0 version will be used by default.
   *  Available for supporting EMV 3DS 2.2.0 and later versions.
   */
  @Builder.Default
  private PreferredProtocolVersionEnum preferredProtocolVersion = PreferredProtocolVersionEnum.Version_2_1_0;
  /**
   * Boolean flag that enforces preferred 3D Secure protocol version to be used in 3D Secure authentication.
   * The value should be set true to enforce preferred version. If value is false or not provided,
   * 3DS Server can fall back to next supported 3DS protocol version while initiating 3D Secure authentication.
   *
   * For application initiated transactions (deviceChannel = '01'), the preferred protocol version must be enforced.
   *
   * @see #preferredProtocolVersion
   * Available for supporting EMV 3DS 2.2.0 and later versions.
   */
  @Builder.Default
  private Boolean enforcePreferredProtocolVersion = Boolean.FALSE;
  /**
   * Indicates the type of channel interface being used to initiate the transaction. The accepted values are:
   *
   *  01 -> App-based (APP)
   *  02 -> Browser (BRW)
   *  03 -> 3DS Requestor Initiated (3RI)
   *
   *  This is a required field.
   */
  private DeviceChannelEnum deviceChannel;
  /**
   * Identifies the category of the message for a specific use case. The accepted values are:
   *
   *  01 -> PA
   *  02 -> NPA
   *
   *  This is a required field.
   */
  private MessageCategoryEnum messageCategory;
  /**
   * Indicates whether the 3DS Method successfully completed. The value is used only when deviceChannel = 02 (Browser).
   *
   * The accepted values are:
   *
   *  Y -> Successfully completed
   *  N -> Did not successfully complete
   *  U -> Unavailable - 3DS Method URL was not present in the PRes message data for the card range associated
   *                      with the Cardholder Account Number.
   *
   * If the 3DS Server handles the 3DS Method response, then this field is not required and it will be resolved
   * internally. If there is no 3DS Method URL associated with the Directory Server to which the cardholder belongs,
   * then this field is not required and 3DS Server will send U. Otherwise, this field should be sent.
   */
  private ThreeDSMethodCompletionIndicatorEnum threeDSCompInd;
  /**
   * Contains information for the 3DS Requestor. More details can be found at {@link ThreeDSRequestor}.
   */
  private ThreeDSRequestor threeDSRequestor;
  /**
   * Universally unique transaction identifier assigned by the 3DS Server to identify a single transaction.
   * This value has 36 characters in a format defined in IETF RFC 4122. In case 3DS Method is previously invoked,
   * the threeDSServerTransID should be sent. If not, 3DS Server will generate a new transaction identifier.
   */
  private String threeDSServerTransID;
  /**
   * Fully qualified URL of 3DS Requestor website or customer care site. This field is optional and it is recommended
   * to be configured in the configuration.
   */
  private URL threeDSRequestorURL;
  /**
   * Contains information for the Cardholder Account. More details can be found at {@link CardholderAccount}.
   */
  private CardholderAccount cardholderAccount;
  /**
   * Contains information for the Cardholder. More details can be found at {@link Cardholder}.
   *
   * This field is required unless market or regional mandate restricts sending this information.
   */
  private Cardholder cardholder;
  /**
   * Boolean flag indicating whether the validation for required cardholder data should not be applied in case when
   * market or regional mandate restricts sending the information.
   *
   * This field is not required and if not provided, it will be checked in the 3DS Server configuration. If it's not
   * configured there, default value is false meaning no relaxation of validation rules on cardholder data.
   */
  private Boolean relaxRegionalValidationRules;
  /**
   * Contains purchase information. More details can be found at {@link Purchase}.
   */
  private Purchase purchase;
  /**
   * Contains information for the Acquirer. More details can be found at {@link AcquirerData}.
   */
  private AcquirerData acquirer;
  /**
   * Contains merchant information. More details can be found at {@link MerchantData}.
   */
  private MerchantData merchant;
  /**
   * Unstructured information sent between the 3DS Server, the DS and the ACS.
   *
   * This field is not required to be filled by the Requestor and the requirements for the presence of this field
   * are DS specific.
   */
  @JsonDeserialize(using = BroadcastInfoDeserializer.class)
  @JsonSerialize(using = BroadcastInfoSerializer.class)
  private String broadInfo;
  /**
   * Defines the SDK UI types that the device supports for displaying specific challenge user interfaces within the SDK.
   *
   * This field is required only when deviceChannel=01 (APP).
   *
   * Fields in this object:
   *    sdkInterface -> Specifies all of the SDK Interface types that the device supports for displaying specific
   *                    challenge user interfaces within the SDK. Accepted values are:
   *                      01 -> Native
   *                      02 -> HTML
   *                      03 -> Both
   *    sdkUiType -> Contains a list of all UI types that the device supports for displaying specific challenge user
   *                 interfaces within the SDK. Accepted values for each UI type are:
   *                    01 -> Text
   *                    02 -> Single select
   *                    03 -> Multi select
   *                    04 -> OOB
   *                    05 -> Html Other (valid only for HTML UI)
   *                 For Native UI SDK Interface accepted values are 01-04 and for HTML UI accepted values are 01-05.
   */
  private DeviceRenderingOptionsSupported deviceRenderOptions;
  /**
   * Data necessary to support requirements not otherwise defined in the 3D Secure message are
   * carried in a Message Extension. This field is limited to 81.920 characters and it is used in the
   * Authentication Request.
   *
   * Requirements of this field are set by each Directory Server.
   *
   * The fields for each message extension attribute are:
   *    id -> A unique identifier for the extension. Payment System Registered Application Provider Identifier (RID) is
   *          required as prefix of the ID. The maximum length is 64 characters.
   *    name -> The name of the extension data set as defined by the extension owner. Maximum length is 64 characters.
   *    criticalityIndicator -> A boolean value indicating whether the recipient must understand the contents
   *                            of the extension to interpret the entire message.
   *    data -> The data carried in the extension. The maximum length is 8059 characters.
   */
  private List<MessageExtensionAttribute> messageExtension;
  /**
   * Data necessary to support requirements not otherwise defined in the 3D Secure message are
   * carried in a Message Extension. This field is limited to 81.920 characters and it is used in the
   * generating of the ChallengeRequest, if challenge is needed.
   *
   * Requirements of this field are set by each Directory Server.
   *
   * The fields for each message extension attribute are:
   *    id -> A unique identifier for the extension. Payment System Registered Application Provider Identifier (RID) is
   *          required as prefix of the ID. The maximum length is 64 characters.
   *    name -> The name of the extension data set as defined by the extension owner. Maximum length is 64 characters.
   *    criticalityIndicator -> A boolean value indicating whether the recipient must understand the contents
   *                            of the extension to interpret the entire message.
   *    data -> The data carried in the extension. The maximum length is 8059 characters.
   */
  private List<MessageExtensionAttribute> challengeMessageExtension;
  /**
   * Contains browser information. More details can be found at {@link Browser}.
   *
   * This field is required when deviceChannel=02 (BRW).
   */
  private Browser browserInformation;
  /**
   * Indicates the type of 3RI request. This data element provides additional information to the ACS to determine the
   * best approach for handling a 3RI request. The accepted values are:
   *  01 -> Recurring transaction
   *  02 -> Installment transaction
   *  03 -> Add card
   *  04 -> Maintain card information
   *  05 -> Account verification.
   *
   *  The next values are accepted as well if 3DS Server initiates authentication with EMV 3DS 2.2.0 version
   *  or greater (required protocol version can be set in
   *  {@link ThreeDSServerAuthenticationRequest#preferredProtocolVersion} field):
   *
   *  06 -> Split/delayed shipment
   *  07 -> Top-up
   *  08 -> Mail order
   *  09 -> Telephone order
   *  10 -> Whitelist status check
   *  11 -> other payment.
   *
   *  This field is required only when deviceChannel=03 (3RI) and messageCategory=02 (NPA).
   */
  private ThreeRIIndicatorEnum threeRIInd;
  /**
  * Contains SDK information. More details can be found at {@link Sdk}.
   *
   * All fields in this object are required for App-based transactions.
  */
  private Sdk sdkInformation;
}

For more information on the ThreeDSServerAuthenticationRequest fields, visit:

Authentication Request JSON Samples

Authentication Request without merchantConfigurationId
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
{
  "deviceChannel": "02",
  "messageCategory": "01",
  "threeDSCompInd": "Y",
  "threeDSRequestor": {
    "threeDSRequestorAuthenticationInd": "02",
    "threeDSRequestorAuthenticationInfo": {
      "threeDSReqAuthMethod": "04",
      "threeDSReqAuthTimestamp": "201812201735",
      "threeDSReqAuthData": "threeDSReqAuthData"
    },
    "threeDSRequestorChallengeInd": "03",
    "threeDSRequestorPriorAuthenticationInfo": {
      "threeDSReqPriorRef": "VOGXpZvTlCmBUyPnnZfmsGDKqxRsRwPovkAE",
      "threeDSReqPriorAuthMethod": "01",
      "threeDSReqPriorAuthTimestamp": "201812201735",
      "threeDSReqPriorAuthData": "threeDSReqPriorAuthData"
    }
  },
  "cardholderAccount": {
    "acctType": "02",
    "cardExpiryDate": "1812",
    "acctInfo": {
      "chAccAgeInd": "04",
      "chAccDate": "20181220",
      "chAccChangeInd": "03",
      "chAccChange": "20181220",
      "chAccPwChangeInd": "04",
      "chAccPwChange": "20181220",
      "shipAddressUsageInd": "03",
      "shipAddressUsage": "20181220",
      "txnActivityDay": 1,
      "txnActivityYear": 1,
      "provisionAttemptsDay": 1,
      "nbPurchaseAccount": 1,
      "suspiciousAccActivity": "01",
      "shipNameIndicator": "01",
      "paymentAccInd": "03",
      "paymentAccAge": "20181220"
    },
    "shipAddressUsageInd": "03",
    "shipAddressUsage": "20181220",
    "txnActivityDay": 1,
    "txnActivityYear": 1,
    "provisionAttemptsDay": 1,
    "nbPurchaseAccount": 1,
    "suspiciousAccActivity": "01",
    "shipNameIndicator": "01",
    "paymentAccInd": "03",
    "paymentAccAge": "20181220",
    "acctNumber": "4000001000000005",
    "schemeId": "Visa",
    "payTokenInd": true
  },
  "cardholder": {
    "addrMatch": "N",
    "billAddrCity": "Zurich",
    "billAddrCountry": "756",
    "billAddrLine1": "Zypressenstrasse 71",
    "billAddrLine2": "P.O. Box",
    "billAddrLine3": "8040 Zürich",
    "billAddrPostCode": "8000",
    "billAddrState": "CH",
    "email": "netcetera@example.com",
    "homePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "mobilePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "workPhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "cardholderName": "John Doe",
    "shipAddrCity": "Zurich",
    "shipAddrCountry": "756",
    "shipAddrLine1": "Zypressenstrasse 98",
    "shipAddrLine2": "P.O. Box",
    "shipAddrLine3": "8040 Zürich",
    "shipAddrPostCode": "8000",
    "shipAddrState": "CH"
  },
  "relaxRegionalValidationRules": false,
  "purchase": {
    "purchaseInstalData": 3,
    "merchantRiskIndicator": {
      "shipIndicator": "01",
      "deliveryTimeframe": "02",
      "deliveryEmailAddress": "netcetera@example.com",
      "reorderItemsInd": "01",
      "preOrderPurchaseInd": "01",
      "preOrderDate": "20181220",
      "giftCardAmount": 2,
      "giftCardCurr": "111",
      "giftCardCount": 1
    },
    "purchaseAmount": 1,
    "purchaseCurrency": "111",
    "purchaseExponent": 1,
    "purchaseDate": "20181220173550",
    "recurringExpiry": "20181220",
    "recurringFrequency": 1,
    "transType": "01"
  },
  "acquirer": {
    "acquirerBin": "acq-bin",
    "acquirerMerchantId": "acq-mer-id"
  },
  "merchant": {
    "mcc": "code",
    "merchantCountryCode": "333",
    "merchantName": "name",
    "threeDSRequestorId": "ds-assigned-requestor-id",
    "threeDSRequestorName": "ds-assigned-requestor-name"
  },
  "broadInfo": {"message": "TLS 1.x will be turned off starting summer 2019 "},
  "messageExtension": [
    {
      "name": "name",
      "id": "id",
      "criticalityIndicator": false,
      "data": {
        "valueOne": "value1",
        "valueTwo":"value2"
      }
    }
  ],
  "browserInformation": {
    "browserAcceptHeader": "application/json",
    "browserIP": "192.168.1.11",
    "browserJavaEnabled": true,
    "browserLanguage": "en",
    "browserColorDepth": "8",
    "browserScreenHeight": 1,
    "browserScreenWidth": 1,
    "browserTZ": 1,
    "browserUserAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0",
    "challengeWindowSize": "01"
  }
}
Authentication Request with present merchantConfigurationId
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
{
  "deviceChannel": "02",
  "messageCategory": "01",
  "threeDSCompInd": "Y",
  "threeDSRequestor": {
    "threeDSRequestorAuthenticationInd": "02",
    "threeDSRequestorAuthenticationInfo": {
      "threeDSReqAuthMethod": "04",
      "threeDSReqAuthTimestamp": "201812201735",
      "threeDSReqAuthData": "threeDSReqAuthData"
    },
    "threeDSRequestorChallengeInd": "03",
    "threeDSRequestorPriorAuthenticationInfo": {
      "threeDSReqPriorRef": "VOGXpZvTlCmBUyPnnZfmsGDKqxRsRwPovkAE",
      "threeDSReqPriorAuthMethod": "01",
      "threeDSReqPriorAuthTimestamp": "201812201735",
      "threeDSReqPriorAuthData": "threeDSReqPriorAuthData"
    }
  },
  "cardholderAccount": {
    "acctType": "02",
    "cardExpiryDate": "1812",
    "acctInfo": {
      "chAccAgeInd": "04",
      "chAccDate": "20181220",
      "chAccChangeInd": "03",
      "chAccChange": "20181220",
      "chAccPwChangeInd": "04",
      "chAccPwChange": "20181220",
      "shipAddressUsageInd": "03",
      "shipAddressUsage": "20181220",
      "txnActivityDay": 1,
      "txnActivityYear": 1,
      "provisionAttemptsDay": 1,
      "nbPurchaseAccount": 1,
      "suspiciousAccActivity": "01",
      "shipNameIndicator": "01",
      "paymentAccInd": "03",
      "paymentAccAge": "20181220"
    },
    "schemeId": "Visa",
    "acctNumber": "4000001000000005",
    "payTokenInd": true
  },
  "cardholder": {
    "addrMatch": "N",
    "billAddrCity": "Zurich",
    "billAddrCountry": "756",
    "billAddrLine1": "Zypressenstrasse 71",
    "billAddrLine2": "P.O. Box",
    "billAddrLine3": "8040 Zürich",
    "billAddrPostCode": "8000",
    "billAddrState": "CH",
    "email": "netcetera@example.com",
    "homePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "mobilePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "workPhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "cardholderName": "John Doe",
    "shipAddrCity": "Zurich",
    "shipAddrCountry": "756",
    "shipAddrLine1": "Zypressenstrasse 98",
    "shipAddrLine2": "P.O. Box",
    "shipAddrLine3": "8040 Zürich",
    "shipAddrPostCode": "8000",
    "shipAddrState": "CH"
  },
  "relaxRegionalValidationRules": false,
  "purchase": {
    "purchaseInstalData": 3,
    "merchantRiskIndicator": {
      "shipIndicator": "01",
      "deliveryTimeframe": "02",
      "deliveryEmailAddress": "netcetera@example.com",
      "reorderItemsInd": "01",
      "preOrderPurchaseInd": "01",
      "preOrderDate": "20181220",
      "giftCardAmount": 2,
      "giftCardCurr": "111",
      "giftCardCount": 1
    },
    "purchaseAmount": 1,
    "purchaseCurrency": "111",
    "purchaseExponent": 1,
    "purchaseDate": "20181220173550",
    "recurringExpiry": "20181220",
    "recurringFrequency": 1,
    "transType": "01"
  },
  "acquirer": {
    "acquirerBin": "acq-bin",
    "acquirerMerchantId": "acq-mer-id"
  },
  "merchant": {
    "merchantConfigurationId": "merId"
  },
  "broadInfo": {"message": "TLS 1.x will be turned off starting summer 2019 "},
  "messageExtension": [
    {
      "name": "name",
      "id": "id",
      "criticalityIndicator": false,
      "data": {
        "valueOne":"value1",
        "valueTwo":"value2"
      }
    }
  ],
  "browserInformation": {
    "browserAcceptHeader": "application/json",
    "browserIP": "192.168.1.11",
    "browserJavaEnabled": true,
    "browserLanguage": "en",
    "browserColorDepth": "8",
    "browserScreenHeight": 1,
    "browserScreenWidth": 1,
    "browserTZ": 1,
    "browserUserAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0",
    "challengeWindowSize": "01"
  }
}
Authentication Request for APPLICATION flow
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
{
  "deviceChannel": "01",
  "messageCategory": "01",
  "threeDSCompInd": "U",
  "threeDSRequestor": {
    "threeDSRequestorAuthenticationInd": "02",
    "threeDSRequestorAuthenticationInfo": {
      "threeDSReqAuthMethod": "04",
      "threeDSReqAuthTimestamp": "201812201735",
      "threeDSReqAuthData": "threeDSReqAuthData"
    },
    "threeDSRequestorChallengeInd": "03",
    "threeDSRequestorPriorAuthenticationInfo": {
      "threeDSReqPriorRef": "VOGXpZvTlCmBUyPnnZfmsGDKqxRsRwPovkAE",
      "threeDSReqPriorAuthMethod": "01",
      "threeDSReqPriorAuthTimestamp": "201812201735",
      "threeDSReqPriorAuthData": "threeDSReqPriorAuthData"
    }
  },
  "cardholderAccount": {
    "acctType": "02",
    "cardExpiryDate": "1812",
    "acctInfo": {
      "chAccAgeInd": "04",
      "chAccDate": "20181220",
      "chAccChangeInd": "03",
      "chAccChange": "20181220",
      "chAccPwChangeInd": "04",
      "chAccPwChange": "20181220",
      "shipAddressUsageInd": "03",
      "shipAddressUsage": "20181220",
      "txnActivityDay": 1,
      "txnActivityYear": 1,
      "provisionAttemptsDay": 1,
      "nbPurchaseAccount": 1,
      "suspiciousAccActivity": "01",
      "shipNameIndicator": "01",
      "paymentAccInd": "03",
      "paymentAccAge": "20181220"
    },
    "schemeId": "Visa",
    "acctNumber": "4000001000000005",
    "payTokenInd": true
  },
  "cardholder": {
    "addrMatch": "N",
    "billAddrCity": "Zurich",
    "billAddrCountry": "756",
    "billAddrLine1": "Zypressenstrasse 71",
    "billAddrLine2": "P.O. Box",
    "billAddrLine3": "8040 Zürich",
    "billAddrPostCode": "8000",
    "billAddrState": "CH",
    "email": "netcetera@example.com",
    "homePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "mobilePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "workPhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "cardholderName": "John Doe",
    "shipAddrCity": "Zurich",
    "shipAddrCountry": "756",
    "shipAddrLine1": "Zypressenstrasse 98",
    "shipAddrLine2": "P.O. Box",
    "shipAddrLine3": "8040 Zürich",
    "shipAddrPostCode": "8000",
    "shipAddrState": "CH"
  },
  "relaxRegionalValidationRules": false,
  "purchase": {
    "purchaseInstalData": 3,
    "merchantRiskIndicator": {
      "shipIndicator": "01",
      "deliveryTimeframe": "02",
      "deliveryEmailAddress": "netcetera@example.com",
      "reorderItemsInd": "01",
      "preOrderPurchaseInd": "01",
      "preOrderDate": "20181220",
      "giftCardAmount": 2,
      "giftCardCurr": "111",
      "giftCardCount": 1
    },
    "purchaseAmount": 1,
    "purchaseCurrency": "111",
    "purchaseExponent": 1,
    "purchaseDate": "20181220173550",
    "recurringExpiry": "20181220",
    "recurringFrequency": 1,
    "transType": "01"
  },
  "acquirer": {
    "acquirerBin": "acq-bin",
    "acquirerMerchantId": "acq-mer-id"
  },
  "merchant": {
    "mcc": "code",
    "merchantCountryCode": "333",
    "merchantName": "name",
    "threeDSRequestorId": "ds-assigned-requestor-id",
    "threeDSRequestorName": "ds-assigned-requestor-name"
  },
  "broadInfo": {"message": "TLS 1.x will be turned off starting summer 2019 "},
  "deviceRenderOptions": {
    "sdkInterface": "01",
    "sdkUiType": [
      "02"
    ]
  },
  "messageExtension": [
    {
      "name": "name",
      "id": "id",
      "criticalityIndicator": false,
      "data": {
        "valueOne":"value1",
        "valueTwo":"value2"
      }
    }
  ],
  "sdkInformation": {
    "sdkAppID": "90d9b629-e639-4188-82d8-09e5c508bc86",
    "sdkEncData": "enc-data",
    "sdkEphemPubKey": {
      "kty": "EC",
      "crv": "P-256",
      "x": "test",
      "y": "test"
    },
    "sdkMaxTimeout": 5,
    "sdkReferenceNumber": "ref-num",
    "sdkTransID": "7f101033-df46-4f5c-9e96-9575c924e1e7"
  }
}
Authentication Request for 3RI
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
{
  "deviceChannel": "03",
  "messageCategory": "01",
  "threeDSCompInd": "U",
  "threeDSRequestor": {
    "threeDSRequestorAuthenticationInd": "02",
    "threeDSRequestorAuthenticationInfo": {
      "threeDSReqAuthMethod": "04",
      "threeDSReqAuthTimestamp": "201812201735",
      "threeDSReqAuthData": "threeDSReqAuthData"
    },
    "threeDSRequestorChallengeInd": "03",
    "threeDSRequestorPriorAuthenticationInfo": {
      "threeDSReqPriorRef": "VOGXpZvTlCmBUyPnnZfmsGDKqxRsRwPovkAE",
      "threeDSReqPriorAuthMethod": "01",
      "threeDSReqPriorAuthTimestamp": "201812201735",
      "threeDSReqPriorAuthData": "threeDSReqPriorAuthData"
    }
  },
  "cardholderAccount": {
    "acctType": "02",
    "cardExpiryDate": "1812",
    "acctInfo": {
      "chAccAgeInd": "04",
      "chAccDate": "20181220",
      "chAccChangeInd": "03",
      "chAccChange": "20181220",
      "chAccPwChangeInd": "04",
      "chAccPwChange": "20181220",
      "shipAddressUsageInd": "03",
      "shipAddressUsage": "20181220",
      "txnActivityDay": 1,
      "txnActivityYear": 1,
      "provisionAttemptsDay": 1,
      "nbPurchaseAccount": 1,
      "suspiciousAccActivity": "01",
      "shipNameIndicator": "01",
      "paymentAccInd": "03",
      "paymentAccAge": "20181220"
    },
    "schemeId": "Visa",
    "acctNumber": "4000001000000005",
    "payTokenInd": true
  },
  "cardholder": {
    "addrMatch": "N",
    "billAddrCity": "Zurich",
    "billAddrCountry": "756",
    "billAddrLine1": "Zypressenstrasse 71",
    "billAddrLine2": "P.O. Box",
    "billAddrLine3": "8040 Zürich",
    "billAddrPostCode": "8000",
    "billAddrState": "CH",
    "email": "netcetera@example.com",
    "homePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "mobilePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "workPhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "cardholderName": "John Doe",
    "shipAddrCity": "Zurich",
    "shipAddrCountry": "756",
    "shipAddrLine1": "Zypressenstrasse 98",
    "shipAddrLine2": "P.O. Box",
    "shipAddrLine3": "8040 Zürich",
    "shipAddrPostCode": "8000",
    "shipAddrState": "CH"
  },
  "relaxRegionalValidationRules": false,
  "purchase": { },
  "acquirer": {
    "acquirerBin": "acq-bin",
    "acquirerMerchantId": "acq-mer-id"
  },
  "merchant": {
    "mcc": "code",
    "merchantCountryCode": "333",
    "merchantName": "name"
  },
  "broadInfo": {"message": "TLS 1.x will be turned off starting summer 2019 "},
  "messageExtension": [
    {
      "name": "name",
      "id": "id",
      "criticalityIndicator": false,
      "data": {
        "valueOne":"value1",
        "valueTwo":"value2"
      }
    }
  ],
  "threeRIInd": "02"
}
Authentication Request indicating SCA exemption

The EMV 3DS 2.2 specifications are including a set of features to support the PSD2 Regulatory Technical Standards (RTS) on Strong Customer authentication (SCA) through the 3DS Requestor Challenge Indicator. This data is not available in the current 3DS 2.1 specifications. As the timeline for rollout of EMV 3DS 2.2 is not yet decided and there is an urgent need to provide a platform allowing compliance with the PSD2 effective date of 14 September 2019, Mastercard has defined a new Mastercard Message Extension to the current EMV 3DS 2.1 specifications that will support the EMV 3DS 2.2 features listed previously.

The following table includes a list of the new merchant data elements in EMV 3DS version 2.1 (Merchant Data) that can be used in AReq:

Extension Field Name Description Accepted values Validation
SCA Exemptions This will allow the same 3DS requestor challenge indicator values defined in v2.2 for PSD2 SCA exemptions; this field is used when an acquirer exemption or Merchant Initiated Transaction (MIT) applies or when SCA delegation was used (merchant participates in Authentication Express) 05 (No Challenge Requested, transactional risk analysis is already performed) 06 (No Challenge Requested, Data share only) 07 (No Challenge Requested, SCA is already performed) Optional. Numeric, must have length of 2.
Merchant Fraud Rate Merchant fraud rate in the EEA (all EEA card fraud divided by all EEA card volumes) calculated as per PSD2 RTS. Mastercard will not calculate or validate the merchant fraud score. 1 (fraud rate less than or equal to 1 basis point [bp], which is 0.01%) 2 (fraud rate between 1 bp + - and 6bps) 3 (fraud rate between 6 bps + - and 13 bps) 4 (fraud rate between 13 bps + - and 25 bps) 5 (fraud rate greater than 25 bps) Optional. Numeric, maximum length of 2.
Acquirer Country Code The country code of the Acquirer. Any ISO 3166-1 numeric country code. Optional. Numeric, must have length of 3.

Example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
  .
  .
  .
 
  "messageExtension": [
    {
      "name": "Merchant Data",
      "id": "<RID>-merchantData",
      "criticalityIndicator": false,
      "data": {
        "<RID>-merchantData": {
          "scaExemptions": "05",
          "merchantFraudRate": "1",
          "acquirerCountryCode": "050"
        }
      }
    }
  ]
}

The message extension should be sent as part of the authentication request. The Registered Application Provider Identifier (RID) is unique to a Payment System.

Authentication Response Model

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
public class ThreeDSServerAuthenticationResponse {
 
  /**
   * Universally unique transaction identifier assigned by the 3DS Server to identify a single transaction. It has
   * the same value as the corresponding received authentication request. This value has 36 characters in a format
   * defined in IETF RFC 4122.
   */
  private String threeDSServerTransID;
  /**
   * Fully qualified URL of the ACS in case the authentication response message indicates that further
   * Cardholder interaction is required to complete the authentication.
   */
  private URL acsURL;
  /**
   * Indicates whether a transaction qualifies as an authenticated transaction. The accepted values are:
   *
   *  Y -> Authentication / Account verification successful
   *  N -> Not authenticated / Account not verified; Transaction denied
   *  U -> Authentication / Account verification could not be performed; technical or other problem
   *  C -> In order to complete the authentication, a challenge is required
   *  R -> Authentication / Account verification Rejected. Issuer is rejecting authentication/verification
   *       and request that authorization not be attempted
   *  A -> Attempts processing performed; Not authenticated / verified, but a proof of attempt
   *       authentication / verification is provided
   */
  private TransactionStatusEnum transStatus;
  /**
   * Payment System-specific value provided as part of the ACS registration for each supported DS. Authentication Value
   * may be used to provide proof of authentication.
   */
  private String authenticationValue;
  /**
   * Payment System-specific value provided by the ACS to indicate the results of the attempt to authenticate the
   * Cardholder.
   */
  private String eci;
  /**
   * Indication of whether a challenge is required for the transaction to be authorised due to local/regional
   * mandates or other variable. The accepted values are:
   *
   *  Y -> Challenge is mandated
   *  N -> Challenge is not mandated
   */
  private ACSChallengeMandatedIndicatorEnum acsChallengeMandated;
  /**
   * The sent Authentication Request to the Directory Server.
   */
  private AuthenticationRequest authenticationRequest;
  /**
   * The received Authentication Response from the Directory Server.
   */
  private AuthenticationResponse authenticationResponse;
  /**
   * Date and time of the purchase, expressed in UTC. The field is limited to 14 characters, formatted as
   * YYYYMMDDHHMMSS.
   */
  @JsonFormat(pattern = "yyyyMMddHHmmss")
  private LocalDateTime purchaseDate;
  /**
   * Object containing error details if any errors occurred.
   */
  private ErrorDetails errorDetails;
  /**
   * Challenge Request object in case the authentication response message indicates that further Cardholder
   * interaction is required to complete the authentication.
   */
  private ChallengeRequest challengeRequest;
  /**
   * Base64-encoded Challenge Request object in case the authentication response message indicates that further
   * Cardholder interaction is required to complete the authentication.
   */
  private String base64EncodedChallengeRequest;
}

The 3DS Server prepares an initial challengeRequest (CReq) and includes it in the response only if the device channel is Browser and the the authentication response message indicates that further Cardholder interaction is required to complete the authentication. The 3DS Server also generates a base64-encoded CReq of the same initial challengeRequest.

The 3DS Server fills out the following fields of the CReq:

  • threeDSServerTransID
  • acsTransID
  • challengeWindowSize
  • messageVersion
  • messageType

Authentication Response JSON Samples

Authentication Response with Challenge Requested
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
{
  "threeDSServerTransID": "8a880dc0-d2d2-4067-bcb1-b08d1690b26e",
  "transStatus": "C",
  "acsChallengeMandated": "Y",
  "authenticationRequest": {
    "threeDSCompInd": "Y",
    "threeDSRequestorID": "az0123456789",
    "threeDSRequestorName": "Example Requestor name",
    "threeDSRequestorURL": "https://threedsrequestor.adomainname.net",
    "acquirerBIN": "868491",
    "acquirerMerchantID": "mGm6AJZ1YotkJJmOk0fx",
    "addrMatch": "N",
    "cardExpiryDate": "1910",
    "acctNumber": "8944988785642183",
    "billAddrCity": "Zurich",
    "billAddrCountry": "756",
    "billAddrLine1": "Zypressenstrasse 71",
    "billAddrLine2": "P.O. Box",
    "billAddrLine3": "8040 Zürich",
    "billAddrPostCode": "8000",
    "billAddrState": "CH",
    "email": "netcetera@example.com",
    "homePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "mobilePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "cardholderName": "John Doe",
    "shipAddrCity": "Zurich",
    "shipAddrCountry": "756",
    "shipAddrLine1": "Zypressenstrasse 98",
    "shipAddrLine2": "P.O. Box",
    "shipAddrLine3": "8040 Zürich",
    "shipAddrPostCode": "8000",
    "shipAddrState": "CH",
    "workPhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "deviceChannel": "02",
    "browserAcceptHeader": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "browserIP": "192.168.1.11",
    "browserJavaEnabled": true,
    "browserLanguage": "en",
    "browserColorDepth": "48",
    "browserScreenHeight": "400",
    "browserScreenWidth": "600",
    "browserTZ": "0",
    "browserUserAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0",
    "mcc": "5411",
    "merchantCountryCode": "840",
    "merchantName": "UL TS BV",
    "messageCategory": "01",
    "messageType": "AReq",
    "messageVersion": "2.1.0",
    "purchaseAmount": "101",
    "purchaseCurrency": "978",
    "purchaseExponent": "2",
    "purchaseDate": "20170316141312",
    "transType": "01",
    "threeDSServerURL": " https://threedsserver.adomainname.net ",
    "threeDSServerTransID": "8a880dc0-d2d2-4067-bcb1-b08d1690b26e",
    "threeDSServerRefNumber": "3DS_LOA_SER_201_12345",
    "threeDSRequestorAuthenticationInd": "03",
    "threeDSRequestorAuthenticationInfo": {
      "threeDSReqAuthMethod": "02",
      "threeDSReqAuthTimestamp": "201711071307",
      "threeDSReqAuthData": "validlogin at UL TS BV"
    },
    "threeDSRequestorChallengeInd": "02",
    "threeDSRequestorPriorAuthenticationInfo": {
      "threeDSReqPriorRef": "d7c1ee99-9478-44a6-b1f2-391e29c6b340",
      "threeDSReqPriorAuthMethod": "02",
      "threeDSReqPriorAuthTimestamp": "201710282113",
      "threeDSReqPriorAuthData": "cKTYtrvvKU7gUoiqbbO7Po"
    },
    "threeDSServerOperatorID": "1jpeeLAWgGFgS1Ri9tX9",
    "acctType": "03",
    "acctInfo": {
      "chAccAgeInd": "03",
      "chAccDate": "20140328",
      "chAccChangeInd": "04",
      "chAccChange": "20160712",
      "chAccPwChangeInd": "02",
      "chAccPwChange": "20170328",
      "shipAddressUsageInd": "04",
      "shipAddressUsage": "20160714",
      "txnActivityDay": "1",
      "txnActivityYear": "21",
      "provisionAttemptsDay": "0",
      "nbPurchaseAccount": "11",
      "suspiciousAccActivity": "01",
      "shipNameIndicator": "02",
      "paymentAccInd": "04",
      "paymentAccAge": "20160917"
    },
    "acctID": "personal account",
    "dsReferenceNumber": "DS18693744953364703075",
    "dsTransID": "1jpe0dc0-i9t2-4067-bcb1-nmt866956sgd",
    "dsURL": "http://dsserver.domainname.com",
    "payTokenInd": true,
    "purchaseInstalData": "024",
    "merchantRiskIndicator": {
      "shipIndicator": "02",
      "deliveryTimeframe": "01",
      "deliveryEmailAddress": "deliver@email.com",
      "reorderItemsInd": "01",
      "preOrderPurchaseInd": "02",
      "preOrderDate": "20170519",
      "giftCardAmount": "337",
      "giftCardCurr": "840",
      "giftCardCount": "02"
    },
    "messageExtension": [
      {
        "name": "emvcomsgext",
        "id": "tc8Qtm465Ln1FX0nZprA",
        "criticalityIndicator": false,
        "data": "messageExtensionData"
      }
    ],
    "challengeMessageExtension": [
      {
        "name": "emvcomsgextInChallenge",
        "id": "tc8Qtm465Ln1FX0nZprA",
        "criticalityIndicator": false,
        "data": "messageExtensionDataInChallenge"
      }
    ],
    "recurringExpiry": "20180131",
    "recurringFrequency": "6",
    "broadInfo": {
      "message": "TLS 1.x will be turned off starting summer 2019"
    }
  },
  "authenticationResponse": {
    "threeDSServerTransID": "8a880dc0-d2d2-4067-bcb1-b08d1690b26e",
    "acsTransID": "d7c1ee99-9478-44a6-b1f2-391e29c6b340",
    "acsReferenceNumber": "3DS_LOA_ACS_201_13579",
    "acsOperatorID": "AcsOpId 4138359541",
    "dsReferenceNumber": "DS186937449533647030",
    "dsTransID": "f25084f0-5b16-4c0a-ae5d-b24808a95e4b",
    "sdkTransID": "b2385523-a66c-4907-ac3c-91848e8c0067",
    "transStatus": "C",
    "acsChallengeMandated": "Y",
    "messageType": "ARes",
    "messageVersion": "2.1.0"
  },
  "purchaseDate": "20170316141312",
  "challengeRequest": {
    "threeDSServerTransID": "8a880dc0-d2d2-4067-bcb1-b08d1690b26e",
    "acsTransID": "d7c1ee99-9478-44a6-b1f2-391e29c6b340",
    "messageType": "CReq",
    "messageVersion": "2.1.0",
    "challengeWindowSize": "01",
    "messageExtension": [
      {
        "name": "emvcomsgextInChallenge",
        "id": "tc8Qtm465Ln1FX0nZprA",
        "criticalityIndicator": false,
        "data": "messageExtensionDataInChallenge"
      }
    ]
  },
  "base64EncodedChallengeRequest": "ewogICAgInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjogIjhhODgwZGMwLWQyZDItNDA2Ny1iY2IxLWIwOGQxNjkwYjI2ZSIsCiAgICAiYWNzVHJhbnNJRCI6ICJkN2MxZWU5OS05NDc4LTQ0YTYtYjFmMi0zOTFlMjljNmIzNDAiLAogICAgIm1lc3NhZ2VUeXBlIjogIkNSZXEiLAogICAgIm1lc3NhZ2VWZXJzaW9uIjogIjIuMS4wIiwKICAgICJjaGFsbGVuZ2VXaW5kb3dTaXplIjogIjAxIiwKICAgICJtZXNzYWdlRXh0ZW5zaW9uIjogWwogICAgICB7CiAgICAgICAgIm5hbWUiOiAiZW12Y29tc2dleHRJbkNoYWxsZW5nZSIsCiAgICAgICAgImlkIjogInRjOFF0bTQ2NUxuMUZYMG5acHJBIiwKICAgICAgICAiY3JpdGljYWxpdHlJbmRpY2F0b3IiOiBmYWxzZSwKICAgICAgICAiZGF0YSI6ICJtZXNzYWdlRXh0ZW5zaW9uRGF0YUluQ2hhbGxlbmdlIgogICAgICB9CiAgICBdCiAgfQ=="
}
Authentication Response for Frictionless flow (with authentication value)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
{
  "threeDSServerTransID": "8a880dc0-d2d2-4067-bcb1-b08d1690b26e",
  "transStatus": "Y",
  "authenticationValue": "MTIzNDU2Nzg5MDA5ODc2NTQzMjE=",
  "eci": "05",
  "authenticationRequest": {
    "threeDSCompInd": "Y",
    "threeDSRequestorID": "az0123456789",
    "threeDSRequestorName": "Example Requestor name",
    "threeDSRequestorURL": "https://threedsrequestor.adomainname.net",
    "acquirerBIN": "868491",
    "acquirerMerchantID": "mGm6AJZ1YotkJJmOk0fx",
    "addrMatch": "N",
    "cardExpiryDate": "1910",
    "acctNumber": "8944988785642183",
    "billAddrCity": "Zurich",
    "billAddrCountry": "756",
    "billAddrLine1": "Zypressenstrasse 71",
    "billAddrLine2": "P.O. Box",
    "billAddrLine3": "8040 Zürich",
    "billAddrPostCode": "8000",
    "billAddrState": "CH",
    "email": "netcetera@example.com",
    "homePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "mobilePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "cardholderName": "John Doe",
    "shipAddrCity": "Zurich",
    "shipAddrCountry": "756",
    "shipAddrLine1": "Zypressenstrasse 98",
    "shipAddrLine2": "P.O. Box",
    "shipAddrLine3": "8040 Zürich",
    "shipAddrPostCode": "8000",
    "shipAddrState": "CH",
    "workPhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "deviceChannel": "02",
    "browserAcceptHeader": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "browserIP": "192.168.1.11",
    "browserJavaEnabled": true,
    "browserLanguage": "en",
    "browserColorDepth": "48",
    "browserScreenHeight": "400",
    "browserScreenWidth": "600",
    "browserTZ": "0",
    "browserUserAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0",
    "mcc": "5411",
    "merchantCountryCode": "840",
    "merchantName": "UL TS BV",
    "messageCategory": "01",
    "messageType": "AReq",
    "messageVersion": "2.1.0",
    "purchaseAmount": "101",
    "purchaseCurrency": "978",
    "purchaseExponent": "2",
    "purchaseDate": "20170316141312",
    "transType": "01",
    "threeDSServerURL": " https://threedsserver.adomainname.net ",
    "threeDSServerTransID": "8a880dc0-d2d2-4067-bcb1-b08d1690b26e",
    "threeDSServerRefNumber": "3DS_LOA_SER_201_12345",
    "threeDSRequestorAuthenticationInd": "03",
    "threeDSRequestorAuthenticationInfo": {
      "threeDSReqAuthMethod": "02",
      "threeDSReqAuthTimestamp": "201711071307",
      "threeDSReqAuthData": "validlogin at UL TS BV"
    },
    "threeDSRequestorChallengeInd": "02",
    "threeDSRequestorPriorAuthenticationInfo": {
      "threeDSReqPriorRef": "d7c1ee99-9478-44a6-b1f2-391e29c6b340",
      "threeDSReqPriorAuthMethod": "02",
      "threeDSReqPriorAuthTimestamp": "201710282113",
      "threeDSReqPriorAuthData": "cKTYtrvvKU7gUoiqbbO7Po"
    },
    "threeDSServerOperatorID": "1jpeeLAWgGFgS1Ri9tX9",
    "acctType": "03",
    "acctInfo": {
      "chAccAgeInd": "03",
      "chAccDate": "20140328",
      "chAccChangeInd": "04",
      "chAccChange": "20160712",
      "chAccPwChangeInd": "02",
      "chAccPwChange": "20170328",
      "shipAddressUsageInd": "04",
      "shipAddressUsage": "20160714",
      "txnActivityDay": "1",
      "txnActivityYear": "21",
      "provisionAttemptsDay": "0",
      "nbPurchaseAccount": "11",
      "suspiciousAccActivity": "01",
      "shipNameIndicator": "02",
      "paymentAccInd": "04",
      "paymentAccAge": "20160917"
    },
    "acctID": "personal account",
    "dsReferenceNumber": "DS18693744953364703075",
    "dsTransID": "1jpe0dc0-i9t2-4067-bcb1-nmt866956sgd",
    "dsURL": "http://dsserver.domainname.com",
    "payTokenInd": true,
    "purchaseInstalData": "024",
    "merchantRiskIndicator": {
      "shipIndicator": "02",
      "deliveryTimeframe": "01",
      "deliveryEmailAddress": "deliver@email.com",
      "reorderItemsInd": "01",
      "preOrderPurchaseInd": "02",
      "preOrderDate": "20170519",
      "giftCardAmount": "337",
      "giftCardCurr": "840",
      "giftCardCount": "02"
    },
    "messageExtension": [
      {
        "name": "emvcomsgext",
        "id": "tc8Qtm465Ln1FX0nZprA",
        "criticalityIndicator": false,
        "data": "messageExtensionData"
      }
    ],
    "recurringExpiry": "20180131",
    "recurringFrequency": "6",
    "broadInfo": {
      "message": "TLS 1.x will be turned off starting summer 2019"
    }
  },
  "authenticationResponse": {
    "threeDSServerTransID":"8a880dc0-d2d2-4067-bcb1-b08d1690b26e",
    "dsReferenceNumber":"DS186937449533647030",
    "dsTransID":"f25084f0-5b16-4c0a-ae5d-b24808a95e4b",
    "messageVersion":"2.1.0",
    "sdkTransID":"b2385523-a66c-4907-ac3c-91848e8c0067",
    "messageType":"ARes",
    "transStatus":"Y",
    "acsChallengeMandated": "N",
    "acsOperatorID":"AcsOpId 4138359541",
    "acsReferenceNumber":"3DS_LOA_ACS_201_13579",
    "acsTransID":"d7c1ee99-9478-44a6-b1f2-391e29c6b340",
    "authenticationValue":"MTIzNDU2Nzg5MDA5ODc2NTQzMjE=",
    "eci":"05"
  },
  "purchaseDate": "20170316141312"
}
Authentication Response with Error (error while validating ARes received from DirectoryServer)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
{
  "threeDSServerTransID": "8a880dc0-d2d2-4067-bcb1-b08d1690b26e",
  "authenticationRequest": {
    "threeDSCompInd": "Y",
    "threeDSRequestorID": "az0123456789",
    "threeDSRequestorName": "Example Requestor name",
    "threeDSRequestorURL": "https://threedsrequestor.adomainname.net",
    "acquirerBIN": "868491",
    "acquirerMerchantID": "mGm6AJZ1YotkJJmOk0fx",
    "addrMatch": "N",
    "cardExpiryDate": "1910",
    "acctNumber": "8944988785642183",
    "billAddrCity": "Zurich",
    "billAddrCountry": "756",
    "billAddrLine1": "Zypressenstrasse 71",
    "billAddrLine2": "P.O. Box",
    "billAddrLine3": "8040 Zürich",
    "billAddrPostCode": "8000",
    "billAddrState": "CH",
    "email": "netcetera@example.com",
    "homePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "mobilePhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "cardholderName": "John Doe",
    "shipAddrCity": "Zurich",
    "shipAddrCountry": "756",
    "shipAddrLine1": "Zypressenstrasse 98",
    "shipAddrLine2": "P.O. Box",
    "shipAddrLine3": "8040 Zürich",
    "shipAddrPostCode": "8000",
    "shipAddrState": "CH",
    "workPhone": {
      "cc": "1",
      "subscriber": "123"
    },
    "deviceChannel": "02",
    "browserAcceptHeader": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "browserIP": "192.168.1.11",
    "browserJavaEnabled": true,
    "browserLanguage": "en",
    "browserColorDepth": "48",
    "browserScreenHeight": "400",
    "browserScreenWidth": "600",
    "browserTZ": "0",
    "browserUserAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0",
    "mcc": "5411",
    "merchantCountryCode": "840",
    "merchantName": "UL TS BV",
    "messageCategory": "01",
    "messageType": "AReq",
    "messageVersion": "2.1.0",
    "purchaseAmount": "101",
    "purchaseCurrency": "978",
    "purchaseExponent": "2",
    "purchaseDate": "20170316141312",
    "transType": "01",
    "threeDSServerURL": " https://threedsserver.adomainname.net ",
    "threeDSServerTransID": "8a880dc0-d2d2-4067-bcb1-b08d1690b26e",
    "threeDSServerRefNumber": "3DS_LOA_SER_201_12345",
    "threeDSRequestorAuthenticationInd": "03",
    "threeDSRequestorAuthenticationInfo": {
      "threeDSReqAuthMethod": "02",
      "threeDSReqAuthTimestamp": "201711071307",
      "threeDSReqAuthData": "validlogin at UL TS BV"
    },
    "threeDSRequestorChallengeInd": "02",
    "threeDSRequestorPriorAuthenticationInfo": {
      "threeDSReqPriorRef": "d7c1ee99-9478-44a6-b1f2-391e29c6b340",
      "threeDSReqPriorAuthMethod": "02",
      "threeDSReqPriorAuthTimestamp": "201710282113",
      "threeDSReqPriorAuthData": "cKTYtrvvKU7gUoiqbbO7Po"
    },
    "threeDSServerOperatorID": "1jpeeLAWgGFgS1Ri9tX9",
    "acctType": "03",
    "acctInfo": {
      "chAccAgeInd": "03",
      "chAccDate": "20140328",
      "chAccChangeInd": "04",
      "chAccChange": "20160712",
      "chAccPwChangeInd": "02",
      "chAccPwChange": "20170328",
      "shipAddressUsageInd": "04",
      "shipAddressUsage": "20160714",
      "txnActivityDay": "1",
      "txnActivityYear": "21",
      "provisionAttemptsDay": "0",
      "nbPurchaseAccount": "11",
      "suspiciousAccActivity": "01",
      "shipNameIndicator": "02",
      "paymentAccInd": "04",
      "paymentAccAge": "20160917"
    },
    "acctID": "personal account",
    "dsReferenceNumber": "DS18693744953364703075",
    "dsTransID": "1jpe0dc0-i9t2-4067-bcb1-nmt866956sgd",
    "dsURL": "http://dsserver.domainname.com",
    "payTokenInd": true,
    "purchaseInstalData": "024",
    "merchantRiskIndicator": {
      "shipIndicator": "02",
      "deliveryTimeframe": "01",
      "deliveryEmailAddress": "deliver@email.com",
      "reorderItemsInd": "01",
      "preOrderPurchaseInd": "02",
      "preOrderDate": "20170519",
      "giftCardAmount": "337",
      "giftCardCurr": "840",
      "giftCardCount": "02"
    },
    "messageExtension": [
      {
        "name": "emvcomsgext",
        "id": "tc8Qtm465Ln1FX0nZprA",
        "criticalityIndicator": false,
        "data": "messageExtensionData"
      }
    ],
    "recurringExpiry": "20180131",
    "recurringFrequency": "6",
    "broadInfo": {
      "message": "TLS 1.x will be turned off starting summer 2019"
    }
  },
  "errorDetails": {
    "threeDSServerTransID": "8a880dc0-d2d2-4067-bcb1-b08d1690b26",
    "acsTransID": "d7c1ee99-9478-44a6-b1f2-391e29c6b340",
    "dsTransID": null,
    "sdkTransID": "b2385523-a66c-4907-ac3c-91848e8c0067",
    "errorCode": "201",
    "errorComponent": "S",
    "errorDescription": "Validation of 3DS Authentication Response failed. A message element required is missing from the message.",
    "errorDetail": "dsTransID"
  }
}
2.2.0 Authentication Response indicating merchant whitelisted
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
{
  "threeDSServerTransID": "fa57a1a5-30e0-4bca-a1e2-2f66706b8814",
  "transStatus": "Y",
  "authenticationValue": "MTIzNDU2Nzg5MDA5ODc2NTQzMjE=",
  "eci": "02",
  "authenticationRequest": {
    "messageType": "AReq",
    "threeDSCompInd": "U",
    "threeDSRequestorID": "RequestorID",
    "threeDSRequestorName": "RequestorName",
    "threeDSRequestorAuthenticationInd": "01",
    "threeDSRequestorURL": "http://localhost:8080/shop",
    "threeDSServerRefNumber": "3DS_LOA_SER_NEAG_020200_00256",
    "threeDSServerOperatorID": "3DSOperatorID",
    "threeDSServerTransID": "fa57a1a5-30e0-4bca-a1e2-2f66706b8814",
    "acquirerBIN": "12345",
    "acquirerMerchantID": "id-for-merId",
    "addrMatch": "Y",
    "browserAcceptHeader": "text/html,application/xhtml+xml,application/xml;",
    "browserJavaEnabled": true,
    "browserLanguage": "en",
    "browserColorDepth": "48",
    "browserScreenHeight": "400",
    "browserScreenWidth": "600",
    "browserTZ": "0",
    "browserUserAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0",
    "acctNumber": "6000009000000002",
    "billAddrCity": "Bill City Name",
    "billAddrCountry": "840",
    "billAddrLine1": "Bill Addr line 1",
    "billAddrLine2": "Bill Addr line 2",
    "billAddrLine3": "Bill Addr line 3",
    "billAddrPostCode": "12345",
    "billAddrState": "CO",
    "email": "some@email.com",
    "homePhone": {
      "cc": "123",
      "subscriber": "123456789"
    },
    "cardholderName": "Cardholder Name",
    "deviceChannel": "02",
    "deviceRenderOptions": {
      "sdkInterface": "03",
      "sdkUiType": [
        "01",
        "02",
        "03",
        "04",
        "05"
      ]
    },
    "mcc": "1111",
    "merchantCountryCode": "756",
    "merchantName": "Merchant Demo",
    "messageCategory": "01",
    "messageVersion": "2.2.0",
    "purchaseAmount": "10000",
    "purchaseExponent": "2",
    "purchaseCurrency": "756",
    "purchaseDate": "20180701101010",
    "sdkAppID": "123e4567-e89b-12d3-a456-426655440000",
    "sdkEphemPubKey": {
      "kty": "EC",
      "d": "iyn--IbkBeNoPu8cN245L6pOQWt2lTH8V0Ds92jQmWA",
      "crv": "P-256",
      "x": "C1PL42i6kmNkM61aupEAgLJ4gF1ZRzcV7lqo1TG0mL4",
      "y": "cNToWLSdcFQKG--PGVEUQrIHP8w6TcRyj0pyFx4-ZMc"
    },
    "sdkReferenceNumber": "sdk-test-ref-nr",
    "sdkMaxTimeout": "10",
    "notificationURL": "http://www.3ds.com/notification",
    "sdkEncData": "test",
    "browserJavascriptEnabled": true
  },
  "authenticationResponse": {
    "messageType": "ARes",
    "threeDSServerTransID": "fa57a1a5-30e0-4bca-a1e2-2f66706b8814",
    "acsTransID": "d590a450-6d6c-4eb4-a8fd-bb2bd64e2c77",
    "acsReferenceNumber": "3DS_LOA_ACS_201_13579",
    "acsOperatorID": "AcsOpId 4138359541",
    "authenticationValue": "MTIzNDU2Nzg5MDA5ODc2NTQzMjE=",
    "dsReferenceNumber": "DS186937449533647030",
    "dsTransID": "8aa61323-af5d-432a-92ea-1da215c68834",
    "eci": "02",
    "messageVersion": "2.2.0",
    "transStatus": "Y",
    "broadInfo": "broadInfo",
    "whiteListStatus": "Y",
    "whiteListStatusSource": "01"
  },
  "purchaseDate": "20200701101010"
}
2.2.0 Authentication Response indicating decoupled challenge
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
{
  "threeDSServerTransID": "fa57a1a5-30e0-4bca-a1e2-2f66706b8814",
  "acsURL": "http://acs.com/challenge",
  "transStatus": "D",
  "acsChallengeMandated": "Y",
  "authenticationRequest": {
    "messageType": "AReq",
    "threeDSCompInd": "U",
    "threeDSRequestorID": "RequestorID",
    "threeDSRequestorName": "RequestorName",
    "threeDSRequestorAuthenticationInd": "01",
    "threeDSRequestorURL": "http://localhost:8080/shop",
    "threeDSServerRefNumber": "3DS_LOA_SER_NEAG_020200_00256",
    "threeDSServerOperatorID": "3DSOperatorID",
    "threeDSServerTransID": "fa57a1a5-30e0-4bca-a1e2-2f66706b8814",
    "acquirerBIN": "12345",
    "acquirerMerchantID": "id-for-merId",
    "addrMatch": "Y",
    "browserAcceptHeader": "text/html,application/xhtml+xml,application/xml;",
    "browserJavaEnabled": true,
    "browserLanguage": "en",
    "browserColorDepth": "48",
    "browserScreenHeight": "400",
    "browserScreenWidth": "600",
    "browserTZ": "0",
    "browserUserAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0",
    "acctNumber": "6000009000000001",
    "billAddrCity": "Bill City Name",
    "billAddrCountry": "840",
    "billAddrLine1": "Bill Addr line 1",
    "billAddrLine2": "Bill Addr line 2",
    "billAddrLine3": "Bill Addr line 3",
    "billAddrPostCode": "12345",
    "billAddrState": "CO",
    "email": "some@email.com",
    "homePhone": {
      "cc": "123",
      "subscriber": "123456789"
    },
    "cardholderName": "Cardholder Name",
    "deviceChannel": "02",
    "mcc": "1111",
    "merchantCountryCode": "756",
    "merchantName": "Merchant Demo",
    "messageCategory": "01",
    "messageVersion": "2.2.0",
    "purchaseAmount": "10000",
    "purchaseExponent": "2",
    "purchaseCurrency": "756",
    "purchaseDate": "20180701101010",
    "notificationURL": "http://3ds.com/notification",
    "sdkEncData": "test",
    "threeDSRequestorDecMaxTime": "00010",
    "threeDSRequestorDecReqInd": "Y",
    "browserJavascriptEnabled": true
  },
  "authenticationResponse": {
    "messageType": "ARes",
    "threeDSServerTransID": "fa57a1a5-30e0-4bca-a1e2-2f66706b8814",
    "acsTransID": "1c546154-714f-44d5-b466-4459f8d97ad0",
    "acsReferenceNumber": "3DS_LOA_ACS_201_13579",
    "acsOperatorID": "AcsOpId 4138359541",
    "authenticationType": "04",
    "cardholderInfo": "some cardholder information",
    "acsChallengeMandated": "Y",
    "dsReferenceNumber": "DS186937449533647030",
    "dsTransID": "8144225c-9e25-4064-b29b-478be80c68d2",
    "messageVersion": "2.2.0",
    "transStatus": "D",
    "transStatusReason": "15",
    "broadInfo": "broadInfo",
    "acsDecConInd": "Y"
  },
  "purchaseDate": "20200701101010"
}