3DS Messages

A reference of all fields exchanged across the core EMV 3DS messages. Each message plays a specific role in the authentication lifecycle, from the initial request sent by the merchant through to the final result reported back by the ACS.

Message Flow

AReq

3DS Server sends transaction through the DS and device data to the ACS requesting authentication.

ARes

ACS responds with the authentication result or indicates a challenge is required.

CReq / CRes

Cardholder device and ACS exchange challenge data directly.

RReq / RRes

ACS reports the final authentication outcome to the 3DS Server.


Common Fields

These fields are present across most or all messages and are used to route and correlate the transaction between components.

FieldDescription
messageTypeIdentifies the type of message (e.g. AReq, ARes, CReq).
messageVersionThe active EMV 3DS Protocol Version in use (e.g. 2.2.0).
messageExtensionAn optional array for carrying supplementary data not defined in the core specification.
threeDSServerTransIDUUID generated by the 3DS Server for this transaction.
dsTransIDUUID assigned by the Directory Server
acsTransIDUUID assigned by the ACS.
sdkTransIDUUID generated by the 3DS SDK on the cardholder's device. Present for APP channel transactions only.

AReq - Authentication Request

Merchant & Transaction

Sent by the merchant's 3DS Server through the DS to the ACS to initiate authentication. Contains rich data about the purchase, the device, and the cardholder to support a risk-based decision.

FieldDescription
threeDSRequestorIDThe 3DS Requestor's unique identifier assigned by the DS.
threeDSRequestorNameThe name of the 3DS Requestor.
threeDSRequestorURLThe web address of the 3DS Requestor or their customer care site.
threeDSRequestorAuthenticationIndIndicates the type of request (e.g. payment, recurring, instalment, add card).
threeDSRequestorChallengeIndIndicates whether the merchant prefers a Frictionless Flow, prefers a Challenge, or is mandated to Challenge.
threeRIIndFor 3RI transactions, explains the reason for the merchant-initiated request (e.g. recurring payment, split shipment).
acquirerBINThe BIN of the acquiring institution.
acquirerMerchantIDThe acquirer-assigned merchant identifier.
merchantNameThe merchant name as used in the authorisation message.
mccMCC describing the merchant's type of business.
purchaseAmountTransaction amount in minor units.
purchaseCurrencyPurchase currency in ISO 4217 numeric format.
purchaseExponentThe decimal exponent for the purchase amount.
purchaseDateDate and time of the purchase in UTC.
transTypeISO 8583-1 code identifying the transaction type (e.g. goods purchase, account funding).
messageCategoryIdentifies the category of the message. 01 = Payment Authentication (PA), 02 = Non-Payment Authentication (NPA).
merchantCountryCodeISO 3166-1 numeric three-digit country code of the merchant.
notificationURLFully qualified URL to which the CRes or error message is posted by the ACS at the end of the challenge.
recurringExpiryDate after which no further authorisations shall be performed for Recurring Payment transactions.
recurringFrequencyMinimum number of days between authorisations for Recurring Payment transactions.
purchaseInstalDataMaximum number of authorisations permitted for instalment payments. Present when threeDSRequestorAuthenticationInd indicates an instalment transaction.
threeDSRequestorDecReqIndIndicates whether the 3DS Requestor requests Decoupled Authentication. Values: Y, N.
threeDSRequestorDecMaxTimeMaximum time in minutes the 3DS Requestor will wait for the result of a Decoupled Authentication transaction.
Cardholder & Account
FieldDescription
acctNumberThe cardholder's PAN or network token.
acctIDAdditional account information optionally provided by the 3DS Requestor.
acctTypeIndicates the type of account. Values: 01 = Not applicable, 02 = Credit, 03 = Debit.
cardExpiryDateExpiry date of the card or token.
cardholderNameName of the cardholder.
emailCardholder's email address.
homePhoneCardholder's home phone number.
mobilePhoneCardholder's mobile phone number.
workPhoneCardholder's work phone number.
acctInfoA composite object containing behavioural account data such as account age, password change history, recent purchases, and indicators of suspicious activity.
addrMatchY/N indicator of whether the billing and shipping addresses are identical.
billAddrCityBilling address city.
billAddrCountryBilling address country.
billAddrLine1First line of the cardholder billing address.
billAddrLine2Second line of the cardholder billing address.
billAddrLine3Third line of the cardholder billing address.
billAddrPostCodePostal code of the cardholder billing address.
billAddrStateBilling address state or region.
shipAddrCityShipping address city.
shipAddrCountryShipping address country.
shipAddrLine1First line of the requested shipping address.
shipAddrLine2Second line of the requested shipping address.
shipAddrLine3Third line of the requested shipping address.
shipAddrPostCodePostal code of the requested shipping address.
shipAddrStateShipping address state or region.
merchantRiskIndicatorA composite object assessing transaction risk based on delivery timeframe, pre-order status, and gift card usage.
payTokenIndIndicates the transaction was de-tokenised prior to being received by the ACS. Present when the PAN is a network token.
whiteListStatusIndicates whether the 3DS Requestor is on the cardholder's Whitelist. Values: Y, N, E (Not eligible), P (Pending), R (Rejected), U (Unknown).
whiteListStatusSourceIdentifies which system set the whitelist status. Values: 01 = 3DS Server, 02 = DS, 03 = ACS.
Device & Browser
FieldDescription
deviceChannelIdentifies the origin of the transaction. 01 = APP, 02 = BRW, 03 = 3RI.
deviceInfoEncrypted device data gathered by the 3DS SDK. Present for APP channel transactions only.
deviceRenderOptionsTells the ACS which UI formats the cardholder's device supports (e.g. Native UI, HTML).
browserAcceptHeaderHTTP Accept header from the cardholder's browser.
browserIPIP address of the cardholder's browser.
browserLanguageLanguage of the cardholder's browser.
browserUserAgentUser agent string of the cardholder's browser.
browserScreenHeightBrowser screen height in pixels.
browserScreenWidthBrowser screen width in pixels.
browserJavaEnabledWhether Java is enabled in the cardholder's browser.
browserJavascriptEnabledWhether JavaScript is enabled in the cardholder's browser.
browserColorDepthColour depth of the browser screen in bits.
browserTZUTC offset of the browser's timezone in minutes.
sdkAppIDUnique identifier created when the merchant app was installed.
sdkEphemPubKeyCryptographic key used to establish a secure session with the ACS for 3DS SDK-based challenges.
sdkEncDataJWE-encrypted device data collected by the 3DS SDK and forwarded to the ACS for risk assessment. APP channel only.
sdkMaxTimeoutMaximum time in minutes allowed for all 3DS SDK exchanges. APP channel only.
sdkReferenceNumberIdentifies the 3DS SDK vendor and version, assigned by EMVCo upon approval. APP channel only.
threeDSCompIndIndicates whether the background 3DS Method successfully captured additional browser data before the AReq was sent. Browser channel only.

