3DSSpecifications CoreFunctions
3DSSpecifications CoreFunctions
'6HFXUH
3URWRFRO6SHFLILFDWLRQ
&RUH)XQFWLRQV
Version 1.0.2
July 16, 2002
Preface
3-D Secure A full set of documentation has been developed for 3-D Secure™. The primary
Introduction sources for introductory and general information are:
and System
Overview 3-D Secure: Introduction, Visa Publication 70001-01
3-D Secure: System Overview, Visa Publication 70015-01
If you have not yet read those documents, you are encouraged to do so. The
documents are available through the “Vendors & Merchants” link on
http://corporate.visa.com.
Table of Contents
Preface v
Chapter 1: Document Overview 1
Introduction 1
References 3
Document Organization 5
Chapter 2: Entity Overview 7
Chapter 3: Technical Requirements 11
Transport Security Requirements 12
Certificate Requirements 15
Redundant Routing Requirements 16
HTTP Connections 17
Chapter 4: Setup and Cardholder Enrollment 19
Process Flow Diagram 20
Process Flow – Issuer Setup 21
Process Flow – Cardholder Enrollment 22
Chapter 5: Purchase Transaction 23
Purchase Transaction Architecture and Message Flows 24
Purchase Transaction Process Flow Description 26
Chapter 6: Message Descriptions 41
Message Handling 42
CRReq 46
CRRes 47
VEReq 49
VERes 51
PAReq 53
PARes 57
Invalid Request Values 60
Message Extensions 61
Error Message 63
Appendix A: 3-D Secure XML Message Format 65
XML-Signature Syntax and Processing 66
3-D Secure Messages 68
3-D Secure DTD 74
Appendix B: 3-D Secure Field Formats 77
Appendix C: Visa Directory Elements 89
Appendix D: Compression 91
Glossary 93
Revision Log 99
Table of Figures
Table of Tables
Intended This document is intended for the use of vendors and Members that are interested in
audience developing 3-D Secure products and supporting 3-D Secure implementations.
Overview of The major changes included in 3-D Secure version 1.0.2 are:
updates
• Support is provided for generating a proof of authentication attempt when
authentication is not available.
• The Account Identifier in the Verify Enrollment Response and Payer
Authentication Request must not be the PAN.
• The PAN value that is included in the PARes must be masked. Regions,
however, may waive this requirement and require that the full PAN be included.
• Adjusted DTD to show Serial Number as optional in CRRes; it is omitted
when Invalid Request Code is included.
For details, see the Revision Log on page 93.
Future The base 3-D Secure protocol has been designed for the current business and market
considera- environment. In the future, enhancements to this protocol may be defined in order to
tions properly support the requirements that arise from additional market and business
opportunities.
Possible future enhancements include adding signatures to PAReq and VEReq to
provide for more robust merchant authentication.
Errata From time to time, errata will be published for these specifications. You should
ensure that you have all of the relevant errata in addition to this document.
Document The following words are used often in this document and have specific meanings:
word usage
Must Describes a product or system capability that is required,
compelled, or mandatory.
Should Describes a product or system capability that is highly
recommended.
May Describes a product or system capability that is optional.
References
Introductory The following documents provide fundamental information about 3-D Secure and
information are available through the “Vendors & Merchants” link on http://corporate.visa.com.
You are encouraged to read them (in the following order) before reading this
document:
3-D Secure: Introduction, Visa Publication 70001-01
3-D Secure: System Overview, Visa Publication 70015-01
3-D Secure Every 3-D Secure component must comply with the requirements of the core
specifications protocol, described in this document:
3-D Secure: Protocol Specification – Core Functions, Visa Publication
70000-01 (licensed)
In addition, each 3-D Secure component must comply with the functional
requirements defined for that component:
3-D Secure: Functional Requirements – Access Control Server, Visa
Publication 70002-01 (licensed)
3-D Secure: Functional Requirements – Merchant Server Plug-in, Visa
Publication 70003-01 (licensed)
Any 3-D Secure component that supports mobile Internet devices must also comply
with the specifications for the supported extension:
3-D Secure: Protocol Specification – Extension for Mobile Internet
Devices, Visa Publication 70006-01 (licensed)
Throughout this documentation suite, those requirements collectively are referred to
as “the 3-D Secure specifications.”
Licensed Some 3-D Secure documents are available only to parties that have executed with
documents Visa a 3-D Secure Publication Suite Master License Agreement. Information
regarding these publications and the license agreement is available through the
“Vendors & Merchants” link on http://corporate.visa.com.
Compliance All software components that are developed as 3-D Secure solutions are required to
testing demonstrate compliance with Visa International’s 3-D Secure requirements.
This testing must be completed successfully and the component must receive
acknowledgement of compliance from Visa International before any claims of
3-D Secure compliance may be made. For details, see:
3-D Secure: Compliance Testing Facility – Policies & Procedures, Visa
Publication 70017-01
Other The following documents are referenced in this specification and/or provide useful
documents background information:
1) Certificate Infrastructure Group Brand Certificate Authority – Operating
Procedures, version 1.0, dated August 1999.
2) Certificate Infrastructure Group Brand Certificate Authority – Business Policies
and Procedures, version 1.0, dated August 1999.
3) Extensible Markup Language (XML) W3C Recommendation, version 1.0
(Second Edition), dated 6 October 2000, available at
http://www.w3.org/TR/2000/REC-xml-20001006.
4) Canonical XML, W3C Recommendation, version 1.0, dated 15 March 2001,
available at http://www.w3.org/TR/2001/REC-xml-c14n-20010315.
5) XML-Signature Syntax and Processing, W3C Proposed Recommendation, dated
20 August 2001, available at http://www.w3.org/TR/2001/PR-xmldsig-core-
20010820.
6) Namespaces in XML W3C Recommendation, dated 14 January 1999, available
at http://www.w3.org/TR/1999/REC-xml-names-19990114.
7) The TLS [Transport Layer Security] Protocol, Version 1.0, dated January 1999,
available at http://www.ietf.org/rfc/rfc2246.txt.
Document Organization
Organization This chapter describes the systems and functions necessary to implement
3-D Secure. Descriptions are divided according to domain:
Issuer domain Systems and functions of the Issuer and its
customers (cardholders).
Acquirer domain Systems and functions of the Acquirer and its
customers (merchants).
Interoperability Systems, functions, and messages that allow
domain Issuer domain systems and Acquirer domain
systems to interoperate worldwide.
Note that third parties may operate many of the systems in the Issuer and Acquirer
domains on behalf of Visa Members.
Issuer domain Cardholder The cardholder shops online, providing the account holder
name, card number, and expiration date, either directly or via
software such as a digital wallet, then indicates readiness to
finalize the transaction. In response to the Purchase
Authentication Page, the cardholder provides information
needed for authentication, such as a password.
Cardholder The cardholder browser acts as a conduit to transport messages
browser between the Merchant Server Plug-In (in the Acquirer domain)
and the Access Control Server (in the Issuer domain).
Additional Optional cardholder hardware and software may supplement
cardholder the abilities of the browser. For example, chip card
components implementations, will require additional cardholder software
and a card reader. Implementations that authenticate
cardholders using passwords should not require any additional
hardware or software.
Issuer A Visa Member financial institution that:
• enters into a contractual relationship with the cardholder for
issuance of one or more Visa cards
• determines the cardholder’s eligibility to participate in
3-D Secure
• defines card number ranges eligible to participate in
3-D Secure
• provides data about those card number ranges to the Visa
Directory
• performs enrollment of the cardholder for each payment
card account (via the Access Control Server, a separate
Enrollment Server, or manually)
Access The Access Control Server (ACS) has two functions:
Control Server • to verify whether a given card number is enrolled in
3-D Secure and whether authentication is available
• to authenticate the cardholder for a specific transaction.
Although these functions are described as belonging to a single
logical ACS, implementations may divide the processing by
function or by other characteristics such as card number range
among multiple physical servers.
Table 1: Issuer Domain Entities
Organization The technical requirements for 3-D Secure have been grouped into the following
categories:
Topic Page
Message The following messages, which are discussed in detail in subsequent chapters, are
names occasionally mentioned in this one:
CRReq CRRes Card Range Request and Response
VEReq VERes Verify Enrollment Request and Response
PAReq PARes Payer Authentication Request and
Response1
Error Error message
An additional message pair, used to populate the Authentication History, is
mentioned only briefly in this document, and documented in detail in 3-D Secure:
Functional Requirements – Access Control Server:
PATransReq PATransRes Payer Authentication Transaction message
and Response
Table 4: 3-D Secure Messages
1Implementations that support mobile Internet devices use the Condensed Payer Authentication Request
and Response messages, CPRQ and CPRS. There are significant differences in transporting and
processing these messages, as well as differences in the associated VEReq and VERes messages. For
details, see 3-D Secure: Protocol Specification – Extension for Mobile Internet Devices, Visa
Publication 70006-01.
Channel The channels listed in Table 5 must be encrypted using 128-bit SSL cipher suite(s).
encryption The SSL servers that are described below must be capable of initiating sessions using
128-bit (or stronger) cipher suites, with the exception of the merchant which should
be capable of initiating such sessions if possible. Channels 1 and 2 must support the
40-bit SSL cipher suites, due to the proliferation of US-exportable browsers on
cardholder systems.
For additional certificate requirements, see page 15 and the Functional Requirements
documents listed in “3-D Secure specifications” on page 3.
SSL cipher The security protocol used at the transport layer for 3-D Secure is the Transport
suites Layer Security Protocol (TLS) defined in the IETF RFC 2246. This protocol
standard is based on the Netscape Secure Sockets Layer V3 (SSL).
TLS sessions for 3-D Secure must use one of the cryptographic suites listed in Table
6. The cryptographic suite listed as required must be supported; the suite listed as
optional may also be supported.
Note: If a session cannot be established using TLS, 3-D Secure components may
attempt to establish a session using SSL version 3.
Servers accepting connections from the browser (ACS and MPI) may use
US-exportable cipher suites to establish connections with the browser, but should
still attempt to establish as strong a connection as possible.
TLS_RSA_WITH_3DES_EDE_CBC_SHA required
TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA optional
Table 6: Cryptographic Suites
Certificate Requirements
Table 7 lists the certificates that are necessary to implement 3-D Secure.
For more information regarding the Visa Certificate Authority Key Management
Policies, please see the Certificate Infrastructure Group documents described on
page 4.
Note: The Visa Root certificate is a self-signed certificate.
Applications must support multiple path routing to the Visa Directory and Access
Control Server.
Visa Directory When the Visa Directory converts a domain name into an IP
address, it must retrieve all registered addresses from the domain
name server and attempt a connection with the alternate
address(es) if a session cannot be established with the primary
address.
Merchant Server When the Merchant Server Plug-in establishes a session with the
Plug-in Visa Directory and converts a domain name into an IP address, it
must retrieve all registered addresses from the domain name
server and attempt a connection with the alternate address(es) if a
session cannot be established with the primary address.
Table 8: Redundant Routing Requirements
HTTP Connections
Persistent 3-D Secure components may use HTTP Keep Alive to establish persistent sessions
sessions with other 3-D Secure components.
Organization This chapter outlines a model implementation of the setup and cardholder enrollment
processes. Since the cardholder enrollment process is entirely within the Issuer
domain, alternate implementations are possible. The topics discussed within this
chapter are provided as background material for the reader.
The following topics are included:
Topic Page
1 Cardholder visits
Issuer enrollment site
Internet
Information stored for
later use in 3-D Secure
4 purchase transaction
authentication
Cardholder provides Enrollment
2 enrollment data, Server
establishes shared secret Acct
Holder
File
Issuer or
Third Party
Validation
Issuer setup 1) Issuer loads its Enrollment Server with data necessary for 3-D Secure
enrollment.
Table 9 lists data that may be needed.
2) Issuer provides to Visa the data needed to load the Visa Directory, as listed in
Table 27 on page 89.
3) Visa updates the Visa Directory.
a) PAN
b) Card Expiry Date
c) Cardholder Name
d) E-mail Address
e) Personal Assurance Message (PAM); created by the user, displayed within
the secret code prompt window to help reduce spoofing
f) Cardholder Password
g) Special question/hint
h) Special question/hint response
i) Issuer-specified authentication information
Organization This chapter describes the components that are invoked and the messages that are
exchanged in a 3-D Secure purchase transaction. The following topics are included:
Topic Page
Figure 2 illustrates and page 25 describes the steps in the purchase transaction flow.
6
Plug-in
10
7 9 2
8
5
12
3 Visa
Access Directory
Control 4
9 Authentication
History
Step 1 Shopper browses at merchant site, adds items to shopping cart, then
finalizes purchase. (Note: Merchant now has all necessary data,
including PAN.)
Step 2 Merchant Server Plug-in (MPI) sends PAN (and user device information,
if applicable) to Visa Directory.
Step 3 If PAN is in participating card range, Visa Directory queries appropriate
Access Control Server (ACS) to determine whether authentication (or
proof of authentication attempt) is available for the PAN.
Step 4 ACS responds to Visa Directory.
Step 5 Visa Directory forwards ACS response to MPI.
Step 6 MPI sends Payer Authentication Request2 to ACS via shopper’s device.
Step 7 ACS receives Payer Authentication Request.
Step 8 ACS authenticates shopper using processes applicable to PAN
(Password, Chip, PIN, etc.),. Alternatively, ACS may produce a proof of
authentication attempt.
ACS then formats the Payer Authentication Response message with
appropriate values and signs it.
Step 9 ACS returns Payer Authentication Response3 to MPI via shopper’s
device. ACS sends selected data to Authentication History.
Step 10 MPI receives Payer Authentication Response.
Step 11 MPI validates Payer Authentication Response signature (either by
performing the validation itself or by passing the message to a separate
Validation Server).
Step 12 Merchant proceeds with authorization exchange with its Acquirer.
2Payer Authentication Request message may be PAReq (for cardholders using PCs) or CPRQ (for
cardholders using mobile Internet devices – see 3-D Secure: Protocol Specification – Extension for
Mobile Internet Devices).
3 Payer Authentication Response message is PARes if PAReq was received, or CPRS if CPRQ was
received. (CPRS is created using values from the PARes.)
Merchant Step 0.
Server Plug-in
– load cache To eliminate the need to query the Visa Directory for each purchase transaction (in
Step 2), the merchant should have the ability to copy the contents of the Visa
Directory into a local cache. If this capability is used, the merchant can determine
immediately from the cache if the account is part of an enrolled range. If the
merchant implements this capability, the contents of the cache must expire and be
refreshed at least every 24 hours; the cache should be requested when the Merchant
Server Plug-In is loaded and at the same time each day that follows. The request time
must not be hard-coded. (This will help ensure that every Merchant Server Plug-In
(MPI) is not requesting the card range updates simultaneously.)
a) The MPI formats a Card Range Request (CRReq) message and sends it to the
Visa Directory.
If this is the first time the cache is being loaded (or if the cache has been flushed
and needs to be reloaded), the Serial Number element is not included in the
request, which will result in the Visa Directory Server returning the entire list of
participating card ranges.
Otherwise, the MPI should include the Serial Number from the most recently
processed CRRes, which will result in the Visa Directory Server only returning
the changes since the previous CRRes.
b) The Visa Directory validates the syntax of the CRReq and returns an Error if
validation fails.
The Visa Directory authenticates the merchant as described for VEReq in
Step 3a.
The Visa Directory formats a Card Range Response (CRRes) containing the
participating ranges and sends it to the MPI.
The Visa Directory includes a serial number in the response that defines the
current state of the card range database. (The specific value is only meaningful to
the Visa Directory Server that returns it.) The MPI should retain this value to be
included with the next day’s CRReq message.
c) The MPI validates the syntax of the CRRes and should send an Error to the
Visa Directory if validation fails.
The MPI updates its cache. The list must be processed in the order returned with
ranges being added or deleted as indicated by the Action element.
Note: If CRRes indicates an error condition regarding the Serial Number, the
MPI should clear its cache and submit the CRReq without a Serial Number.
Purchase Step 1.
transaction
initiation a) Cardholder visits a merchant Web site via a browser and selects items to
purchase.
b) The cardholder checks out and finalizes the purchase transaction. At this point,
the merchant has all the information required to process the purchase transaction,
including the PAN, expiration date, and address information.
The PAN must be provided to the merchant during the checkout process either
via cardholder keyboard entry or a wallet function. The expiration date must be
no earlier than the current month.
Merchant Step 2.
Server Plug-in
– query PAN This process occurs after the final “Buy” click confirmation from the cardholder
enrollment during the merchant checkout process. when The merchant software invokes the
Merchant Server Plug-in (MPI) to handle determine whether payment authentication
is available for the PAN.
a) If the Merchant Server Plug-in (MPI) has implemented caching (as discussed in
“Merchant Server Plug-in – load cache” on page 26), it checks its cache of
participating card number ranges.
If the PAN is not in one of the ranges:
• Continue with Step 12 on page 40.
b) The MPI formats a Verify Enrollment Request (VEReq) message.
c) The MPI determines whether it currently has a secure connection with the Visa
Directory.
If not, the MPI establishes an SSL connection with the Visa Directory. If the
Visa Directory configuration indicates that the merchant has been issued an SSL
client certificate, it will require the merchant to present it during the
establishment of the SSL session.
If connection cannot be established or if authentication fails, continue with
Step 12 on page 40.
d) The MPI posts the VEReq to the Visa Directory.
Access Step 4.
Control
Server – This process occurs immediately after the ACS receives the VEReq message via the
verify Visa Directory. The ACS validates the syntax of the VEReq and returns an Error if
enrollment validation fails.
Note: When it is not possible to authenticate a payment transaction, it is sometimes
possible to provide a proof of authentication attempt instead. Such processing
significantly changes the ACS processing logic, and is described in 3-D Secure:
Functional Requirements – Access Control Server, Visa publication 70002-01.
a) The ACS uses the Cardholder PAN from the VEReq message and queries the
Account Holder database to determine whether the cardholder is enrolled.
b) If the PAN was not found, the ACS formats a Verify Enrollment Response
(VERes) message including:
PAN Authentication Available set to “N”
no Account Identifier, ACS URL, Payment Protocols, or
Invalid Request
Continue with Step 4f below.
c) If Device Category is present:
• If the ACS cannot process transactions sent by the device category indicated
or if the ACS does not recognize the device category value, the ACS formats
a Verify Enrollment Response (VERes) message including:
PAN Authentication Available set to “U”
no Account Identifier, ACS URL, Payment Protocols, or
Invalid Request
Continue with Step 4f below.
d) If either Accept Headers or User Agent is present:
• If the ACS cannot process transactions sent by the cardholder device or the
user agent indicated by the values of those elements, the ACS formats a
Verify Enrollment Response (VERes) message including:
PAN Authentication Available set to “U”
no Account Identifier, ACS URL, Payment Protocols, or
Invalid Request
Continue with Step 4f below.
• If special processing is required, continue processing as described in the
appropriate document (for example, the mobile Internet extension described
in “3-D Secure Specifications” on page 3).
Merchant Step 6.
Server Plug-in
– send payer This process occurs immediately after the Merchant Server Plug-in (MPI) receives
authentication the VERes message from the Visa Directory. The MPI validates the syntax of the
request VERes and should send an Error to the Visa Directory if validation fails.
a) If the value of PAN Authentication Available is not equal to “Y”, continue
with Step 12 on page 40.
b) Examine the Payment Protocols and select the desired protocol to be used. If
that protocol is “ThreeDSecure”, continue processing; if it is a protocol other
than “ThreeDSecure”, execute the appropriate processing for the selected
protocol.
Note: The protocol selection is made based on the capabilities of the merchant
systems as well as region, Acquirer and merchant policies.
c) The MPI formats a Payer Authentication Request message (PAReq) including
the Account Identifier received in VERes.
d) The MPI deflates and Base64-encodes the PAReq as described in Appendix D
on page 91. The result is referred to as PaReq (note the case difference).
Access Step 7.
Control
Server – This process occurs immediately after the ACS receives the post including the
receive payer PAReq from the Merchant Server Plug-in. The following description applies to the
authentication case where cardholder authentication is performed using a password. Other
request methods, such as those that rely on applications on a chip card, may be used.
a) The ACS Base64-decodes and inflates the PaReq field reversing the process
described in Appendix D on page 91 to obtain the PAReq (note the case
difference). The ACS validates the syntax of the PAReq and returns an Error if
validation fails.
The ACS validates the PAReq data, ensuring that each of the following is true:
• The ACS is able to link the PAReq with a VERes in which the value of
PAN Authentication Available was “Y”.
The validation may take place through whatever mechanism the ACS
chooses, such as by comparing the Account Identifier supplied in the
two messages or by correlating the URL to which the message was
posted to a customized ACS URL supplied in VERes.
• The Merchant Country Code is a valid ISO 3166 Country Code.
• The Purchase Currency is a valid ISO 4217 numeric currency code.
• Purchase Amount equals Display Amount.
If any of these tests fails:
The ACS formats a Payer Authentication Response (PARes) message
with Transaction Status set to “N” and Invalid Request set to
appropriate values as outlined in Table 20 on page 60.
Continue with Step 8f on page 37.
Access Step 8.
Control
Server – a) If the cardholder is not enrolled, display a message such as “Processing…” and
authenticate continue with Step 8d.
shopper
The ACS responds to the post with an HTML page that displays a form to the
cardholder, including items such as those listed in Table 11. (The specific contents
of the form are the choice of the Issuer, subject to any applicable regional
requirements. See Figure 3 for an example.)
From From
Data Item
ACS PAReq
Member logo X
Visa Mark or Brand logo X
Merchant name X
Total amount and currency X
Merchant date (month, day and year) X
PAN (xxx out except for last four digits) X
Note: If the Account Identifier used by the Issuer ACS in
the message exchange is not the cardholder’s PAN, The ACS
needs to correlate the identifier received in the PAReq with
the actual PAN stored in the Account Holder database.
Personal Assurance Message (PAM) X
Prompt for Cardholder Password X
Table 11: Example Fields Displayed for Cardholder Authentication
Member Bank
Volcano Coffee
Total Charge $21.90 USD Sept. 21, 2001
Card Number: XXXXXXXXXXXX6069
Personal Assurance Message: EARNESTWINHOFFER
Visa Password
? Cancel Submit
Security Help
Access Step 9.
Control
Server – a) The ACS deflates and Base64-encodes the PARes formatted and signed in
return payer Step 8 (or an Error message if one has been generated) as described in
authentication Appendix D on page 91. The result is referred to as PaRes (note case
response difference).
b) The ACS constructs a form containing the following fields:
PaRes (note case) The result of the previous step.
MD The exact content of the MD field as posted to the
ACS, unchanged.
The ACS passes the signed PARes through the cardholder’s browser to the
merchant’s URL (TermUrl in the post from the MPI) by causing the cardholder
browser to POST the form to the MPI. In the process, the popup is closed and
control is returned to the merchant’s browser window. This is typically
accomplished by using JavaScript. (For further detail, see 3-D Secure:
Functional Requirements – Access Control Server.)
c) The ACS formats a Payer Authentication Transaction (PATransReq) message
and sends it to the Authentication History Server. See 3-D Secure: Functional
Requirements – Access Control Server for the requirements for the data and
for its transmission.
Electronic If authentication was not able to could not be performed, the merchant may proceed
commerce with a normal payment authorization using the available information from the
processing checkout process. In this case, the merchant payment system must process the
transaction as an unauthenticated electronic commerce transaction, which is out-of-
scope to this document.
Note: The Electronic Commerce Indicator must be set to a value corresponding to
the authentication results and the characteristics of the checkout process.
Alternate If the merchant is unable to process an authenticated transaction using the account
account selected by the cardholder during the checkout process, the merchant may either
abandon the transaction or give the customer the option of selecting an alternate
account.
If an alternate account is selected, the authentication process must be repeated
starting with Step 1 for that account.
Topic Page
CRReq 46
CRRes 47
VEReq 49
VERes 51
PAReq 53
PARes 57
Invalid Request Values 60
Message Extensions 61
Error Message 63
Format All listed messages are in XML format. For details, see Appendix A on page 65.
Inclusion In the tables that follow, the Inclusion column includes the values in the following
values table:
Meaning Sender requirements Recipient requirements
R Required must include the field must check for presence of the
field and validate its contents
C Conditional must include the field if must:
the conditions are • check for presence of the
satisfied field when the conditions
are satisfied, and
• validate its contents when
present
O Optional may include the field must validate the contents
when present
Message Handling
Versioning In order to support future versions of the protocol, implementations must use (or
and parsing configure) XML parsers that do not validate strictly. Specifically, unrecognized
fields in a message must be silently ignored (unless the field has a critical attribute
with a value of “true”).
Implementations built to this specification must support messages having the
following version numbers:
• 1.0.1
• 1.0.2
In addition, components must deal with higher version numbers (for example, a
component built to these specifications must deal with any version 1.1 message it
receives) as follows:
Visa Directory The Visa Directory always forwards a VERes from the ACS
without regard to the version number of the message.
If the Visa Directory receives a request with a higher version
number than it supports:
• If the message is VEReq, the Visa Directory ignores
unrecognized elements.
• otherwise If the message is anything other than VEReq, if the
message contains any unrecognized element that has an
attribute of critical with a value of “true”, the application must
return an Error message (using the highest supported message
version) with the value of ErrorCode set to 4 (critical element
not recognized).
• The request is processed and the response (if any) is generated
using the highest supported protocol version.
If a request is received with a lower version number, the response
must conform to the version of the protocol indicated in the
request.
Note: Typically, the Visa Directory Server will be updated to the
latest version of this protocol.
Versioning Access If the ACS receives a request with a higher version number than it
and Parsing, Control supports:
continued Server
• If the message contains any unrecognized element that has an
attribute of critical with a value of “true”, the application must
return an Error message (using the highest supported message
version) with the value of ErrorCode set to 4 (critical element
not recognized).
• Otherwise, the request is processed and a response is generated
using the highest supported protocol version.
If a request is received with a lower version number, the response
must conform to the version of the protocol indicated in the
request.
Merchant The MPI may send CRReq and VEReq messages that reflect the
Server Plug-in latest version of this protocol (or any older supported version).
However, if the Visa Directory Server returns an Error message
with the value of ErrorCode set to 6, the MPI must use the
version found in the Error message for any subsequent CRReq or
VEReq messages.
In addition, if a VERes contains a lower version number, the MPI
must generate the subsequent PAReq message (if any)
conforming to the version of the protocol indicated in the VERes.
The id Request and response pairs are matched using the id attribute of the Message
attribute: element. The id attribute of a request must be generated by the sender using an
Message algorithm that is likely to generate unique ids; the id attribute of the response must
element
be copied from the corresponding request. For example:
• the MPI assigns the id of the Message element that contains VEReq, and
• the id returned by the ACS in the Message element that contains VERes
matches the id assigned by the MPI.
The id The id attribute of the PARes element is generated by the ACS and used within the
attribute: signature element to refer to the PARes. (See the signature example on page 67.)
PARes
element
HTTP POST Requests are sent via a POST using HTTPS. Messages exchanged between
3-D Secure components are either XML documents or HTML pages with forms
including fields of 3-D Secure elements. In particular:
For VEReq, VERes, CRReq, and CRRes:
• The ‘Content-Length:’ header must be present (and set to the length of the
message body).
• The ‘Content-Type:’ header must be present and contain the value:
application/xml; charset=utf-8
Note: For POSTs through the cardholder browser (merchant to ACS and ACS to
merchant), the browser automatically assigns the Content-Type (typically, the value
will be application/x-www-form-urlencoded).
Responses are formatted in a similar manner (including the Content-Length and
Content-Type) and sent in the reply to the HTTP POST.
Handling XML All XML messages transferred within 3-D Secure must use the default and
data recommended encoding of “utf-8” as described in Extensible Markup Language
(XML) W3C Recommendation (see “References” on page 3 of this document).
Digital XML digital signatures for 3-D Secure messages must be generated using the
signatures algorithms defined in Appendix A on page 66.
Note: The minimum key length for the RSA key used to generate the signature is 768
bits; however, a key length of 1024 bits is recommended.
Partial system A 3-D Secure component may experience system failures that effectively render the
outages component inoperable. For example:
• The Visa Directory may not be able to access the database containing ACS URLs.
• An ACS may not be able to access the database containing the list of enrolled
cardholders.
• An ACS may not be able to access its hardware security module providing digital
signature processing.
When such failures are detected, the component should close its TCP/IP ports and
stop accepting requests until the failure has been corrected. An Error response with
an Error Code of 98 or 99 should be sent for any outstanding requests.
Message The DTD allows multiple requests or responses to be included in a single 3-D Secure
bundling message. However, this functionality has not been extensively tested with existing
implementations of 3-D Secure. 3-D Secure components must embed exactly one
3-D Secure message (CRReq, CRRes, VEReq, etc.) in a ThreeDSecure
element.
Error Codes Future versions of this specification (including future errata) may define additional
and Invalid error and invalid request codes. All 3-D Secure components must accept any numeric
Request value in the Error Code field and the Invalid Request Code field.
Codes
If the list of Error Code values in Table 23 or the list of Invalid Request Code
values in Table 20 does not contain an entry that matches a condition detected by a
3-D Secure component, the vendor should select a reasonably close match. Requests
for new values should be submitted using the 3-D Secure change control process.
Note that new values will not be defined to provide detailed information about the
cause of a failure that is unrelated to the message received.
Detailed Error Code values are intended to give the other party information needed
to find and fix a problem in its system. For example:
• If an MPI has sent an invalid value in one of the fields of a PAReq, it needs to
know which field is at fault.
• However, if the ACS is unable to authenticate a card number for reasons that
have nothing to do with the message received (for instance, because it is unable to
access the database of enrolled cardholders, or because the cardholder canceled
the transaction), the specific reason does not matter to the merchant.
Message All 3-D Secure messages must be well formed XML and the fields of the messages
validation must conform to the requirements described on the following pages. The recipient of
a 3-D Secure message must validate that the message conforms to these
requirements. If the message does not conform to the requirements, the recipient
sends an Error message with an Error Code that corresponds to the reason for the
failure.
Version A valid 3-D Secure version number will always be in the format
numbers major.minor[.update] (such as 1.0 or 1.0.1).
When the root element of a message is ThreeDSecure, any version number less
than 1.0.1 is an error. The 3-D Secure component must return an Error message with
an Error Code of 6.
CRReq
Purpose The CRReq (Card Range Request) is sent from the Merchant Server Plug-in (MPI)
to the Visa Directory to request the list of participating card ranges in order to update
the MPI’s internal cache information.
CRReq fields The following table lists the defined fields for a CRReq message:
CRRes
Purpose The CRRes (Card Range Response) is sent from the Visa Directory to the Merchant
Server Plug-in (MPI) in response to a CRReq messages. It is used to provide the
list of participating card ranges in order to update the MPI’s internal cache
information.
CRRes fields The following table lists the defined fields for a CRRes message:
VEReq
Purpose The VEReq (Verify Enrollment Request) is sent by the Merchant Server Plug-in
(MPI) to the Visa Directory to determine whether authentication is available for a
particular PAN.
VEReq fields The following table lists the defined fields for a VEReq message:
VERes
VERes fields The following table lists the defined fields for a VERes message:
PAReq
Purpose The PAReq (Payer Authentication Request) message is sent by the Merchant Server
Plug-in to the ACS through the cardholder system, providing the data required to
attempt cardholder authentication.
PAReq fields The following table lists the defined fields for a PAReq message:
Recurring The value of Recur.frequency indicates the minimum number of days between
Frequency authorizations. A frequency of monthly is indicated by a value of 28. The earliest
possible date for each authorization is based on the actual date of the prior
authorization.
Table 18 illustrates the earliest possible dates for a subsequent authorization when
the value of Recur.frequency is 28. Later authorizations are acceptable (until
Recur.endRecur).
if the most recent then the earliest possible but the next
authorization was dated: date for the next authorization typically
authorization is: occurs on:
December 31, 2000 January 28, 2001 January 31, 2001
January 28, 2001 February 25, 2001 February 28, 2001
January 31, 2001 February 28, 2001 February 28, 2001
Table 18: Recurring Frequency
Recurring It is the responsibility of the ACS software (and the cardholder software, if any) to
Expiry ensure that the value of Recur.endRecur is not later than the card expiration date.
Note: The card needs to be valid only at the time of authorization. It is not a problem
if it expires between authorization and capture.
PARes
Purpose The PARes (Payer Authentication Response) message is sent by the ACS in
response to the PAReq regardless of whether authentication is successful.
PARes fields The following table lists the defined fields for a PARes message:
Table 20 lists and describes the values for Invalid Request Code (iReqCode),
and specifies the contents of Invalid Request Detail (iReqDetail) when
applicable. Vendor Code may also be included, at the discretion of the application
developer.
Invalid
Request Description Invalid Request Detail
Code
50 Acquirer not participating in 3-D Secure
(based on Acquirer BIN).
51 Merchant not participating in 3-D Secure
(based on Acquirer BIN and Merchant ID).
52 Password required, but no password was
supplied.
53 Supplied password is not valid for
combination of Acquirer BIN and
Merchant ID.
54 ISO code not valid per ISO tables (for either Name of invalid element(s); if more than
country or currency). one invalid element is detected, this is a
Note that although ISO 4217 includes values comma-delimited list.
963 (reserved for testing) and 999 (no If PAReq.Purchase.currency and
currency is involved), these values are invalid PAReq.Purchase.exponent form an
for 3-D Secure. invalid pair, list both as iReqDetail.
55 Transaction data not valid. For example: Name of invalid element(s); if more than
• purchase amount <> display amount one invalid element is detected, this is a
comma-delimited list.
• PAReq.acctid <> VERes.acctid
56 PAReq was incorrectly routed; either: Name of element(s) that caused the ACS to
• the PAReq was received by the wrong decide that the PAReq was incorrectly
ACS, or routed; if more than one invalid element is
detected, this is a comma-delimited list.
• the PAReq should never have been sent,
based on the values in the VERes.
57 Serial Number cannot be located
98 Transient system failure A description of the failure
99 Permanent system failure A description of the failure
Table 20: Invalid Request Values
Message Extensions
Message Requirements may emerge that cannot be supported by elements in the 3-D Secure
extensions messages; any data necessary to support these requirements must be carried in a
message extension.
Extension The party defining the message extension defines the format of the data. Examples of
data formats that might be chosen are:
• XML data
• Binary data that is Base64 encoded
Identification Each message extension defined for use in 3-D Secure must have a unique identifier
assigned to it. Examples of unique identifiers are:
• Object identifiers (OID)
• Uniform Resource Identifiers (URI)
The party defining the message extension specifies the format of the identifier (OID,
URI, etc.) and the value.
Criticality The data in a message extension may affect the meaning of the rest of the data such
that the entire message can only be understood in the context of the extension data.
When this occurs, the extension is deemed to be critical and the value of the critical
attribute must be “true”.
When an extension is critical, recipients of the message must recognize and be able
to process the extension. If a 3-D Secure application receives a message containing a
critical extension that it does not recognize, it must respond with an Error message.
When an extension is non-critical, recipients that cannot process the extension can
safely ignore the data.
Error Message
Purpose The Error message shall be returned when the incoming request or response cannot
be successfully processed at a protocol level (such as bad XML).
Note: Implementations may limit the number of Error messages that are sent to a
given requester in order to mitigate the effects of denial-of-service attacks.
Error The following table lists the defined fields for an Error message.
message
fields
Client may A client device may send an Error message to the server that sends it an invalid
send Error response:
message
• A Merchant Server Plug-in may post an Error message to the Visa Directory.
• A Merchant Server Plug-in or the Visa Directory may send an Error message to
an ACS, by posting it to the ACS URL.
Note: Vendors are strongly encouraged to send these Error messages.
Response to An application which receives an Error message as an HTTP post must respond
Error with an HTTP response code of "200 OK" and an empty body.
message
An application must never send an Error message in response to an Error message.
Message id If the 3-D Secure component is able to determine the message id of the message in
error, it must use the same id in the Error message. If an id cannot be determined
from the message that is in error (such as when the root element is unrecognized or
the Message element is missing), the 3-D Secure component must generate an id
using an algorithm that is likely to generate unique ids.
Related
elements in
Error Error Error Description Explanation Error Detail
message Code
1 Root element invalid. Root element is not The invalid root
recognized. element.
2 Message element not Message is not CRReq, The invalid message
a defined message. CRRes, VEReq, etc., or element.
a valid message is sent to
an inappropriate
component (such as
PAReq being sent to the
Visa Directory)
3 Required element Name of required
missing. element that was
omitted.
4 Critical element not Name of critical
recognized. element that was not
recognized.
5 Format of one or For example, not numeric, Name of invalid
more elements is not in defined date format, element(s); if more
invalid according to etc. than one invalid
the specification. element is detected,
this is a comma-
delimited list.
6 Protocol version too The oldest version
old. supported.
98 Transient system For example, a queue A description of the
failure processing requests is full. failure
99 Permanent system For example, the disk A description of the
failure containing a critical failure
database cannot be
accessed.
Table 23: Error Code, Error Description, and Error Detail
Topic Page
Document “ThreeDSecure” is the document element (aka root) of all XML-based documents
element exchanged between various services and components participating in the 3-D Secure
infrastructure.
Date and Time Date and time pairs are formatted as:
format(s)
YYYYMMDD HH:MM:SS
With the exception of the Card Expiry Date, dates alone are formatted as:
YYYYMMDD
Card Expiry Date is formatted as:
YYMM
Description 3-D Secure/XM uses the detached signature form where the signature is external to
the signed element (PARes) but within the same document. The signed element is
referenced by the signature using local reference (e.g., ‘#PARes11234’). The signed
element includes:
the opening angle bracket of the PARes start tag through the closing angle
bracket of the PARes end tag
Figure 4 illustrates the signature structure.
Profile The generation of 3-D Secure signatures must correspond to the requirements for
element content and algorithms specified in the tables that follow.
Note: Recipients of 3-D Secure messages should only enforce these requirements to
the extent necessary to validate the signature; for example, the presence of a
CanonicalizationMethod element should not cause the validation to fail, but the
absence of Signature.KeyInfo must cause the validation to fail.
Element Requirements
Signature One instance of KeyInfo; zero instances of Object
CanonicalizationMethod Element is EMPTY with Algorithm attribute present
SignatureMethod Element is EMPTY with Algorithm attribute present
Transforms Not present
DigestMethod Element is EMPTY with Algorithm attribute present
KeyInfo One instance of X509Data
X509Data One or more instances of X509Certificate
Table 24: XML Signature Profile
Algorithm Type Identifier
Canonicalization http://www.w3.org/TR/2001/REC-xml-c14n-
20010315
Digest http://www.w3.org/2000/09/xmldsig#sha1
Encoding http://www.w3.org/2000/09/xmldsig#base64
MAC http://www.w3.org/2000/09/xmldsig#hmac-sha1
Signature http://www.w3.org/2000/09/xmldsig#rsa-sha1
Transform none
(however, see Canonicalization requirements below)
Table 25: XML Signature Algorithms
XML The detached signature of the message must be declared with a default namespace of
namespaces "http://www.w3.org/2000/09/xmldsig#".
for signatures
Example <ThreeDSecure>
<Message id="PAReq98765">
<PARes id="PARes12345">...</PARes>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<Reference URI="#PARes12345">
…
</Reference>
<SignedInfo>
<SignatureValue>...</SignatureValue>
<KeyInfo>...</KeyInfo>
<Signature>
</Message>
</ThreeDSecure>
Introduction Figure 5 provides an overview of 3-D Secure messages. The remaining figures in
this section illustrate the messages individually:
Message Page
CRReq 69
CRRes 69
VEReq 70
VERes 70
PAReq 71
PARes 72
Error Message 73
Figure 6: CRReq
Figure 7: CRRes
Figure 8: VEReq
Figure 9: VERes
<!--
**********************************************************************
DTD for 3-D Secure Messages
Version 1.0.2
**********************************************************************
-->
<!ELEMENT ThreeDSecure (Message)*>
<!ELEMENT Message ((CRReq | CRRes | VEReq | VERes | PAReq |
(PARes, Signature) | Error))>
<!ATTLIST Message id CDATA #REQUIRED >
<!--
**********************************************************************
This appendix combines the field definitions provided in the message descriptions
that begin on page 41.
Inclu- Message
Field Name DTD Element Description
sion
Accept Browser.accept C VEReq The exact content of the HTTP accept
Headers header as sent to the merchant from the
cardholder’s user agent.
Required if the cardholder’s user agent
supplied a value.
Account CH.acctID C VERes The content of this field is at the discretion
Identifier of the Issuer. This may be the actual PAN
or an alternative a data string useful to the
ACS; it must not reveal the PAN and must
be generated using an algorithm that is
likely to generate unique values.
Must be supplied if the value of PAN
Authentication Available is “Y”.
Up to 28 characters.
Account CH.acctID R PAReq From VERes.
Identifier
Acquirer BIN Merchant. R CRReq, Variable length (up to 11 digits) acquiring
acqBIN VEReq institution identification code; typically this
is a 6-digit BIN assigned to the Acquirer by
Visa.
Acquirer BIN Merchant. R PAReq From VEReq.
acqBIN
Acquirer BIN Merchant. R PARes From PAReq.
acqBIN
ACS URL url C VERes Fully qualified URL of Access Control
Server.
Must be supplied if the value of PAN
Authentication Available is “Y”.
Table 26: 3-D Secure Fields
Inclu- Message
Field Name DTD Element Description
sion
Action CR.action R CRRes Indicates the action to take with the card
range:
A = Add the card range to the cache.
D = Delete the card range from the
cache.
The card ranges must be processed in the
order returned.
Note: If the serial number was not included
in the CRReq the action is add for all
ranges returned.
Card Expiry CH.expiry R PAReq Expiration Date supplied to merchant by
Date cardholder. (YYMM).
Card Range CR C CRRes If CRReq does not include Serial
Number, a CR element is included for
each card range populated in the Visa
Directory.
If CRReq includes Serial Number:
• If the value of CRReq.serialNumber
is current, indicating that the Visa
Directory Server data has not changed
since the previous CRReq from this
merchant, no CR elements are returned.
• Otherwise, only CR elements that have
been added or deleted since the previous
CRReq are returned.
CR is absent when IReq is present.
• The card range consists of three data
elements as listed below.
Table 26: 3-D Secure Fields, continued
Inclu- Message
Field Name DTD Element Description
sion
Cardholder TX.cavv C PARes Determined by ACS. Contains a 20 byte
Authentication value that has been Base64 encoded, giving
Verification a 28 byte result.
Value Required when the value of Transaction
Status is “Y” or “A”.
See 3-D Secure: Functional
Requirements – Access Control Server
for information about producing this value.
Cardholder pan R VEReq 13 – 19 digit Account Number; it must be
PAN the same PAN that will be used in the
authorization request. The value may be:
• the account number on the card
• a permanent account number that’s only
used online
• produced by the wallet as a proxy
• pulled from the merchant’s local wallet
• or any other number that can be
submitted for authorization.
Cardholder pan R PARes Cardholder Account Number.
PAN Note: This is the value to be sent to the
payment system in authorization and
clearing messages. When Transaction
Status is “Y” or “A”, this must be the same
as this field must include the last four digits
of the PAN supplied in the VEReq,
preceded by zeros:
• 0000000001234 (13-digit PAN)
• 0000000000001234 (16-digit PAN)
Visa regions may require that the full PAN
that was used in the associated VEReq be
used.
otherwise, If authentication was
unsuccessful, this field must be all zeros:
one for each digit of the PAN.
Table 26: 3-D Secure Fields, continued
Inclu- Message
Field Name DTD Element Description
sion
CAVV TX. C PARes A positive integer indicating the algorithm
Algorithm cavvAlgorithm used to generate the Cardholder
Authentication Verification Value.
Current defined values are:
0 = HMAC (as per SET™ TransStain)
1 = CVV
2 = CVV with ATN
Additional values may be defined at any
time. All components must accept any
positive integer value in this field.
Required when the value of Transaction
Status is “Y” or “A”.
Currency Purchase. R PAReq The minor units of currency specified in
Exponent exponent ISO 4217. For example, US Dollars has a
value of 2; Japanese Yen has a value of 0.
Currency Purchase. R PARes From PAReq.
Exponent exponent
Device Browser. O VEReq Indicates the type of cardholder device.
Category deviceCategory Current defined values are:
0 = PC (HTML)
1 = mobile Internet device (WML)
Additional values may be defined at any
time. All components must accept any
positive integer value in this field.
If no value is provided, 0 is implied.
Display Purchase. R PAReq Determined by merchant; must correspond
Amount amount to Purchase Amount.
Character string (up to 20 characters) that is
displayable to the user.
Electronic TX.eci C PARes Value to be passed in Authorization
Commerce Message (exactly 2 decimal digits).
Indicator Determined by ACS.
Required when the value of Transaction
Status is “Y” or “A”.
Table 26: 3-D Secure Fields, continued
Inclu- Message
Field Name DTD Element Description
sion
Error errorMessage R Error See Table 23 on page 64.
Description
Error Detail errorDetail R Error See Table 23 on page 64.
Error Code errorCode R Error See Table 23 on page 64.
First Number CR.begin R CRRes 13 – 19 digit Account Number from Visa
in Card Range Directory.
Installment Purchase.install C PAReq An integer greater than one indicating the
Payment Data maximum number of permitted
authorizations for installment payments.
Must be included if the merchant and
cardholder have agreed to installment
payments.
Invalid IReq.iReqCode C VERes Code indicating data that is formatted
Request Code correctly, but which invalidates the request.
This element is included when the VEReq
is syntactically correct, but business
processing cannot be performed for one of
the reasons defined in Table 20 on page 60,
which also provides the possible values.
Note that when IReq is included, the value
of PAN Authentication Available is
always “N”.
Invalid IReq.iReqCode C CRRes Code indicating data that is formatted
Request Code correctly, but which invalidates the request.
This element is included when the CRReq
is syntactically correct, but business
processing cannot be performed for one of
the reasons defined in Table 20 on page 60,
which also provides the possible values.
If Invalid Request Code is included, the
Merchant Server Plug-In should ignore the
contents of Serial Number.
Invalid IReq.iReqCode C PARes Code indicating data that is formatted
Request Code correctly, but which invalidates the request.
This element is included when the request
is syntactically correct, but business
processing cannot be performed for one of
the reasons defined in Table 20 on page 60,
which also provides the possible values.
Table 26: 3-D Secure Fields, continued
Inclu- Message
Field Name DTD Element Description
sion
Invalid IReq.iReqDetail C CRRes, May identify the specific data elements that
Request Detail VERes, caused the Invalid Request Code (so
PARes never supplied if Invalid Request Code
is omitted). See Table 20 on page 60 for
details.
Last Number CR.end R CRRes 13 – 19 digit Account Number from Visa
in Card Range Directory. (Must be the same length as First
Number in Card Range.)
Merchant Merchant. R PAReq Three digit ISO-3166 Country Code.
Country Code country Determined by merchant. The same value
must be used in the authorization request.
Merchant ID Merchant.merID R CRReq, Acquirer-defined merchant identifier, up to
VEReq 24 characters:
• up to 15 byte alphanumeric Card
Acceptor ID
• optionally followed by a hyphen and an
up to 8 byte alphanumeric Card
Acceptor Terminal ID
Merchant ID Merchant.merID R PAReq From VEReq.
Merchant ID Merchant.merID R PARes From PAReq.
Merchant Merchant.name R PAReq Character String (max 25 characters),
Name determined by merchant.
Merchant URL Merchant.url R PAReq Fully qualified URL of merchant site.
Message Extension O VEReq, Any data necessary to support the
Extension VERes, requirements that are not otherwise defined
PAReq, in the message must be carried in an
PARes instance of Message Extension.
See page 61 for additional information
about this element.
Message version R all Version identifier; currently “1.0.2”.
Version
Number
Table 26: 3-D Secure Fields, continued
Inclu- Message
Field Name DTD Element Description
sion
Order Purchase.desc O PAReq Brief description of items purchased,
Description determined by the merchant.
Maximum size is 125 characters, but
merchant should consider the characteristics
of the cardholder’s device when creating the
field.
PAN CH.enrolled R VERes Indicates whether the Account Identifier can
Authentication be authenticated:
Available Y = Authentication Available
N = Cardholder Not Participating
U = Unable To Authenticate
“U” applies whether the inability to
authenticate is due to technical difficulties or
non-inclusion in program.
Password Merchant. C CRReq, 8 character alphanumeric merchant
password VEReq password (provided by Acquirer).
The requirements for use of this field will be
indicated in the Member Implementation
Guide.
Table 26: 3-D Secure Fields, continued
Inclu- Message
Field Name DTD Element Description
sion
Payment protocol C VERes Indicates which payment protocols are
Protocols supported by the Issuer system for the
Cardholder PAN specified in VEReq.
If the value of PAN Authentication
Available is “Y”, at least one instance of
this element must be included.
Possible values are:
ThreeDSecure indicates that the
3-D Secure protocol is
supported by the Issuer
system for this PAN
SET indicates that the SET
Secure Electronic
Transaction™ protocol is
supported by the Issuer
system for this PAN
Purchase Purchase. R PAReq Determined by merchant.
Amount purchAmount 12-digit numeric amount in minor units of
currency with all punctuation removed.
Examples:
Display Amount $123.45
Purchase Amount 12345
Purchase Purchase. R PARes From PAReq.
Amount purchAmount
Purchase Purchase. R PAReq Determined by merchant. ISO 4217, 3 digit
Currency currency numeric.
Purchase Purchase. R PARes From PAReq.
Currency currency
Purchase Date Purchase.date R PAReq Date and time of purchase expressed in
& Time GMT in the following format:
YYYYMMDD HH:MM:SS
Purchase Date Purchase.date R PARes From PAReq.
& Time
Table 26: 3-D Secure Fields, continued
Inclu- Message
Field Name DTD Element Description
sion
Recurring Recur. R PAReq The date after which no further
Expiry endRecur authorizations should be performed.
(YYYYMMDD format). This date must be
in the future.
See “Recurring Expiry” on page 56 for
additional information.
Recurring Recur. R PAReq An integer indicating the minimum number
Frequency frequency of days between authorizations.
See “Recurring Frequency” on page 56
for additional information.
Recurring Purchase.Recur C PAReq A Recur element must be included if the
Payment Data merchant and cardholder have agreed to
recurring payments.
The recurring payment data consists of two
data elements:
• Recurring Frequency
• Recurring Expiry
Serial Number serialNumber O CRReq A value returned in a previous CRRes. If
this element is present, the Visa Directory
Server only returns card ranges that have
been updated since the time of the CRRes;
if this element is not present, the Visa
Directory Server returns all participating
card ranges.
Maximum length is 20 digits, to hold a 64-
bit unsigned integer.
Table 26: 3-D Secure Fields, continued
Inclu- Message
Field Name DTD Element Description
sion
Serial Number serialNumber RC CRRes An integer indicating the current state of the
card range database. (The specific value is
meaningful only to the Visa Directory
Server.) The MPI should retain this value
for submission in a future CRReq to
request only changes that have been made
to the participating card range list since this
message was generated.
Maximum length is 20 digits, to hold a 64-
bit unsigned integer.
If Invalid Request Code is included,
Serial Number should be set to zero must
be omitted.
Signature TX.time R PARes Date and Time PARes message was
Date & Time signed by ACS. Value is expressed in GMT
and uses the format YYYYMMDD
HH:MM:SS.
Transaction Purchase.xid R PAReq Unique transaction identifier determined by
Identifier merchant. Contains a 20 byte statistically
unique value that has been Base64 encoded,
giving a 28 byte result.
Transaction Purchase.xid R PARes From PAReq.
Identifier
Table 26: 3-D Secure Fields, continued
Inclu- Message
Field Name DTD Element Description
sion
Transaction TX.status R PARes Indicates whether a transaction qualifies as
Status an authenticated transaction.
Y = Authentication Successful
Customer was successfully
authenticated. All data needed for
clearing, including the Cardholder
Authentication Verification Value,
is included in the message.
N = Authentication Failed
Customer failed authentication.
Transaction denied.
U = Authentication Could Not Be
Performed
Authentication could not be completed,
due to technical or other problems.
A = Attempts Processing Performed
Authentication could not be completed,
but a proof of authentication attempt
(CAVV) was generated.
Determined by ACS.
User Agent Browser. C VEReq The exact content of the HTTP user-agent
userAgent header as sent to the merchant from the
cardholder’s user agent.
Required if the cardholder’s user agent
supplied a value.
Vendor Code IReq. O CRRes, Vendor specific error code (or explanatory
vendorCode VERes, text) to be used for trouble shooting (max
PARes 256 characters). Determined by the entity
creating the response.
Vendor Code vendorCode O Error Vendor specific error code (or explanatory
text) to be used for trouble shooting (max
256 characters). Determined by the entity
creating the message.
Table 26: 3-D Secure Fields, continued
a) Business ID
b) Country Code
c) Beginning card number in range
d) Ending card number in range
e) Serial number value
f) Deleted flag
g) Fully qualified URLs of one to five Access Control Servers to validate
availability of authentication for a PAN (that is, the URLs of each ACS to
which the VEReq may be sent)
h) URL of an ACS that can generate a proof of authentication attempt
Appendix D: Compression
Compression PAReq and PARes are Base64 encoded prior to being inserted in the page sent to
the browser. This encoding enables the messages to transit through the browser
without interpretation and without change. Unfortunately, the encoding expands the
message sizes by a ratio of 4 to 3. To counter this expansion, the messages are
compressed prior to encoding.
The algorithm used for compression shall be the DEFLATE algorithm, as specified
in RFC1951. The resulting data stream shall be represented in the ZLIB compressed
data format, as specified by RFC1950. The compression method shall be “deflate”
and the compression level should be “default” or “most compressed.” However,
decompressors should be prepared to accept any compression level.
No other transformation or padding is to be done on the data stream. Thus in order to
send PAReq, the following sequence occurs:
1) The MPI builds the XML PAReq, in canonical format according to the DTD.
2) It passes the XML stream to an RFC1951-compliant compressor, which
produces an RFC1950-compliant output stream.
3) The output stream is Base64 encoded.
4) The Base64 data is passed to the ACS through the browser as specified earlier.
5) The ACS decodes the Base64 data into an RFC1950 compliant stream.
6) The RFC1950 stream is passed to an RFC1951 compliant de-compressor, which
generates the original XML.
PARes is returned using a similar mechanism.
The relevant RFCs are available at:
http://www.ietf.org/rfc/rfc1950.txt
http://www.ietf.org/rfc/rfc1951.txt
Additional information, including software implementations, may be found at:
http://www.info-zip.org
ftp://ftp.info-zip.org/pub/infozip/src/
http://www.gzip.org/zlib/
Glossary
Overview This section includes selected terms and acronyms related to 3-D Secure.
An extensive 3-D Secure glossary is available in 3-D Secure: System Overview,
available through the “Vendors & Merchants” link on http://corporate.visa.com.
3-D Secure An e-commerce protocol that enables the secure processing of payment
card transactions in the remote environment; one of the supported
protocols of the Visa Authenticated Payment Program.
3-D Secure specifications See “References” on page 3.
Access Control Server A component that operates in the Issuer Domain, verifies whether
authentication is available for a card number, and authenticates specific
transactions.
Acquirer A Visa Member financial institution that establishes a contractual service
relationship with a merchant for the purpose of accepting Visa cards. In
3-D Secure, determines whether merchant is eligible to participate.
Performs traditional role of receiving and forwarding authorization and
settlement messages (enters transaction into interchange).
Acquirer domain Contains the systems and functions of the Acquirer and its customers,
such as merchants
Attempts functionality The process by which the proof of an authentication attempt is generated,
when payment authentication is not available. Described in 3-D Secure:
Functional Requirements – Access Control Server, Visa Publication
70002-01.
Authenticated Payment One of the programs of the Visa Secure e-Commerce Initiative, this
Program program includes two authentication protocols: 3-D Secure and 3-D SET
Authentication The process of verifying that the person making an e-commerce purchase
is entitled to use the payment card.
Authentication History Server A component that operates in the Interoperability domain; archives
authentication activity for use by Acquirers and Issuers for dispute
resolution and other purposes.
authorization A process by which an Issuer, or a processor on the Issuer’s behalf,
approves a transaction for payment.
Bank Identification Number The first 6 digits of a payment card account number that uniquely
identify the issuing financial institution.
cardholder Party that holds a Visa payment card, shops, provides card number, and
commits to payment.
Cardholder Authentication A cryptographic value generated by the ACS to provide a way during
Verification Value authorization processing for VisaNet to rapidly validate the integrity of
certain values copied from the Payer Authentication Response to the
authorization request and to prove that authentication occurred.
cardholder software Optional cardholder software which may supplement the abilities of the
browser. Chip card authentication, for example, requires cardholder
software sometimes referred to as terminal software.
certificate An electronic document that contains the public key of the certificate
holder and which is attested to by a certificate authority and rendered
unforgeable by cryptographic technology (signing with the private key of
the certificate authority).
chip card A payment card with an integrated circuit chip that stores information
about the account and user.
Interoperability domain Facilitates the transfer of information between the Issuer and Acquirer
domain systems.
Issuer A Visa Member financial institution that issues Visa cards, contracts with
cardholder to provide card services, determines eligibility of cardholder
to participate in 3-D Secure, and identifies card number ranges eligible to
participate in 3-D Secure.
Issuer domain Contains the systems and functions of the Issuer and its customers
(cardholders)
key management The handling of cryptographic keys and other security parameters during
the entire lifetime of the keys, including generation, storage, entry and
use, deletion or destruction, and archiving.
merchant Entity that contracts with an Acquirer to accept Visa cards. Manages the
online shopping experience with the cardholder, obtains card number,
then transfers control to the Merchant Server Plug-in, which conducts
payment authentication.
Merchant Commerce Server A server hardware/software entity which handles online transactions and
facilitates communication between the merchant application and the Visa
gateway.
Merchant Server Plug-in A component that operates in the Acquirer domain; incorporated into the
merchant’s Web storefront that performs functions related to 3-D Secure
on behalf of the merchant, such as determining whether authentication is
available for a card number and validating the digital signature in a
3-D Secure message.
Message Authentication Code A symmetric (secret key) cryptographic method that protects the sender
and recipient against modification and forgery of data by third parties.
Contrast with digital signature.
Payer Authentication Request A message sent from the Merchant Server Plug-in to the Access Control
Server via the cardholder device. Requests the Issuer to authenticate its
cardholder and contains the cardholder, merchant, and transaction-
specific information necessary to do so.
See PAReq and CPRQ.
Payer Authentication A message formatted, digitally signed, and sent from the Access Control
Response Server to the Merchant Server Plug-in (via the cardholder device)
providing the results of the Issuer’s 3-D Secure cardholder
authentication.
See PARes and CPRS.
private key Part of an asymmetric cryptographic system. The key that is kept secret
and known only to an owner.
public key Part of an asymmetric cryptographic system. The key known to all
parties.
public key pair Two mathematically related keys – a public key and a private key –
which are used with a public key (asymmetric) cryptographic algorithm
to permit the secure exchange of information without the necessity for a
secure exchange of a secret.
secret key A key used in a symmetric cryptographic algorithm such as DES which,
if disclosed publicly, would compromise the security of the system.
SET SET Secure Electronic Transaction™, one of the two protocols approved
for the Authenticated Payment Program
specifications See 3-D Secure specifications.
Transport Layer Security Successor protocol to SSL developed by the IETF (Internet Engineering
Task Force)
Uniform Resource Locator Address scheme for pages on the World Wide Web usually in the format
http://address or https://address such as http://www.visa.com
Verify Enrollment Request Message from Merchant Server Plug-in to the Visa Directory or from
Visa Directory to ACS, asking whether authentication is available for a
particular card number
Verify Enrollment Response Message from ACS or Visa Directory, telling the Merchant Server
Plug-in whether authentication is available
Visa Certificate Authority A component that operates in the Interoperability domain; generates and
distributes selected digital certificates to entities participating in
3-D Secure.
VisaNet The systems and services, including the V.I.P and BASE II systems,
through which Visa delivers online financial processing, authorization,
clearing and settlement services to Members.
wallet See digital wallet.
Revision Log
Version Date Brief Description of Change Affects
1.0 May 7, 2001 Initial issue. Throughout.
1.0 June 12, Terms and conditions of use. Legal agreements
2001
1.0.1 November 1, Incorporated all errata from version 1.0. CRReq processing by
2001 Added Invalid Request Code for Directory
invalid serial number. CRRes processing by MPI
Aligned XML signature processing with VEReq processing by
W3C and IETF publications dated Directory
20 August 2001. VEReq processing by ACS
PARes processing by ACS
PARes processing by MPI
1.0.1 July 15, 2002 Added explicit language about message May affect all message
validation and sending Error messages processing if any clarifications
in processing steps. differ from a vendor’s prior
Aligned Account Identifier handling interpretation of the intent of
in the processing steps with the the specification.
conditions described in Table 16.
Added new Invalid Request and
Error Code values.
Other general clarifications.
1.0.2 July 16, 2002 Adjusted to support generating proof of VEReq and PAReq
authentication attempt when processing by ACS
authentication is not available. PARes processing by MPI
Indicated that Account Identifier in Creation of VERes by ACS
VERes must not be the PAN.
Specified that Cardholder PAN in the PARes processing by ACS
PARes must include the last four digits PARes processing by MPI
of the PAN supplied in the VEReq,
preceded by zeros. Visa regions may
require that the full PAN be used.
Clarified that values of codes are Field tables
extensible.
Defined serialNumber as optional in DTD
CRRes; it is omitted when Invalid
Request Code is included.
Note: Revision marks indicate changes made since July 15, 2002.