ARes - Authentication Response

Sent by the ACS back to the merchant in response to the AReq.

FieldDescription
transStatusThe authentication result. Y = Authenticated, N = Not Authenticated, C = Challenge Required, D = Decoupled Challenge Confirmed, A = Attempts Processing, R = Rejected, U = Unknown, I = Informational Only.
transStatusReasonReason code explaining the outcome when the status is N, R, or U.
eciECI value providing proof of the authentication result to the acquirer.
authenticationValueThe CAVV generated by the ACS as cryptographic proof of authentication.
authenticationTypeIndicates the type of challenge that will be used if a challenge is required (e.g. OTP, OOB).
acsChallengeMandatedIndicates whether local regulations (such as PSD2) require the issuer to challenge.
acsRenderingTypeTells the 3DS SDK what UI format the ACS will use for the challenge.
acsSignedContentA JWS object containing the ACS's ephemeral keys to establish encrypted challenge communication.
acsURLThe endpoint the 3DS SDK or browser must contact to begin the challenge.
cardholderInfoCustom text from the issuer to display to the cardholder (e.g. "Please call your bank at...").
acsDecConIndIndicates whether the ACS confirms utilisation of Decoupled Authentication. Values: Y, N.
acsOperatorIDDS-assigned identifier for the ACS.
acsReferenceNumberUnique reference assigned to the ACS by EMVCo upon testing and approval.
dsReferenceNumberUnique identifier assigned to the DS by EMVCo.
whiteListStatusCommunicates Whitelist status between the ACS, DS, and 3DS Requestor. Values: Y, N, E (Not eligible), P (Pending), R (Rejected), U (Unknown).
whiteListStatusSourceIdentifies which system set the whitelist status. Values: 01 = 3DS Server, 02 = DS, 03 = ACS.

CReq - Challenge Request

Sent directly from the cardholder's device to the ACS during a challenge.

FieldDescription
challengeDataEntryThe data entered by the cardholder in the Native UI input field (e.g. an OTP).
challengeHTMLDataEntryThe data entered by the cardholder if the challenge was presented using HTML.
challengeNoEntryIndicates the cardholder submitted the form without entering any data.
challengeCancelIndicates the cardholder cancelled the challenge.
challengeWindowSizeDimensions of the challenge window displayed to the browser user.
oobContinueIndicates the cardholder completed an OOB task (e.g. opened their banking app) and clicked Continue.
resendChallengeIndicates the cardholder requested a new OTP by clicking Resend.
whitelistingDataEntryThe cardholder's response (Y/N) to adding the merchant to their Whitelist.
sdkCounterStoAA security counter used to keep the encrypted 3DS SDK channel synchronised with the ACS.

CRes - Challenge Response

Sent from the ACS to the cardholder's device to drive the challenge UI.

FieldDescription
challengeCompletionIndY if the challenge is complete, N if further steps are required.
acsUiTypeThe UI template to render (e.g. Text, Single Select, Multi-Select, OOB).
challengeInfoHeaderThe main title displayed on the challenge screen.
challengeInfoTextInstructional text shown to the cardholder (e.g. "We sent a code to your phone ending in 1234").
challengeInfoLabelLabel text displayed alongside the input field (e.g. "Enter code here").
challengeInfoTextIndicatorControls whether a visual warning icon is shown alongside the challenge text.
challengeSelectInfoThe list of options presented when the UI type is Single or Multi-select.
expandInfoLabelLabel for a collapsible section containing additional instructions.
expandInfoTextContent of the collapsible additional instructions section.
whyInfoLabelLabel for a collapsible section explaining why the cardholder is being challenged.
whyInfoTextContent of the why-am-I-being-challenged section.
issuerImageURL of the issuer's logo to display on the challenge screen.
psImageURL of the payment scheme's logo to display on the challenge screen.
submitAuthenticationLabelText for the Submit button.
resendInformationLabelText for the Resend Code button.
oobContinueLabelText for the Continue button shown after an OOB step.
oobAppURLDeep link to open the issuer's banking app for OOB authentication.
oobAppLabelButton text for the link to open the banking app.
whitelistingInfoTextThe prompt asking the cardholder whether they want to add the merchant to their Whitelist.
acsHTMLRaw encoded HTML provided by the ACS when Native UI is not used. Rendered directly on the cardholder's device.
acsCounterAtoSSecurity counter for the ACS-to-3DS SDK encrypted channel. Counterpart to sdkCounterStoA in the CReq. APP channel only.
transStatusPresent when the challenge is complete. Y = Authenticated, N = Not Authenticated.

RReq - Results Request

Sent by the ACS to the 3DS Server (via the DS) once the challenge is complete, reporting the final outcome.

FieldDescription
transStatusFinal authentication status. Y = Authenticated, N = Not Authenticated, U = Unknown, R = Rejected.
transStatusReasonReason code if the challenge failed or was rejected.
authenticationValueThe CAVV generated as cryptographic proof of the completed authentication.
eciFinal ECI value.
interactionCounterThe number of times the cardholder attempted the challenge.
authenticationMethodIdentifies how the challenge was ultimately performed (e.g. SMS OTP, biometrics).
challengeCancelIndicates why the authentication was cancelled. Values: 01 = Cardholder selected Cancel, 03 = Timed out (decoupled), 04 = Timed out at ACS, 05 = First CReq not received, 06 = Transaction error, 07 = Unknown, 08 = Timed out at 3DS SDK.
messageCategoryIdentifies the category of the message. 01 = Payment Authentication, 02 = NPA.
acsRenderingTypeIdentifies the ACS UI template used during the challenge (e.g. Native UI, HTML UI).
whiteListStatusCommunicates Whitelist status at the conclusion of the challenge. Values: Y, N, E, P, R, U.
whiteListStatusSourceIdentifies which system set the whitelist status. Values: 01 = 3DS Server, 02 = DS, 03 = ACS.

RRes - Results Response

Sent by the 3DS Server back to the ACS to acknowledge receipt of the RReq.

FieldDescription
resultsStatusIndicates whether the RReq was received successfully, or provides a reason why the challenge result could not be processed.

Erro - Error Message

Generated by any component if something goes wrong during the processing of any 3DS message.

FieldDescription
errorCodeA numeric code classifying the specific problem (e.g. 201 for missing data, 302 for decryption failure).
errorComponentIdentifies which system raised the error. C = 3DS SDK, S = 3DS Server, D = DS A = ACS.
errorDescriptionHuman-readable summary of the issue.
errorDetailTechnical detail, such as the exact field name that was missing or malformed.
errorMessageTypeThe type of message (e.g. AReq, CReq) that triggered the error.

What’s Next