On This Page
Recent Revisions to This Document
25.09.02
- Updated XID Values
- The Test Cases for3-D Secure2.x section were updated to better reflect which card schemes returned XID values during Enrollment and Validation. See Test Cases for3-D Secure2.x.
- Updated ECI String and ECI Raw Values for ITMX
- The Test Cases for3-D Secure2.x section were updated to include ECI string and raw values for ITMX. See Test Cases for3-D Secure2.x
25.09.01
This revision contains only editorial changes and no technical updates.
25.07.01
- Updated Content
- Removed the sectionUpgrading Your Payer Authentication Implementationthat was no longer needed.
- eftposTest Card Numbers
- Added eftpos card numbers for the3-D Secure2.x test cases. These new card numbers are in addition to the existing co-badged eftpos card numbers. See Test Cases for 3-D Secure 2.x.
25.05.01
- Updated China UnionPay References
- Consolidated references to China UnionPay and UnionPay International to "China UnionPay."
25.04.01
- New Data Only Examples
- Added a section with examples for Visa Data Only and Mastercard Data Only. See Examples Using 3-D Secure Data Only.
- New Visa Data Only Test Case
- Added a Visa Data Only test case to the Additional Test Cases section. See 5a: Visa Data Only.
- Removed Outdated Report Elements
- Removed references from the Payer Auth Detail Report section to elements from3-D Secure1.0. See PayerAuthDetail Element.
- 11 Browser Elements Listed
- Added a list of the 11 browser elements required to ensure a liability shift. See Step 3: Payer Authentication Check Enrollment Service.
- Updated ECI Check Enrollment Values
- Updated the Check Enrollment ECI values tables for the Additional Test Cases. See Additional Test Cases.
25.03.01
- Updated UnionPay test card numbers
- Card numbers were added for testing authentication with China UnionPay. See Test Cases for 3-D Secure 2.x.
- Documentation Hub Link Fix
- Fixed spacing error for documentation hub link. See the introduction.
- Broken Links Fixed
- Several dead links were fixed.
- Reorganized Use Case Examples
- Some of the use case examples were reorganized to fix a spacing issue occurring in the HTML version. See Authentication Examples Using Primary Account Numbers.
24.08
- New Test Case
- A 3-D Secure test case for verifying system behavior when a system error prevents authentication. See 2.13: Authentication Is Bypassed.
- New Card Type Added for Test Card Numbers
- The eftpos card type was added to the 3-D Secure test cases. See Test Cases for 3-D Secure 2.x.
Payer Authentication Developer Guide
This section describes how to use this guide and where to find further information.
- Audience and Purpose
- This guide is written for merchant application developers who want to use theRESTAPI to integrate payer authentication services into their system. It describes the tasks you must perform in order to complete this integration.Implementing payer authentication services requires software development skills.
- Scope
- This guide describes how to use theRESTAPI to integrate payer authentication services with your order management system. It does not describe how to get started using theRESTAPI nor does it explain how to use services other than payer authentication. For that information, see theRelated Documentationsection.
- Conventions
- These special statements are used in this document:IMPORTANTAnImportantstatement contains information essential to successfully completing a task or learning a concept.WARNINGAWarningcontains information or instructions, which, if not followed, can result in a security risk, irreversible loss of data, or significant cost in time or revenue.
- Related Documentation
- Visit the Documentation Hub to find additional documentation.
- Customer Support
- For support information about any service, visit the Support Center:Visa Acceptance customer support.
VISA Platform Connect: Specifications and Conditions for
Resellers/Partners
The following are specifications and conditions that apply to a Reseller/Partner enabling
its merchants through
Visa Acceptance platform
. Failure to meet any of the specifications and conditions below is
subject to the liability provisions and indemnification obligations under
Reseller/Partner’s contract with Visa/Cybersource.- Before boarding merchants for payment processing on a VPC acquirer’s connection, Reseller/Partner and the VPC acquirer must have a contract or other legal agreement that permits Reseller/Partner to enable its merchants to process payments with the acquirer through the dedicated VPC connection and/or traditional connection with such VPC acquirer.
- Reseller/Partner is responsible for boarding and enabling its merchants in accordance with the terms of the contract or other legal agreement with the relevant VPC acquirer.
- Reseller/Partner acknowledges and agrees that all considerations and fees associated with chargebacks, interchange downgrades, settlement issues, funding delays, and other processing related activities are strictly between Reseller and the relevant VPC acquirer.
- Reseller/Partner acknowledges and agrees that the relevant VPC acquirer is responsible for payment processing issues, including but not limited to, transaction declines by network/issuer, decline rates, and interchange qualification, as may be agreed to or outlined in the contract or other legal agreement between Reseller/Partner and such VPC acquirer.
DISCLAIMER: NEITHER VISA NOR CYBERSOURCE WILL BE RESPONSIBLE OR LIABLE FOR ANY ERRORS OR
OMISSIONS BY THE
Visa Platform Connect
ACQUIRER IN PROCESSING TRANSACTIONS. NEITHER VISA
NOR CYBERSOURCE WILL BE RESPONSIBLE OR LIABLE FOR RESELLER/PARTNER BOARDING MERCHANTS OR
ENABLING MERCHANT PROCESSING IN VIOLATION OF THE TERMS AND CONDITIONS IMPOSED BY THE
RELEVANT Visa Platform Connect
ACQUIRER. Introduction to Payer Authentication
Visa Acceptance Solutions
has a variety of products to manage and minimize the risk of
fraud that merchants face in their daily transactions. While these risk management
products can operate independently to address specific areas of risk, the best results
are achieved when the entire suite of products works in concert to detect patterns of
fraud in a business’s online activity. - Payer Authentication: Uses the3-D Secureprotocol in online transactions to verify that payment is coming from the actual cardholder. Most transactions can be authenticated without the customer being aware of the process, but higher risk transactions might require an exchange of one-time passwords (OTPs) during authentication. This authentication of the payer before the transaction is authorized benefits the merchant by shifting chargeback liability from the merchant to the card issuer.You can use Decision Manager with payer authentication services so that the risk level of an order determines when to invoke payer authentication. For example, low-risk orders can be set to skip payer authentication and proceed directly to authorization.
- Decision Manager: Uses AI to help large enterprises analyze the vast amount of data from their online transactions to detect known patterns of fraudulent behavior. Each potential transaction can be compared to past patterns and automatically assigned a risk score before authorizing a transaction. Behavior analysis of past transaction data enables you to recommend rules that identify risky transactions and to suggest how to handle them. Machine learning capabilities in Decision Manager enable you to create hypothetical environments to test strategies for dealing with risky scenarios so that you can either reject them or require payer authentication.
- Fraud Management Essentials: helps small-to-medium businesses monitor their online transactions using AI and preconfigured rules to spot and avoid fraudulent transactions. You can adjust the fraud detection settings to match your risk tolerance and manually review transactions flagged for risk review.
- Account Takeover Protection: monitors customer account activity to detect compromised accounts. You create account events and define rules to determine the types and levels of activity in a customer account that trigger a manual review for potential fraud. The activity data that happens within a customer account can be easily integrated into Decision Manager and used to assess risky payment behavior.
This guide documents the payer authentication aspect of fraud management and how payer
authentication can be used to satisfy the Strong Customer Authentication (SCA)
requirement of the Payment Services Directive (PSD2) that applies to the European
Economic Area (EEA) and the United Kingdom. SCA requires banks to perform additional
verification when customers make payments to confirm their identity. Access to the
documentation for other aspects of the risk management portfolio requires a
Visa Acceptance Solutions
support license for that product.Transactions where the card is not present have a high risk of fraud, so authenticating a
payer before processing a transaction greatly reduces the merchant risk for chargebacks.
Payer authentication is a way of verifying that a customer making an e-commerce purchase
is the owner of the payment card being used. The protocol that is followed to
authenticate customers during online transactions is called EMV 3-D Secure.
This EMV
3-D Secure
protocol is used by all major payment cards to implement
payer authentication, but payment companies usually brand it under a different name: - Visa: Visa Secure
- Mastercard: Mastercard Identity Check
- American Express: American Express SafeKey
- JCB: J/Secure
- Discover/Diners: ProtectBuy
- Elo: Compra Segura (Secure Shopping)
- Cartes Bancaires: FAST’R
- China UnionPay:3-D Secure
Supported Card Networks
These card networks support using EMV
3-D Secure
during transactions: - Amex
- Cartes Bancaires
- China UnionPay
- Discover/Diners
- eftpos
- Elo
- JCB
- Mada
- Mastercard
- Visa
Why Payer Authentication Is Needed
As e-commerce developed, the number of fraudulent transactions also grew, taking
advantage of the difficulty authenticating a cardholder during a transaction when the
card is not present. To create a standard for secure payment card processing, Europay,
Mastercard, and Visa collaborated as EMV. Other card providers wanted input on creating
new payment standards, so a consortium called EMVCo was formed to enable equal input
from Visa, Mastercard,
JCB,
China UnionPay,
Discover,
and American Express.EMVCo developed
3-D Secure
as the protocol to provide customer
authentication during an online transaction. EMV 3-D Secure
reduced
chargebacks to merchants, and when the buyer was authenticated, the issuing bank assumed
any liability when a chargeback occurred. The same need to reduce fraud prompted Europe to develop a standard called Strong
Customer Authentication (SCA) to regulate authentication during electronic payments. The
use of SCA is mandated by the European Banking Authority in the Payment Services
Directive (PSD2) that took effect in 2018 to promote and regulate the technical aspects
of financial transactions between merchants and their customers in Europe. SCA requires
two-factor authentication. A customer must be able to authenticate by providing two of
these three factors:
- Something the customer knows (such as a password, PIN, or challenge questions)
- Something the customer has (such as a phone or hardware token)
- Something the customer is (biometric data, such as fingerprint or face recognition)
Although SCA is required for almost all online transactions, some exceptions are allowed.
If a payment is considered low risk, you can request an exemption from SCA to bypass
authentication of the customer. The issuing bank must approve the exemption before the
transaction can be exempted from SCA. Although an exemption from SCA results in a
frictionless transaction, liability is not shifted to the issuing bank, and the merchant
assumes responsibility for any chargeback that occurs. An exemption from SCA might apply
to these types of transactions:
- Payer authentication is unavailable because of a system outage.
- Payment cards used specifically for business-to-business transactions are exempt.
- Payer authentication is performed outside of the authorization workflow.
- Follow-on installment payments of a fixed amount are exempt after the first transaction.
- Follow-on recurring payments of a fixed amount are exempt after the first transaction.
- Fraud levels associated with this type of transaction are considered a low risk.
- Low transaction value does not warrant SCA.
- Merchant-initiated transactions (MITs) are follow-on transactions that are also exempt.
- Stored credentials were authenticated before they were stored, so stored credential transactions are exempt.
- Trusted merchants registered as trusted beneficiaries, are exempt.
EMV
3-D Secure
meets the SCA mandate for authenticating the customer during
e-commerce transactions. EMV 3-D Secure 2.0
3-D Secure
2.0To improve the customer experience, a new version of
3-D Secure
was
developed. EMV 3-D Secure
2.x uses a less intrusive process to authenticate
a buyer, which provides a better customer experience. Enhancements to
3-D Secure
2.x include:- More robust device data collection to improve risk analysis by the issuing bank.
- Small screens that pop up on your webpage to avoid full-page redirects.
- SDK version for mobile devices like phones and tablets.
- Streamlined shopping experience.
IMPORTANT
On September 25, 2024, support for EMV
3-D Secure
2.1.0 ended. Merchants
and their acquirers must support EMV 3-D Secure
2.2.0 or a later
version before that date so that transactions can continue without any interruption
in service. Contact support for additional information on updating your system to
use EMV 3-D Secure
2.2.0. Payer Authentication Customer Workflow
During authentication for each transaction, data is collected about the customer's
device, and the shipping and billing information is compared with transaction history.
The workflow in payer authentication can go one of two possible ways: frictionless and
challenge (also known as
step-up
). Figure:
Payer Authentication Workflow
Frictionless Workflow
With frictionless flow, the authentication process is not visible to the customer.
The data collected during the transaction matches the data collected from past
transactions with the customer. The risk for fraud is calculated to be low enough
that further authentication is unnecessary. The transaction can continue to
authorization.
- The customer enters card information at checkout. Information about the device being used by the customer and shopping behavior is collected and relayed from the merchant to the issuing bank. A delay of about 10 seconds is built into the process to ensure that the device data can be transmitted and assessed before theBuyoption is enabled.
- The customer selectsBuy.
- The issuing bank verifies the information it receives against previous transactions. If the device data correlates with the information, the transaction is approved without the buyer having to provide any additional information.
Challenge Workflow
A challenge flow occurs when the data collected during the transaction does not match
the information on file from previous transactions with the customer. This process
occurs for multiple reasons and does not necessarily mean that the customer has
fraudulent intent. For example, it could occur because the customer got a new device
that has not been registered yet or because they bought something while traveling.
The issuer of the card decides whether further authentication of the customer is
required and if necessary, requests that the customer prove their identity by
returning a passcode to the issuer. This sequence describes the interaction from the
customer viewpoint.
- The customer enters card information at checkout. Information about the customer's device is collected and sent from the merchant to the issuing bank.
- The customer selectsBuy.
- The issuing bank assesses risk by comparing the information it receives to information on file from previous transactions with the customer. If the device data does not match the information collected previously, the issuer requests further authentication.
- A small window opens on the checkout page where a message from the bank asks if the customer wants to use email or text message to receive a one-time password (OTP) from the bank.
- The customer chooses how the password is sent.
- The issuer sends an OTP to the account on file for the customer.
- A window opens on the checkout page on the customer device prompting the customer to enter the OTP sent by the issuer.
- The customer enters the password that they received and sends it back to the issuer.
- If the password entered by the customer matches the password sent by the issuer, the customer is authenticated, and the transaction can proceed to authorization. If the password does not match the password that the bank sent, the customer receives a message that the transaction is declined and that they should attempt another form of payment.
Payer Authentication Merchant Workflow
Transaction circumstances might result in differences to the more detailed payer
authentication process described below.
- Before theBuybutton is selected at checkout, the Setup service is called. The full card number identifies how to contact the issuing bank. The issuing bank sends an access token and a URL (called theDCC URL) to use for the data collected about the device where the transaction is occurring.
- The merchant collects data about the device and includes billing and shipping information. The merchant posts this data to a hidden 10 pixel x 10 pixel iframe to send to the DDC URL provided by the card issuer for comparision with past transactions. After the data points are collected and sent, the issuing bank confirms that data collection ended and theBuybutton is enabled. An 8-10 second delay ensures enough time for data collection.
- ClickingBuytriggers the Check Enrollment service sending the order data (and session ID) to the issuer. If the bank is not part of an EMV3-D Secureprogram, the payer authentication process stops. If the issuing bank is part of an EMV3-D Secureprogram, the device data is compared to information on file collected at the bank during previous transactions with the cardholder.
- The issuer's risk analysis software determines whether enough data points collected by the merchant match the data in the bank's files. If the data matches well, no further interaction is needed. This is calledfrictionless flowbecause no challenge to the buyer is necessary. The response returned to the merchant includes a payload with values like theECI,CAVV,DS Transaction Id, and thePARes Status. These values must be passed on during the request for authorization. It is important to note that while frictionless flow can occur because the payer is authenticated, it can also occur for other reasons. For example, the issuing bank does not participate in payer authentication. Therefore, response values must be verified to determine why no step-up is needed.
- If a significant discrepancy occurs between the transaction data and the data on file with the bank, the bank requests that the payer authenticate. This is a friction workflow and is called astep uporchallenge. The response from the bank contains the same values returned for a frictionless workflow but also includes additional values like theAccess Control Server (ACS) URL, thePAReqpayload, aPares Status= C, aStep Up URL, a newJWT, and aTransaction Id.
- The JWT and the step up URL received in the check enrollment response are returned to the customer. Using the step up URL with the JWT as a POST parameter, a challenge screen opens in a viewable iframe on the buyer's device so that the cardholder can view and respond to the bank challenge. The challenge consists of the bank sending a pass code that the customer returns to the bank. The challenge asks how the customer wants to receive a pass code, by text or email. After the customer chooses, they receive a pass code that they must enter into the challenge screen.
- After the cardholder enters and sends the passcode, the response is sent to the merchant's return URL contained in the JWT. This response causes the merchant to make a validation call to the bank to obtain the final authentication outcome. The response to this validation request contains the final authentication results including these values:ECI,CAVV(if successful),DSTransactionId,ThreeDSVersion, and PARes Status (YorA= successful orN,U,R= failed, unavailable, or rejected).
- The next action depends on the outcome:
- Successful: proceed to authorization, and append the EMV3-D Securedata points to the authorization message.
- Failed, unavailable, or rejected: display a message to prompt the customer to try payment with a different card.
Acquirer Information
To properly configure payer authentication,
Visa Acceptance Solutions
uses three items
of informationthat your acquiring bank
uses
to manage payments for your account. If you do not know this information,
contact your acquiring bank
Visa Acceptance Solutions
.- AcquiringMerchant ID(MID): This unique identifier for your business account is assigned by your acquiring bank or payment processor. A MID consists of 8-24 alpha-numeric characters. The MID can be different than the business deposit identifier used in settlements.
- AcquiringBank Identification Number(BIN): This unique number is assigned to the acquiring bank by a payment card network to identify that bank when settling transactions. Each payment card assigns its own BIN for an acquiring bank, and the BINs have their own unique characteristics. For example, all Visa BINs start with a 4, Mastercard BINs start with a 2 or 5, and Discover BINs start with a 3 or 6.
- Merchant Category Code (MCC): This four-digit numeric value is assigned by the acquirer to the merchant to classify the merchandise or services provided by the business. The MCC indicates the kind of business transaction that the merchant processes.
Enable Merchant Account for EMV 3-D Secure
3-D Secure
Partners and merchants use the
Business Center
to go online and view transaction
activity and to generate reports about their transactions. For
each partner, an account is created, and a portfolio merchant ID (MID) is assigned.
For each of the merchants within the partner's portfolio, an account is also created
and assigned a merchant ID (MID). Access to the various functions in the
Business Center
is managed by the partner through the MID. When the MID account is created, the various services that the merchant needs must be
enabled. For more information about configuring your account in the
Business Center
for payer authentication and other services, see the Merchant Boarding User Guide. Payer authentication
is a service that might need to be turned on by support. To set up an account for payer
authentication, you need this information:- MID.
- Merchant website URL.
- Two-character ISO code for your country.
- Merchant category code.
- EMV3-D Securerequestor ID (optional).
- EMV3-D Securerequestor name (optional).
- Name of merchant's bank.
- Name, address, and email address of bank contact.
For each payment card that you accept, your acquirer must provide you with this
information:
- Eight-digit BIN number.
- Merchant ID assigned by your acquirer.
- List of all of the currencies that you can process.
Payer Authentication Configuration Testing
After the payer authentication functionality is enabled for your account and you have
installed and configured the software, you must run tests to ensure that payer
authentication is working properly. You must ensure that the proper data is being
collected and sent to the issuer and that the proper status for a particular
circumstance is returned. To ensure that the proper statuses are returned under all
possible circumstances, extensive testing is required before you go live with payer
authentication.
A sandbox testing environment is provided to resolve any bugs in your system. In this
testing environment, you can simulate various transaction scenarios with the types of
payment cards that you accept. Test card numbers for the various types of payment cards
are provided so that you can run transaction simulations. You can verify that the values
generated during the simulations are the correct values that should occur during that
transaction scenario.
When your test results are correct, contact customer support and request to go live. When
you go live, you will use the production host name to
process transactions instead of the test host name that you used when processing
transactions in the test environment.
The host name for the testing environment:
POST
https://apitest.visaacceptance.com
The host name for the production environment:
POST
https://api.visaacceptance.com
Details about testing your payer authentication configuration are available in the Testing Payer Authentication Services
section.
Request Endpoints
When posting a request for payer authentication, you must add an endpoint to each
hostname, whether you are using the test environment or the production environment.
These endpoints are used with payer authentication.
/risk/v1/authentications
: use when verifying that a card is enrolled in a card
authentication program or requesting authentication from the issuer./risk/v1/authentication-results
: use when retrieving and validating authentication
results from the issuer so that the merchant can process the payment./pts/v2/payments
: use when bundling multiple payments together.For example, a test request might look like this:
POST
https://apitest.visaacceptance.com
/risk/v1/authenticationsPayer Authentication Integrations
Payer authentication was designed to authenticate buyers during online transactions.
During the early growth of internet transactions, e-commerce was conducted only on
computers. Mobile phones had limited capabilities. When mobile phones (and tablets)
could access the internet, online transactions quickly grew, and now they comprise
almost half of all e-commerce transactions. A key part of updating the EMV
3-D Secure
protocol from 1.0 to 2.0 was to ensure that payer authentication
became available for e-commerce done on mobile devices. Two types of payer authentication integration are available for merchants:
- API for browser authentication from a computer.
- SDK for authentication from mobile devices (available for Android and iOS). Contact support to obtain the SDK.
IMPORTANT
Payer Authentication supports message-level
encryption. For more information, see Message Level Encryption.
Merchants should integrate payer authentication for online shopping on both types of
devices. The next sections in this guide describe how to integrate payer authentication
into those shopping experiences.
Implementing Direct API for Payer Authentication
The Direct API integrates EMV
3-D Secure
2.x into your business's website.
This integration uses an iframe to complete the device profiling and EMV 3-D Secure
authentication requirements without including third-party JavaScript
directly on your site. This implementation requires the use of JavaScript to leverage the authentication. The
JavaScript is hosted and contained inside the iframe and does not directly access your
web page.
IMPORTANT
Payer Authentication uses Cardinal Centinel as the technology
platform to manage all EMV
3-D Secure
authentication processes. Any
references to Cardinal in this document refer to the underlying services that are
provided by Cardinal technology.Prerequisites
Notify your account representative that you want to implement payer authentication (3-D
Secure) using the Direct API integration. Provide the merchant ID that you will use for
testing. For more information, see Required
Merchant Information.
Before you can implement payer authentication services, your business team must contact
your acquirer and
Visa Acceptance Solutions
to establish the service.
Your software development team should become familiar with the API fields and technical
details of this service.After Implementation and Before Go Live
Use the test cases to test your preliminary code and make appropriate changes. See Testing Payer Authentication. Testing ensures that your account is configured for
production and that your transactions are processed quickly and correctly.
Step 1: Setup Service
Request the Setup service before selecting the button to submit payment. Request the
Setup service separately without including other services. The Setup service response
will include a JSON Web Token (JWT) that contains credentials to create a secure channel
with you. The Setup response also includes a reference ID to use during the
authentication and a URL to use when transferring the device data that is collected in
the next step.
IMPORTANT
The Setup service is used only in the
Direct API integration. The SDK integration does not use this step.
Run the Setup service as soon as the customer enters their card number to avoid any delay
in the customer experience. The next step in the process, device data collection, cannot
start until the Setup response is received because the response has the URL where the
device data will be sent.
Figure:
Process Flow for Setup for Payer Authentication
Best Practices
This practice should be followed so that this step achieves optimal performance and
to minimize potential operating issues.
After the customer credit card is entered, immediately begin device data
collection.
Request Fields
When requesting the Setup service, you must send the customer’s
payment information. This can be either the actual encrypted card information or a token
associated with the payment data. Besides the required fields, the request might also
include any of these fields:
- paymentInformation.card.number
- paymentInformation.tokenizedCard.number
- paymentInformation.customer.customerId
- tokenInformation.transientToken
The
paymentInformation.card.type
field is required when the card type is JCB
, Cartes Bancaires, or China
UnionPay
.Important Response Fields
The response from the issuing bank might include these API fields.
- consumerAuthenticationInformation.accessTokenis used in Step 2: Device Data Collection.
- consumerAuthenticationInformation.deviceDataCollectionUrlis used in Step 2: Device Data Collection.
- consumerAuthenticationInformation.referenceIdis used in Step 3: Payer Authentication Check Enrollment Service.
Step 2: Device Data Collection
Device data collection starts on the merchant end after you receive the
server-side Setup service response as described in Step 1: Setup Service and pass the access token and the device data
collection URL to the front end. When device data gets to the data collection URL, a
Method URL stipulated in the
3-D Secure
protocal captures the entire card
number to identify the issuing bank. A hidden 10 x 10 pixel iframe is rendered in the browser, and using the access
token, you send the customer device data to the device data collection URL. The device
data collection can take up to 10 seconds. If you proceed with the check enrollment
service as described in Step 3: Payer Authentication Check Enrollment Service before a response is
received, the collection process is short-circuited and an error occurs. Despite the
error, as long as you include the data from the eleven browser fields as explained in
Step 3: Payer Authentication Check
Enrollment Service, you can still proceed with the EMV authentication.
It is recommended that the device data collection start immediately after you receive the
customer card number to ensure that the data collection runs in the background while the
customer continues with the checkout process, ensuring a minimum of waiting. When a
customer changes to a different card number, begin the Setup and device data collection
process again as soon as the new card number is entered.
Figure:
Process Flow for Device Data Collection
Best Practices
These practices should be followed for this step in order to achieve optimal
performance and to minimize potential operating issues.
- After the customer credit card number is entered, immediately begin the device data collection.
- Device data collection must complete before the enrollment check begins.
- While not required, it is highly recommended to pass the values from the 11 browser-based fields in the request. The information from these fields serves as a backup, in case the device data collection does not complete correctly.
- As much billing data as possible (unless restricted by regional mandates) should be supplied to the issuing bank to ensure that the issuer's risk assessment software has the most comprehensive data.
- The billing data such as state and country must be formatted according to ISO 3166-2 format specifications to ensure that the network can properly validate the data.
Which Device Data is Collected
One of the key components to authenticating a cardholder during an online transaction is
to compare information about the device that the customer is currently using to the
information in the bank's database about devices the customer used in past transactions.
This information is maintained in the acess control server (ACS) at the issuing bank.
This device information focuses on the web browser and includes these types of data:
- IP address
- Browser language
- Browser type
- Browser version
- Computer operating system
- System time zone
- Screen dimensions
- Color depth
A successful device data collection process that includes the 11 browser fields listed in
the check enrollment step increases the chances of a frictionless authentication. See
Step 3: Payer Authentication Check
Enrollment Service for the list of 11 browser fields. Business rules evaluate
whether a transaction is risky enough to require the buyer to authenticate their
identity. These business rules are configured in the issuer's risk analysis software
that evaluates each transaction.
Building the Iframe
The iframe has these parameters:
- Form POST Action: The POST goes to the URL that is opened within an iframe. This URL is the value provided by theconsumerAuthenticationInformation.deviceDataCollectionUrlresponse field discussed in Step 1: Setup Service.
- JWT POST Parameter: Use the value from theconsumerAuthenticationInformation.accessTokenresponse field discussed in Step 1: Setup Service.
Initiating the Device Data Collection Iframe
Initiate a form POST in a hidden 10 x 10 pixel iframe and send it to the device data
collection URL (
consumerAuthenticationInformation.deviceDataCollectionUrl
). Place the HTML anywhere inside the
<body>
element of the checkout
page. Dynamically replace the value of the form action attribute and JWT POST
parameter with the response values discussed in Step 1: Setup Service. See this example.Initiate the Device Data Collection Iframe
<iframe id="cardinal_collection_iframe" name="collectionIframe" height="10" width="10" style="display: none;"></iframe> <form id="cardinal_collection_form" method="POST" target="collectionIframe" action=https://centinelapistag.cardinalcommerce.com/V1/Cruise/Collect> <input id="cardinal_collection_form_input" type="hidden" name="JWT" value="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJSZWZlcmVuY2VJZCI6ImE0NjVlYzU1LTMwNTEtN GYwZC05MGE0LWZjMDNlMGE2MWQxOSIsIlJldHVyblVybCI6Imh0dHA6XC9cL2xvY2FsaG9zdDo4MDgyXC9yZXF1ZX N0LWNhdGNoZXJcL2NhdGNoLXJlcXVlc3QucGhwIiwianRpIjoianRpXzVmMDVkM2VkY2U0MjYzLjc5MjQwNzMzIi wiaWF0IjoxNTk0MjE3NDUzLCJpc3MiOiI1YjIzZjhjMGJmOWUyZjBkMzQ3ZGQ1YmEiLCJPcmdVbml0SWQiOiI1 NWVmM2YwY2Y3MjNhYTQzMWM5OWI0MzgifQ.Yw9cB9Hdrg71GPL40oAC0g3CVKYElNGe0uvN9JAaw2E"> </form>
Submitting the Device Data Collection Iframe
Add JavaScript to invoke the iframe form POST. Place the JavaScript after the closing
</body>
element as shown in this example. The JavaScript
invokes the iframe form POST automatically when the window loads. You must submit it
before requesting the Check Enrollment service.JavaScript to Invoke the Iframe Form POST
<script> window.onload = function() { var cardinalCollectionForm = document.querySelector('#cardinal_collection_form'); if(cardinalCollectionForm) // form exists cardinalCollectionForm.submit(); } </script>
Receiving the Device Data Collection URL Response
Receiving the response indicates that the device data collection URL completed its processing.
The response is an event callback that contains a message with the status of the
device data collection process.
Use the
event.origin
URL that corresponds to your environment: - Test:https://centinelapistag.cardinalcommerce.com
- Production:https://centinelapi.cardinalcommerce.com
Study the example below to understand how to subscribe to the event. Add JavaScript
to receive the response from the device data collection iframe. Place the JavaScript
after the closing
</body>
element.Listen for Device Data Collection Response
window.addEventListener("message", function(event) { if (event.origin === https://centinelapistag.cardinalcommerce.com) { console.log(event.data); } }, false);
This example shows a response payload from the event. None of the returned data needs
to be stored for future use.
Event Listener Callback Payload
{ "MessageType": "profile.completed", "Session Id": "f54ea591-51ac-48de-b908-eecf4ff6beff", "Status": true }
Step 3: Payer Authentication Check Enrollment Service
Request the Check Enrollment service only after you receive the device data collection
response. Checking enrollment before receiving the device data collection response stops
the data collection process. Data collection can take up to 10 seconds. The merchant
should set a timer that expires after 10 seconds of waiting for a response to the data
collection so that the check enrollment service starts even when the device data
collection response was not received.
You must include these 11 browser field values in the check enrollment request. These
fields provide the information that that ensures a transaction qualifies as an EMV
3-D Secure
transaction. The information in these fields provides a
backup for the occasions when the device data collection fails to complete. - consumerAuthenticationInformation.deviceChannel
- deviceInformation.httpAcceptContent
- deviceInformation.httpBrowserColorDepth
- deviceInformation.httpBrowserJavaEnabled
- deviceInformation.httpBrowserJavaScriptEnabled
- deviceInformation.httpBrowserLanguage
- deviceInformation.httpBrowserScreenHeight
- deviceInformation.httpBrowserScreenWidth
- deviceInformation.httpBrowserTimeDifference
- deviceInformation.ipAddress
- deviceInformation.userAgentBrowserValue
With the device data collected, the issuer runs a risk assesment that results in one of
these outcomes:
- Frictionless success (low risk)
- Challenge required (moderate risk)
- Frictionless failure or decline (high risk)
Figure:
Process Flow for Checking Enrollment in Payer Authentication
Best Practices
Follow these practices for this step to achieve optimal performance:
- Do not start checking enrollment until the device data collection is complete.
- Notifiy cardholders to contact their bank for instructions if a problem occurs. Information about additional action required of the cardholder should be displayed on the checkout page. Providing instructions to the customer avoids multiple attempts to resubmit the same card.
Request Fields
The
consumerAuthenticationInformation.referenceId
field is mapped from the consumerAuthenticationInformation.referenceId
field as discussed in Step 1: Setup Service.The
consumerAuthenticationInformation.returnUrl
value is set to the URL to which the issuing bank redirects
the customer as discussed in Step 4: Step-Up Iframe.To request the Check Enrollment service, you must send the encrypted payment data or a
token or some other equivalent of card data used by your integration. The request fields
can include any of these:
- paymentInformation.card.number
- paymentInformation.fluidData.descriptor
- paymentInformation.fluidData.value
- paymentInformation.customer.customerID
- tokenInformation.transientToken
These fields are required (merchant ID is in the header):
- buyerInformation.mobilePhone(if no other phone number is available)
- buyerInformation.workPhone(if no other phone number is available)
- consumerAuthenticationInformation.referenceId
- consumerAuthenticationInformation.returnUrl
- deviceInformation.ipAddress
- orderInformation.amountDetails.currency
- orderInformation.amountDetails.totalAmount
- orderInformation.billTo.address1
- orderInformation.billTo.administrativeArea
- orderInformation.billTo.country
- orderInformation.billTo.email
- orderInformation.billTo.firstName
- orderInformation.billTo.lastName
- orderInformation.billTo.phoneNumber(if no other phone number is available)
- orderInformation.billTo.postalCode
- paymentInformation.card.expirationMonth
- paymentInformation.card.expirationYear
- paymentInformation.card.cardType
- paymentInformation.card.number
You can send additional request data to reduce your issuer step-up authentication rates.
Send all available fields. As a backup, if device data collection fails, include the 11
device information fields listed among the optional fields for the Check Enrollment
service in your request. If a failure does occur, adding these device information fields
ensures a transaction is not downgraded. If you do not have data for a field, do not
send dummy data.
The size of the step-up iframe discussed in Step 4: Step-Up Iframe can vary depending on the EMV
3-D Secure
version of the transaction. You
can request the size of the challenge window in the consumerAuthenticationInformation.acsWindowSize
request field. Requesting a specific window size does not guarantee this size. Parsing the PAReq as
described in Step 4: Step-Up Iframe determines the actual
size.
Interpreting the Check Enrollment Response
It is important to check the status values in the response. These possible statuses are
the same for all card types.
PENDING_AUTHENTICATION
PENDING_AUTHENTICATION
- VERes enrolled =Y
- PARes status =C
The account number is enrolled in payer authentication. The cardholder is challenged
to authenticate. Authenticate the cardholder before authorizing the transaction.
AUTHENTICATION_SUCCESSFUL
AUTHENTICATION_SUCCESSFUL
Frictionless authentication was successful/Stepup authentication is not required.
- VERes enrolled =Y
- PARes status =Y
The account is enrolled in payer authentication, and the cardholder was successfully
authenticated. If enrollment and authorization are made in separate calls, the payer
authentication data must be included in the authorization request to receive
liability shift protection.
Attempt Stand-in Frictionless Authentication
- VERes enrolled =Y
- PARes status =A
This status indicates that the account is enrolled in payer authentication, but the issuer does
not support the program. This is called
stand-in authentication
. If check
enrollment and authorization are made in separate calls, the payer authentication
data must be included in the authorization request to receive liability shift
protection.Card Not Enrolled
- VERes enrolled =BorU
This status indicates that the account is not eligible for a payer authentication program,
authentication was bypassed, or an error or timeout occurred. If enrollment and
authorization are made in separate calls, you can request authorization, but there
is no liability shift protection.
Unavailable Frictionless Authentication
- VERes enrolled =Y
- PARes status =U
This status indicates that the account is enrolled in payer authentication, but authentication is
currently unavailable. The merchant can attempt to retry authentication or proceed
with authorization. If enrollment and authorization are made in separate calls, you
can continue and request authorization, but there is no liability shift protection.
Without authentication of the customer, the merchant remains liable for any
chargeback.
AUTHENTICATION_FAILED
AUTHENTICATION_FAILED
Failed Frictionless Authentication
- VERes enrolled =Y
- PARes status =N
This status indicates that the account is enrolled in payer authentication but
frictionless authentication failed. Merchants cannot submit this transaction for
authorization. Instead, ask for another form of payment.
Rejected Frictionless Authentication
- VERes enrolled =Y
- PARes status =R
This status indicates that the account is enrolled in payer authentication but
frictionless authentication was rejected by the issuing bank without requiring a
challenge. Merchants cannot submit this transaction for authorization. Instead, ask
for another form of payment.
When
an AUTHENTICATION_FAILED
status occurs, the merchant should display a message
from the card issuer to the cardholder using the consumerAuthenticationInformation.cardholderMessage
field. The text
of the message is provided by the ACS/issuer during a frictionless or decoupled
transaction to convey information to the cardholder. An message example might be,
“Additional authentication is needed for this transaction, contact (issuer name) at
xxx-xxx-xxxx.” An example of the entry that would appear in the log for such an
occurrence is: "cardholderInfo":"You cannot complete this purchase right now. For
help, call CommBank at (111) 555-2222"Important Response Fields
When you receive a response, you also receive these fields:
PENDING_AUTHENTICATION
- consumerAuthenticationInformation.stepUpUrldiscussed in Step 4: Step-Up Iframe.
- consumerAuthenticationInformation.accessTokendiscussed in Step 4: Step-Up Iframe.
These fields contain values that are used in the Step-Up service, which runs when a
customer is challenged to authenticate.
Step 4: Step-Up Iframe
Initiate step-up authentication on the front end after you receive the response as
discussed in Step 3: Payer Authentication Check Enrollment Service. Note that frictionless
authentication does not require this step-up iframe step. This step is only for step-up
authentication when the issuing bank wants to challenge the cardholder.
When a challenge is needed to prove a customer's identity, a JSON Web Token is returned
to you that contains a step-up URL. You open an iframe where the access token to the
step-up URL (also known as the endpoint) is posted. The iframe must be sized
appropriately to enable the cardholder to complete the challenge. The iframe manages
customer interaction with the card-issuing bank’s access control server. The bank asks
the customer to provide identifying information. Once the customer completes the
challenge, the process moves to validating the information that the customer sent.
Figure:
Process Flow for Step-Up Authentication
Best Practices
These practices should be followed for this step to achieve optimal performance and
to minimize potential operating issues.
- When a transaction requires a challenge, according to EMVCo protocol, the challenge must be issued within 30 seconds of the Enrollment Check response. When more than 30 seconds elapses, the ACS times out.
Building the Iframe Parameters
The iframe that you display should be sized to enable the customer bank to exchange
authentication information between itself and the customer. Because a bank can use
various methods to authenticate, the iframe has four size options. The bank will request
that you ensure that the iframe size provides room to display the bank logo and the card
network being used, the amount of the transaction, and a brief explanation of what the
customer needs to do. You manage the size of the challenge window to ensure that the
challenge window matches with your presentation screen. You choose the iframe parameters
and pass the window size to the issuer.
- Use the JWT POST Parameter value from theconsumerAuthenticationInformation.accessTokenresponse field and do a form POST within the iframe to the step up Url value that is passed by theconsumerAuthenticationInformation.stepUpUrlresponse field.
- MD POST Parameter: Merchant-defined data returned in the response. This field is optional.
- Iframe height and width: EMV3-D Secure2.x offers multiple size options:
- Use theconsumerAuthenticationInformation.acsWindowSizerequest field to request a specific window size.
- Use theconsumerAuthenticationInformation.pareqresponse field to determine iframe dimensions by Base64 decoding the string and cross-referencing a Challenge Window Size value with its corresponding size.
This table lists the possible values for iframe size and the sizes associated with the
value.
Challenge Window Size Value | Step-Up Iframe Dimensions (Width x Height
in pixels) |
---|---|
01 | 250 x 400 |
02 | 390 x 400 |
03 | 500 x 600 |
04 | 600 x 400 |
05 | Full screen |
This is an example for the decoded value.
Challenge Window Size Decoded Value
{ "messageType":"CReq","messageVersion":"2.2.0", "threeDSServerTransID":"c4b911d6-1f5c-40a4-bc2b-51986a98f991", "acsTransID":"47956453-b477-4f02-a9ef-0ec3f9f779b3", "challengeWindowSize":"02" }
Creating the Iframe
Create an iframe that is the same size as the Challenge Window Size to send a POST
request to the step-up URL. Study this example.
Send a POST Request to the Step-Up URL
<iframe name=”step-up-iframe" height="400" width="400"></iframe> <form id="step-up-form" target=”step-up-iframe" method="post" action=" https://centinelapistag. cardinalcommerce.com/V2/Cruise/StepUp"> <input type="hidden" name="JWT" value="eyJhbGciOiJIUz I1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmNmFmMTRmOS04YWRjLTRiNzktOGVkYS04YWVlMTI2NTkzZTEiLCJp YXQiOjE1OTYwNTEyNzYsImlzcyI6IjVkZDgzYmYwMGU0MjNkMTQ5OGRjYmFjYSIsImV4cCI6MTU5NjA1NDg3NiwiT3Jn VW5pdElkIjoiNTVlZjNmNTZmNzIzYWE0MzFjOTlkNTRiIiwiUGF5bG9hZCI6eyJBQ1NVcmwiOiJodHRwczovLzBt ZXJjaGFudGFjc3N0YWcuY2FyZGluYWxjb21tZXJjZS5jb20vTWVyY2hhbnRBQ1NXZWIvY3JlcS5qc3AiLCJQYXlsb2 FkIjoiZXlKdFpYTnpZV2RsVkhsd1pTSTZJa05TWlhFaUxDSnRaWE56WVdkbFZtVnljMmx2YmlJNklqSXVNaTR3SWl3 aWRHaHlaV1ZFVTFObGNuWmxjbFJ5WVc1elNVUWlPaUpsTkdKaVpqazNNeTFqTW1FeUxUUTNOREF0T1RWak5 DMWpNVGhoTVRNeE16TmlPRFFpTENKaFkzTlVjbUZ1YzBsRUlqb2lNVGMzT0RFM016SXROREk1TVMwME1HUmlMVG xoTkRndE1ESm1OREpoTlRZd1lqYzVJaXdpWTJoaGJHeGxibWRsVjJsdVpHOTNVMmw2WlNJNklqQXlJbjAiLCJUcm Fuc2FjdGlvbklkIjoiQnh5a0hYVEp4M1JuNHBGWnF1bjAifSwiT2JqZWN0aWZ5UGF5bG9hZCI6dHJ1ZSwiUmV0 dXJuVXJsIjoiaHR0cHM6Ly9taWNoYWVsdGF5bG9yLmlvL2N5YnMvc3RvcmVEZW1vL3B1YmxpYy9saXN0ZW5lci5 weSJ9.H8j-VYCJK_7ZEHxGz82_IwZGKBODzPaceJNNC99xZRo" /> <input type="hidden" name="MD" value="optionally_include_custom_data_that_will_be_returned_as_is”/> </form>
Invoking the Iframe
Add JavaScript to invoke the iframe form POST. Place the JavaScript after the closing
</body>
tag as shown in the example below. The JavaScript
invokes the iframe form POST automatically when the window loads. While you can
submit the form at a different time, you must submit the form before requesting the
validation service.<script> window.onload = function() { var stepUpForm = document.querySelector('#step-up-form'); if(stepUpForm) // Step-Up form exists stepUpForm.submit(); } </script>
Receiving the Step-Up Results
After the customer interacts with the issuing bank, the customer is returned to the
consumerAuthenticationInformation.returnUrl
within the iframe as specified
in Step 3: Payer Authentication Check Enrollment Service. The payload sent to the return URL is
URL-encoded and Base64-encoded (see the example below). Since you host the return URL,
you can then close the iframe after redirection.The response sent back to the return URL contains these values:
- Transaction ID: (consumerAuthenticationInformation.authenticationTransactionIdresponse field). This value is used in Step 5: Payer Authentication Validation Service.
- MD: merchant data returned if present in the POST to step-up URL; otherwise, null.
POST to Return URL
TransactionId=BwNsDeDPsQV4q8uy1Kq1&MD=null
Step 5: Payer Authentication Validation Service
When you receive the step-up response as discussed in Step 4: Step-Up Iframe, verify that the customer was successfully
authenticated. Note that frictionless authentication does not require this validation
step. Validation is required only for step-up authentication.
Figure:
Process Flow for Validation of the Cardholder
Request Fields
The
consumerAuthenticationInformation.authenticationTransactionId
field in this step is
mapped from the consumerAuthenticationInformation.authenticationTransactionId
field in Step 4: Step-Up Iframe.These fields are required:
- clientReferenceInformation.code
- consumerAuthenticationInformation.authenticationTransactionId
- orderInformation.amountDetails.currency
- orderInformation.amountDetails.total AmountororderInformation.lineItems.unitPrice
- paymentInformation.card.expirationMonth
- paymentInformation.card.expirationYear
- paymentInformation.card.number
- paymentInformation.card.type
For examples, see Validating a Challenge.
Interpreting the Validation Response
If the authentication is rejected (TransStatus R), Visa,
and American Express recommend not proceeding to
authorization. Instead, ask the customer to use another payment method.
China UnionPay, Elo,
JCB,
Diners Club, Discover,Proceed with the order according to the validation response that you receive. The
possible validation response statuses are the same for all of the card types.
AUTHENTICATION_SUCCESSFUL
AUTHENTICATION_SUCCESSFUL
Successful Step-Up Authentication
- PARes status =Y
Step-up authentication of the customer was successful. If you request the Validate
Authentication and Authorization services separately, you must add the required
payer validate payload values to your authorization request before you can receive
chargeback protection that shifts the liability to the issuer.
Unavailable Step-up Authentication
- PARes status =U
Step-up authentication was unavailable and the customer could not be authenticated.
This status does not necessarily indicate any fraudulent intent from the customer.
Merchants can either attempt to retry authentication or continue to authorization.
If you are making separate validatation and authorization calls, you can still
proceed with the authorization request but there is no liability shift. Without
authentication, the merchant remains liable for any chargeback if it should occur
with the transaction.
AUTHENTICATION_FAILED
AUTHENTICATION_FAILED
Unavailable Step-up Authentication
- PARes status =N
The customer could not be authenticated. Do not submit this transaction for
authorization. Instead ask the customer for another form of payment.
Error
If you receive an error from the payment card company, process the order according to
your business rules. If the error occurs frequently, report it to customer
supportcustomer supportcustomer support. If you receive a system error, determine
the cause of the error and proceed with card authorization only when appropriate.
Redirecting Customers to Pass or Fail Message Page
After authentication is complete, redirect the customer to a page containing a success or
failure message. You must ensure that the messages that display to customers are
accurate and complete, and that the message addresses all possible scenarios for
enrolled and non-enrolled cards. For example, if the authentication fails, display a
message such as this to the customer:
Authentication Failed Your card issuer cannot authenticate this card. Please select another card or form of payment to complete your purchase.
Combining the Authentication and the Authorization Services
After the customer is successfully authenticated, you must get authorization from the
issuing bank to proceed with the transaction. While these are separate processes, it is
recommended that you link these services by immediately passing the returned values into
a request to authorize the transaction. The two services can be linked when:
- Checking enrollment determines that no challenge is required. Pass the values returned from checking enrollment to the authorization request.
- Validating a challenge authenticates the cardholder. Pass the values returned from validating the challenge to the authorization request.
With the same request transactions, a different endpoint must be referenced for the
authorization, and an additional element must be added to the JSON. When step-up
authentication is required, transaction processing stops to allow completion of
authentication, and authorization is not called until after the challenge response is
validated. This integration method is recommended.
Depending on your card type, you might not receive the XID value. If you receive this
field under a frictionless scenario, it is required for authorization.
Combining Check Enrollment and the Authorization Services
Receiving certain responses from checking enrollment allows the authorization to be
requested immediately afterwards. The possible checking enrollment responses are:
- Successful frictionless authentication
- Attempted stand-in frictionless authentication
- Issuer does not support the payer authentication program
- Account is not eligible for a payer authentication program
- Unavailable frictionless authentication
- Failed frictionless authentication
- Rejected frictionless authentication
In all checking enrollment scenarios, it is recommended that you integrate these services
by combining the checking enrollment and authorization services into a single
transaction. When the services are combined, one of these conditions occurs:
- No additional integration work is required to manually map the appropriate check enrollment results to the corresponding authorization request fields.
- If further authentication is needed, the authorization cannot happen until after authentication completes and you can proceed to the next steps for challenging.
With same request transactions, a different endpoint must be referenced for the
authorization, and an additional element must be added to the JSON. Depending on your
card type, you might not receive the XID value. If you receive this field under a
frictionless scenario, it is required for authorization.
Check Enrollment Response Fields and Their Equivalent Authorization Request
Fields
When a customer is authenticated without a challenge, the transaction can be authorized
either in the same request or in a separate authorization request. Whether authorization
occurs in the same request or a separate request, the values from the check enrollment
response must be passed to the authorization request to qualify for a liability shift.
This table matches the check enrollment fields with their equivalent authorization
fields. Sometimes a check enrollment response field is the same field used in the
authorization request.
Be sure to include the following card-specific information in your authorization
request:
- For Visa,JCB,China UnionPay, Elo,Diners Club, Discover,and American Express include theCAVV.
- For Mastercard only, include the collection indicator and theAAV(also known asUCAF).
Identifier | Enrollment Check Response Field | Card Authorization Request Field |
---|---|---|
E-commerce indicator | consumerAuthenticationInfo
rmation.ecommerceIndicator | processingInformation.commerceIndicator |
Collection indicator | consumerAuthenticationInfo
rmation.ucafCollectionIndicator | consumerAuthenticationInfo
rmation.ucafCollectionIndicator |
CAVV | consumerAuthenticationInformation.cavv | consumerAuthenticationInfo
rmation.cavv |
AAV | consumerAuthenticationInfo
rmation.ucafAuthentication Data | consumerAuthenticationInfo
rmation.ucafAuthentication Data |
XID | consumerAuthenticationInformation.xid
| consumerAuthenticationInfo
rmation.xid |
Result of the enrollment check for Asia, Middle East, and
Africa Gateway | consumerAuthenticationInfo
rmation.veresEnrolled | consumerAuthenticationInfo
rmation.veresEnrolled |
3-D Secure version | consumerAuthenticationInfo
rmation.specificationVersion | consumerAuthenticationInfo
rmation.paSpecificationVersion |
Directory server transaction ID | consumerAuthenticationInfo rmation.directoryServerTran
sactionId | consumerAuthenticationInfo
rmation.directoryServerTransactionId |
Combining the Validation and the Authorization Services
After the customer is successfully authenticated, you must get authorization from the
issuing bank to proceed with the transaction. While these are separate processes, you
should integrate these two services into a single process whenever possible. When you do
so, no additional integration work is required on your part to manually map the
appropriate validation results to corresponding authorization request fields.
With the same request transactions, a different endpoint must be referenced for the
authorization, and an additional element must be added to the JSON. When step-up
authentication is required, transaction processing stops to allow authentication to
complete, and authorization is not called until after the challenge response is
validated. This integration method is highly recommended. Depending on your card type,
you might not receive the XID value. If you receive this field under a frictionless
scenario, it is required for authorization.
Validation Fields and their Equivalent Authorization Fields
When a customer is authenticated after a challenge, the transaction can be authorized
in the same request or in a separate authorization request. Whether
authorization is combined with validation or occurs in a separate request,
the values from the validation response must be passed to the authorization
request to qualify for a liability shift to the issuing bank. This table
pairs the Validation field with its equivalent Authorization API field.
Be sure to include the following card-specific information in your
authorization request:
- For Visa,JCB,China UnionPay, Elo,Diners Club, Discover,and American Express include the CAVV.
- For Mastercard only, include the collection indicator and the AAV (also known as UCAF).
Identifier | Validation Check Response Field | Card Authorization Request Field |
---|---|---|
E-commerce
indicator | consumerAuthenticationInforma
tion.indicator | processingInformation.com
merceIndicator |
Collection indicator | consumerAuthenticationInforma
tion.ucafCollectionIndicator | consumerAuthenticationInfo
rmation.ucafCollectionIndicator |
CAVV | consumerAuthenticationInforma tion.cavv | consumerAuthenticationInfo
rmation.cavv |
AAV | consumerAuthenticationInforma
tion.ucafAuthenticationData | consumerAuthenticationInfo
rmation.ucafAuthentication Data |
XID | consumerAuthenticationInforma
tion.xid | consumerAuthenticationInfo
rmation.xid |
3-D Secure version | consumerAuthenticationInforma
tion.specificationVersion | consumerAuthenticationInfo
rmation.paSpecificationVersion |
Directory server transaction ID | consumerAuthenticationInforma
tion.directoryServerTransactionId | consumerAuthenticationInfo
rmation.directoryServerTransactionId |
Implementing SDK Payer Authentication
This chapter summarizes the process of integrating SDK Payer Authentication services into
your mobile application. Payer authentication services use the Mobile SDK for iOS or
Android to facilitate the authentication. New SDK versions are frequently released and
you should ensure that you stay current with the latest release. One way to stay
informed on about new releases is to subscribe to a distribution list to be informed of
updates and other product announcements. You can subscribe by going to this link: Cardinal SDK Notifications.
Implementing the SDK in your mobile application requires either Android or iOS platform
application programming skills. Android API 21 or iOS 9 and XCode 8 are required.
The SDK is only designed to handle EMV
3-D Secure
2.x transactions. Implementation Overview
Notify your account representative that you want to implement payer authentication (EMV
3-D Secure
). Give the representative the merchant ID that you will use
for testing. For more information, see Payer Authentication Merchant Workflow.IMPORTANT
The SDK integration operates in a similar
manner to the Direct API integration, but SDK does not have a Setup service step.
Implementation tasks include:
- Download, import, and configure the Mobile SDK for either iOS or Android.
- For each purchase request:
- Build the authentication request.
- Invoke the authentication.
- Handle declines.
- Make another back-end, server-to-server call to request these services:: Payer Authentication Validation: Card Authorization service (optional)
- Use the test cases to test your preliminary code and make appropriate changes. See Testing Payer Authentication.
- Ensure that your account is configured for production.
Note that calling the Payer Authentication Setup Service is not required with the SDK
mobile version.
Process Flow for SDK Integration
The steps required to integrate payer authentication into an SDK mobile application are
described below.
- Contact customer support to register for an API key.
- Download and import the Mobile SDK for either iOS or Android.
- Set up your build environment.
- Configure your SDK.
- Setup the initial request to Cardinal.
- Create an API request to your merchant server to request the Enrollment Check service, passing in transaction details and theconsumerAuthenticationInformation.referenceIdrequest field.
- If the issuing bank does not require authentication, you receive this information in the Enrollment Check response:
- E-commerce indicator (consumerAuthenticationInformation.ecommerceIndicator)
- CAVV (all card types except Mastercard) (consumerAuthenticationInformation.cavv)
- AAV (Mastercard only) (consumerAuthenticationInformation.ucafCollectionIndicator)
- Transaction ID (consumerAuthenticationInformation.xid)
- 3-D Secureversion (consumerAuthenticationInformation.specificationVersion)
- Directory server transaction ID (consumerAuthenticationInformation.directoryServerTransactionId)
- If the issuing bank requires authentication, you receive a response with the payload and the transaction ID that you include in theCardinal.continuecall from your SDK.
- The Mobile SDK displays an authentication window, and the customer enters the authentication information into that window.
- The bank validates the customer credentials and a JSON Web Token (JWT) is returned by the SDK in the onValidated callback that the merchant is required to validate server-side for security reasons.
- Create an API call to your merchant server to request the Validate Authentication service, extracting the processor transaction ID value from the JWT and sending it in theconsumerAuthenticationInformation.authenticationTransactionIdrequest field. You receive the e-commerce indicator, CAVV or AAV, transaction ID,3-D Secureversion, and directory server transaction ID.
Verify that the authentication was successful and continue processing your
order.
You must pass all pertinent data for the card type and processor in your
authorization request. For more information, see Requesting the Validation Service.
Prerequisites for SDK Implementation
Before you can implement payer authentication services, your business team must contact
your acquirer and to establish the service. Your
software development team should become familiar with the API fields and technical
details of this service.
Visa Acceptance Solutions
Creating a mobile application with the SDK implementation, requires that you perform some
preliminary procedures before the starting the actual payer authentication
implementation process. These processes involving JWTs are described in this
section.
Credentials/API Keys
API keys are required to create the JSON Web Token (JWT). For further information,
contact customer support
.
You will receive an email with your username and a temporary password. Your username will
be in this format:
visaacceptancesolutions_merchant name_contact name
For example:
visaacceptancesolutions_petairways_peter
Once you receive your credentials, log in to your JFrog account and update your temporary
password. Follow the process below to generate your API key.
Generating your API Key:
- Log in to your JFrog account.
- In the top-right of the JFrog Platform, select the Welcome drop-down menu and clickEdit Profile.
- Enter your password and clickUnlock.
- Under Authentication Settings, clickGenerate API Key.
Mobile Device Data Collected
One of the key components to authenticating a cardholder during an online transaction is
to compare information about the mobile device that the buyer is using to the
information about mobile devices that the buyer used in past transactions. This
information is maintained in the access control server (ACS) at the issuing bank.
In mobile device transactions, information collected about the buyer device can
include:
- Device ID
- Device model
- Operating system version
- System language
- Country
- Time zone
- Screen dimensions
A successful device data collection process that includes the eleven browser fields listed
in the check enrollment step, increases the chances of a frictionless authentication.
The decision to escalate a transaction to a level of risk high enough to require
challenging the buyer to authenticate their identity is managed by business rules that
are configured in the issuer's risk analysis software that evaluates each
transaction.
Using the Android SDK
A mobile SDK is available for integrating payer authentication services into mobile
applications running on the Android platform.
Updating the Gradle Build Properties
In Android Studio, open the app directory (which can also be labeled Module:
app) and open the
build.gradle
file. Edit the Gradle file located in the app
directory. Add the contents shown in the example below to the Gradle
file.If your project uses Progurad, add the lines shown below to therepositories { ... maven { url "https://cardinalcommerceprod.jfrog.io/artifactory/android" credentials { username Artifactory username password Artifactory user API Key } } } dependencies { ... //Cardinal Mobile SDK implementation 2.5-1 }
proguard-rules.pro
file.
-keep class com.cardinalcommerce.dependencies.internal.bouncycastle.** -keep class com.cardinalcommerce.dependencies.internal.nimbusds.**
Configuring the Android SDK
Get the instance of the Cardinal object by running the
Cardinal.getInstance()
process. Use the default configuration options. See the example below to understand
how to run the Cardinal.configure()
process. For more details on configuration, refer to the configuration options table
after the example.
private Cardinal cardinal = Cardinal.getInstance(); @Override protected void onCreate(Bundle savedInstanceState) { CardinalConfigurationParameters cardinalConfigurationParameters = new CardinalConfigurationParameters(); cardinalConfigurationParameters.setEnvironment(CardinalEnvironment.STAGING); cardinalConfigurationParameters.setTimeout(8000); JSONArray rType = new JSONArray(); rType.put(CardinalRenderType.OTP); rType.put(CardinalRenderType.SINGLE_SELECT); rType.put(CardinalRenderType.MULTI_SELECT); rType.put(CardinalRenderType.OOB); rType.put(CardinalRenderType.HTML); cardinalConfigurationParameters.setRenderType(rType); cardinalConfigurationParameters.setUiType(CardinalUiType.BOTH); UiCustomization yourUICustomizationObject = new UiCustomization(); cardinalConfigurationParameters.setUICustomization(yourUICustomizationObject); cardinal.configure(this,cardinalConfigurationParameters); }
Method | Description | Default Values |
---|---|---|
setEnableDFSync (boolean enableDFSync) | On setting true, onSetupCompleted is called after the
collected device data is sent to the server. | False |
setEnableQuickAuth (boolean enableQuickAuth) | Sets enable quick auth false. | False |
setEnvironment(Setting up mobile SDK - Android- V
2.1#CardinalEnvironment environment) | Sets the environment to which the SDK must connect. | CardinalEnvironment. PRODUCTION |
setProxyAddress(java.lang. String proxyAddress) | Sets the proxy to which the SDK must connect. | “ “ |
setRenderType(org.json. JSONArray renderType) | Sets renderLists all user interface types that the device
supports for displaying specific challenge user interfaces within the
SDK. | JSONArray rType = new JSONArray(); rType.put(Cardinal RenderType.OTP); rType.put(Cardinal RenderType.SINGLE_SELECT); rType.put(Cardinal RenderType.MULTI_SELECT); rType.put(Cardinal RenderType.OOB); rType.put(Cardinal RenderType.HTML); |
setTimeout(int timeout) | Sets the maximum amount of time (in milliseconds) for all
exchanges. | 8000 |
setUICustomization (UiCustomization UI Customization) | Sets UICustomization | Device Default Values |
setUiType(CardinalUiType uiType) | Sets all user interface types that the device supports for
displaying specific challenge user interfaces within the SDK. | CardinalUiType.BOTH |
Setting Up the Initial Request
Run the
Cardinal.init()
process to:- Begin the communication process with Cardinal.
- Authenticate your credentials (server JWT).
- Complete the data collection process.
By the time the customer is ready to check out, all necessary preprocessing is
complete.
Each time a user begins a mobile transaction, Cardinal assigns a unique identifier to
the consumer session called a
consumerSessionId
. This
consumerSessionId
ensures that Cardinal matches the correct
device data collection results to a request. Visa Acceptance Solutions
calls this
session identifier payerAuthEnrollService_referenceID
. You must
assign the value of the consumerSessionId
field to the
payerAuthEnrollService_referenceID
field so that Visa Acceptance Solutions
can also track the calls for each user session. Study the code example shown below for completing the
cardinal.init()
process. Cardinal.init() (Android SDK)
cardinal = Cardinal.getInstance(); String serverJwt = "INSERT_YOUR_JWT_HERE"; cardinal.init(serverJwt , new CardinalInitService() { /** * You may have your Submit button disabled on page load. Once you are * set up for CCA, you may then enable it. This will prevent users * from submitting their order before CCA is ready. */ @Override public void onSetupCompleted(String consumerSessionId) { } /** * If there was an error with set up, Cardinal will call this function * with validate response and empty serverJWT * @param validateResponse * @param serverJwt will be an empty */ @Override public void onValidated(ValidateResponse validateResponse, String serverJwt) { } });
See Running Payer Authentication with SDK for the next steps.
Using the iOS SDK
A mobile SDK is available for integrating payer authentication services into mobile
applications running on the iOS platform.
Downloading and Importing the SDK
Download the
CardinalMobile.framework
file using the cURL program in
this example.Download CardinalMobile.framework
curl -L -u <USER_NAME> :<API_KEY> https://cardinalcommerceprod.jfrog.io/artifactory/ios/<VERSION>-<BUILD_NUMBER>/cardinalmobilesdk.zip -o <LOCAL_FILE_NAME.EXT> #Example: curl -L -u UserName:ApiKey "https://cardinalcommerceprod.jfrog.io/artifactory/ios/2.2.5-1/cardinalmobilesdk.zip" -o cardinalmobile2.2.5-1.zip
Download the
CardinalMobile.xcframework
file using the cURL in this
example.Download CardinalMobile.xcframework
curl -L -u <USER_NAME> :<API_KEY> https://cardinalcommerceprod.jfrog.io/artifactory/ios/<VERSION>-<BUILD_NUMBER>/CardinalMobileiOSXC.zip -o <LOCAL_FILE_NAME.EXT> #Example: curl -L -u UserName:ApiKey "https://cardinalcommerceprod.jfrog.io/artifactory/ios/2.2.5-1/CardinalMobileiOSXC.zip" -o cardinalmobile2.2.5-1.zip
In your XCode project, drag the
CardinalMobile.framework
file into the Frameworks group in
your Xcode Project. (Create the group if it does not already exist.) In the import
dialog box, check the box to Copy items into the destinations group folder (or
Destination: Copy items if needed). The iOS SDK files are now available for linking
in your project.Configuring Your Build Environment
Follow these to configure your build environment:
- Open Xcode, and in the source list to the left of the main editor area, choose your project.
- Under the Targets section, select your application and open theGeneraltab.
- Expand the Embedded Binaries section and click the small plus (+) at the bottom of the list.
- From the list, add theCardinalMobile.frameworkfile.
Configuring the iOS SDK
Use
CardinalSession new
to create a new instance of the cardinal
object. Use the default configuration options. Study these examples to complete the
iOS SDK configuration. For more details on configuration options, refer to the table after the
examples.
CardinalSession new (iOS SDK - Objective-C)
#import <CardinalMobile/CardinalMobile.h> CardinalSession *session; //Setup can be called in viewDidLoad - (void)setupCardinalSession { session = [CardinalSession new]; CardinalSessionConfiguration *config = [CardinalSessionConfiguration new]; config.deploymentEnvironment = CardinalSessionEnvironmentProduction; config.timeout = CardinalSessionTimeoutStandard; config.uiType = CardinalSessionUITypeBoth; UiCustomization *yourCustomUi = [[UiCustomization alloc] init]; //Set various customizations here. See "iOS UI Customization" documentation for detail. config.uiCustomization = yourCustomUi; CardinalSessionRenderTypeArray *renderType = [[CardinalSessionRenderTypeArray alloc] initWithObjects: CardinalSessionRenderTypeOTP, CardinalSessionRenderTypeHTML, nil]; config.renderType = renderType; config.enableQuickAuth = false; [session configure:config]; }
CardinalSession new (iOS SDK - Swift)
import CardinalMobile var session : CardinalSession! //Setup can be called in viewDidLoad func setupCardinalSession{ session = CardinalSession() var config = CardinalSessionConfiguration() config.deploymentEnvironment = .production config.timeout = 8000 config.uiType = .both let yourCustomUi = UiCustomization() //Set various customizations here. See "iOS UI Customization" documentation for detail. config.uiCustomization = yourCustomUi config.renderType = [CardinalSessionRenderTypeOTP, CardinalSessionRenderTypeHTML] config.enableQuickAuth = true session.configure(config) }
Method | Description | Default Values | Possible Values |
---|---|---|---|
deploymentEnviron ment | The environment to which the SDK connects. | CardinalSessionEnviron mentProduction | CardinalSession Environment Staging CardinalSessionEnvi ronment Production |
timeoutInMilli seconds | Maximum amount of time (in milliseconds) for all
exchanges. | 8000 | |
uiType | Interface types that the device supports for displaying
specific challenge user interfaces within the SDK. | CardinalSessionUIType Both | CardinalSessionUIT ypeBoth CardinalSessionUIT ypeNative CardinalSessionUIT ypeHTML |
renderType | List of all the render types that the device supports for
displaying specific challenge user interfaces within the SDK. | [CardinalSessionRend erTypeOTP, CardinalSessionRend erTypeHTML, CardinalSessionRend erTypeOOB, CardinalSessionRend erTypeSingleSelect, CardinalSessionRend erTypeMultiSelect] | CardinalSessionRen derType OTP CardinalSessionRen derType HTML CardinalSessionRen derType OOB CardinalSessionRen derType SingleSelect CardinalSessionRen derType MultiSelect |
proxyServerURL | Proxy server through which the Cardinal SDK Session
operates. | nil | |
enableQuickAuth | Enable Quick Authentication | false | |
uiCustomization | Set Custom UICustomization for SDK-Controlled Challenge
UI. | nil | |
enableDFSync | Enable DF Sync to get onSetupCompleted called after
collected device data is sent to the server. | false |
Setting Up the Initial Request
Requesting the
cardinal session setup
process begins the communication process,
authenticates your credentials (server JWT), and completes the data collection
process. By the time the customer is ready to check out, all necessary preprocessing
is complete. Each time a user begins a mobile transaction, a unique value is assigned to the
uses its
can also track the requests for each user
session.
consumerSessionId
API field to identify the session. This
value ensures that the correct device data collection results are matched to each
user request. Visa Acceptance Solutions
payerAuthEnrollService_referenceID
field to contain
Cardinal's consumerSessionId
value. You must assign the value of
the consumerSessionId
field to the
payerAuthEnrollService_referenceID
field so that Visa Acceptance Solutions
Study these code examples to understand how to complete setting up the cardinal
session process. The function request must be placed in your Checkout
ViewController.
Cardinal session setup (iOS SDK - Objective-C)
NSString *accountNumberString = @"1234567890123456"; NSString *jwtString = @"INSERT_YOUR_JWT_HERE"; [session setupWithJWT:jwtString didComplete:^(NSString * _Nonnull consumerSessionId){ // // You may have your Submit button disabled on page load. Once you are // setup for CCA, you may then enable it. This will prevent users // from submitting their order before CCA is ready. // } didValidate:^(CardinalResponse * _Nonnull validateResponse) { // Handle failed setup // If there was an error with setup, cardinal will call this // function with validate response and empty serverJWT }];
Cardinal session setup (iOS SDK - Swift)
let accountNumberString = "1234567890123456" let jwtString = "INSERT_YOUR_JWT_HERE" session.setup(jwtString: jwtString, completed: { (consumerSessionId: String) in // // You may have your Submit button disabled on page load. Once you // are setup for CCA, you may then enable it. This will prevent // users from submitting their order before CCA is ready. // }) { (validateResponse: CardinalResponse) in // Handle failed setup // If there was an error with setup, cardinal will call this // function with validate response and empty serverJWT }
Running Payer Authentication with SDK
The payer authentication process in SDK requires checking whether a customer is
participating in a card authentication program. If the customer is enrolled in payer
authentication, you validate their current status in the program and authorize the
transaction. The following procedures describe how to ensure the correct data values are
passed during the payer authentication process.
Requesting the Check Enrollment Service (SDK)
After the SDK completes the device collection from your mobile application, and after the
customer clicks the Buy button, you must make a back-end, server-to-server call to
request the Enrollment Check service.
The Check Enrollment service verifies that the card is enrolled in a card authentication
program. The merchant ID is included as part of the header, but these fields are
required in the request:
- consumerAuthenticationInformation.referenceId
- orderInformation.amountDetails.currency
- orderInformation.amountDetails.totalAmount
- orderInformation.billTo.address1
- orderInformation.billTo.administrativeArea
- orderInformation.billTo.country
- orderInformation.billTo.email
- orderInformation.billTo.firstName
- orderInformation.billTo.lastName
- orderInformation.billTo.locality
- orderInformation.billTo.postalCode
- paymentInformation.card.expirationMonth
- paymentInformation.card.expirationYear
- paymentInformation.card.number
- paymentInformation.card.type
IMPORTANT
To reduce your issuer step-up authentication rates, you can send
additional request data in the order. It is best to send all available fields.
Use the enrollment check and card authorization services in the same request or in
separate requests:
- Same request:attempts to authorize the card if your customer is not enrolled in a payer authentication program. In this case, the field values that are required to prove that you attempted to check enrollment are passed automatically to the authorization service. If authentication is required, processing automatically stops.Visa Acceptance Solutions
- Separate requests: Manually include the enrollment check result values (Enrollment Check response fields) in the authorization service request (Card Authorization request fields).
Be sure to include the following card-specific information in your authorization
request:
- For Visa,JCB,China UnionPay, Elo,Diners Club, Discoverand American Express include the CAVV.
- For Mastercard only, include the collection indicator and the AAV (also known as UCAF).
These fields are listed in this table.
Identifier | Enrollment Check Response Field | Card Authorization Request Field |
---|---|---|
E-commerce indicator | consumerAuthenticationInfo
rmation.ecommerceIndicator | processingInformation.commerceIndicator |
Collection indicator | consumerAuthenticationInfo
rmation.ucafCollectionIndicator | consumerAuthenticationInfo
rmation.ucafCollectionIndicator |
CAVV | consumerAuthenticationInfo
rmation.cavv | consumerAuthenticationInfo
rmation.cavv |
AAV | consumerAuthenticationInfo
rmation.ucafAuthentication Data | consumerAuthenticationInfo
rmation.ucafAuthentication Data |
XID | consumerAuthenticationInfo
rmation.xid
and | consumerAuthenticationInfo
rmation.xid |
Result of the enrollment check for Asia, Middle East, and
Africa Gateway | consumerAuthenticationInfo
rmation.veresEnrolled | consumerAuthenticationInfo
rmation.veresEnrolled |
3-D Secure version | consumerAuthenticationInfo
rmation.specificationVersion | consumerAuthenticationInfo
rmation.paSpecificationVersion |
Directory server transaction ID | consumerAuthenticationInfo rmation.directoryServerTran
sactionId | consumerAuthenticationInfo
rmation.directoryServerTransactionId |
Interpreting the Response
In EMV
3-D Secure
, there are two possible responses: - Frictionless: No challenge or stepup to the cardholder. While frictionless authentication can indicate a successfully authenticated outcome because the customer's card is enrolled in a payer authentication program, it can also result from the bank failing or rejecting authentication without challenging the cardholder. In the frictionless authentication flow, you receive a PAResStatus of eitherY,A,N,I,R, orUwith an associated ECI value. With successful frictionless authentication, the PAResStatus =YorAand you receive a CAVV. You may also receive a PAResStatus =Iindicating successful authentication, but it might not include a CAVV.
- Challenge: The response contains PAResStatus =C. A challenge response has a payload and contains an ACS URL and a step up URL. Challenge the cardholder to provide additional authentication information and display an authentication challenge window to the cardholder so the cardholder can respond to a validation request and receive a validation response.
Authenticating Enrolled Cards
In the response from the enrollment check service, confirm that you receive
these fields and values:
- 3-D Secureversion = 2.x
- VERes enrolled = Y
- PARes status = C
These values identify whether it is an EMV
3-D Secure
2.x
transaction and that a challenge is required. After you validate these fields, you request the
Cardinal.cca_continue
process (Android SDK) or the Cardinal session continue
process (iOS SDK) for the
SDK to perform the challenge between the customer and the issuing bank.Calling Cardinal.cca_continue (Android SDK)
After you verify that a customer’s card is enrolled in a card authentication
program, you must include the payload and the
consumerAuthenticationInformation.authenticationTransactionId
response field
and incorporate them into the Cardinal.cca_continue
function as shown in this
example before proceeding with the authentication session./** * Cca continue. * * @param transactionId the transaction id * @param payload the payload * @param currentActivity the current activity * @throws InvalidInputException the invalid input exception * @throws JSONException the json exception * @throws UnsupportedEncodingException the unsupported encoding exception */ try { cardinal.cca_continue("[TRANSACTION ID ]", "[PAYLOAD]", this, new CardinalValidateReceiver() { /** * This method is triggered when the transaction * has been terminated. This is how SDK hands back * control to the merchant's application. This method will * include data on how the transaction attempt ended and * you should have your logic for reviewing the results of * the transaction and making decisions regarding next steps. * JWT will be empty if validate was not successful. * * @param validateResponse * @param serverJWT */ @Override public void onValidated(Context currentContext, ValidateResponse validateResponse, String serverJWT) { } }); } catch (Exception e) { // Handle exception }
Calling Cardinal session continue (iOS SDK)
When you have verified that a customer’s card is enrolled in a card authentication
program, include the payload, and the response field and incorporate
them into the
Cardinal session continue
function before proceeding with the
authentication session.In the
Cardinal session continue
function, you should pass a class conforming
to the CardinalValidationDelegate
protocol (and implement the
stepUpDidValidate
method) as a parameter. These examples show a class
conforming to the CardinalValidationDelegate
protocol. Objective-C Examples
Objective-C Examples
Cardinal session continue (iOS SDK - Objective-C)
@interface YourViewController()<CardinalValidationDelegate>{ //Conform your ViewController or any other class to CardinalValidationDelegate protocol } @end @implementation YourViewController /** * This method is triggered when the transaction has * been terminated.This is how SDK hands back * control to the merchant's application. This method will * include data on how the transaction attempt ended and * you should have your logic for reviewing the results of * the transaction and making decisions regarding next steps. * JWT will be empty if validate was not successful * * @param session * @param validateResponse * @param serverJWT */ -(void)cardinalSession:(CardinalSession *)session stepUpDidValidateWithResponse:(CardinalResponse *)validateResponse serverJWT:(NSString *)serverJWT{ } @end
If the
Cardinal.continue
process is requested in the same class, request the method shown
in the following example to start the step up flow.Cardinal.continue Request in the Same Class (Objective-C)
[session continueWithTransactionId: @"[TRANSACTION_ID]" payload: @"[PAYLOAD]" didValidateDelegate: self];
Swift Examples
Swift Examples
Cardinal session continue (iOS SDK - Swift)
class YourViewController:CardinalValidationDelegate { /** * This method is triggered when the transaction has been * terminated.This is how SDK hands back * control to the merchant's application. This method will * include data on how the transaction attempt ended and * you should have your logic for reviewing the results of * the transaction and making decisions regarding next steps. * JWT will be empty if validate was not successful * * @param session * @param validateResponse * @param serverJWT */ func cardinalSession(cardinalSession session: CardinalSession!, stepUpValidated validateResponse: CardinalResponse!, serverJWT: String!) { } }
If the
Cardinal.continue
function is requested in the same class, request
the method shown in the example below to start the step up flow. Cardinal.continue Request in the Same Class (Swift)
session.continueWith(transactionId: "[TRANSACTION_ID]", payload: "[PAYLOAD]", validationDelegate: self)
When necessary, the SDK displays the authentication window and the customer enters
their authentication information.
Receiving the Authentication Results
Next, the
onValidated()
function (Android SDK) or the stepUpDidValidate
function
(iOS SDK) launches and returns the authentication results and response JWT along with the
processor transaction ID as shown in this example. Decoded Response JWT
{ "iss": "5a4504be6fe3d1127cdfd94e", "iat": 1555075930, "exp": 1555083130, "jti": "cc532159-636d-4fa8-931d-d4b0f4c83b99", "ConsumerSessionId": "0_9a16b7f5-8b94-480d-bf92-09cd302c9230", "aud": "d0cf3392-62c5-4107-bf6a-8fc3bb49922b", "Payload": { "Payment": { "Type": "CCA", "ProcessorTransactionId": "YGSaOBivyG0dzCFs2Zv0" }, "ErrorNumber": 0, "ErrorDescription": "Success" } }
Requesting the Validation Service
For enrolled cards, the next step is to make a back-end, server-to-server request for the
validation service.
When you make the validation request, you must:
- Send theconsumerAuthenticationInformation.authenticationTransactionIdrequest field.
- Send the credit card information including the PAN, currency, and expiration date (month and year).
The response that you receive contains the validation result.
It is recommended that you request the payer authentication and card authorization
services at the same time. Doing so automatically sends the correct information to your
payment processor and converts the values of these fields to the proper format required
by your payment processor:
- consumerAuthenticationInformation.ecommerceIndicator
- consumerAuthenticationInformation.cavv
- consumerAuthenticationInformation.ucafAuthenticationData
- consumerAuthenticationInformation.xidandconsumerAuthenticationInformation.xid
If you request the services separately, manually include the validation result values
(Validation Check response fields) in the authorization service request (Card
Authorization request fields). To receive liability shift protection, you must ensure
that you pass all pertinent data for the card type and processor in your request.
Failure to do so might invalidate your liability shift for that transaction. Include the
electronic commerce indicator (ECI), the transaction ID (XID), the 3-D Secure version,
the directory server transaction ID, and this card-specific information in your
authorization request.
- For Visa,JCB,,China UnionPay, Elo,Diners Club, Discover,and American Express include the CAVV.
- For Mastercard only, include the collection indicator and the AAV (also known as UCAF).
Identifier | Validation Check Response Field | Card Authorization Request Field |
---|---|---|
E-commerce
indicator | consumerAuthenticationInformation.indicator | processingInformation.commerceIndicator |
Collection indicator | consumerAuthenticationInforma
tion.ucafCollectionIndicator | consumerAuthenticationInfo
rmation.ucafCollectionIndicator |
CAVV | consumerAuthenticationInformation.cavv | consumerAuthenticationInformation.cavv |
AAV | consumerAuthenticationInforma
tion.ucafAuthenticationData | consumerAuthenticationInfo
rmation.ucafAuthenticationData |
XID | consumerAuthenticationInformation.xid | consumerAuthenticationInformation.xid |
3-D Secure version | consumerAuthenticationInforma
tion.specificationVersion | consumerAuthenticationInfo
rmation.paSpecificationVersion |
Directory server transaction ID | consumerAuthenticationInforma
tion.directoryServerTransactionId | consumerAuthenticationInfo
rmation.directoryServerTransactionId |
Interpreting the Response
IMPORTANT
If the authentication fails, Visa,
Diners Club,
Discover,
JCB,
China UnionPay, Elo,
and
American Express require that you not accept the card. Instead, you must ask the
customer to use another payment method.Proceed with the order according to the validation response received. The
responses are similar for all card types:
- Success: You receive, and other service requests, including authorization, are processed normally.AUTHENTICATION_SUCCESSFUL
- Failure: You receive, so the other services in your request are not processed.AUTHENTICATION_FAILED
- Error: If you receive an error from the payment card company, process the order according to your business rules. If the error occurs frequently, report it to . If you receive a system error, determine the cause, and proceed with card authorization only if appropriate.
To verify that the enrollment and validation checks are for the same
transaction, ensure that the XID in the enrollment check and validation responses are
identical.
Redirecting Customers to the Message Page
After authentication is complete, redirect the customer to a page containing a success or
failure message. Ensure that all messages that display to customers are accurate,
complete, and address all possible scenarios for enrolled and non-enrolled cards. For
example, if the authentication fails, display a message such as this to the
customer:
Authentication Failed Your card issuer cannot authenticate this card. Please select another card or form of payment to complete your purchase.
Authentication Examples Using Primary Account
Numbers
These examples list the API fields that are required or optional for the Setup, Check
Enrollment, and Validate Authentication services. An example of a request payload and a
successful response that occur with each service is provided. Payer authentication has
three types of examples:
- Primary Account Number (PAN): Illustrates how the payer authentication services work with customer PANs during transactions.
- Tokens: Illustrates how the payer authentication services work with different types of tokens.
- 3RI: Illustrates how the payer authentication services work with merchant-initiated transactions.
In certain circumstances, some payment card companies and some countries require more
information than is normally collected when authenticating the customer. These
circumstances, and the API fields to use in those circumstances, are noted for each
case.
Setting Up Device Data Collection
The Setup service identifies the customer's bank and prepares for collecting data about
the device that the customer is using to place the order.
Card-Specific Requirements
Some payment cards require specific information to be collected during a
transaction.
- This field is required when the card type isJCB,Cartes Bancaires, China UnionPay, or Meeza.
Country-Specific Requirements
These fields are required for transactions in specific countries.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for Device Data Collection
These fields are the minimum fields required when you request the Payer Authentication Setup
service. Other fields that can be used to collect additional information during a
transaction are listed in the optional fields section. Under certain circumstances,
a field that is normally optional might be required. The circumstance that makes an
optional field required is noted.
Required Fields
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- This field is required for the US and Canada.
- This field is required when theorderInformation.billTo.country fieldfield value isUSorCA.
- This field is required when the card type is Cartes Bancaires, JCB, China UnionPay, or Meeza.
Optional Fields for Device Data Collection
These fields are optional for setting up a Payer Authentication transaction. Under
certain circumstances, a field might appear as both an optional field and a required
field.
REST Example: Setting Up Data Collection
Request
{ "paymentInformation": { "card": { "type": "001", "expirationMonth": "12", "expirationYear": "2025", "number": "4XXXXXXXXXXXXXXX" } } }
Response
{ "clientReferenceInformation": { "code": "1675295420285", }, "consumerAuthenticationInformation": { "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIwYTFmZjNmYS02YTdiLTQ0NjYtYTgzOC04NTNjOTk2ZTMw MDYiLCJpYXQiOjE2NzUyOTU0MjAsImlzcyI6IjVkZDgzYmYwMGU0MjNkMTQ5OGRjYmFjYSIsImV4cCI6MTY3NTI 5OTAyMCwiT3JnVW5pdElkIjoiNWI5YzRiYjNmZjYyNmIxMzQ0ODEwYTAxIiwiUmVmZXJlbmNlSWQiOiIzOTE2M GMyZC1jMWU0LTQ0NjUtYWNlMy1lYjMyZDVhMWQ1NTkifQ.dl3w8s_ZpjA7kWmikyyYHO1Ak4TnzUHv8BuPra tQukc", "deviceDataCollectionUrl": "https://centinelapistag.cardinalcommerce.com/V1/Cruise/Collect", "referenceId": "39160c2d-c1e4-4465-ace3-eb32d5a1d559", "token": "AxizbwSTbhQQxCrDMCazABEBT9u+U5WYAXsQyaSZejFczCmAMAAAwAnp" }, "id": "6752954202146024203955", "status": "COMPLETED", "submitTimeUtc": "2023-02-01T23:50:20Z" }
Checking Enrollment in Payer Authentication
The Check Enrollment service tries to authenticate the cardholder. If the cardholder can
be authenticated without additional information, the transaction can be authorized. If
more information is required, the cardholder will be challenged to provide additional
authentication.
Card-Specific Requirements
Some payment cards require information to be collected during a transaction.
- This field is recommended for Discover ProtectBuy.
- This field is required when the card type is Cartes Bancaires.
- This field is required for American Express SafeKey (U.S.) when the product code isAIRfor an airline purchase.
- This field is required for Visa Secure travel.
- This field is required only for American Express SafeKey (US).
- This field is required only for American Express SafeKey (US.)
- This field is required only for American Express SafeKey (US).
- This field is required for American Express SafeKey (US).
- This field is required for American Express SafeKey (US).
- This field is required when the card type isJCB,Cartes Bancaires, China UnionPay, or Meeza.
Country-Specific Requirements
These fields are required for transactions in specific countries.
- This field is required for transactions processed in France.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- This field is required for transactions in the US and Canada.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
- This field is required when theorderInformation.shipTo.countryfield value isCA,US, orChina.
- This field is required when theorderInformation.shipTo.countryfield value isUSorCA.
Processor-Specific Requirements
These fields are required by specific processors for transactions.
- This field is required only for merchants in Saudi Arabia.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authenticationsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authenticationsRequired Fields for Checking Enrollment in Payer
Authentication
These fields are the minimum fields required for verifying that a customer is
enrolled in a payer authentation program. Under certain circumstances, a field that
normally is optional might be required. The circumstance that makes an optional
field required is noted.
Required Fields
- This field is required (when available) ifbuyerInformation.workPhoneis not used, unless market or regional mandate restricts sending this information.
- This field is required (when available) ifbuyerInformation.mobilePhoneis not used, unless market or regional mandate restricts sending this information.
- This field is required for SDK integration. When you use the SDK integration, this field is dynamically set toSDK. When you use the JavaScript code, this field is dynamically set toBrowser. For merchant-initiated or 3RI transactions, you must set the field to3RI. When you use this field in addition to JavaScript code, you must set the field toBrowser.
- For non-payment authentication, set to a value of02.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- When the customer’s browser provides this value, you must include that value in your request.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- This field is required when theorderInformation.lineItems.unitPricefield is not used.
- This field is required for transactions in the US and Canada.
- This field is required when thepaymentInformation.card.numberfield is included.
- This field is required when thepaymentInformation.card.numberfield is included.
Optional Fields for Checking Enrollment in Payer
Authentication
These fields are usually optional when you verify enrollment for a Payer Authentication
transaction. In certain circumstances, the information provided by an optional field
might be required before a transaction can proceed. Those optional fields that are
sometimes required are also listed as required fields with the circumstance
described.
- This field is only used with mada cards.
- WARNINGModifying this field could affect your liability shifts. Unless you are very familiar with the various types of authentication, do not change the default settings before consulting with customer support.
- This field is recommended for Discover ProtectBuy.
- This field is recommended for Discover ProtectBuy.
- This field is recommended for Discover ProtectBuy.
- This field is required for US and Canada.
- This field is strongly recommended.
- This field is strongly recommended.
- When this field is empty, the current date is used.
- riskInformation.buyerHistory. transactionCountDay
- This field is recommended for Discover ProtectBuy. Contact customer support for more information about this field.
- riskInformation.buyerHistory. transactionCountYear
- This field is recommended for Discover ProtectBuy. Contact customer support for more information about this field.
- riskInformation.buyerHistory. accountPurchases
- Contact customer support for more information about this field.
- riskInformation.buyerHistory. addCardAttempts
- This field is recommended for Discover ProtectBuy. Contact customer support for more information about this field.
- riskInformation.buyerHistory. customerAccount.createDate
- This field is recommended for Discover ProtectBuy. Contact customer support for more information about this field.
- riskInformation.buyerHistory. customerAccount.lastChangeDate
- This field is recommended for Discover ProtectBuy. Contact customer support for more information about this field.
- riskInformation.buyerHistory. customerAccount.passwordChangeDate
- This field is recommended for Discover ProtectBuy. Contact customer support for more information about this field.
- riskInformation.buyerHistory. customerAccount.shipAddressUsageDate
- Contact customer support for more information about this field.
- riskInformation.buyerHistory. paymentAccountDate
- Contact customer support for more information about this field.
- riskInformation.buyerHistory. priorSuspiciousActivity
- Contact customer support for more information about this field.
- riskInformation.buyerHistory. transactionCountDay
- Contact customer support for more information about this field.
- riskInformation.buyerHistory. transactionCountYear
- Contact customer support for more information about this field.
REST Example: Checking Enrollment
Request
{ "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "100" }, "billTo": { "address1": "901 metro center blvd", "address2": "metro 3", "administrativeArea": "CA", "country": "US", "locality": "san francisco", "firstName": "John", "lastName": "Doe", "phoneNumber": "18007097779", "postalCode": "94404", "email": "[email protected]" } }, "paymentInformation": { "card": { "number": "4XXXXXXXXXXXXXXX", "expirationMonth": "08", "expirationYear": 2026 } }, "deviceInformation": { "ipAddress": "139.130.4.5", "httpAcceptContent": "test", "httpBrowserLanguage": "en_us", "httpBrowserJavaEnabled": "N", "httpBrowserJavaScriptEnabled": "Y", "httpBrowserColorDepth": "24", "httpBrowserScreenHeight": "100000", "httpBrowserScreenWidth": "100000", "httpBrowserTimeDifference": "300", "userAgentBrowserValue": "GxKnLy8TFDUFxJP1t" }, "consumerAuthenticationInformation": { "referenceId": "c44224db-0dda-40aa-9536-ac1595fd2e8d", "transactionMode": "S", "returnUrl": "https://wv730hw7033250:3002/restapi/cardinalDirect/StepUp/Response" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "1675295420285" }, "consumerAuthenticationInformation": { "acsUrl": "https://0merchantacsstag.cardinalcommerce.com/MerchantACSWeb/creq.jsp", "challengeRequired": "N", "stepUpUrl": "https://centinelapistag.cardinalcommerce.com/V2/Cruise/StepUp", "authenticationTransactionId": "1xRSpLPEoTNsinp8XUK0", "pareq": "eyJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiO iI4NGU2YzIzYi1lNjIxLTQ2NGUtYWFlYy0xOGNkZDE1YTBlZWMiLCJhY3NUcmFuc0lEIjoiZWU3NDVlM2MtYzI2Ny00YzM0LT kzMTEtMGI3NTYwYzJkNjhmIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjAyIn0", "directoryServerTransactionId": "4d19781a-49d7-4c90-a145-72b8107fed8f", "veresEnrolled": "Y", "threeDSServerTransactionId": "84e6c23b-e621-464e-aaec-18cdd15a0eec", "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIyN2I1MjcyYS00OWFiLTQ5YjQtYTljYy1mMTBhYjcx MGMyYjciLCJpYXQiOjE2MzAwOTkxNjMsImlzcyI6IjVkZDgzYmYwMGU0MjNkMTQ5OGRjYmFjYSIsImV4cCI6MTYzMDEw Mjc2MywiT3JnVW5pdElkIjoiNTk1YWRhYjAzM2ZhZGQyYzUwZTg5NDYxIiwiUGF5bG9hZCI6eyJBQ1NVcmwiOiJodHRwcz ovLzBtZXJjaGFudGFjc3N0YWcuY2FyZGluYWxjb21tZXJjZS5jb20vTWVyY2hhbnRBQ1NXZWIvY3JlcS5qc3AiLCJQYXlsb2FkIjo iZXlKdFpYTnpZV2RsVkhsd1pTSTZJa05TWlhFaUxDSnRaWE56WVdkbFZtVnljMmx2YmlJNklqSXVNUzR3SWl3aWRHaHlaV1 ZFVTFObGNuWmxjbFJ5WVc1elNVUWlPaUk0TkdVMll6SXpZaTFsTmpJeExUUTJOR1V0WVdGbFl5MHhPR05rWkRFMVlU QmxaV01pTENKaFkzTlVjbUZ1YzBsRUlqb2laV1UzTkRWbE0yTXRZekkyTnkwMF6TTBMVGt6TVRFdE1HSTNOVFl3WXpKa0 5qaG1JaXdpWTJoaGJHeGxibWRsVjJsdVpHOTNVMmw2WlNJNklqQXlJbjAiLCJUcmFuc2FjdGlvbklkIjoiMXhSU3BMUEVvV E5zaW5wOFhVSzAifSwiT2JqZWN0aWZ5UGF5bG9hZCI6dHJ1ZSwiUmV0dXJuVXJsIjoiaHR0cHM6Ly93djczMGh3NzAzMzI 1MDozMDAyL3Jlc3RhcGkvY2FyZGluYWxEaXJlY3QvU3RlcFVwL1Jlc3BvbnNlIn0.ixbdhFoB8M_BWI2sAIIQUjWtIOMzIwRI mrg5iu7AyNE", "specificationVersion": "2.1.0", "token": "AxjzbwSTVZPTJPD7ixR8ADUBURxP1CnnpA6cQE1129JMvRiuHCKArAAAx/+g", "acsTransactionId": "ee745e3c-c267-4c34-9311-0b7560c2d68f" }, "errorInformation": { "reason": "CONSUMER_AUTHENTICATION_REQUIRED", "message": "The cardholder is enrolled in Payer Authentication. Please authenticate the cardholder before continuing with the transaction." }, "id": "6300991627296049403004", "paymentInformation": { "card": { "bin": "4XXXXXXX", "type": "VISA" } }, "status": "PENDING_AUTHENTICATION", "submitTimeUtc": "2022-08-27T21:19:23Z" }
Checking Enrollment and Authorizing a Transaction
The Checking Enrollment service can be combined with the Authorization service so that
when a customer's authentication does not require a challenge, the transaction is
automatically submitted for authorization.
- This field is required when theorderInformation.shipTo.countryfield value isCA,US, orChina.
- This field is required when theorderInformation.shipTo.countryfield value isUSorCA.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authenticationsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authenticationsREST Example: Checking Enrollment and Authorizing a
Transaction
Request
{ "clientReferenceInformation": { "code": "test" }, "processingInformation": { "capture": "true" }, "actionList": [ "CONSUMER_AUTHENTICATION" ] }, "paymentInformation": { "card": { "expirationYear": "2031", "number": "4XXXXXXXXXXX2701", "securityCode": "123", "expirationMonth": "12", "type": "001" } }, "orderInformation": { "amountDetails": { "totalAmount": "100.00", "currency": "GBP" }, "billTo": { "firstName": "John", "lastName": "Smith", "address1": "201 S. Division St._1", "address2": "Suite 500", "locality": "Foster City", "administrativeArea": "CA", "postalCode": "94404", "country": "US", "email": "[email protected]", "phoneNumber": "6504327113" } }, "deviceInformation": { "ipAddress": "139.130.4.5", "httpAcceptContent": "test", "httpBrowserLanguage": "en_us", "httpBrowserJavaEnabled": "N", "httpBrowserJavaScriptEnabled": "Y", "httpBrowserColorDepth": "24", "httpBrowserScreenHeight": "100000", "httpBrowserScreenWidth": "100000", "httpBrowserTimeDifference": "300", "userAgentBrowserValue": "GxKnLy8TFDUFxJP1t" }, "consumerAuthenticationInformation": { "returnUrl": "https://webhook.site/bdf16530-2577-4885-9dee-e9d6c4f98bc0", "referenceId": "72b727bc-a6a4-4481-b25c-a5939d48fef6" } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7478240150646451804805/voids" }, "self": { "method": "GET", "href": "/pts/v2/payments/7478240150646451804805" } }, "clientReferenceInformation": { "code": "test" }, "consumerAuthenticationInformation": { "eciRaw": "05", "authenticationTransactionId": "2BE13ZGIzjXdFfKw2Fi0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "eci": "05", "token": "Axj//wSTlWVuE5k5bxqFAAIU3YMmzhgzYM2Ce/LXc7XAKe/LXc7XZ0OnEFBWGTSTL0Yua1eAwHScqytwnMnLeNQo+xnO", "cavv": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "paresStatus": "Y", "acsReferenceNumber": "CardinalACS", "xid": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "directoryServerTransactionId": "4689476f-168b-415e-bad5-aee47a270086", "veresEnrolled": "Y", "threeDSServerTransactionId": "bda6f2d1-5c18-4589-a150-1e8c6e795e85", "acsOperatorID": "MerchantACS", "ecommerceIndicator": "vbv", "specificationVersion": "2.2.0", "acsTransactionId": "5bbd605d-80e4-48ef-82b5-0406774c66e3" }, "id": "7478240150646451804805", "orderInformation": { "amountDetails": { "totalAmount": "100.00", "authorizedAmount": "100.00", "currency": "GBP" } }, "paymentAccountInformation": { "card": { "brandName": "VISA", "type": "001" } }, "paymentInformation": { "tokenizedCard": { "type": "001" }, "card": { "bin": "400000", "type": "001" } }, "pointOfSaleInformation": { "terminalId": "12345678" }, "processorInformation": { "paymentAccountReferenceNumber": "V0010013018036776997406844475", "merchantNumber": "12345678", "approvalCode": "100", "cardVerification": { "resultCodeRaw": "3", "resultCode": "2" }, "merchantAdvice": { "code": "00", "codeRaw": "0" }, "networkTransactionId": "123456789012345", "transactionId": "123456789012345", "responseCode": "0", "avs": { "code": "U", "codeRaw": "00" } }, "reconciliationId": "7026803030", "status": "AUTHORIZED", "submitTimeUtc": "2025-05-21T10:40:15Z" }
Validating a Challenge
Running the Validation service compares the customer's response to the challenge from the issuing bank to
validate the customer identity.
Card-Specific Requirements
Some payment cards require additional information to be collected during a
transaction.
- This field is recommended for Discover ProtectBuy.
- This field is required when the card type is Cartes Bancaires.
- This field is required for American Express SafeKey (US) when the product code isAIRfor an airline purchase).
- This field is required for Visa Secure travel.
- This field is required only for American Express SafeKey (US).
- This field is required only for American Express SafeKey (US)
Country-Specific Requirements
These fields are required for transactions in specific countries.
- This field is required for transactions processed in France.
- This field is required for transactions in the US and Canada.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-resultsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-resultsRequired Fields for Validating a Challenge
These are the minimum fields required when validating the customer. Other fields for
collecting additional information during a transaction are described in the list of
optional fields. Under certain circumstances, a field that is optional might be
required. The circumstance that makes an optional field required is described.
Required Fields
- This field is required when theorderInformation.lineItems.unitPricefield is not used.
- This field is required when theorderInformation.amountDetails.totalAmountfield is not used.
- This field is required when thepaymentInformation.card.numberfield is included.
- This field is required when thepaymentInformation.card.numberfield is included.
Optional Fields for Validating a Challenge
These fields are optional when validating a Payer Authentication transaction. In
certain circumstances, the information provided by an optional field might be
required before a transaction can proceed. Those optional fields that are sometimes
required are listed in the required fields with the circumstance described.
REST Example: Validating a Challenge
Request
{ "paymentInformation": { "card": { "type": "001" } }, "consumerAuthenticationInformation": { "authenticationTransactionId": "bE4fdH96vKejWyz6rXy1" } }
Response to a Successful Request
{ "consumerAuthenticationInformation": { "indicator": "vbv", "eciRaw": "05", "authenticationResult": "0", "authenticationStatusMsg": "Success", "eci": "05", "token": "AxijLwSTVYSa8ZmiITBhAAJRHE+rXi4ATWhk0kyxdfAuewAA4iW6", "cavv": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=", "paresStatus": "Y", "xid": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=", "directoryServerTransactionId": "144ecc30-264f-4d2c-8a4e-798a4f311b1f", "threeDSServerTransactionId": "6773483d-e16a-40f5-bc5d-93d709c8a06b", "specificationVersion": "2.1.0", "acsTransactionId": "6eab6816-72d2-40e8-a03f-0a6c8bfe3156" }, "id": "6299894944336529404001", "paymentInformation": { "card": { "bin": "400000", "type": "VISA" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2021-08-26T14:51:34Z" }
Validating and Authorizing a Transaction
The Validation service can be combined with the Authorization service so that when a
customer's authentication is validated, the transaction is automatically submitted for
authorization.
Fields Specific to a Visa Secure Transaction
These API fields are required specifically for this use case.
- Set this field tovbvfor a successful authentication (EMV3-D Securevalue of05),vbv_attemptedif authentication was attempted but did not succeed (EMV 3-D Secure value of06), orvbv_failureif authentication failed (EMV3-D Securevalue of07).
- This field is required when payer authentication is successful.
Card-Specific Requirements
Some payment cards require information to be collected during a transaction.
- This field is recommended for Discover ProtectBuy.
- This field is required when the card type is Cartes Bancaires.
- This field is required for American Express SafeKey (US) when the product code isAIRfor an airline purchase.
- This field is required for Visa Secure travel.
- This field is required only for American Express SafeKey (US).
- This field is required only for American Express SafeKey (US).
Country-Specific Requirements
These fields are required for transactions in specific countries.
- This field is required for transactions processed in France.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
- This field is required for transactions in the US and Canada.
Endpoint
Production:
POST
https://api.visaacceptance.com
/pts/v2/paymentsTest:
POST
https://apitest.visaacceptance.com
/pts/v2/paymentsRequired Fields for Processing an Authorization Using Visa Secure
Use these required fields to process an authorization using Visa Secure.
IMPORTANT
When relaxed requirements for address data and the expiration date are being used, not all
fields in this list are required. It is your responsibility to determine whether your
account is enabled to use this feature and which fields are required. Refer to the Payments
guide for more information about relaxed requirements in payment transactions.
Required Fields
- This field is required when payer authentication is successful. Otherwise, this field is optional.
- Verosupports Brazilian real (BRL) currency only.
- Set this field to one of these values:
- vbv: Successful authentication (EMV3-D Securevalue of05).
- vbv_attempted: Authentication was attempted (EMV3-D Securevalue of06).
- vbv_failure: orinternet: Authentication failed or was not attempted (EMV3-D Securevalue of07).
REST Example: Validating and Authorizing a Transaction
Request
{ "clientReferenceInformation": { "code": "test" }, "processingInformation": { "capture": "true", "authorizationOptions": { "ignoreAvsResult": "true" }, "actionList": [ "VALIDATE_CONSUMER_AUTHENTICATION" ] }, "paymentInformation": { "card": { "expirationYear": "2031", "number": "4XXXXXXXXXXX25X3", "securityCode": "123", "expirationMonth": "12", "type": "001" } }, "orderInformation": { "amountDetails": { "totalAmount": "100.00", "currency": "GBP" }, "billTo": { "firstName": "John", "lastName": "Smith", "address1": "201 S. Division St._1", "address2": "Suite 500", "locality": "Foster City", "administrativeArea": "CA", "postalCode": "94404", "country": "US", "email": "[email protected]", "phoneNumber": "6504327113" } }, "consumerAuthenticationInformation": { "authenticationTransactionId": "2b4eAa4K3H778X34Ciy0" } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7478305945626990404807/voids" }, "self": { "method": "GET", "href": "/pts/v2/payments/7478305945626990404807" } }, "clientReferenceInformation": { "code": "test" }, "consumerAuthenticationInformation": { "indicator": "vbv", "eciRaw": "05", "authenticationResult": "0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "authenticationStatusMsg": "Success", "eci": "05", "token": "Axj//wSTlWZX08jkcOTHAAIU3YMmzhgzcN2ie/LXsgSgKe/LXsgS50OnEFBWGTSTL0Yua1eAwHScqzK+nkcjhyY4wDi0", "cavv": "AAIBBYNoEwAAACcKhAJkdQAAAAA=", "paresStatus": "Y", "xid": "AAIBBYNoEwAAACcKhAJkdQAAAAA=", "directoryServerTransactionId": "fa628ed8-ad77-4723-b28f-91952eaca8fe", "threeDSServerTransactionId": "71399671-8456-4c97-b056-e127622a5e26", "specificationVersion": "2.2.0", "acsTransactionId": "5f9fb589-08cc-4952-866d-30939868f411" }, "id": "7478305945626990404807", "orderInformation": { "amountDetails": { "totalAmount": "100.00", "authorizedAmount": "100.00", "currency": "GBP" } }, "paymentAccountInformation": { "card": { "brandName": "VISA", "type": "001" } }, "paymentInformation": { "tokenizedCard": { "type": "001" }, "card": { "bin": "400000", "type": "VISA" } }, "pointOfSaleInformation": { "terminalId": "12345678" }, "processorInformation": { "paymentAccountReferenceNumber": "V0010013018036776997406844475", "merchantNumber": "12345678", "approvalCode": "100", "cardVerification": { "resultCodeRaw": "3", "resultCode": "2" }, "merchantAdvice": { "code": "00", "codeRaw": "0" }, "networkTransactionId": "123456789012345", "transactionId": "123456789012345", "responseCode": "0", "avs": { "code": "U", "codeRaw": "00" } }, "reconciliationId": "7026803874", "status": "AUTHORIZED", "submitTimeUtc": "2025-05-21T12:29:54Z" }
Non-Payment Authentication
Non-Payment Authentication (NPA) requests enable a merchant to authenticate a customer
without a transaction. A non-payment use case can be used for such tasks as adding a
card to a merchant website, updating cardholder information on file, or to verify a
cardholder's identity when creating a token for future use. The same authentication used
during the checking enrollment process is used for NPA. Non-payment use cases are
enabled using a combination of the
consumerAuthenticationInformation.messageCategory
and consumerAuthenticationInformation.strongAuthentication.authenticationIndicator
values. For
example to add a card to a loyalty program, set the Message Category value to
02
and the Authentication Indicator value to 04
.
For other possible NPA use cases, refer to the other possible values for consumerAuthenticationInformation.messageCategory
. The consumerAuthenticationInformation.messageCategory
value must be set to
02
(non-payment authentication) to specify that the authentication
is not for a transaction.Card-Specific Requirements
Some payment cards require information to be collected during a transaction.
- This field is recommended for Discover ProtectBuy.
- This field is required when the card type is Cartes Bancaires.
- This field is required for American Express SafeKey (U.S.) when the product code isAIRfor an airline purchase.
- This field is required for Visa Secure travel.
- This field is required only for American Express SafeKey (US).
- This field is required only for American Express SafeKey (US.)
- This field is required only for American Express SafeKey (US).
- This field is required only for American Express SafeKey (US).
- This field is required for American Express SafeKey (US).
- This field is required when the card type isJCBCartes Bancaires, China UnionPay, or Meeza.
Country-Specific Requirements
These fields are required for transactions in specific countries.
- This field is required for transactions processed in France.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- This field is required for transactions in the US and Canada.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
- This field is required when theorderInformation.shipTo.countryfield value isCA,US, orChina.
- This field is required when theorderInformation.shipTo.countryfield value isUSorCA.
Processor-Specific Requirements
These fields are required by specific processors for transactions.
- This field is required only for merchants in Saudi Arabia.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authenticationsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authenticationsREST Example: Checking Enrollment for Non-Payment
Authentication
Request
{ "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "10.99" }, "billTo": { "address1": "1 Market St", "address2": "Address 2", "administrativeArea": "CA", "country": "US", "locality": "san francisco", "firstName": "John", "lastName": "Doe", "phoneNumber": "4158880000", "email": "[email protected]", "postalCode": "94105" } }, "paymentInformation": { "card": { "type": "001", "expirationMonth": "12", "expirationYear": "2025", "number": "4XXXXXXXXXXX2503" } }, "buyerInformation": { "mobilePhone": 1245789632 }, "deviceInformation": { "ipAddress": "139.130.4.5", "httpAcceptContent": "test", "httpBrowserLanguage": "en_us", "httpBrowserJavaEnabled": false, "httpBrowserJavaScriptEnabled": false, "httpBrowserColorDepth": "24", "httpBrowserScreenHeight": "100000", "httpBrowserScreenWidth": "100000", "httpBrowserTimeDifference": "300", "userAgentBrowserValue": "GxKnLy8TFDUFxJP1t" }, "consumerAuthenticationInformation": { "deviceChannel": "BROWSER", "messageCategory": "02", "transactionMode": "eCommerce" } }
Response
{ "clientReferenceInformation": { "code": "1729234929433" }, "consumerAuthenticationInformation": { "challengeRequired": "N", "authenticationTransactionId": "MXvfrk1911nHJpC18OI0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "token": "AxjzbwSTi1GtFWKe0Yg5ABEBTyDdd93DSBcS0MRdrSTL0YrmYUwDgAAAWBV8", "acsUrl": "https://0merchantacsstag.cardinalcommerce.com/MerchantACSWeb/creq.jsp", "acsReferenceNumber": "Cardinal ACS", "stepUpUrl": "https://centinelapistag.cardinalcommerce.com/V2/Cruise/StepUp", "pareq": "eyJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJkOTkzM2U5ZS05MGI4LTQ2YWMtOGEwNy04NzM5YzVlODJiNWMiLCJhY3NUcmFuc0lEIjoiZGUwYTExMjUtODFiNC00YjM4LTlhYTAtZThjNzJkZTAwMzk5IiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjAyIn0", "directoryServerTransactionId": "0656bace-7519-4dd9-9450-98dfc6f35d7c", "veresEnrolled": "Y", "threeDSServerTransactionId": "d9933e9e-90b8-46ac-8a07-8739c5e82b5c", "acsOperatorID": "MerchantACS", "specificationVersion": "2.2.0", "acsTransactionId": "de0a1125-81b4-4b38-9aa0-e8c72de00399" }, "errorInformation": { "reason": "CONSUMER_AUTHENTICATION_REQUIRED", "message": "The cardholder is enrolled in Payer Authentication. Please authenticate the cardholder before continuing with the transaction." }, "id": "7292349292916631504953", "paymentInformation": { "card": { "bin": "400000", "type": "VISA" } }, "status": "PENDING_AUTHENTICATION", "submitTimeUtc": "2024-10-18T07:02:09Z" }
Examples Using 3-D Secure Data Only
3-D Secure
Data Only3-D Secure
data only is a solution that shares data that merchants collect
during transactions with the issuer, so that the issuers can make more informed
authorization decisions for future transactions. Data only uses the 3-D Secure
infrastructure, but it is not a complete 3-D Secure
authentication. 3-D Secure
data only is a frictionless experience. Data only can increase authorization approvals and reduce fraud in the following
ways:
- While some merchants have their own fraud tools,3-D Securedata only focuses on increasing approvals. Fraud is decreased with data only.
- Merchants share additional transaction data with the issuer, allowing the issuer to feel more comfortable with the transaction’s risk level. The issuer can gain additional insight into who the buyer is and what they are purchasing which enables better authorization decisions.
- Since data only is not a full authentication, merchants retain fraud liability, putting less risk on the issuers, which might lead to a higher approval rate when compared to non-authenticated transactions.
Visa supports
3-D Secure
within the Visa Data Only program, and Mastercard
supports data only with Identity Check Insights. Visa Data Only
Visa has a data only data flow so that merchants can share customer data with the issuers
without going through authentication. The additional data provided to the issuer helps
the issuer make risk assessments about approving cardholder transactions. Data only data
flows are frictionless and do not affect the customer experience. When sending a Visa
data only check enrollment request, be sure to include all of the required fields and
set the
consumerAuthenticationInformation.challenge
field to
06
.The response from the data only request will include this data:
- ECI =07
- PARes =I
- <CAVV> value
This data from the response must be included in the authorization request.
Endpoint
Production:
POST
https://api.visaacceptance.com
/pts/v2/paymentsTest:
POST
https://apitest.visaacceptance.com
/pts/v2/paymentsRequired Fields for Visa Data Only
These fields are the minimum fields required when you request the Visa Data service.
Under certain circumstances, a field that normally is optional might be required.
The circumstance that makes an optional field required is noted.
Required Fields
- This field is required (when available) ifbuyerInformation.workPhoneis not used, unless market or regional mandate restricts sending this information.
- This field is required (when available) ifbuyerInformation.mobilePhoneis not used, unless market or regional mandate restricts sending this information.
REST Example: Visa Data Only
Request
{ "clientReferenceInformation": { "code": "test" }, "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "10.99" }, "billTo": { "address1": "1 Market St", "address2": "Address 2", "administrativeArea": "CA", "country": "US", "locality": "san francisco", "firstName": "Test", "lastName": "Testlastname", "phoneNumber": "4158880000", "email": "[email protected]", "postalCode": "94105" } }, "paymentInformation": { "card": { "expirationMonth": "05", "expirationYear": "2029", "number":"4XXXXXXXXXXX2X24" } }, "deviceInformation": { "httpAcceptBrowserValue": "data", "httpAcceptContent": "pa_http_user_accept_value", "httpBrowserLanguage": "en_us", "httpBrowserJavaEnabled": false, "httpBrowserJavaScriptEnabled": false, "httpBrowserColorDepth": "24", "httpBrowserScreenHeight": "864", "httpBrowserScreenWidth": "1536", "httpBrowserTimeDifference": "300", "userAgentBrowserValue": "123" }, "consumerAuthenticationInformation": { "deviceChannel": "Browser", "challengeCode": "06" } }
Response to Successful Request
{ "clientReferenceInformation": { "code": "test" }, "consumerAuthenticationInformation": { "eciRaw": "07", "authenticationTransactionId": "2DkdQ8ZG1urNNQR0XTM1", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "effectiveAuthenticationType": "FR", "authorizationPayload": "eyJjb250YWluZXJWZXJzaW9uIjoiMSIsImF1dGhlbnRpY2F0aW9uVmFsdWUiOiJBSmtCQmtoZ1FRQUFBRTRnU0VKeWRRQUFBQUE9IiwiZWZmZWN0aXZlQXV0aFR5cGUiOiJGUiIsImFjc09wZXJhdG9ySUQiOiJNZXJjaGFudEFDUyIsInRocmVlRFNSZXF1ZXN0b3JDaGFsbGVuZ2VJbmQiOiIwNiIsInRyYW5zU3RhdHVzIjoiSSIsImRzVHJhbnNJRCI6ImNlOGMzNTk1LTE4NjgtNDI0Mi1iM2VlLTM1Njg5ZGYyZjJjZSIsImFjc1RyYW5zSUQiOiIzMDQ3NTczZi01OTBlLTQ2YjUtODNmNC02YTQ5YzFiNDIzOWMiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIiwibWVyY2hhbnROYW1lIjoiUEFUZXN0NCIsInB1cmNoYXNlRGF0ZSI6IjIwMjUwNDI1MTA1ODQ1IiwicHVyY2hhc2VBbW91bnQiOiIxMDk5IiwibWVyY2hhbnRDb3VudHJ5Q29kZSI6Ijg0MCIsImFjcXVpcmVyQklOIjoiNDY5MjE2IiwiYWNxdWlyZXJNZXJjaGFudElEIjoiZGVmYXVsdCIsInRocmVlRFNSZXF1ZXN0b3JOYW1lIjoiUEFUZXN0NCIsInRocmVlRFNSZXF1ZXN0b3JJRCI6IjEwMDUyMjM2KjU1ZWYzZWZiZjcyM2FhNDMxYzk5YWM0ZCIsImNhcmRCcmFuZCI6IlZJU0EifQ==", "eci": "07", "token": "AxjzbwSTlC3VWiL9QyNJAEQBTRduBSgekC4lp/cMm2OKOPlRqQoBgAAAyhZr", "cavv": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "paresStatus": "I", "acsReferenceNumber": "CardinalACS", "xid": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "directoryServerTransactionId": "ce8c3595-1868-4242-b3ee-35689df2f2ce", "veresEnrolled": "Y", "threeDSServerTransactionId": "205e97c1-f15a-480f-8497-55e9a68cf046", "acsOperatorID": "MerchantACS", "ecommerceIndicator": "internet", "specificationVersion": "2.2.0", "acsTransactionId": "3047573f-590e-46b5-83f4-6a49c1b4239c" }, "id": "7455787250786729403209", "paymentInformation": { "card": { "bin": "400000", "type": "VISA" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2025-04-25T10:58:47Z" }
REST Example: Bundled Authentication and Authorization with Visa Data Only
Request
{ "clientReferenceInformation": { "code": "test" }, "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "10.99" }, "billTo": { "address1": "1 Market St", "address2": "Address 2", "administrativeArea": "CA", "country": "US", "locality": "san francisco", "firstName": "Test", "lastName": "Testlastname", "phoneNumber": "4158880000", "email": "[email protected]", "postalCode": "94105" } }, "processingInformation": { "actionList": [ "CONSUMER_AUTHENTICATION" ] }, "paymentInformation": { "card": { "expirationMonth": "05", "expirationYear": "2029", "number":"4XXXXXXXXXXX20X4" } }, "deviceInformation": { "httpAcceptBrowserValue": "data", "httpAcceptContent": "pa_http_user_accept_value", "httpBrowserLanguage": "en_us", "httpBrowserJavaEnabled": false, "httpBrowserJavaScriptEnabled": false, "httpBrowserColorDepth": "24", "httpBrowserScreenHeight": "864", "httpBrowserScreenWidth": "1536", "httpBrowserTimeDifference": "300", "userAgentBrowserValue": "123" }, "consumerAuthenticationInformation": { "deviceChannel": "Browser", "challengeCode": "06" } }
Response to Successful Request
{ "_links": { "authReversal": { "method": "POST", "href": "/pts/v2/payments/7455831774536819703209/reversals" }, "self": { "method": "GET", "href": "/pts/v2/payments/7455831774536819703209" }, "capture": { "method": "POST", "href": "/pts/v2/payments/7455831774536819703209/captures" } }, "clientReferenceInformation": { "code": "test" }, "consumerAuthenticationInformation": { "eciRaw": "07", "authenticationTransactionId": "30lLF8FUJmwmp3VofTC1", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "effectiveAuthenticationType": "FR", "authorizationPayload": "eyJjb250YWluZXJWZXJzaW9uIjoiMSIsImF1dGhlbnRpY2F0aW9uVmFsdWUiOiJBSmtCQmtoZ1FRQUFBRTRnU0VKeWRRQUFBQUE9IiwiZWZmZWN0aXZlQXV0aFR5cGUiOiJGUiIsImFjc09wZXJhdG9ySUQiOiJNZXJjaGFudEFDUyIsInRocmVlRFNSZXF1ZXN0b3JDaGFsbGVuZ2VJbmQiOiIwNiIsInRyYW5zU3RhdHVzIjoiSSIsImRzVHJhbnNJRCI6IjZhODZlNjI4LTc2ODYtNDc4Zi1iNWUzLTRmMzFjMTE1YzcwZiIsImFjc1RyYW5zSUQiOiI3NTBmOTkzOC0wYzYzLTQ3MzQtODY0Yy1kNjg5MWEyNzZlZjIiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIiwibWVyY2hhbnROYW1lIjoiUEFUZXN0NCIsInB1cmNoYXNlRGF0ZSI6IjIwMjUwNDI1MTIxMjU2IiwicHVyY2hhc2VBbW91bnQiOiIxMDk5IiwibWVyY2hhbnRDb3VudHJ5Q29kZSI6Ijg0MCIsImFjcXVpcmVyQklOIjoiNDY5MjE2IiwiYWNxdWlyZXJNZXJjaGFudElEIjoiZGVmYXVsdCIsInRocmVlRFNSZXF1ZXN0b3JOYW1lIjoiUEFUZXN0NCIsInRocmVlRFNSZXF1ZXN0b3JJRCI6IjEwMDUyMjM2KjU1ZWYzZWZiZjcyM2FhNDMxYzk5YWM0ZCIsImNhcmRCcmFuZCI6IlZJU0EifQ==", "eci": "07", "token": "Axj/7wSTlC5ziEBhdn2pAEQs3aNWrhmxbt2jVm2cMXLdgzZMHKaLtwTReAU0Xbgmi9pAuJaf3DJtjijj5UakLAZJyhc5xCAwuz7UgAAA5APX", "cavv": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "paresStatus": "I", "acsReferenceNumber": "CardinalACS", "xid": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "directoryServerTransactionId": "6a86e628-7686-478f-b5e3-4f31c115c70f", "veresEnrolled": "Y", "threeDSServerTransactionId": "4e4689c5-97ac-469b-8d67-0613d8794de7", "acsOperatorID": "MerchantACS", "ecommerceIndicator": "internet", "specificationVersion": "2.2.0", "acsTransactionId": "750f9938-0c63-4734-864c-d6891a276ef2" }, "id": "7455831774536819703209", "orderInformation": { "amountDetails": { "authorizedAmount": "10.99", "currency": "USD" } }, "paymentAccountInformation": { "card": { "type": "001" } }, "paymentInformation": { "tokenizedCard": { "type": "001" }, "card": { "bin": "400000", "type": "001" } }, "processorInformation": { "systemTraceAuditNumber": "061920", "approvalCode": "831000", "merchantAdvice": { "code": "01", "codeRaw": "M001" }, "responseDetails": "ABC", "networkTransactionId": "016153570198200", "retrievalReferenceNumber": "511512061920", "consumerAuthenticationResponse": { "code": "2", "codeRaw": "2" }, "transactionId": "016153570198200", "responseCode": "00", "avs": { "code": "Y", "codeRaw": "Y" } }, "reconciliationId": "7455831774536819703209", "status": "AUTHORIZED", "submitTimeUtc": "2025-04-25T12:12:59Z", "tokenInformation": { "additionalInformation": "0" } }
Mastercard Data Only
Mastercard has a data only data flow so that merchants can share customer data with the
issuers without going through authentication. The additional data provided to the issuer
helps the issuer make risk assessments about approving cardholder transactions. Data
only data flows are frictionless and do not affect the customer experience.
When sending a Mastercard data only check enrollment request, be sure to include all of
the required fields and set the
consumerAuthenticationInformation.messageCategory
to 80
. The response from the data only request includes this data:
- ECI =4
- CAVV value
- Directory server transaction ID
- paresStatus =U
- Risk score
- Reason code
This data from the response must be included in the authorization request.
Endpoint
Production:
POST
https://api.visaacceptance.com
/pts/v2/paymentsTest:
POST
https://apitest.visaacceptance.com
/pts/v2/paymentsRequired Fields for Mastercard Data Only
These fields are the minimum fields required when you request the Mastercard Data
service. Under certain circumstances, a field that normally is optional might be
required. The circumstance that makes an optional field required is noted.
Required Fields
- This field is required (when available) ifbuyerInformation.workPhoneis not used, unless market or regional mandate restricts sending this information.
- This field is required (when available) ifbuyerInformation.mobilePhoneis not used, unless market or regional mandate restricts sending this information.
REST Example: Mastercard Data Only
Request
{ "clientReferenceInformation": { "code": "test" }, "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "10.99" }, "billTo": { "address1": "1 Market St", "address2": "Address 2", "administrativeArea": "CA", "country": "US", "locality": "san francisco", "firstName": "Test", "lastName": "Testlastname", "phoneNumber": "4158880000", "email": "[email protected]", "postalCode": "94105" } }, "paymentInformation": { "card": { "expirationMonth": "05", "expirationYear": "2029", "number":"52XXXXXXXXXX28X5" } }, "deviceInformation": { "httpAcceptBrowserValue": "data", "httpAcceptContent": "pa_http_user_accept_value", "httpBrowserLanguage": "en_us", "httpBrowserJavaEnabled": false, "httpBrowserJavaScriptEnabled": false, "httpBrowserColorDepth": "24", "httpBrowserScreenHeight": "864", "httpBrowserScreenWidth": "1536", "httpBrowserTimeDifference": "300", "userAgentBrowserValue": "123" }, "consumerAuthenticationInformation": { "deviceChannel": "Browser", "messageCategory": "80", "scoreRequest": "N" } }
Response to Successful Request
{ "clientReferenceInformation": { "code": "test" }, "consumerAuthenticationInformation": { "eciRaw": "04", "challengeRequired": "N", "authenticationTransactionId": "KjNeRerYgMLXJD8gzC51", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "effectiveAuthenticationType": "FR", "authorizationPayload": "eyJjb250YWluZXJWZXJzaW9uIjoiMSIsImVjaSI6IjA0IiwiYXV0aGVudGljYXRpb25WYWx1ZSI6IkFKa0JCa2hnUVFBQUFFNGdTRUp5ZFFBQUFBQT0iLCJlZm ZlY3RpdmVBdXRoVHlwZSI6IkZSIiwiYWNzT3BlcmF0b3JJRCI6Ik1lcmNoYW50QUNTIiwidGhyZWVEU1JlcXVlc3RvckNoYWxsZW5nZUluZCI6IjAxIiwidHJhbnNTd GF0dXMiOiJVIiwidHJhbnNTdGF0dXNSZWFzb24iOiI4MCIsImRzVHJhbnNJRCI6IjQxMzVkMzljLWNiNDMtNGM0Zi04MWJmLTliMzc5N2QzYjhmOSIsImFjc1RyYW 5zSUQiOiI5OWIzODcyYy04ZTM2LTQ5ZGQtYjgyNi1iNGYwYzU4M2Y4MjUiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIiwibWVyY2hhbnROYW1lIjoiUEFUZXN0NCIsInB1 cmNoYXNlRGF0ZSI6IjIwMjUwNDI1MDUzODAwIiwicHVyY2hhc2VBbW91bnQiOiIxMDk5IiwibWVyY2hhbnRDb3VudHJ5Q29kZSI6Ijg0MCIsImFjcXVpcmVyQklOIjoiO TkwMDMzIiwiYWNxdWlyZXJNZXJjaGFudElEIjoiZGVmYXVsdCIsInRocmVlRFNSZXF1ZXN0b3JOYW1lIjoiQ0FSMTM0NzNfUEFUZXN0NCIsInRocmVlRFNSZXF1ZXN 0b3JJRCI6IkNBUjEzNDczX2RlZmF1bHQiLCJjYXJkQnJhbmQiOiJNQVNURVJDQVJEIn0=", "signedParesStatusReason": "80", "token": "AxjzbwSTlCspnzdze9IJAEQCTRdt8KnmkC4lp/UMm2OKOPlRqQoCwAAASAee", "paresStatus": "U", "acsReferenceNumber": "CardinalACS", "ucafCollectionIndicator": "4", "ucafAuthenticationData": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "directoryServerTransactionId": "4135d39c-cb43-4c4f-81bf-9b3797d3b8f9", "veresEnrolled": "Y", "threeDSServerTransactionId": "9c4d80a0-1624-4061-8f08-78c59b335e8c", "acsOperatorID": "MerchantACS", "ecommerceIndicator": "spa", "specificationVersion": "2.2.0", "acsTransactionId": "99b3872c-8e36-49dd-b826-b4f0c583f825" }, "id": "7455594797856844403209", "paymentInformation": { "card": { "bin": "520000", "type": "MASTERCARD" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2025-04-25T05:38:01Z" }
REST Example: Bundled Authentication and Authorization with Mastercard Data Only
Request
{ "clientReferenceInformation": { "code": "test" }, "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "10.99" }, "billTo": { "address1": "1 Market St", "address2": "Address 2", "administrativeArea": "CA", "country": "US", "locality": "san francisco", "firstName": "Test", "lastName": "Testlastname", "phoneNumber": "4158880000", "email": "[email protected]", "postalCode": "94105" } }, "processingInformation": { "actionList": [ "CONSUMER_AUTHENTICATION" ] }, "paymentInformation": { "card": { "expirationMonth": "05", "expirationYear": "2029", "number":"52XXXXXXXXXX28X5" } }, "deviceInformation": { "httpAcceptBrowserValue": "data", "httpAcceptContent": "pa_http_user_accept_value", "httpBrowserLanguage": "en_us", "httpBrowserJavaEnabled": false, "httpBrowserJavaScriptEnabled": false, "httpBrowserColorDepth": "24", "httpBrowserScreenHeight": "864", "httpBrowserScreenWidth": "1536", "httpBrowserTimeDifference": "300", "userAgentBrowserValue": "123" }, "consumerAuthenticationInformation": { "deviceChannel": "Browser", "messageCategory": "80", "scoreRequest": "N" } }
Response to Successful Request
{ "_links": { "authReversal": { "method": "POST", "href": "/pts/v2/payments/7455833000666819803209/reversals" }, "self": { "method": "GET", "href": "/pts/v2/payments/7455833000666819803209" }, "capture": { "method": "POST", "href": "/pts/v2/payments/7455833000666819803209/captures" } }, "clientReferenceInformation": { "code": "test" }, "consumerAuthenticationInformation": { "eciRaw": "04", "challengeRequired": "N", "authenticationTransactionId": "d94pknkLH4BhjWxylay1", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "effectiveAuthenticationType": "FR", "authorizationPayload": "eyJjb250YWluZXJWZXJzaW9uIjoiMSIsImVjaSI6IjA0IiwiYXV0aGVudGljYXRpb25WYWx1ZSI6IkFKa0JCa2hnUVFBQUFFNGdTRUp5ZFFBQUFBQT0iLCJlZmZlY3RpdmVBdXRoVHlwZSI6IkZSIiwiYWNzT3BlcmF0b3JJRCI6Ik1lcmNoYW50QUNTIiwidGhyZWVEU1JlcXVlc3RvckNoYWxsZW5nZUluZCI6IjAxIiwidHJhbnNTdGF0dXMiOiJVIiwidHJhbnNTdGF0dXNSZWFzb24iOiI4MCIsImRzVHJhbnNJRCI6IjZhMGY0OTFhLWIxMDUtNDk4Zi05OTk3LTgxYTAyYjk5NzFjYSIsImFjc1RyYW5zSUQiOiJlOTFhODQ3Mi0yNGFhLTQ0ZGUtYTU0Yy00YWExNDVlN2NjZDMiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIiwibWVyY2hhbnROYW1lIjoiUEFUZXN0NCIsInB1cmNoYXNlRGF0ZSI6IjIwMjUwNDI1MTIxNTAxIiwicHVyY2hhc2VBbW91bnQiOiIxMDk5IiwibWVyY2hhbnRDb3VudHJ5Q29kZSI6Ijg0MCIsImFjcXVpcmVyQklOIjoiNDY5MjE2IiwiYWNxdWlyZXJNZXJjaGFudElEIjoiZGVmYXVsdCIsInRocmVlRFNSZXF1ZXN0b3JOYW1lIjoiUEFUZXN0NCIsInRocmVlRFNSZXF1ZXN0b3JJRCI6IjEwMDUyMjM2KjU1ZWYzZWZiZjcyM2FhNDMxYzk5YWM0ZCIsImNhcmRCcmFuZCI6Ik1BU1RFUkNBUkQifQ==", "signedParesStatusReason": "80", "token": "Axj/7wSTlC5342kEkThJAEQs3aNWrhmzYMGDZs2cMXLhgzZMHKaLtwTRfAk0Xbgmi/pAuJaf3DJtjijj5UakLAtJyhc78bSCSJwkgAAA4wBh", "paresStatus": "U", "acsReferenceNumber": "CardinalACS", "ucafCollectionIndicator": "4", "ucafAuthenticationData": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "directoryServerTransactionId": "6a0f491a-b105-498f-9997-81a02b9971ca", "veresEnrolled": "Y", "threeDSServerTransactionId": "319f6440-64d6-4d49-bd27-d190bd418599", "acsOperatorID": "MerchantACS", "ecommerceIndicator": "spa", "specificationVersion": "2.2.0", "acsTransactionId": "e91a8472-24aa-44de-a54c-4aa145e7ccd3" }, "id": "7455833000666819803209", "issuerInformation": { "clearingData": "6700040102F0F1" }, "orderInformation": { "amountDetails": { "authorizedAmount": "10.99", "currency": "USD" } }, "paymentAccountInformation": { "card": { "brandName": "MASTERCARD", "type": "002" } }, "paymentInformation": { "tokenizedCard": { "type": "002" }, "card": { "bin": "520000", "type": "002" } }, "processorInformation": { "systemTraceAuditNumber": "061923", "approvalCode": "831000", "merchantAdvice": { "code": "01", "codeRaw": "M001" }, "responseDetails": "ABC", "networkTransactionId": "0425MCC444569", "retrievalReferenceNumber": "511512061923", "consumerAuthenticationResponse": { "code": "2", "codeRaw": "2" }, "transactionId": "0425MCC444569", "responseCode": "00", "avs": { "code": "Y", "codeRaw": "Y" } }, "reconciliationId": "7455833000666819803209", "status": "AUTHORIZED", "submitTimeUtc": "2025-04-25T12:15:03Z", "tokenInformation": { "additionalInformation": "0" } }
Authentication Examples Using Digital Payment (Google Pay)
Digital payments are electronic payments that transfer funds from one payment account to
another. These use cases demonstrate how the authentication service works using a
digital payment method like Google Pay.
Setting Up Device Data Collection Using Digital Payment
(Google Pay)
Running the Setup service identifies the customer's bank and prepares for collecting data
about the device that the customer is using to place the order. This use case
demonstrates how the service works using a digital payment method like Google Pay.
Card-Specific Requirements
Some payment cards require specific information to be collected during a
transaction.
- This field is required when the card type is JCB, Cartes Bancaires, China UnionPay, or Meeza.
Country-Specific Requirements
These fields are required for transactions in specific countries.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in merchant configuration during merchant boarding.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in merchant configuration during merchant boarding.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for Device Data Collection
These fields are the minimum fields required when you request the Payer Authentication Setup
service. Other fields that can be used to collect additional information during a
transaction are listed in the optional fields section. Under certain circumstances,
a field that is normally optional might be required. The circumstance that makes an
optional field required is noted.
Required Fields
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- This field is required for the US and Canada.
- This field is required when theorderInformation.billTo.country fieldfield value isUSorCA.
- This field is required when the card type is Cartes Bancaires, JCB, China UnionPay, or Meeza.
Optional Fields for Device Data Collection
These fields are optional for setting up a Payer Authentication transaction. Under
certain circumstances, a field might appear as both an optional field and a required
field.
REST Example: Setting Up Device Data Collection When Using
Digital Payment (Google Pay)
Request
{ "paymentInformation": { "fluidData" : { "value" : "eyJzaWduYXR1cmUiOiJNRVFDSUVhVVBmc1RIMERyMnZmeG8wVkFlZ3N2bHlSRzdENEFsYmRwa1pPdlNzZGtBaUFVO DE2aHpmMG5BMzJzQmx6anlUSURyZXBHNUY1eEtlRmNnSE9aK3RML2ZRXHUwMDNkXHUwMDNkIiwiaW50ZXJtZW RpYXRlU2lnbmluZ0tleSI6eyJzaWduZWRLZXkiOiJ7XCJrZXlWYWx1ZVwiOlwiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1p JemowREFRY0RRZ0FFOFdKSHVMOFVuWW9WWDNHV3dGVkJpcnh6L3lJdGl0aW9neWhDeGpCRm5tS3pCcWs2K3ln VU5SUGF4THdaaWtILzBxV0s1QXhlc3BDNVhwN1NHNUN1T1FcXHUwMDNkXFx1MDAzZF wiLFwia2V5RXhwaXJhdG lvblwiOlwiMTYzMDUxNjYyODA0OVwifSIsInNpZ25hdHVyZXMiOlsiTUVVQ0lRRHlTQTV 1T2t5UXQ5cFoyQlEzaXBmcG NWT0F5ZmIzM2ozUEZPQUw3K1o5S3dJZ2FjWWp2YWJpTEUyWHFkNU1xNGphNStEVldoREttVHpoMmk1RGlnbllFQ ndcdTAwM2QiXX0sInByb3RvY29sVmVyc2lvbi I6IkVDdjIiLCJzaWduZWRNZXNzYWdlIjoie1wiZW5jcnlwdGVkTWVzc2F nZVwiOlwiWG5qOGxSSWhGMDVEWWdRK3hwNEE5YUhsVGE1U2ljdUJac2w1L2NNRkJlclBBY1RzaE4zRFlOb1MvdE VkRkRYRzZJRXBpVlcxVnV6OUprejNWWGdpMzJrT21EVk9aakJNWTFvVHdTQnA5WG53ejlLYUtOekYvRFBSTy9jbStob W9iZ2dSdmxGSStOekN5U1VNWW1hbTJjZFUyZGRZWmZHck9nZWNSc3FrdW1tNmlMa0xGQTFJcDFrNWFRV21EUE lEdTh1SnNmbWs4bzMyMlpteVdMMVVWenE0WHFkNTZScXZoL1VFeEp3RC9HZXU5SW00M0pmblZqckVkeDE0Ykx1 OUpmMHJrcU5ONG5sM0NVZEFoMVNhZnBzdkduTVRML1Nmenk1ZGdDZlRDcHJDdW85UVZPaXVValBJNUdXRlBKS WVVVVU1cUZhcis3NXFBT2dvZ0tNRUZ3OFVxL1A0UjBDcXczcFllNnc2enlaVzdDV1YxRzRMc3BITTNRaE83bFZNNmR jSWZQWW00ZitubWI3UzgwY29KTXR1QjkxVEhjZzJmVXhwM2FrWEhSdzNyN3BRZk9KWWFieUlURmtieDh0Yi9ieWl6 VUZEVVU4S3EwTmVCVTVrQng2L21qUDg4bWxoWkE2ZERrNWJVc2o4SDBDSk9nWUtCbVgyR09vamRtTDd5YlBnTU 5vNnhsYjRtUzVkaTJjZUpFakFybEZFa3NWNTlsS2lodk5pckRZc1BTU2lTRFVZNjBMUXVuTEErYjFMSnpCMkpYelFcIixcI mVwaGVtZXJhbFB1YmxpY0tleVwiOlwiQk84bmtEbE0ycVlCQmpQd00wbDdUTFY2UytUbzZDTFl0eXArWGM2cXpQY klLTEgxVytySGh3NUlwU2lqb1lTb3VaclNuWU9LV21yRVAyYmtLMk4rTWFZXFx1MDAzZFwiLFwidGFnXCI6XCJuVU5x UVlxcy9YRVlDMmg0WFlibnVpajFLb1NzUFpacEpqVGI4TVVZcUZNXFx1MDAzZFwifSJ9" } }, "processingInformation": { "paymentSolution": "012" } }
Response to Successful Request
{ "consumerAuthenticationInformation": { "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI5MjlhZDAwYy0zZmEyLTQ5ODgtODRjNC1hYTcxMGFlY2I1 OGEiLCJpYXQiOjE2Mjk4MjY5NjAsImlzcyI6IjVkZDgzYmYwMGU0MjNkMTQ5OGRjYmFjYSIsImV4cCI6MTYyOTg zMDU2MCwiT3JnVW5pdElkIjoiNWI5YzRiYjNmZjYyNmIxMzQ0ODEwYTAxIiwiUmVmZXJlbmNlSWQiOiI5NDkz ZjJiZi04NmIwLTQ0ZmYtYmJjZS0wZjU1MjNlMWIzNGEifQ.FgVbwbW9_lwnlr4ovYR5VVPuVl6CklAVHHXS_5OD skA", "deviceDataCollectionUrl": "https://centinelapistag.cardinalcommerce.com/V1/Cruise/Collect", "referenceId": "9493f2bf-86b0-44ff-bbce-0f5523e1b34a", "token": "AxizbwSTVW4Mj1fvsU27ABEBURxPZebOAE1IZNJMvRiuZhTA9AAA+QBf" }, "id": "6298269599786696003003", "status": "COMPLETED", "submitTimeUtc": "2022-08-24T17:42:40Z" }
Checking Enrollment in Payer Authentication Using Digital
Payment (Google Pay)
Running the Check Enrollment service collects data about the device that the customer is
using to place the order and verifies that the customer is enrolled in a payer
authentication program. This use case demonstrates how the service works with a digital
payment method like Google Pay.
Card-Specific Requirements
Some payment cards require information to be collected during a transaction.
- This field is recommended for Discover ProtectBuy.
- This field is required when the card type is Cartes Bancaires.
- This field is required for American Express SafeKey (U.S.) when the product code isAIRfor an airline purchase.
- This field is required for Visa Secure travel.
- This field is required only for American Express SafeKey (US).
- This field is required only for American Express SafeKey (US.)
- This field is required only for American Express SafeKey (US).
- This field is required only for American Express SafeKey (US).
- This field is required for American Express SafeKey (US).
- This field is required when the card type is Cartes Bancaires, JCB, China UnionPay, or Meeza.
Country-Specific Requirements
These fields are required for transactions in specific countries.
- This field is required for transactions processed in France.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- This field is required for transactions in the US and Canada.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
- This field is required when theorderInformation.shipTo.countryfield value isCA,US, orChina.
- This field is required when theorderInformation.shipTo.countryfield value isUSorCA.
Processor-Specific Requirements
These fields are required by specific processors for transactions.
- This field is required only for merchants in Saudi Arabia.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authenticationsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authenticationsRequired Fields for Checking Enrollment in Payer
Authentication
These fields are the minimum fields required for verifying that a customer is
enrolled in a payer authentation program. Under certain circumstances, a field that
normally is optional might be required. The circumstance that makes an optional
field required is noted.
Required Fields
- This field is required (when available) ifbuyerInformation.workPhoneis not used, unless market or regional mandate restricts sending this information.
- This field is required (when available) ifbuyerInformation.mobilePhoneis not used, unless market or regional mandate restricts sending this information.
- This field is required for SDK integration. When you use the SDK integration, this field is dynamically set toSDK. When you use the JavaScript code, this field is dynamically set toBrowser. For merchant-initiated or 3RI transactions, you must set the field to3RI. When you use this field in addition to JavaScript code, you must set the field toBrowser.
- For non-payment authentication, set to a value of02.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- When the customer’s browser provides this value, you must include that value in your request.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- This field is required when theorderInformation.lineItems.unitPricefield is not used.
- This field is required for transactions in the US and Canada.
- This field is required when thepaymentInformation.card.numberfield is included.
- This field is required when thepaymentInformation.card.numberfield is included.
Optional Fields for Checking Enrollment in Payer
Authentication
These fields are usually optional when you verify enrollment for a Payer Authentication
transaction. In certain circumstances, the information provided by an optional field
might be required before a transaction can proceed. Those optional fields that are
sometimes required are also listed as required fields with the circumstance
described.
- This field is only used with mada cards.
- WARNINGModifying this field could affect your liability shifts. Unless you are very familiar with the various types of authentication, do not change the default settings before consulting with customer support.
- This field is recommended for Discover ProtectBuy.
- This field is recommended for Discover ProtectBuy.
- This field is recommended for Discover ProtectBuy.
- This field is required for US and Canada.
- This field is strongly recommended.
- This field is strongly recommended.
- When this field is empty, the current date is used.
- riskInformation.buyerHistory. transactionCountDay
- This field is recommended for Discover ProtectBuy. Contact customer support for more information about this field.
- riskInformation.buyerHistory. transactionCountYear
- This field is recommended for Discover ProtectBuy. Contact customer support for more information about this field.
- riskInformation.buyerHistory. accountPurchases
- Contact customer support for more information about this field.
- riskInformation.buyerHistory. addCardAttempts
- This field is recommended for Discover ProtectBuy. Contact customer support for more information about this field.
- riskInformation.buyerHistory. customerAccount.createDate
- This field is recommended for Discover ProtectBuy. Contact customer support for more information about this field.
- riskInformation.buyerHistory. customerAccount.lastChangeDate
- This field is recommended for Discover ProtectBuy. Contact customer support for more information about this field.
- riskInformation.buyerHistory. customerAccount.passwordChangeDate
- This field is recommended for Discover ProtectBuy. Contact customer support for more information about this field.
- riskInformation.buyerHistory. customerAccount.shipAddressUsageDate
- Contact customer support for more information about this field.
- riskInformation.buyerHistory. paymentAccountDate
- Contact customer support for more information about this field.
- riskInformation.buyerHistory. priorSuspiciousActivity
- Contact customer support for more information about this field.
- riskInformation.buyerHistory. transactionCountDay
- Contact customer support for more information about this field.
- riskInformation.buyerHistory. transactionCountYear
- Contact customer support for more information about this field.
REST Example: Checking Enrollment in Payer Authentication Using Google Pay
Request
{ "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "10.99" }, "billTo": { "address1": "1 Market St", "address2": "Address 2", "administrativeArea": "CA", "country": "US", "locality": "san francisco", "firstName": "John", "lastName": "Doe", "phoneNumber": "4158880000", "email": "[email protected]", "postalCode": "94105" } }, "paymentInformation": { "fluidData" : { "value" : "eyJzaWduYXR1cmUiOiJNRVFDSUVhVVBmc1RIMERyMnZmeG8wVkFlZ3N2bHlSRzdENEFsYmRwa1pPdlNzZGtBaUFVO DE2aHpmMG5BMzJzQmx6anlUSURyZXBHNUY1eEtlRmNnSE9aK3RML2ZRXHUwMDNkXHUwMDNkIiwiaW50ZXJtZWRpYX RlU2lnbmluZ0tleSI6eyJzaWduZWRLZXkiOiJ7XCJrZXlWYWx1ZVwiOlwiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1p JemowREFRY0RRZ0FFOFdKSHVMOFVuWW9WWDNHV3dGVkJpcnh6L3lJdGl0aW9neWhDeGpCRm5tS3pCcWs2K3lnVU5S UGF4THdaaWtILzBxV0s1QXhlc3BDNVhwN1NHNUN1T1FcXHUwMDNkXFx1MDAzZFwiLFwia2V5RXhwaXJhdGlvblwiOlwiM TYzMDUxNjYyODA0OVwifSIsInNpZ25hdHVyZXMiOlsiTUVVQ0lRRHlTQTV1T2t5UXQ5cFoyQlEzaXBmcGNWT0F5ZmIzM2oz UEZPQUw3K1o5S3dJZ2FjWWp2YWJpTEUyWHFkNU1xNGphNStEVldoREttVHpoMmk1RGlnbllFQndcdTAwM2QiXX0sInByb 3RvY29sVmVyc2lvbiI6IkVDdjIiLCJzaWduZWRNZXNzYWdlIjoie1wiZW5jcnlwdGVkTWVzc2FnZVwiOlwiWG5qOGxSSWhGMD VEWWdRK3hwNEE5YUhsVGE1U2ljdUJac2w1L2NNRkJlclBBY1RzaE4zRFl Ob1MvdEVkRkRYRzZJRXBpVlcxVnV6OUprejNW WGdpMzJrT21EVk9aakJNWTFvVHdTQnA5WG53ejlLYUtOekYvRFBSTy9jbStobW9iZ2dSdmxGSStOekN5U1VNWW1hbTJjZ FUyZGRZWmZHck9nZWNSc3FrdW1tNmlMa0xGQTFJcDFrNWFRV21EUElEdTh1SnNmbWs4bzMyMlpteVdMMVVWenE0W HFkNTZScXZoL1VFeEp3RC9HZXU5SW00M0pmblZqckVkeDE0Ykx1OUpmMHJrcU5ONG5sM0NVZEFoMVNhZnBzdkduTVR ML1Nmenk1ZGdDZlRDcHJDdW85UVZPaXVValBJNUdXRlBKSWVVVVU1cUZhcis3NXFBT2dvZ0tNRUZ3OFVxL1A0UjBDcXcz cFllNnc2enlaVzdDV1YxRzRMc3BITTNRaE83bFZNNmRjSWZQWW00ZitubWI3UzgwY29KTXR1QjkxVEhjZzJmVXhwM2FrWE hSdzNyN3BRZk9KWWFieUlURmtieDh0Yi9ieWl6VUZEVVU4S3EwTmVCVTVrQng2L21qUDg4bWxoWkE2ZERrNWJVc2o4SD BDSk9nWUtCbVgyR09vamRtTDd5YlBnTU5vNnhsYjRtUzVkaTJjZUpFakFybEZFa3NWNTlsS2lodk5pckRZc1BTU2lTRFVZNjB MUXVuTEErYjFMSnpCMkpYelFcIixcImVwaGVtZXJhbFB1YmxpY0tleVwiOlwiQk84bmtEbE0ycVlCQmpQd00wbDdUTFY2Uy tUbzZDTFl0eXArWGM2cXpQYklLTEgxVytySGh3NUlwU2lqb1lTb3VaclNuWU9LV21yRVAyYmtLMk4rTWFZXFx1MDAzZFwiL FwidGFnXCI6XCJuVU5xUVlxcy9YRVlDMmg0WFlibnVpajFLb1NzUFpacEpqVGI4TVVZcUZNXFx1MDAzZFwifSJ9" } }, "processingInformation": { "paymentSolution": "012" }, "buyerInformation": { "mobilePhone": "1245789632" }, "consumerAuthenticationInformation": { "transactionMode": "MOTO" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "1726870134497" }, "consumerAuthenticationInformation": { "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI5MjlhZDAwYy0zZmEyLTQ5ODgtODRjNC1hYTcxMGFl Y2I1OGEiLCJpYXQiOjE2Mjk4MjY5NjAsImlzcyI6IjVkZDgzYmYwMGU0MjNkMTQ5OGRjYmFjYSIsImV4cCI6MTYyOTgz MDU2MCwiT3JnVW5pdElkIjoiNWI5YzRiYjNmZjYyNmIxMzQ0ODEwYTAxIiwiUmVmZXJlbmNlSWQiOiI5NDkzZjJiZi0 4NmIwLTQ0ZmYtYmJjZS0wZjU1MjNlMWIzNGEifQ.FgVbwbW9_lwnlr4ovYR5VVPuVl6CklAVHHXS_5ODskA", "deviceDataCollectionUrl": "https://centinelapistag.cardinalcommerce.com/V1/Cruise/Collect", "referenceId": "9493f2bf-86b0-44ff-bbce-0f5523e1b34a", "token": "AxizbwSTVW4Mj1fvsU27ABEBURxPZebOAE1IZNJMvRiuZhTA9AAA+QBf" }, "id": "6298269599786696003003", "status": "COMPLETED", "submitTimeUtc": "2022-08-24T17:42:40Z" }
Validating a Challenge Using Digital Payment (Google
Pay)
Running the Validation service compares the customer's response to the challenge from the issuing bank to
validate the customer identity.
Card-Specific Requirements
Some payment cards require additional information to be collected during a
transaction.
- This field is recommended for Discover ProtectBuy.
- This field is required when the card type is Cartes Bancaires.
- This field is required for American Express SafeKey (US) when the product code isAIRfor an airlinepurchase).
- This field is required for Visa Secure travel.
- This field is required only for American Express SafeKey (US).
- This field is required only for American Express SafeKey (US)
Country-Specific Requirements
These fields are required for transactions in specific countries.
- This field is required for transactions processed in France.
- This field is required for transactions in the US and Canada.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-resultsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-resultsRequired Fields for Validating Payer Authentication
These fields are the minimum fields required when requesting the Payer Authentication
Validation service. Other fields to collect additional information during a
transaction are available in the list of optional fields. Under certain
circumstances, some of the fields that are normally optional may be required. The
circumstances that make an optional field, a required field, are noted.
- authenticationTransactionID
- clientReferenceInformation.code
- merchantID
- orderInformation.amountDetails.currency
- orderInformation.amountDetails.total Amount
- Required when theorderInformation.lineItems.unitPricefield is not used.
- orderInformation.lineItems.unitPrice
- Required when theorderInformation.amountDetails.totalAmountfield is not used.
- paymentInformation.card.number
- paymentInformation.card.type
- paymentInformation.card.expirationMonth
- Required whenpaymentInformation.card.numberis not included.
- paymentInformation.card.expirationYear
- Required whenpaymentInformation.card.numberis included.
Optional Fields for Validating a Challenge
These fields are optional when validating a Payer Authentication transaction. In
certain circumstances, the information provided by an optional field might be
required before a transaction can proceed. Those optional fields that are sometimes
required are listed in the required fields with the circumstance described.
REST Example: Validating a Challenge When Using Google
Pay
Request
{ "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "200.00 }, "lineItems": [ { "unitPrice": "10", "quantity": "2", "taxAmount": "32.40" } ] }, "paymentInformation": { "card": { "type": "002", "expirationMonth": "12", "expirationYear": "2025", "number": "5200000000000007" }, "fluidData": { "value":"XFx1MDAzZFwiLFwia2V5RXhwaXJhdGlvblwiOlwiMTYzMDUxNjYyODA0OVwifSIsInNpZ25hdHVyZXMiOlsiTUV VQ0lRRHlTQTV1T2t5UXQ5cFoyQlEzaXBmcGNWT0F5ZmIzM2ozUEZPQUw3K1o5S3dJZ2FjWWp2YWJpTEUyWHFkNU1 xNGphNStEVldoREttVHpoMmk1RGlnbllFQndcdTAwM2QiXX0sInByb3RvY29sVmVyc2lvbiI6IkVDdjIiLCJzaWduZW RNZXNzYWdlIjoie1wiZW5jcnlwdGVkTWVzc2FnZVwiOlwiWG5qOGxSSWhGMDVEWWdRK3hwNEE5YUhsVGE1U 2ljdUJac2w1L2NNRkJlclBBY1RzaE4zRFlOb1MvdEVkRkRYRzZJRXBpVlcxVnV6OUprejNWWGdpMzJrT21EVk9aakJ NWTFvVHdTQnA5WG53ejlLYUtOekYvRFBSTy9jbStobW9iZ2dSdmxGSStOekN5U1VNWW1hbTJjZFUyZGRZWmZH ck9nZWNSc3FrdW1tNmlMa0xGQTFJcDFrNWFRV21EUElEdTh1SnNmbWs4bzMyMlpteVdMMVVWenE0WHFkNT ZScXZoL1VFeEp3RC9HZXU5SW00M0pmblZqckVkeDE0Ykx1OUpm" } }, "consumerAuthenticationInformation": { "authenticationTransactionId": "PYffv9G3sa1e0CQr5fV0" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "1675288043120" }, "consumerAuthenticationInformation": { "indicator": "internet", "ucafCollectionIndicator": "0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "token": "AxjzbwSTbhMKrRswWTYSABECT9u+QBvfSB84gL2IZNJMvRiyubWAOAAA+Qxb" }, "id": "6752880430346470503954", "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2023-02-01T21:47:23Z" }
Authentication Examples Using TMS Tokens
These examples list the API fields that are required for the Setup, Check Enrollment, and
Validate Authentication services when using TMS tokens. An example of a request payload
and a successful response that occurs with each service is provided.
Setting Up Device Data Collection with a
TMS Token
Running the Setup service identifies the customer's bank and prepares for collecting data
about the device that the customer is using to place the order. In this scenario, a TMS
token is used instead of the card.
Card-Specific Requirements
Some payment cards require specific information to be collected during a
transaction.
- This field is required when the card type isJCB,Cartes Bancaires, China UnionPay, or Meeza.
Country-Specific Requirements
These fields are required for transactions in specific countries.
- For Meeza transactions, this value must be set toEGif Egypt was not set as the country in merchant configuration during merchant boarding.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
- For Meeza transactions, this value must be set toEGif Egypt was not set as the country in merchant configuration during merchant boarding.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for Setting Up Data Collection When Using
a TMS Token
These fields are the minimum fields required when you request the Payer Authentication Setup
service. Other fields that can be used to collect additional information during a
transaction are listed in the optional fields section. Under certain circumstances,
a field that normally is optional might be required. The circumstance that makes an
optional field required is noted.
REST Example: Setting Up Device Data Collection When Using a TMS Token
Request
{ "paymentInformation": { "card": { "expirationMonth": "05", "expirationYear": "2029" }, "customer": { "customerId": "1108590036500854" } } }
Response to Successful Request
{ "consumerAuthenticationInformation": { "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ey JqdGkiOiIxZmQ5ZWIyNi1jOTY1LTRkZmEtYTM5Yy1hZDExMGU2NjQ3ZmMiLCJpYXQi OjE3MjUzNDcwNDksImlzcyI6IjVkZDgzYmYwMGU0MjNkMTQ5OGRjYmFjYSIsImV4 cCI6MTcyNTM1MDY0OSwiT3JnVW5pdElkIjoiNjY0MWRiMGZmOTRmNzI3ZjU0Y2RlO TQ2IiwiUmVmZXJlbmNlSWQiOiIzZGM2ZDhmZS1lM2I1LTQyMTItYWY5MC1jNDcxYj czMTYwMjAifQ.90_yhusiQL9Yq10221zB04vZAKaiGnQ2ryvakeyuk1k", "deviceDataCollectionUrl": "https://centinelapistag.cardinalcommerce.com/V1/Cruise/Collect", "referenceId": "3dc6d8fe-e3b5-4212-af90-c471b7316020", "token": "AxizbwSTiTYf1D7m/jQkAG8BT34jOu4gAhLwyaSZejF9z2oA8AAA0gbV" }, "id": "7253470490136808404004", "status": "COMPLETED", "submitTimeUtc": "2024-09-03T07:04:09Z" }
Checking Enrollment When Using a TMS Token
Running the Check Enrollment service identifies the customer's bank and collects data
about the device that the customer is using to place the order. This use case
demostrates this process while using a TMS token.
Card-Specific Requirements
Some payment cards require additional information to be collected during a
transaction.
- This field is recommended for Discover ProtectBuy.
- This field is required when the card type is Cartes Bancaires.
- This field is required for American Express SafeKey (US) when the product code isAIRfor an airline purchase.
- This field is required for Visa Secure travel.
- This field is required only for American Express SafeKey (US).
- This field is required only for American Express SafeKey (US.)
- This field is required only for American Express SafeKey (US).
- This field is required only for American Express SafeKey (US).
- This field is required for American Express SafeKey (US).
- This field is required when the card type is Cartes Bancaires, JCB, China UnionPay, or Meeza.
Country-Specific Requirements
These fields are required for transactions in specific countries.
- This field is required for transactions processed in France.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- This field is required for transactions in the US and Canada.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
- This field is required when theorderInformation.shipTo.countryfield value isCAorUS.
- This field is required when theorderInformation.shipTo.countryfield value isUSorCA.
Processor-Specific Requirements
These fields are required by specific processors for transactions.
- This field is required only for merchants in Saudi Arabia.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authenticationsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authenticationsRequired Fields for Checking Enrollment in Payer
Authentication While Using a TMS Token
These fields are the minimum fields required for verifying that a customer is
enrolled in a payer authentication program. It doesn't matter if the enrollment
check is frictionless or results in a challenge, the same fields are required in the
request. The fields in the response will differ.
Required Fields
- When the customer’s browser provides this value, you must include that value in your request.
- This field is required when theorderInformation.lineItems.unitPricefield is not used.
- This field is required for the US and Canada.
- This field is required for the US and Canada.
REST Example: Checking Enrollment When Using a TMS Token
Request
{ "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "10.99" }, "billTo": { "address1": "1 Market St", "address2": "Address 2", "administrativeArea": "CA", "country": "US", "locality": "san francisco", "firstName": "John", "lastName": "Doe", "phoneNumber": "4158880000", "email": "[email protected]", "postalCode": "94105" } }, "paymentInformation": { "card": { "expirationMonth": "05", "expirationYear": "2029" }, "customer": { "customerId": "1108590036500854" } }, "deviceInformation": { "httpAcceptBrowserValue": "data", "httpAcceptContent": "pa_http_user_accept_value", "httpBrowserLanguage": "en_us", "httpBrowserJavaEnabled": false, "httpBrowserJavaScriptEnabled": false, "httpBrowserColorDepth": "24", "httpBrowserScreenHeight": "864", "httpBrowserScreenWidth": "1536", "httpBrowserTimeDifference": "300", "userAgentBrowserValue": "123" }, "consumerAuthenticationInformation": { "deviceChannel": "Browser", "referenceId": "CybsCruiseTester-6259e7e2" } }
Frictionless Response to Request
{ "consumerAuthenticationInformation": { "eciRaw": "05", "authenticationTransactionId": "e2elnNP8zJ2J67lKcaX0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "eci": "05", "token": "AxjzbwSTiTYllZBAC15FAG8BT34jOzxHSBcS0JeGTSTL0Yvue1AHgAAAyxUk", "cavv": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "paresStatus": "Y", "acsReferenceNumber": "Cardinal ACS", "xid": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "directoryServerTransactionId": "3859eace-2a42-4bd7-9252-8507f02d5edd", "veresEnrolled": "Y", "threeDSServerTransactionId": "932a3c41-880d-4791-a98f-c6beaef90b23", "acsOperatorID": "MerchantACS", "ecommerceIndicator": "vbv", "specificationVersion": "2.1.0", "acsTransactionId": "54ef7fd4-e93d-42de-82ba-ad91dd21c94c" }, "id": "7253472110066822504005", "paymentInformation": { "card": { "bin": "400009", "type": "VISA" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2024-09-03T07:06:51Z" }
Challenge Response to Request
{ "consumerAuthenticationInformation": { "challengeRequired": "N", "authenticationTransactionId": "z7BruZ1qn416WGknmAX0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "token": "AxjzbwSTiTcMOwhjPANlAG8BT34jQMsnSBcS0JddrSTL0Yvue1AIAAAA+AWf", "acsUrl": "https://0merchantacsstag.cardinalcommerce.com/MerchantACSWeb/creq.jsp", "acsReferenceNumber": "Cardinal ACS", "stepUpUrl": "https://centinelapistag.cardinalcommerce.com/V2/Cruise/StepUp", "pareq": "eyJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiI0ZTUwZjU4Ni1iMTVjLTRjMDMtYTE4Ni1lYWZiNDBkNTBiODAiLCJhY3NUcmFuc0lEIjoiMzg4OGUxNTMtNmI5Ny00ZjQzLWFmZWUtNjA1MjdjMmUwYjkxIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjAyIn0", "directoryServerTransactionId": "2f44602b-ce95-4a7e-9ad1-920e7ace0676", "veresEnrolled": "Y", "threeDSServerTransactionId": "4e50f586-b15c-4c03-a186-eafb40d50b80", "acsOperatorID": "MerchantACS", "specificationVersion": "2.1.0", "acsTransactionId": "3888e153-6b97-4f43-afee-60527c2e0b91" }, "errorInformation": { "reason": "CONSUMER_AUTHENTICATION_REQUIRED", "message": "The cardholder is enrolled in Payer Authentication. Please authenticate the cardholder before continuing with the transaction." }, "id": "7253537031246871004005", "paymentInformation": { "card": { "bin": "400009", "type": "VISA" } }, "status": "PENDING_AUTHENTICATION", "submitTimeUtc": "2024-09-03T08:55:03Z" }
Validating a Challenge When Using a TMS Token
Running the Validation service compares the customer's response to the challenge from the issuing bank to
validate the customer identity.
Card-Specific Requirements
Some payment cards require additional information to be collected during a
transaction.
- This field is recommended for Discover ProtectBuy.
- This field is required when the card type is Cartes Bancaires.
- This field is required for American Express SafeKey (US) when the product code isAIRfor an airlinepurchase).
- This field is required for Visa Secure travel.
- This field is required only for American Express SafeKey (US).
- This field is required only for American Express SafeKey (US)
Country-Specific Requirements
These fields are required for transactions in specific countries.
- This field is required for transactions processed in France.
- This field is required for transactions in the US and Canada.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-resultsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-resultsRequired Fields for Validating a Challenge When Using a
TMS Token
These fields are the minimum fields required when you request the Payer Authentication Validation
service. Other fields that can be used to collect additional information during a
transaction are listed in the optional fields section. Under certain circumstances,
a field that normally is optional might be required. The circumstance that makes an
optional field required is noted.
Required Fields
REST Example: Validating a Challenge When Using a TMS Token
Request
{ "clientReferenceInformation": { "code": "pavalidatecheck", "partner": { "developerId": "7891234", "solutionId": "89012345" } }, "consumerAuthenticationInformation": { "authenticationTransactionId": "z7BruZ1qn416WGknmAX0" } }
Response to Successful Request
{ "clientReferenceInformation": { "code": "pavalidatecheck", "partner": { "developerId": "7891234", "solutionId": "89012345" } }, "consumerAuthenticationInformation": { "indicator": "vbv", "eciRaw": "05", "authenticationResult": "0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "authenticationStatusMsg": "Success", "eci": "05", "token": "AxijLwSTiTcQGTMcD52lAG9PfiNA2ogCEvDJpJl6MX3PagAAmh21", "cavv": "AAIBBYNoEwAAACcKhAJkdQAAAAA=", "paresStatus": "Y", "xid": "AAIBBYNoEwAAACcKhAJkdQAAAAA=", "directoryServerTransactionId": "2f44602b-ce95-4a7e-9ad1-920e7ace0676", "threeDSServerTransactionId": "4e50f586-b15c-4c03-a186-eafb40d50b80", "specificationVersion": "2.1.0", "acsTransactionId": "3888e153-6b97-4f43-afee-60527c2e0b91" }, "id": "7253538119946872004005", "paymentInformation": { "card": { "bin": "400009", "type": "VISA" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2024-09-03T08:56:52Z" }
Authentication Examples Using Flex Microform Tokens
These examples list the API fields that are required for the Setup, Check Enrollment, and
Validate Authentication services when using a Flex Microform token. An example of a
request payload and a successful response that occurs with each service is provided.
A Flex Microform token is valid for 15 minutes. After 15 minutes, a new Flex Microform
token is needed.
Setting Up Device Data Collection When Using a Flex
Microform Token
Running the Setup service identifies the customer's bank and prepares for collecting data
about the device that the customer is using to place the order. In this use case, a Flex
Microform token is used instead of the payment card data. Flex Microform tokens are only
valid for 15 minutes.
Card-Specific Requirements
Some payment cards require specific information to be collected during a
transaction.
- This field is required when the card type isJCB,Cartes Bancaires, China UnionPay, or Meeza.
Country-Specific Requirements
These fields are required for transactions in specific countries.
- For Meeza transactions, this value must be set toEGif Egypt was not set as the country in merchant configuration during merchant boarding.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
- For Meeza transactions, this value must be set toEGif Egypt was not set as the country in merchant configuration during merchant boarding.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for Setting Up Device Data Collection When
Using a Flex Microform Token
This field is required to use a Flex Microform token when you request the payer authentication
Setup service.
Required Fields
- paymentInformation.transientToken
REST Example: Setting Up Device Data Collection When Using a Flex Microform Token
Request
{ "tokenInformation": { "transientToken": "1C0RNHMQBTATXFCFNGR5EXH3XNOP6359LGLL9J283ATABJ8Z11NL66D834239B51" } }
Response to Successful Request
{ "consumerAuthenticationInformation": { "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzOTRmNDJmYS0xNGUxLTQ1ODAtOGUyZi05ZTVkNzM0Y2ZjYmYiLCJpYXQiOjE3MjU0NDQyNzQsImlzcyI6IjVkZDgzYmYwMGU0MjNkMTQ5OGRjYmFjYSIsImV4cCI6MTcyNTQ0Nzg3NCwiT3JnVW5pdElkIjoiNWI5YzRiYjNmZjYyNmIxMzQ0ODEwYTAxIiwiUmVmZXJlbmNlSWQiOiIwMDRhYzBhZC1mMGE2LTQ4MDAtOWQ3YS05NjJkZTZlYjQ0NmMifQ.oZ9gUZ98gbLyWfFDoY4jRknUQppIR-F_8JFXI6LTQWo", "deviceDataCollectionUrl": "https://centinelapistag.cardinalcommerce.com/V1/Cruise/Collect", "referenceId": "004ac0ad-f0a6-4800-9d7a-962de6eb446c", "token": "AxizbwSTiUOd9P85Jq6mABEBTyDYFkxkAhMQyaSZejFczCmBWAAAnxnb" }, "id": "7254442740716751204006", "status": "COMPLETED", "submitTimeUtc": "2024-09-04T10:04:34Z" }
Checking Enrollment When Using a Flex Microform Token
Running the Check Enrollment service identifies the customer's bank and prepares for
collecting data about the device that the customer is using to place the order. In this
use case, a Flex Microform token is used instead of the payment card data. Flex
Microform tokens are only valid for 15 minutes.
Card-Specific Requirements
Some payment cards require specific information to be collected during a
transaction.
- This field is required when the card type isJCB, Cartes Bancaires,China UnionPay, or Meeza.
Country-Specific Requirements
These fields are required for transactions in specific countries.
- For Meeza transactions, this value must be set toEGif Egypt was not set as the country in merchant configuration during merchant boarding.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
- For Meeza transactions, this value must be set toEGif Egypt was not set as the country in merchant configuration during merchant boarding.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for Checking Enrollment When Using a Flex
Microform Token
These fields are the minimum fields required for verifying that a customer is
enrolled in a payer authentication program while using a Flex Microform token. It
doesn't matter if the enrollment check is frictionless or results in a challenge,
the same fields are required in the request. The fields in the response will
differ.
Required Fields
- When the customer’s browser provides this value, you must include that value in your request.
- This field is required when theorderInformation.lineItems.unitPricefield is not used.
- This field is required for the US and Canada.
- This field is required for the US and Canada.
REST Example: Checking Enrollment When Using a Flex Microform Token (Challenge)
Request
{ "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "10.99" }, "billTo": { "address1": "1 Market St", "address2": "Address 2", "administrativeArea": "CA", "country": "US", "locality": "san francisco", "firstName": "John", "lastName": "Doe", "phoneNumber": "4158880000", "email": "[email protected]", "postalCode": "94105" } }, "buyerInformation": { "mobilePhone": "1245789632" }, "deviceInformation": { "ipAddress": "139.130.4.5", "httpAcceptContent": "test", "httpBrowserLanguage": "en_us", "httpBrowserJavaEnabled": "N", "httpBrowserJavaScriptEnabled": "Y", "httpBrowserColorDepth": "24", "httpBrowserScreenHeight": "100000", "httpBrowserScreenWidth": "100000", "httpBrowserTimeDifference": "300", "userAgentBrowserValue": "GxKnLy8TFDUFxJP1t" }, "consumerAuthenticationInformation": { "deviceChannel": "BROWSER", "transactionMode": "eCommerce", "referenceId": "CybsCruiseTester-b767b4ea" }, "tokenInformation": { "transientToken": "1C0RNHMQBTATXFCFNGR5EXH3XNOP6359LGLL9J283ATABJ8Z11NL66D834239B51" } }
Response to Successful Request
{ "clientReferenceInformation": { "code": "1725444594611" }, "consumerAuthenticationInformation": { "challengeRequired": "N", "authenticationTransactionId": "jzULqrneaqG5H3Jev780", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "token": "AxjzbwSTiUOpWHIlxG5lABEBTyDYFlzPSBcS0JhdrSTL0YrmYUwKwAAAwwQS", "acsUrl": "https://0merchantacsstag.cardinalcommerce.com/MerchantACSWeb/creq.jsp", "acsReferenceNumber": "Cardinal ACS", "stepUpUrl": "https://centinelapistag.cardinalcommerce.com/V2/Cruise/StepUp", "pareq": "eyJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiIxZDBjNzI1Ny05YmQzLTRmZTktYjM5OS04YzUxM2M4OGQ2OTkiLCJhY3NUcmFuc0lEIjoiODNjN2U2MzYtM2FmMi00YTk2LTllNTktN2M2NzU0MTI3ZDI0IiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjAyIn0", "directoryServerTransactionId": "231b97bd-2a3d-4500-b666-fda90334e5db", "veresEnrolled": "Y", "threeDSServerTransactionId": "1d0c7257-9bd3-4fe9-b399-8c513c88d699", "acsOperatorID": "MerchantACS", "specificationVersion": "2.2.0", "acsTransactionId": "83c7e636-3af2-4a96-9e59-7c6754127d24" }, "errorInformation": { "reason": "CONSUMER_AUTHENTICATION_REQUIRED", "message": "The cardholder is enrolled in Payer Authentication. Please authenticate the cardholder before continuing with the transaction." }, "id": "7254445946286742204005", "paymentInformation": { "card": { "bin": "445653", "type": "VISA" } }, "status": "PENDING_AUTHENTICATION", "submitTimeUtc": "2024-09-04T10:09:55Z" }
Validating a Challenge When Using a Flex Microform Token
Running the Validation service identifies the customer's bank and prepares for collecting
data about the device that the customer is using to place the order. In this use case, a
Flex Microform token is used instead of the payment card data.
Card-Specific Requirements
Some payment cards require specific information to be collected during a
transaction.
- This field is required when the card type isJCB, Cartes Bancaires, China UnionPay, or Meeza.
Country-Specific Requirements
These fields are required for transactions in specific countries.
- For Meeza transactions, this value must be set toEGif Egypt was not set as the country in merchant configuration during merchant boarding.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
- For Meeza transactions, this value must be set toEGif Egypt was not set as the country in merchant configuration during merchant boarding.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for Validating a Challenge When Using a
Flex Microform Token
These are the minimum fields required to use a Flex Microform token when you validate a Payer
Authentication challenge.
REST Example: Validating a Challenge When Using a Flex Microform Token
Request
{ "paymentInformation": { "card": { "type": "001" } }, "consumerAuthenticationInformation": { "authenticationTransactionId": "jzULqrneaqG5H3Jev780" } }
Response to Successful Request
{ "clientReferenceInformation": { "code": "pavalidatecheck", "partner": { "developerId": "7891234", "solutionId": "89012345" } }, "consumerAuthenticationInformation": { "indicator": "vbv", "eciRaw": "05", "authenticationResult": "0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "authenticationStatusMsg": "Success", "eci": "05", "token": "AxizLwSTiUOsVuUwvt1DABEBTyDYFmPAAhMQyaSZejFczCmATUmo", "cavv": "AAIBBYNoEwAAACcKhAJkdQAAAAA=", "paresStatus": "Y", "xid": "AAIBBYNoEwAAACcKhAJkdQAAAAA=", "directoryServerTransactionId": "231b97bd-2a3d-4500-b666-fda90334e5db", "threeDSServerTransactionId": "1d0c7257-9bd3-4fe9-b399-8c513c88d699", "specificationVersion": "2.2.0", "acsTransactionId": "83c7e636-3af2-4a96-9e59-7c6754127d24" }, "id": "7254446789006754504003", "paymentInformation": { "card": { "bin": "445653", "type": "VISA" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2024-09-04T10:11:19Z" }
Authentication Examples Using Network Token/Tokenized Cards
These examples list the API fields that are required for the Setup, Check Enrollment, and
Validate Authentication services when using network tokens or tokenized cards. An
example of a request payload and a successful response that occurs with each service is
provided.
Setting Up Device Data Collection with a Network
Token/Tokenized Card
Running the Setup service identifies the customer's bank and prepares for collecting data
about the device that the customer is using to place the order. In this instance, a
tokenized card is used instead of the payment card data.
Card-Specific Requirements
Some payment cards require specific information to be collected during a
transaction.
- This field is required when the card type isJCB, Cartes Bancaires, China UnionPay, or Meeza.
Country-Specific Requirements
These fields are required for transactions in specific countries.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in merchant configuration during merchant boarding.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in merchant configuration during merchant boarding.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for Setting Up Device Data Collection with
a Network Token/Tokenized Card
These fields are the minimum fields required when you request the Payer Authentication Setup
service while using a tokenized card. Other fields that are required during Setup
service are listed in Required Fields
for Collecting Device Data.
REST Example: Setting Up Device Data Collection When Using a Network Token/Tokenized Card
Request
{ "paymentInformation": { "tokenizedCard": { "transactionType": "1", "type": "001", "expirationMonth": "11", "expirationYear": "2025", "number": "4111111111111111" } } }
Response to Successful Request
{ "clientReferenceInformation": { "code": "1725450205426" }, "consumerAuthenticationInformation": { "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlOGI4ODk5Ny1iYzY2LTRkYTEtOTYyNi1iNTc3MTlhNTczNzAiLCJpYXQiOjE3MjU0NTAyMDUsImlzcyI6IjVkZDgzYmYwMGU0MjNkMTQ5OGRjYmFjYSIsImV4cCI6MTcyNTQ1MzgwNSwiT3JnVW5pdElkIjoiNWI5YzRiYjNmZjYyNmIxMzQ0ODEwYTAxIiwiUmVmZXJlbmNlSWQiOiJiYmY4YzU3NS01NjRiLTQzYWYtOGI1Yy0yODdiNmU2ZWM4OGYifQ.UVNLUVmFJKwFxIO1prb5hpaKRR5WRI3esl0UnRg37Fg", "deviceDataCollectionUrl": "https://centinelapistag.cardinalcommerce.com/V1/Cruise/Collect", "referenceId": "bbf8c575-564b-43af-8b5c-287b6e6ec88f", "token": "AxizbwSTiURwrn44LBakABEBTyDYGB7gAhMQyaSZejFczCmAmAAAzghh" }, "id": "7254502054416956004004", "status": "COMPLETED", "submitTimeUtc": "2024-09-04T11:43:25Z" }
Checking Enrollment with a Network Token/Tokenized
Card
Running the Check Enrollment service identifies the customer's bank and collects data
about the device that the customer is using to place the order. This instance
demonstrates this process with a network token/tokenized card.
Card-Specific Requirements
Some payment cards require additional information to be collected during a
transaction.
- This field is recommended for Discover ProtectBuy.
- This field is required when the card type is Cartes Bancaires.
- This field is required for American Express SafeKey (US) when the product code isAIRfor an airline purchase.
- This field is required for Visa Secure travel.
- This field is required only for American Express SafeKey (US).
- This field is required only for American Express SafeKey (US.)
- This field is required only for American Express SafeKey (US).
- This field is required only for American Express SafeKey (US).
- This field is required for American Express SafeKey (US).
- This field is required when the card type isJCB, Cartes Bancaires, China UnionPay, or Meeza.
Country-Specific Requirements
These fields are required for transactions in specific countries.
- This field is required for transactions processed in France.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during boarding.
- For Meeza transactions, this value must be set toEGwhen Egypt is not set as the country in the merchant configuration during merchant boarding.
- This field is required for transactions in the US and Canada.
- This field is required for transactions in the US and Canada.
- This field is required when theorderInformation.billTo.countryfield value isUSorCA.
- This field is required when theorderInformation.shipTo.countryfield value isCAorUS.
- This field is required when theorderInformation.shipTo.countryfield value isUSorCA.
Processor-Specific Requirements
These fields are required by specific processors for transactions.
- This field is required only for merchants in Saudi Arabia.
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authenticationsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authenticationsRequired Fields for Checking Enrollment When Using a
Network Token/Tokenized Card
These fields are the minimum fields required for verifying that a customer is
enrolled in a payer authentation program when using a tokenized card.
Required Fields
- This field is required when theorderInformation.lineItems.unitPricefield is not used.
- This field is required for the US and Canada.
- This field is required for the US and Canada.
REST Example: Checking Enrollment When Using a Network Token/Tokenized Card
(Frictionless)
Request
{ "orderInformation": { "amountDetails": { "currency": "USD", "totalAmount": "10.99" }, "billTo": { "address1": "1 Market St", "address2": "Address 2", "administrativeArea": "CA", "country": "US", "locality": "san francisco", "firstName": "John", "lastName": "Doe", "phoneNumber": "4158880000", "email": "[email protected]", "postalCode": "94105" } }, "paymentInformation": { "tokenizedCard": { "transactionType": "1", "type": "001", "expirationMonth": "11", "expirationYear": "2025", "number": "4111111111111111" } }, "deviceInformation": { "ipAddress": "139.130.4.5", "httpAcceptContent": "test", "httpBrowserLanguage": "en_us", "httpBrowserJavaEnabled": "N", "httpBrowserJavaScriptEnabled": "Y", "httpBrowserColorDepth": "24", "httpBrowserScreenHeight": "100000", "httpBrowserScreenWidth": "100000", "httpBrowserTimeDifference": "300", "userAgentBrowserValue": "GxKnLy8TFDUFxJP1t" }, "consumerAuthenticationInformation": { "deviceChannel": "BROWSER", "referenceId": "CybsCruiseTester-a8a8eeaf" } }
Response to Successful Request
{ "clientReferenceInformation": { "code": "1725450267324" }, "consumerAuthenticationInformation": { "eciRaw": "05", "authenticationTransactionId": "o9spMK5vH7MK5lAPku60", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "eci": "05", "token": "AxjzbwSTiURy4Xhjhs+lABEBTyDYGCNvSBcS0JiGTSTL0YrmYUwEwAAASAVA", "cavv": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "paresStatus": "Y", "acsReferenceNumber": "Cardinal ACS", "xid": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "directoryServerTransactionId": "51a3b89b-10c4-4718-8300-4cdc779d1434", "veresEnrolled": "Y", "threeDSServerTransactionId": "1a9c8944-6d0b-46d4-a964-5e986cff9c1b", "acsOperatorID": "MerchantACS", "ecommerceIndicator": "vbv", "specificationVersion": "2.1.0", "acsTransactionId": "b022828d-7440-4815-a5f8-28cf3f568f02" }, "id": "7254502673416960004005", "paymentInformation": { "card": { "bin": "411111", "type": "VISA" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2024-09-04T11:44:27Z" }
Authentication Examples of Merchant-Initiated Transactions
A 3RI transaction is an EMV
3-D Secure
transaction that is initiated by the
merchant instead of the cardholder. The merchant keeps the payment data from the initial
payment so that the cardholder does not have to be present for subsequent 3RI
transactions. Having the payment details from a previous transaction enables the
merchant to obtain a new Cardholder Authentication Verification Value (CAVV) to
authenticate when authorizing future payments. The authorization request contains the
consumerAuthenticationInformation.deviceChannel
field. This process can be applied
to these types of transactions:- Recurring payments: payments occur at regular intervals for an indefinite interval like subscription services.
- Installment payments: payments occur at regular intervals for a fixed interval.
- Refunded purchases: the cost of an item is refunded before the item is received. Any charges for damage or missing items can be charged back to the customer using a 3RI transaction.
- Delayed shipments: an ordered item is out of stock delaying the shipment until the item is back in stock.
- Split payments: an order is fulfilled in split shipments rather than in a single shipment because one of multiple items in the order is temporarily out of stock.
- Multiple party commerce: a single entity or party makes multiple transactions with different merchants, for example, a travel agent booking flights, hotels, and tour excursions.
- Unknown final transaction amount: extra charges are made to the customer for items such as hotel services, driving citations, or tips.
Challenge Reponses to 3RI Transactions
The directory server prohibits any challenge response from an issuer in 3RI transactions
because the cardholder is not present for authentication. If an issuer does respond with
a challenge, the directory server:
• Returns an ARes with a Transaction Status (transStatus) =
N
and a
Transaction Status Reason (transStatusReason) = 87
(Transaction is
excluded from Attempts Processing) to the 3-D Secure
Server (merchant).• Sends an error message (Erro) to the Access Control Server (ACS), with Error Code
(errorCode) =
203
(Format of one or more data elements is invalid
according to the specification.) When you receive this response, you should find an alternate way of processing the
transaction. Examples include going directly to authorization, or when the cardholder is
present, resending the transaction. When you receive this response, contact your
acquirer to raise the issue with customer support.
For Merchant Initiated Transactions which are expected to be frictionless, device details
are not required in the MIT authentication transaction
Network-Specific Values for Multi-Party Commerce/Online Travel Agency (OTA)
When the request body requires a previous authentication reference ID (
consumerAuthenticationInformation.priorAuthenticationReferenceId
), use
the network-specific value found in one of these fields in the original response.- Visa:consumerAuthenticationInformation.acsTransactionId
- Mastercard:consumerAuthenticationInformation.directoryServerTransactionId
When the request body requires a value from the
consumerAuthenticationInformation.requestorInitiatedAuthenticationIndicator
field
and the 3RI transaction type is multi-party commerce, use use one of these
network-specific values.- Visa:11(Other payment)
- Mastercard:85(Agent payment)
Note that Mastercard uses the Electronic Commerce Indicator (ECI) value of
07
for 3RI transactions.The network specific values for Multi Party Commerce / OTA are below.
IMPORTANT
The test card numbers that are provided are
formatted with Xs for zeroes in the card number. When testing with the card numbers,
replace the Xs with a 0 (zero).
1a: Initial Recurring Transaction
In this instance, the merchant initiates a 3RI recurring transaction that is a fixed
amount for a set of transactions with no established expiration, such as with a
subscription purchase.
Card Type | Test Card Number |
---|---|
Mastercard Card Type = 002 | 52XXXX XX XXXX 28X5 |
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for 3RI 1a: Initial Recurring Transaction
Required Fields
- Set this field value to03.
- Set this field value toBrowser.
- Set this field value to01.
- Set this field value to02.
- recurringPaymentInformation.sequenceNumber
REST Example: Checking Enrollment for a 3RI Initial Recurring
Transaction
Request
{ "orderInformation": { "amountDetails": { "currency": "eur", "totalAmount": "100.00" }, "billTo": { "address1": "201 S. Division St.", "administrativeArea": "MI", "country": "US", "locality": "Ann Arbor", "firstName": "RTS", "lastName": "VDP", "email": "[email protected]", "postalCode": "48104-2201" } }, "paymentInformation": { "card": { "type": "002", "expirationMonth": "12", "expirationYear": "2027", "number": "52XXXXXXXXXX28X5" } }, "deviceInformation": { "httpAcceptContent": "all", "httpBrowserLanguage": "en", "httpBrowserJavaEnabled": "y", "httpBrowserColorDepth": 1, "httpBrowserScreenHeight": 1, "httpBrowserScreenWidth": 1, "httpBrowserTimeDifference": 5, "userAgentBrowserValue": "chrome" }, "recurringPaymentInformation": { "endDate": "20240906", "frequency": "31", "numberOfPayments": "1", "originalPurchaseDate": "2024080511243877", "sequenceNumber": "1" }, "consumerAuthenticationInformation": { "strongAuthentication": { "authenticationIndicator": "02" }, "challengeCode": "03", "deviceChannel": "Browser", "messageCategory": "01", "referenceId": "CybsCruiseTester-ddb08174" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "RTS-Auth" }, "consumerAuthenticationInformation": { "challengeRequired": "N", "authenticationTransactionId": "ZtO0mD5q7PmRUG4v2NZ0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "token": "AxjzbwSTiS4ZKSmMkFZDABECT34jGC2P0h04ghLLtaSZV0ekj0yAsAAAUgae", "acsUrl": "https://0merchantacsstag.cardinalcommerce.com/MerchantACSWeb/creq.jsp", "acsReferenceNumber": "Cardinal ACS", "pareq": "eyJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJiMjQ3MWRmYS0zYWFkLTQ3OWQtOGIxMy1iODZjNTE0Mzk3OWMiLCJhY3NUcmFuc0lEIjoiYzkyNWQ3M2MtMGNiMC00YjNhLWIzZmEtMmM0Y2E0MDJkOGI2IiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjAyIn0", "directoryServerTransactionId": "bf67e7e6-c8cf-4b93-a211-3f4f60b07524", "veresEnrolled": "Y", "threeDSServerTransactionId": "b2471dfa-3aad-479d-8b13-b86c5143979c", "acsOperatorID": "MerchantACS", "specificationVersion": "2.2.0", "acsTransactionId": "c925d73c-0cb0-4b3a-b3fa-2c4ca402d8b6" }, "errorInformation": { "reason": "CONSUMER_AUTHENTICATION_REQUIRED", "message": "The cardholder is enrolled in Payer Authentication. Please authenticate the cardholder before continuing with the transaction." }, "id": "7252892152426444904003", "paymentInformation": { "card": { "bin": "520000", "type": "MASTERCARD" } }, "status": "PENDING_AUTHENTICATION", "submitTimeUtc": "2024-09-02T15:00:15Z" }
REST Example: Validating the Challenge for a 3RI Initial
Recurring Transaction
Request
{ "clientReferenceInformation": { "code": "pavalidatecheck", "partner": { "developerId": "7891234", "solutionId": "89012345" } }, "paymentInformation": { "card": { "type": "002" } }, "consumerAuthenticationInformation": { "authenticationTransactionId": "ZtO0mD5q7PmRUG4v2NZ0" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "pavalidatecheck", "partner": { "developerId": "7891234", "solutionId": "89012345" } }, "consumerAuthenticationInformation": { "indicator": "spa", "eciRaw": "07", "authenticationResult": "0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "authenticationStatusMsg": "Success", "eci": "07", "token": "AxijLwSTiS5mZJ9Q0OxhABFPfiMZU1QCEtDJpJlXR6SPTIAA9Rdp", "cavv": "AAIBBYNoEwAAACcKhAJkdQAAAAA=", "paresStatus": "Y", "xid": "AAIBBYNoEwAAACcKhAJkdQAAAAA=", "directoryServerTransactionId": "bf67e7e6-c8cf-4b93-a211-3f4f60b07524", "threeDSServerTransactionId": "b2471dfa-3aad-479d-8b13-b86c5143979c", "specificationVersion": "2.2.0", "acsTransactionId": "c925d73c-0cb0-4b3a-b3fa-2c4ca402d8b6" }, "id": "7252913891376641404001", "paymentInformation": { "card": { "bin": "520000", "type": "MASTERCARD" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2024-09-02T15:36:29Z" }
1b: Recurring Payments - Subsequent Transaction (Mastercard)
In this instance, the merchant is running a subsequent 3RI recurring transaction that
is a fixed amount for a set of payments with no established expiration such as a
subscription purchase.
Card Type | Test Card Number |
---|---|
Mastercard Card Type = 002 | 52XXXX XX XXXX 2235 |
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for 3RI 1b: Recurring Payments - Subsequent Transaction
(Mastercard)
Required Fields
- Set this field value to3RI.
- Set this field value to01.
- Set this field value to01.
- Set this field value to02.
- recurringPaymentInformation.sequenceNumber
REST Example: Validating the Challenge for 3RI Subsequent
Installment Transactions
Request
{ "orderInformation": { "amountDetails": { "currency": "eur", "totalAmount": "100.00" }, "lineItems": [ { "unitPrice": "120.00" } ], "billTo": { "address1": "201 S. Division St.", "administrativeArea": "MI", "country": "US", "locality": "Ann Arbor", "firstName": "RTS", "lastName": "VDP", "email": "[email protected]", "postalCode": "48104-2201" } }, "paymentInformation": { "card": { "type": "002", "expirationMonth": "12", "expirationYear": "2027", "number": "52XXXXXXXXXX2235" } }, "deviceInformation": { "httpAcceptContent": "all", "httpBrowserLanguage": "en", "httpBrowserJavaEnabled": "y", "httpBrowserColorDepth": 1, "httpBrowserScreenHeight": 1, "httpBrowserScreenWidth": 1, "httpBrowserTimeDifference": 5, "userAgentBrowserValue": "chrome" }, "recurringPaymentInformation": { "endDate": "20240906", "frequency": "31", "numberOfPayments": "1", "originalPurchaseDate": "2024080511243877", "sequenceNumber": "1" }, "consumerAuthenticationInformation": { "strongAuthentication": { "authenticationIndicator": "02" }, "authenticationDate": "20190829154531", "deviceChannel": "3RI", "messageCategory": "01", "priorAuthenticationData": "bf67e7e6-c8cf-4b93-a211-3f4f60b07524", "requestorInitiatedAuthenticationIndicator": "01", "referenceId": "CybsCruiseTester-ddb08174" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "RTS-Auth" }, "consumerAuthenticationInformation": { "eciRaw": "02", "authenticationTransactionId": "cE217c8rl01I71fwGU30", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "token": "AxjzbwSTiS6VNMwh1gIkABECT34jGdA30h04ghLQyaSZV0ekj0yAmAAAzwTj", "paresStatus": "Y", "acsReferenceNumber": "Cardinal ACS", "ucafCollectionIndicator": "2", "ucafAuthenticationData": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "directoryServerTransactionId": "5791e23c-c10a-4dae-b2c9-4abc766fce2c", "veresEnrolled": "Y", "threeDSServerTransactionId": "db112903-7d0e-4ad8-9cb8-31a0e634a24b", "acsOperatorID": "MerchantACS", "ecommerceIndicator": "spa", "specificationVersion": "2.2.0", "acsTransactionId": "f8a69dc8-2869-491b-b562-0fc7361333f0" }, "id": "7252927068116474004004", "paymentInformation": { "card": { "bin": "520000", "type": "MASTERCARD" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2024-09-02T15:58:27Z" }
2a: Installment - Customer Initiated Transaction (Mastercard)
In this instance, the initial authentication is for the total amount for all of the
future installments. Once the initial authentication is completed by the customer,
the subsequent installments do not require authentication and go directly to
authorization, which is Mastercard’s preferred process.
Card Type | Test Card Number |
---|---|
Mastercard Card Type = 002 | 52XXXX XX XXXX 28X5 |
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for 3RI 2a: Installment - Customer Initiated Transaction
(Mastercard)
Required Fields
- Set this field value to03.
- Set this field value toBrowser.
- Set this field value to01.
- consumerAuthenticationInformation. installmentTotalCount
- Set this field value to02.
- Set this field value to03.
- recurringPaymentInformation. sequenceNumber
REST Example: Checking Enrollment for a 3RI Customer
Initiated Total Installments (Mastercard)
Request
{ "orderInformation": { "amountDetails": { "currency": "eur", "totalAmount": "100.00" }, "lineItems": [ { "unitPrice": "120.00" } ], "billTo": { "address1": "201 S. Division St.", "administrativeArea": "MI", "country": "US", "locality": "Ann Arbor", "firstName": "RTS", "lastName": "VDP", "email": "[email protected]", "postalCode": "48104-2201" } }, "paymentInformation": { "card": { "type": "002", "expirationMonth": "12", "expirationYear": "2027", "number": "52XXXXXXXXXX28X5" } }, "deviceInformation": { "httpAcceptContent": "all", "httpBrowserLanguage": "en", "httpBrowserJavaEnabled": "y", "httpBrowserColorDepth": 1, "httpBrowserScreenHeight": 1, "httpBrowserScreenWidth": 1, "httpBrowserTimeDifference": 5, "userAgentBrowserValue": "chrome" }, "recurringPaymentInformation": { "endDate": "20240906", "frequency": "31", "numberOfPayments": "1", "originalPurchaseDate": "2024080511243877", "sequenceNumber": "1" }, "consumerAuthenticationInformation": { "strongAuthentication": { "authenticationIndicator": "03" }, "authenticationDate": "20190829154531", "deviceChannel": "Browser", "installmentTotalCount": "2", "messageCategory": "01", "referenceId": "CybsCruiseTester-2551acb2" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "RTS-Auth" }, "consumerAuthenticationInformation": { "challengeRequired": "N", "authenticationTransactionId": "RTk6DV9Nsv2I1d8BSh40", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "token": "AxjzbwSTiTXaKSxK9bBhABECT34jN2Sb0h04ghLLtaSZV0ekj0yAsAAAxQTL", "acsUrl": "https://0merchantacsstag.cardinalcommerce.com/MerchantACSWeb/creq.jsp", "acsReferenceNumber": "Cardinal ACS", "pareq": "eyJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiIzYzVhMzExMS1lYmVkLTRjNzUtOWQ5YS00M2QyZTEwYzkyYTciLCJhY3NUcmFuc0lEIjoiMTVlNDZmNWItNTcwZS00OWMwLTkyYzYtYmQyMTdiN2MxZTkxIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjAyIn0", "directoryServerTransactionId": "2a9df334-1fa9-4dfe-9b1d-f4a2f14ba003", "veresEnrolled": "Y", "threeDSServerTransactionId": "3c5a3111-ebed-4c75-9d9a-43d2e10c92a7", "acsOperatorID": "MerchantACS", "specificationVersion": "2.2.0", "acsTransactionId": "15e46f5b-570e-49c0-92c6-bd217b7c1e91" }, "errorInformation": { "reason": "CONSUMER_AUTHENTICATION_REQUIRED", "message": "The cardholder is enrolled in Payer Authentication. Please authenticate the cardholder before continuing with the transaction." }, "id": "7253450880266999804001", "paymentInformation": { "card": { "bin": "520000", "type": "MASTERCARD" } }, "status": "PENDING_AUTHENTICATION", "submitTimeUtc": "2024-09-03T06:31:28Z" }
REST Example: Validating the Challenge for a 3RI Customer
Initiated Total Installments (Mastercard)
Request
{ "clientReferenceInformation": { "code": "pavalidatecheck", "partner": { "developerId": "7891234", "solutionId": "89012345" } }, "consumerAuthenticationInformation": { "authenticationTransactionId": "RTk6DV9Nsv2I1d8BSh40" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "pavalidatecheck", "partner": { "developerId": "7891234", "solutionId": "89012345" } }, "consumerAuthenticationInformation": { "indicator": "spa", "eciRaw": "02", "authenticationResult": "0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "authenticationStatusMsg": "Success", "token": "AxijLwSTiTXcdJ2PhbzFABFPfiM3dQgCEtDJpJlXR6SPTIAAJRcM", "paresStatus": "Y", "ucafCollectionIndicator": "2", "ucafAuthenticationData": "AAIBBYNoEwAAACcKhAJkdQAAAAA=", "directoryServerTransactionId": "2a9df334-1fa9-4dfe-9b1d-f4a2f14ba003", "threeDSServerTransactionId": "3c5a3111-ebed-4c75-9d9a-43d2e10c92a7", "specificationVersion": "2.2.0", "acsTransactionId": "15e46f5b-570e-49c0-92c6-bd217b7c1e91" }, "id": "7253451526166806904005", "paymentInformation": { "card": { "bin": "520000", "type": "MASTERCARD" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2024-09-03T06:32:32Z" }
3a: Split/Partial Shipment (Mastercard)
In this instance, the purchase includes multiple items that do not become available
to the customer at different times. For example, the customer order has backordered
or preordered items. During the initial purchase, the authentication should be for
the full amount total (including products to be shipped at a later time).
Card Type | Test Card Number |
---|---|
Mastercard Card Type = 002 | 52XXXX XX XXXX 2235 |
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for 3RI 3a: Split/Partial Shipment (Mastercard)
Required Fields
- Set this field value to03.
- Set this field value to3RI.
- Set this field value to01.
- Set this field value to02.
- Set this field value to06.
- Set this field value to02.
REST Example: Checking Enrollment for 3RI Split Shipment
Transaction (Mastercard)
Request
{ "orderInformation": { "amountDetails": { "currency": "eur", "totalAmount": "100.00" }, "lineItems": [ { "unitPrice": "120.00" } ], "billTo": { "address1": "201 S. Division St.", "administrativeArea": "MI", "country": "US", "locality": "Ann Arbor", "firstName": "RTS", "lastName": "VDP", "email": "[email protected]", "postalCode": "48104-2201" } }, "paymentInformation": { "card": { "type": "002", "expirationMonth": "12", "expirationYear": "2027", "number": "52XXXXXXXXXX2235" } }, "deviceInformation": { "httpAcceptContent": "all", "httpBrowserLanguage": "en", "httpBrowserJavaEnabled": "y", "httpBrowserColorDepth": 1, "httpBrowserScreenHeight": 1, "httpBrowserScreenWidth": 1, "httpBrowserTimeDifference": 5, "userAgentBrowserValue": "chrome" }, "recurringPaymentInformation": { "endDate": "20240906", "frequency": "31", "numberOfPayments": "1", "originalPurchaseDate": "2024080511243877", "sequenceNumber": "1" }, "consumerAuthenticationInformation": { "strongAuthentication": { "authenticationIndicator": "02" }, "challengeCode": "03", "deviceChannel": "3RI", "messageCategory": "01", "priorAuthenticationData": "bf67e7e6-c8cf-4b93-a211-3f4f60b07524", "priorAuthenticationMethod": "02", "priorAuthenticationTime": "202408051124", "requestorInitiatedAuthenticationIndicator": "06", "referenceId": "CybsCruiseTester-ddb08174" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "RTS-Auth" }, "consumerAuthenticationInformation": { "eciRaw": "02", "authenticationTransactionId": "dgHSe0WYJbcT51D8pTQ0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "token": "AxjzbwSTiS7CLi6JgeyFABECT34jGkKb0h04ghLQyaSZV0ekj0yAmAAAzwTl", "paresStatus": "Y", "acsReferenceNumber": "Cardinal ACS", "ucafCollectionIndicator": "2", "ucafAuthenticationData": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "directoryServerTransactionId": "1740697e-f8bd-4fde-8a12-c95e398c2409", "veresEnrolled": "Y", "threeDSServerTransactionId": "c9c607a1-a130-4226-8a22-376e1183a5ae", "acsOperatorID": "MerchantACS", "ecommerceIndicator": "spa", "specificationVersion": "2.2.0", "acsTransactionId": "74fd3b64-5abb-4ac2-b090-1fba79996123" }, "id": "7252939727216490704005", "paymentInformation": { "card": { "bin": "520000", "type": "MASTERCARD" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2024-09-02T16:19:32Z" }
3b: Split/Delayed Shipment (Mastercard)
In this instance, the purchase includes multiple items that do not become available
to the customer at different times. For example, the customer order has backordered
or preordered items. During the initial purchase, the authentication should be for
the full amount total (including products to be shipped at a later time).
Card Type | Test Card Number |
---|---|
Visa Card Type = 002 | 52XXXX XX XXXX 2235 |
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for 3RI 3b: Split/Delayed Shipment (Visa)
Required Fields
- Set this field value to3RI.
- Set this field value to01.
- Set this field value to02.
- Set this field value to06.
- Set this field value to02.
REST Example: Checking Enrollment for 3RI Split Shipment
Transaction (Mastercard)
Request
{ "orderInformation": { "amountDetails": { "currency": "eur", "totalAmount": "100.00" }, "lineItems": [ { "unitPrice": "120.00" } ], "billTo": { "address1": "201 S. Division St.", "administrativeArea": "MI", "country": "US", "locality": "Ann Arbor", "firstName": "RTS", "lastName": "VDP", "email": "[email protected]", "postalCode": "48104-2201" } }, "paymentInformation": { "card": { "type": "001", "expirationMonth": "12", "expirationYear": "2027", "number": "52XXXXXXXXXX2235" } }, "deviceInformation": { "httpAcceptContent": "all", "httpBrowserLanguage": "en", "httpBrowserJavaEnabled": "y", "httpBrowserColorDepth": 1, "httpBrowserScreenHeight": 1, "httpBrowserScreenWidth": 1, "httpBrowserTimeDifference": 5, "userAgentBrowserValue": "chrome" }, "consumerAuthenticationInformation": { "strongAuthentication": { "authenticationIndicator": "01" }, "deviceChannel": "3RI", "messageCategory": "01", "priorAuthenticationMethod": "02", "priorAuthenticationReferenceId": "74fd3b64-5abb-4ac2-b090-1fba79996123", "priorAuthenticationTime": "202408051124", "requestorInitiatedAuthenticationIndicator": "06", "referenceId": "CybsCruiseTester-ddb08174" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "RTS-Auth" }, "consumerAuthenticationInformation": { "eciRaw": "05", "authenticationTransactionId": "kvaz0784ZnNyUBg9U8t0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "eci": "05", "token": "AxjzbwSTiS7a+V0I6DbGABEBT34jGnMj0h04ghLQyaSZV0ekj0yAcAAAsQar", "cavv": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "paresStatus": "Y", "acsReferenceNumber": "Cardinal ACS", "xid": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "directoryServerTransactionId": "ebf656a8-c5da-412d-873f-9f4d3fa9a625", "veresEnrolled": "Y", "threeDSServerTransactionId": "4777bd69-fcef-4725-b41b-84a346d83d0a", "acsOperatorID": "MerchantACS", "ecommerceIndicator": "vbv", "specificationVersion": "2.2.0", "acsTransactionId": "4381f3b5-09b1-4248-992a-89f6514064d7" }, "id": "7252946706016498104006", "paymentInformation": { "card": { "bin": "400000", "type": "VISA" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2024-09-02T16:31:10Z" }
4a: Multi-Party Commerce or OTA (Visa)
In this test case, a travel booking merchant creates a multi-party transaction for
the cardholder. The merchants participating in the multi-party transaction are
required to authorize on flights, hotels, and car rentals etc. This test case
focuses on what the participating merchants are required to send for a successful
transaction. Note that each participating merchant must send their own CAVV.
Refer to the network specific values section for this use case.
Card Type | Test Card Number |
---|---|
Visa Card Type = 001 | 4XXXXX XX XXXX 27X1 |
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for 3RI 4a: Multi-Party Commerce or OTA (Visa)
Required Fields
- Set this field value to3RI.
- Set this field value to01.
- Set this field value to02.
- Set this field value to11.
- Set this field value to01.
REST Example: Checking Enrollment for 3RI Multi-Party
Commerce Transaction (Visa)
Request
{ "orderInformation": { "amountDetails": { "currency": "eur", "totalAmount": "100.00" }, "lineItems": [ { "unitPrice": "120.00" } ], "billTo": { "address1": "201 S. Division St.", "administrativeArea": "MI", "country": "US", "locality": "Ann Arbor", "firstName": "RTS", "lastName": "VDP", "email": "[email protected]", "postalCode": "48104-2201" } }, "paymentInformation": { "card": { "type": "001", "expirationMonth": "12", "expirationYear": "2027", "number": "4XXXXXXXXXXX27X1" } }, "deviceInformation": { "httpAcceptContent": "all", "httpBrowserLanguage": "en", "httpBrowserJavaEnabled": "y", "httpBrowserColorDepth": 1, "httpBrowserScreenHeight": 1, "httpBrowserScreenWidth": 1, "httpBrowserTimeDifference": 5, "userAgentBrowserValue": "chrome" }, "consumerAuthenticationInformation": { "strongAuthentication": { "authenticationIndicator": "01" }, "deviceChannel": "3RI", "messageCategory": "01", "priorAuthenticationMethod": "02", "priorAuthenticationReferenceId": "74fd3b64-5abb-4ac2-b090-1fba79996123", "priorAuthenticationTime": "202408051124", "requestorInitiatedAuthenticationIndicator": "11", "referenceId": "CybsCruiseTester-ddb08174" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "RTS-Auth" }, "consumerAuthenticationInformation": { "eciRaw": "05", "authenticationTransactionId": "GLO987AF3GRfk4IAAO10", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "eci": "05", "token": "AxjzbwSTiS7hKm5H9W8jABEBT34jGnwr0h04ghLQyaSZV0ekj0yAcAAAtQax", "cavv": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "paresStatus": "Y", "acsReferenceNumber": "Cardinal ACS", "xid": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "directoryServerTransactionId": "5c1ee075-b8d7-43f0-9525-51de793125a0", "veresEnrolled": "Y", "threeDSServerTransactionId": "f7ddddc1-cd06-4fd1-b1e6-db37e0379451", "acsOperatorID": "MerchantACS", "ecommerceIndicator": "vbv", "specificationVersion": "2.2.0", "acsTransactionId": "1dd0c6ac-03fd-46dd-b6ea-54bb5d337db2" }, "id": "7252948448816500404003", "paymentInformation": { "card": { "bin": "400000", "type": "VISA" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2024-09-02T16:34:05Z" }
4b: Multi-Party Commerce or OTA (MasterCard)
In this test case, a travel booking merchant creates a multi-party transaction for the
cardholder. The merchants participating in the multi-party transaction are required
to authorize on flights, hotels, and car rentals etc. This test case focuses on what
the participating merchants are required to send for a successful transaction. Note
that each participating merchant must send their own CAVV.
Card Type | Test Card Number |
---|---|
Mastercard Card Type = 002 | 52XXXX XX XXXX 28X5 |
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for 3RI 4b: Multi-Party Commerce or OTA (MasterCard)
Required Fields
- Set this field value to03.
- Set this field value toBrowser.
- Set this field value to01.
- Set this field value to85.
- recurringPaymentInformation. sequenceNumber
REST Example: Checking Enrollment for 3RI Multi-Party
Commerce Transaction (Mastercard)
Request
{ "orderInformation": { "amountDetails": { "currency": "eur", "totalAmount": "100.00" }, "lineItems": [ { "unitPrice": "120.00" } ], "billTo": { "address1": "201 S. Division St.", "administrativeArea": "MI", "country": "US", "locality": "Ann Arbor", "firstName": "RTS", "lastName": "VDP", "email": "[email protected]", "postalCode": "48104-2201" } }, "paymentInformation": { "card": { "type": "002", "expirationMonth": "12", "expirationYear": "2027", "number": "52XXXXXXXXXX28X5" } }, "deviceInformation": { "httpAcceptContent": "all", "httpBrowserLanguage": "en", "httpBrowserJavaEnabled": "y", "httpBrowserColorDepth": 1, "httpBrowserScreenHeight": 1, "httpBrowserScreenWidth": 1, "httpBrowserTimeDifference": 5, "userAgentBrowserValue": "chrome" }, "recurringPaymentInformation": { "endDate": "20240906", "frequency": "31", "numberOfPayments": "1", "originalPurchaseDate": "2024080511243877", "sequenceNumber": "1" }, "consumerAuthenticationInformation": { "strongAuthentication": { "authenticationIndicator": "85" }, "challengeCode": "03", "deviceChannel": "Browser", "messageCategory": "01", "priorAuthenticationMethod": "02", "priorAuthenticationReferenceId": "74fd3b64-5abb-4ac2-b090-1fba79996123", "priorAuthenticationTime": "202408051124", "referenceId": "CybsCruiseTester-500582d1" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "RTS-Auth" }, "consumerAuthenticationInformation": { "challengeRequired": "N", "authenticationTransactionId": "UjGENvX5ALCk1Yov31m0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "token": "AxjzbwSTiS7ruvMgAiEDABECT34jGqAX0h04ghLLtaSZV0ekj0yAsAAAwQTD", "acsUrl": "https://0merchantacsstag.cardinalcommerce.com/MerchantACSWeb/creq.jsp", "acsReferenceNumber": "Cardinal ACS", "pareq": "eyJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiI3ODc3MjhmNy1iYzczLTQ0NzAtYTNlMC05ZDE1MjRlN2NhMTQiLCJhY3NUcmFuc0lEIjoiMDYzMzg2ODItYWYzMi00OWEwLWI4NWItZTViMjI1NzlmZmJjIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjAyIn0", "directoryServerTransactionId": "b25e6688-6b10-4942-a8a1-cc5b5f7ad9af", "veresEnrolled": "Y", "threeDSServerTransactionId": "787728f7-bc73-4470-a3e0-9d1524e7ca14", "acsOperatorID": "MerchantACS", "specificationVersion": "2.2.0", "acsTransactionId": "06338682-af32-49a0-b85b-e5b22579ffbc" }, "errorInformation": { "reason": "CONSUMER_AUTHENTICATION_REQUIRED", "message": "The cardholder is enrolled in Payer Authentication. Please authenticate the cardholder before continuing with the transaction." }, "id": "7252951422466502304003", "paymentInformation": { "card": { "bin": "520000", "type": "MASTERCARD" } }, "status": "PENDING_AUTHENTICATION", "submitTimeUtc": "2024-09-02T16:39:02Z" }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "1675288043120" }, "consumerAuthenticationInformation": { "indicator": "internet", "ucafCollectionIndicator": "0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "token": "AxjzbwSTbhMKrRswWTYSABECT9u+QBvfSB84gL2IZNJMvRiyubWAOAAA+Qxb" }, "id": "6752880430346470503954", "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2023-02-01T21:47:23Z" }
REST Example: Validating the Challenge for 3RI Multi-Party
Commerce Transaction (Mastercard)
Request
{ "clientReferenceInformation": { "code": "pavalidatecheck", "partner": { "developerId": "7891234", "solutionId": "89012345" } }, "consumerAuthenticationInformation": { "authenticationTransactionId": "UjGENvX5ALCk1Yov31m0" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "pavalidatecheck", "partner": { "developerId": "7891234", "solutionId": "89012345" } }, "consumerAuthenticationInformation": { "indicator": "spa", "eciRaw": "02", "authenticationResult": "0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "authenticationStatusMsg": "Success", "token": "AxijLwSTiS7u/oVLPQ0mABFPfiMaqKgCEtDJpJlXR6SPTIAAkRY+", "paresStatus": "Y", "ucafCollectionIndicator": "2", "ucafAuthenticationData": "AAIBBYNoEwAAACcKhAJkdQAAAAA=", "directoryServerTransactionId": "b25e6688-6b10-4942-a8a1-cc5b5f7ad9af", "threeDSServerTransactionId": "787728f7-bc73-4470-a3e0-9d1524e7ca14", "specificationVersion": "2.2.0", "acsTransactionId": "06338682-af32-49a0-b85b-e5b22579ffbc" }, "id": "7252952341186502004006", "paymentInformation": { "card": { "bin": "520000", "type": "MASTERCARD" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2024-09-02T16:40:34Z" }
4c: Multi-Party Commerce or OTA (MasterCard)
The merchant initiates a (3RI) recurring transaction of a fixed amount for a
specified number of transactions or with no set number of transactions such as
occurs with subscription purchases. For more information, see Requester Initiated Payments.
Card Type | Test Card Number |
---|---|
Mastercard Card Type = 002 | 52XXXX XX XXXX 2235 |
Endpoint
Production:
POST
https://api.visaacceptance.com
/risk/v1/authentication-setupsTest:
POST
https://apitest.visaacceptance.com
/risk/v1/authentication-setupsRequired Fields for 3RI 4c: Multi-Party Commerce or OTA (MasterCard)
Required Fields
- Set this field value to3RI.
- Set this field value to01.
- Set this field value to02.
- Set this field value to85.
- Set this field value to85.
REST Example: Checking Enrollment for 3RI Multi-Party
Commerce Transaction (Mastercard)
Request
{ "orderInformation": { "amountDetails": { "currency": "eur", "totalAmount": "100.00" }, "lineItems": [ { "unitPrice": "120.00" } ], "billTo": { "address1": "201 S. Division St.", "administrativeArea": "MI", "country": "US", "locality": "Ann Arbor", "firstName": "RTS", "lastName": "VDP", "email": "[email protected]", "postalCode": "48104-2201" } }, "paymentInformation": { "card": { "type": "002", "expirationMonth": "12", "expirationYear": "2027", "number": "52XXXXXXXXXX2235" } }, "deviceInformation": { "httpAcceptContent": "all", "httpBrowserLanguage": "en", "httpBrowserJavaEnabled": "y", "httpBrowserColorDepth": 1, "httpBrowserScreenHeight": 1, "httpBrowserScreenWidth": 1, "httpBrowserTimeDifference": 5, "userAgentBrowserValue": "chrome" }, "consumerAuthenticationInformation": { "strongAuthentication": { "authenticationIndicator": "85" }, "deviceChannel": "3RI", "messageCategory": "01", "priorAuthenticationMethod": "02", "priorAuthenticationReferenceId": "74fd3b64-5abb-4ac2-b090-1fba79996123", "priorAuthenticationTime": "202408051124", "requestorInitiatedAuthenticationIndicator": "85", "referenceId": "CybsCruiseTester-8e9d566d" } }
Response
{ "clientReferenceInformation": { "code": "RTS-Auth" }, "consumerAuthenticationInformation": { "eciRaw": "02", "authenticationTransactionId": "teQ1a9eI9B6hf96QMHJ0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "token": "AxjzbwSTiUMNwN7oizBEABECT34jdm670h04ghMQyaSZV0ekj0yAmAAAzwTp", "paresStatus": "Y", "acsReferenceNumber": "Cardinal ACS", "ucafCollectionIndicator": "2", "ucafAuthenticationData": "AJkBBkhgQQAAAE4gSEJydQAAAAA=", "directoryServerTransactionId": "208c54bd-a067-4a45-a285-af22f02a5e07", "veresEnrolled": "Y", "threeDSServerTransactionId": "2a6f6351-58a8-4e7b-acbc-8fd3d5ab85f3", "acsOperatorID": "MerchantACS", "ecommerceIndicator": "spa", "specificationVersion": "2.2.0", "acsTransactionId": "932bc2de-6e7a-4b16-adfa-f6c8c1ce9628" }, "id": "7254402151006708904004", "paymentInformation": { "card": { "bin": "520000", "type": "MASTERCARD" } }, "status": "AUTHENTICATION_SUCCESSFUL", "submitTimeUtc": "2024-09-04T08:56:55Z" }
Testing Payer Authentication
After you complete the necessary changes to your web and API integration, verify that all
components are working correctly by performing all the tests for the cards that you
support. Each test contains the specific input data and the most important result fields
that you receive in the API response.
Testing Process
Use the card number specified in the test with the card’s expiration date set to the
month of December and the current year plus three. For example, for 2025, use 2028. The
test card numbers that are provided are formatted with Xs for zeroes in the card number.
When testing with the card numbers, replace a X with a 0 (zero). You also need the
minimum required fields for an order.
Enrollment Check Response Fields
This table lists the checking enrollment response fields used in the test cases.
Name Used in Test Cases | API Field |
---|---|
ACS URL | consumerAuthenticationInformation.acsUrl |
E-commerce indicator | consumerAuthenticationInformation.ecommerceIndicator |
ECI | consumerAuthenticationInformation.eci |
PAReq | consumerAuthenticationInformation.pareq |
proofXML | consumerAuthenticationInformation.proofXml |
VERes enrolled | consumerAuthenticationInformation.veresEnrolled |
XID | consumerAuthenticationInformation.xid |
Authentication Validation Response Fields
This table lists only the response fields used in the test cases.
Name Used in Test Cases | API Field |
---|---|
Authentication result | consumerAuthenticationInformation.authenticationResult |
E-commerce indicator | consumerAuthenticationInformation.indicator |
AAV (Mastercard only) | consumerAuthenticationInformation.ucafAuthenticationData |
CAVV (all card types
except Mastercard) | consumerAuthenticationInformation.cavv |
Collection indicator | consumerAuthenticationInformation.ucafCollectionIndicator |
ECI | consumerAuthenticationInformation.eci |
PARes status | consumerAuthenticationInformation.paresStatus |
Status | status |
XID | consumerAuthenticationInformation.xid |
Test Cases for 3-D Secure 2.x
3-D Secure
2.xUse the card number specified in the test with the card expiration date set to the month
of January and the current year plus three. For example, for 2025, use 2028. You also
need the minimum required fields for an order.
Be sure to remove spaces in card numbers when testing.
IMPORTANT
The test card numbers that are provided are formatted with Xs for
zeroes in the card number. When testing with the card numbers, replace the Xs with a
0 (zero).
While the usage of transaction ID (XID) values have declined in importance, they are
still included in
3-D Secure
2.x test cases. Only Mastercard transactions
do not return XIDs. While the
3-D Secure
version and directory server transaction ID fields are
returned for the Check Enrollment and Validate Authentication services, this data is not
included in the 3-D Secure
2.x test cases. IMPORTANT
Mastercard requires that the
3-D Secure
version and
directory server transaction ID be included along with all pertinent data in your
authorization request.Card Specific Setup
The cards listed below require a specific merchant attribute or configuration during
testing.
- eftpos: The merchant should request that customer support enable the preferred secondary brand attribute to enable the prerferred routing for eftpos.
- mada: The merchant descriptor country should be set asSAand the card type should be set asmada.
- Meeza: The merchant descriptor country should be set asEGand the card type should be set asMeeza
2.1: Frictionless Authentication Is Successful
This test verifies that successful frictionless authentication of the cardholder by the
card issuer works correctly.
American Express (Card Type = 003)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 34XXX XX XXXX 27X8 |
Cartes Bancaires Mastercard (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XX XXXX XXXX 3XX1 | 52XX XXXX XXXX 48X1 |
Cartes Bancaires Visa (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXX XXXX XXXX 3XX6 | 4XXX XXXX XXXX 497X |
China UnionPay (Card Type = 062)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
62XX X1XX XX2X XXXX | 81XXX1 XX XXXX X142 621XX3 82 3532 713X |
Diners Club (Card Type = 005)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11 XXXX XXXX 2117 |
Discover (Card Type = 004)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11 XXXX XXXX 2117 |
eftpos Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 517X | — |
eftpos Mastercard (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
516366 XX 1XXX XXX1 | — |
eftpos Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 5126 | — |
eftpos Visa (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
47X565 XX 1XXX XXXX | — |
Elo (Card Type = 054)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 65X529 XX XXXX 2XXX |
ITMX Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
557755 X1 21XX XXXX | 557755 X1 22XX XXX9 |
ITMX Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4632X8 21 XXXX XXX5 | 4632X8 21 XXXX XXX4 |
JCB J/Secure (Card Type = 007)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 3338XX XX XXXX X296 |
mada Mastercard (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 8XXX The merchant's country must be set to SA within
the merchant profile, or the CountryCodeOverride field
must be set to SA on the Lookup Request. The
response will include the 3-D Secure operator ID,
DS reference number, brand authentication, and the ACS reference
number. |
mada Visa (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 8X2X The merchant's country must be set to SA within
the merchant profile, or the CountryCodeOverride field
must be set to SA on the Lookup Request. The
response will include the 3-D Secure operator ID,
DS reference number, brand authentication, and the ACS reference
number. |
Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXX 2235 |
Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 27X1 |
IMPORTANT
The Meeza card can be tested in the same
manner as Mastercard using the same test card numbers. The only difference is that
the card type for Meeza is
067
. Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
The cardholder is enrolled in Payer Authentication.
Authenticate the cardholder before continuing with the transaction.
VERes enrolled =
Y
PARes status =
Y
CAVV = <CAVV value>
AVV = <AVV value> (Mastercard only)
XID = <XID value>
E-Commerce Indicator (ECI) Values
This table lists the expected ECI raw values and their respective string values.
These values indicate whether the payer was authenticated by the card network. These
values should be passed under this test condition when a transaction is submitted
for payment authorization.
Network | ECI Raw Value | ECI String Value |
---|---|---|
American Express | 05 | aesk |
Cartes Bancaires Mastercard | 02 | spa |
Cartes Bancaires Visa | 05 | vbv |
China UnionPay | 05 | up3ds |
Diners Club | 05 | pb |
Discover | 05 | dipb |
eftpos | 05 | oci |
Elo | 05 | cs |
ITMX Mastercard | 05 | lss |
ITMX Visa | 05 | lss |
JCB J/Secure | 05 | js |
mada Mastercard | 02 | mada or spa |
mada Visa | 05 | mada or vbv |
Mastercard | 02 | spa |
Visa | 05 | vbv |
Results for the Validation Authentication Service
Validation does not apply to this test because no validation is needed when no
challenge is issued during the transaction.
Action
If you request Check Enrollment and Authorization services separately, add the
required payer authentication values to your authorization request. If you request
the Check Enrollment and authorization services together, the process described
above occurs automatically.
2.2: Frictionless Authentication Is Unsuccessful
This test verifies that cardholder authentication without a challenge by the card issuer will
fail.
American Express (Card Type = 003)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 34XXX XX XXXX 2X96 |
Cartes Bancaires Mastercard (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 3X19 | 52XXXX XX XXXX 4538 |
Cartes Bancaires Visa (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 3X14 | 4XXXXX XX XXXX 4574 |
China UnionPay (Card Type = 062)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
62XXX1 XX XX1X XX1X | 81XXX1 XX XXXX X647 621XX3 77 X3X8 1377 |
Diners Club (Card Type = 005)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2364 |
Discover (Card Type = 004)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2364 |
eftpos Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 522X | — |
eftpos Mastercard (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
516366 XX 1XXX XX19 | — |
eftpos Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 5X19 | — |
eftpos Visa (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
47X565 XX 1XXX XX18 | — |
Elo (Card Type = 054)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 65X529 XX XXXX 2X18 |
ITMX Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
557755 X1 21XX XX1X | 557755 X1 22XX XX17 |
ITMX Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4632X8 21 XXXX XX13 | 4632X8 22 XXXX XX12 |
JCB J/Secure (Card Type = 007)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 3338XX XX XXXX X361 |
mada Mastercard (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 8X1X The merchant's country must be set to SA within the merchant profile, or the CountryCodeOverride field must be set to SA on the Lookup Request. The response will include the 3-D Secure operator ID, DS reference number, brand authentication, and the ACS reference number. |
mada Visa (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 8X4X The merchant's country must be set to SA within the merchant profile, or the CountryCodeOverride field must be set to SA on the Lookup Request. The response will include the 3-D Secure operator ID, DS reference number, brand authentication, and the ACS reference number. |
Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 2276 |
Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 2925 |
IMPORTANT
The Meeza card can be tested in the same
manner as Mastercard using the same test card numbers. The only difference is that
the card type for Meeza is
067
. Results for the Check Enrollment Service
Status
= AUTHENTICATION_FAILED
- User failed authentication.
- Payer cannot be authenticated.
VERes enrolled =
Y
PARes status =
N
XID = <XID value> (American Express only)
E-Commerce Indicator (ECI) Values
This table lists the expected ECI raw value, and their respective string values.
These values indicate whether the payer was authenticated by the card network. These
values should be passed under this test condition when a transaction is submitted
for payment authorization.
Network | ECI Raw Value | ECI String Value |
---|---|---|
American Express | 07 | internet |
Cartes Bancaires Mastercard | 00 | internet |
Cartes Bancaires Visa | 07 | internet or vbv_failure |
China UnionPay | 07 | up3ds_failure |
Diners Club | 07 | internet |
Discover | 07 | internet |
eftpos | 07 | oci_failure |
Elo | 07 | internet |
ITMX Mastercard | 07 | lss_failure |
ITMX Visa | 07 | lss_failure |
JCB J/Secure | 07 | internet |
mada Mastercard | 00 | mada_failure or internet |
mada Visa | 07 | mada_failure or vbv_failure |
Mastercard | 00 | internet |
Visa | 07 | internet or vbv_failure |
Results for the Validation Authentication Service
No results are returned.
Action
Even though the merchant can still authorize a failed
3-D Secure
transaction as a non-authenticated transaction, it is not recommended to submit this
transaction for authorization. Instead, ask the customer for another form of
payment.2.3: Stand-In Frictionless Authentication is Attempted
This test verifies how your system reacts when the cardholder is enrolled in
3-D Secure
but the card issuer does not support 3-D Secure, requiring a
stand-in authentication experience. American Express (Card Type = 003)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 34XXX XX XXXX 2872 |
Cartes Bancaires Mastercard (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 3X27 | 52XXXX XX XXXX 4587 |
Cartes Bancaires Visa (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 3X22 | 4XXXXX XX XXXX 4111 |
China UnionPay (Card Type = 062)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
62XXX1 XX XXXX XX2X | 62XXX1 XX XXXX XX2X 621XX3 35 3371 144X |
Diners Club (Card Type = 005)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2646 |
Discover (Card Type = 004)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2646 |
eftpos Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 5360 | — |
eftpos Mastercard (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
516366 XX 1XXX XX27 |
eftpos Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 5X27 | — |
eftpos Visa (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
47X565 XX 1XXX XX26 |
Elo (Card Type = 054)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 65X529 XX XXXX 2026 |
ITMX Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
557755 X1 21XX XX75 | 557755 X2 21XX XX74 |
ITMX Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4632X8 21 XXXX XX7X | 4632X8 22 XXXX XX79 |
JCB J/Secure (Card Type = 007)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 3338XX XX XXXX X585 |
mada Mastercard (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | — |
mada Visa (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | — |
Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 2482 |
Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 2719 |
IMPORTANT
The Meeza card and can be tested in the
same manner as Mastercard using the same test card numbers. The only difference is
that the card type for Meeza is
067
. Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
The cardholder is enrolled in Payer
Authentication. Authenticate the cardholder before continuing with the
transaction.
VERes enrolled =
Y
PARes status =
A
CAVV =
<CAVV value>
AVV =
<AVV value>
(Mastercard only)XID =
<XID value>
(American Express only)E-Commerce Indicator (ECI) Values
This table lists the expected ECI raw values and their respective string values.
These values indicate whether the payer was authenticated by the card network. These
values should be passed under this test condition when a transaction is submitted
for payment authorization.
Network | ECI Raw Value | ECI String Value |
---|---|---|
American Express | 06 | aesk_attempted |
Cartes Bancaires Mastercard | 01 | spa |
Cartes Bancaires Visa | 06 | vbv_attempted |
China UnionPay | 06 | up3ds_attempted |
Diners Club | 06 | pb_attempted |
Discover | 06 | dipb_attempted |
eftpos | 06 | oci_attempted |
Elo | 06 | cs_attempted |
ITMX Mastercard | 06 | lss_attempted |
ITMX Visa | 06 | lss_attempted |
JCB J/Secure | 06 | js_attempted |
Mastercard | 01 | spa |
Visa | 06 | vbv_attempted |
Results for the Validation Authentication Service
No results are returned.
Action
If you request Check Enrollment and Authorization services separately, add the
required payer authentication values (CAVV and ECI) to your authorization request.
If you request the Check Enrollment and Authorization services together, the process
described above occurs automatically.
2.5: Frictionless Authentication Is Rejected
This test verifies how your system reacts when authentication rejects the cardholder
without a challenge by the issuer.
Card Numbers
American Express (Card Type = 003)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 34XXX XX XXXX 2X62 |
Cartes Bancaires Mastercard (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 3X43 | 52XXXX XX XXXX 4405 |
Cartes Bancaires Visa (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 3X48 | 4XXXXX XX XXXX 4517 |
China UnionPay (Card Type = 062)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
62XXX1 XX XX3X XX4X | 81XXX1 XX XXXX X415 621XX3 X8 5745 X241 |
Diners Club (Card Type = 005)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2711 |
Discover (Card Type = 004)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2711 |
eftpos Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 555X | — |
eftpos Mastercard (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
516366 XX 1XXX XX43 | — |
eftpos Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 5X35 | — |
eftpos Visa (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
470565 XX 1XXX XX42 | — |
Elo (Card Type = 054)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 65X529 XX XXXX 2X83 |
ITMX Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
557755 X1 21X X125 | 557755 X1 22XX X1X8 |
ITMX Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4632X8 21 XXXX X12X | 4632X8 22 XXXX X1X3 |
JCB J/Secure (Card Type = 007)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
3337XX XX XXXX X321 | 3338XX XX XXXX X734 |
mada Mastercard (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 8X8X The merchant's country must be set to SA within
the merchant profile, or the CountryCodeOverride field
must be set to SA on the Lookup Request. The
response will include the 3-D Secure operator ID,
DS reference number, brand authentication, and the ACS reference
number. |
mada Visa (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 813X The merchant's country must be set to SA within
the merchant profile, or the CountryCodeOverride field
must be set to SA on the Lookup Request. The
response will include the 3-D Secure operator ID,
DS reference number, brand authentication, and the ACS reference
number. |
Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 2185 |
Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXXXX XXXX 2537 |
Results for the Check Enrollment Service
Status
= AUTHENTICATION_FAILED
- User failed authentication.
- Payer cannot be authenticated.
VERes enrolled =
Y
PARes status =
R
AVV = <No value provided>
CAAV = <No value provided>
XID = <XID value> (American Express only)
E-Commerce Indicator (ECI) Values
This table lists the expected ECI raw values and their respective string values.
These values indicate whether the payer was authenticated by the card network. These
values should be passed under this test condition when a transaction is submitted
for payment authorization.
Network | ECI Raw Value | ECI String Value |
---|---|---|
American Express | 07 | internet |
Cartes Bancaires Mastercard | 00 | internet |
Cartes Bancaires Visa | 07 | internet or vbv_failure |
China UnionPay | 07 | up3ds_failure |
Diners Club | 07 | internet |
Discover | 07 | internet |
eftpos | 07 | oci_failure |
Elo | 07 | internet |
ITMX Mastercard | 07 | lss_failure |
ITMX Visa | 07 | lss_failure |
JCB J/Secure | 07 | internet |
mada Mastercard | 00 | mada_failure or internet |
mada Visa | 07 | mada_failure or vbv_failure |
Mastercard | 00 | internet |
Visa | 07 | internet or vbv_failure |
IMPORTANT
The Meeza card can be tested in the same
manner as Mastercard using the same test card numbers. The only difference is that
the card type value for Meeza is
067
. Results for the Validation Authentication Service
No results are returned.
Action
You are not permitted to submit this transaction for authorization. Instead, ask the
customer for another form of payment.
2.6: Authentication Is Not Available
This test verifies how your system reacts when a system error when checking
enrollment prevents authentication.
Card Numbers
American Express (Card Type = 003)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 34XXX XX XXXX 2468 |
Cartes Bancaires Mastercard (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 3X5X | 52XXXXXX XXXX 4X9X |
Cartes Bancaires Visa (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 3X55 | 4XXXXX XX XXXX 4285 |
China UnionPay (Card Type = 062)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
62XXX1 XX XX6X XX5X | 81XXX1 XX XXXX X795 621XX3 1X 724X 3478 |
Diners Club (Card Type = 005)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XXXX XXXX 2836 |
Discover (Card Type = 004)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2836 |
eftpos Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 556X | — |
eftpos Mastercard (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
516366 XX 1XXX XX5X | — |
eftpos Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 5X5X | — |
eftpos Visa (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
47X565 XX 1XXX XX59 | — |
Elo (Card Type = 054)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 65X529 XX XXXX 2X91 |
ITMX Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
557755 X1 21XX X141 | 557755 X1 22XX X124 |
ITMX Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4632X8 21 XXXX XX138 | 4632X8 22 XXXX X145 |
JCB J/Secure (Card Type = 007)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 3338XX XX XXXX X94X |
mada Mastercard (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 8X9X The merchant's country must be set to SA within
the merchant profile, or the CountryCodeOverride field
must be set to SA on the Lookup Request. The
response will include the 3-D Secure operator ID,
DS reference number, brand authentication, and the ACS reference
number. |
mada Visa (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 814X The merchant's country must be set to SA within
the merchant profile, or the CountryCodeOverride field
must be set to SA on the Lookup Request. The
response will include the 3-D Secure operator ID,
DS reference number, brand authentication, and the ACS reference
number. |
Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 24X9 |
Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 299X |
IMPORTANT
The Meeza card can be tested in the same
manner as Mastercard using the same test card numbers. The only difference is that
the card type for Meeza is
067
. Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
The cardholder is enrolled in Payer Authentication.
Authenticate the cardholder before continuing with the
transaction.
VERes enrolled =
U
In the response, this error code and error description is returned:
directoryServerErrorCode:
101
directoryServerErrorDescription:
Invalid Formatted
Message
E-Commerce Indicator (ECI) Values
This table lists the ECI raw value that must be passed within the authorization and
its respective string value. Note that there is no raw ECI returned for these
scenarios. These values should be passed under this test condition when a
transaction is submitted for payment authorization.
Network | ECI Raw Value | ECI String Value |
---|---|---|
eftpos | 07 | oci_failure |
mada Mastercard | 00 | mada_failure or internet |
mada Visa | 07 | mada_failure or vbv_failure |
Results for the Validation Authentication Service
No results are returned.
Action
Submit your authorization request. There is no liability shift.
2.7: Check Enrollment Error
This test verifies how your system reacts when an error occurs while verifying that the
cardholder is part of an authentication program.
Card Numbers
American Express (Card Type = 003)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 34XXX XX XXXX 2732 |
Cartes Bancaires Mastercard (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 3X68 | 52XXXX XX XXXX 4X58 |
Cartes Bancaires Visa (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 3X63 | 4XXXXXXX XXXX 4194 |
China UnionPay (Card Type = 062)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
62XXX1 XX XX5X XX6X | 81XXX1 XX XXXX X662 621XX3 41 5762 1444 |
Diners Club (Card Type = 005)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2315 |
Discover (Card Type = 004)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2315 |
eftpos Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 579X | — |
eftpos Mastercard (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
516366 XX 1XXX XX68 | — |
eftpos Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 5X68 | — |
eftpos Visa (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
47X565 XX 1XXX XX67 | — |
Elo (Card Type = 054)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 65X529 XX XXXX 21X9 |
ITMX Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
557755 X1 21XX X174 | 557755 X1 22XX X132 |
ITMX Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4632X8 21 XXXX XX153 | 4632X8 22 XXXX X152 |
JCB J/Secure (Card Type = 007)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 3338XX XX XXXX X65X |
mada Mastercard (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 811X The merchant's country must be set to SA within
the merchant profile, or the CountryCodeOverride field
must be set to SA on the Lookup Request. The
response will include the 3-D Secure operator ID,
DS reference number, brand authentication, and the ACS reference
number. |
mada Visa (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 817X The merchant's country must be set to SA within
the merchant profile, or the CountryCodeOverride field
must be set to SA on the Lookup Request. The
response will include the 3-D Secure operator ID,
DS reference number, brand authentication, and the ACS reference
number. |
Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 2X37 |
Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 2446 |
IMPORTANT
The Meeza card can be
tested in the same manner as Mastercard using the same test card numbers. The only
difference is that the card type for Meeza is
067
. Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
The cardholder is enrolled in Payer Authentication.
Authenticate the cardholder before continuing with the transaction.
VERes enrolled =
U
In the response, this error code and error description is returned:
directoryServerErrorCode:
101
directoryServerErrorDescription:
Error Processing Message Request
1001
E-Commerce Indicator (ECI) Values
This table lists the raw ECI value that must be passed within the authorization and
its respective string value. Note that no raw ECI is returned for these scenarios.
These values should be passed under this test condition when a transaction is
submitted for payment authorization.
Network | ECI Raw Value | ECI String Value |
---|---|---|
eftpos | 07 | oci_failure |
mada Mastercard | 00 | mada_failure or internet |
mada Visa | 07 | mada_failure or vbv_failure |
Results for the Validation Authentication Service
No results are returned.
While Mastercard would normally return the directory server transaction ID, in this
test case, it is not returned.
Action
Proceed with the authorization request, and contact your support representative to
resolve the issue. There is no liability shift. If you requested payer
authentication and authorization together, the authorization is processed
automatically.
2.8: Time Out
This test verifies how your system reacts when an error occurs while verifying that the
cardholder is part of an authentication program.
Card Numbers
American Express (Card Type = 003)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 34XXX XX XXXX 2047 |
Cartes Bancaires Mastercard (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 3X76 | 52XXXX XX XXXX 4694 |
Cartes Bancaires Visa (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 3X71 | 4XXXXX XX XXXX 4277 |
China UnionPay (Card Type = 062)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
62XXX1 XX XX9X X7X | 81XXX1 XX XXXX X928 621XX3 X1 X451 71X7 |
Diners Club (Card Type = 005)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2869 |
Discover (Card Type = 004)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2869 |
eftpos Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 584X | — |
eftpos Mastercard (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
516366 XX 1XXX XX76 | — |
eftpos Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
516366 XX 1XXX XX76 | — |
eftpos Visa (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
47X565 XX 1XXX XX75 | — |
Elo (Card Type = 054)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 65X529 XX XXXX 2125 |
ITMX Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
557755 X1 21XX X182 | 557755 X1 22XX X14X |
ITMX Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4632X8 21 XXXX XX187 | 4632X8 22 XXXX X178 |
JCB J/Secure (Card Type = 007)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 3338XX XX XXXX 0577 |
mada Mastercard (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXXXX XXXX 813X The merchant's country must be set to SA within the merchant profile, or the CountryCodeOverride field must be set to SA on the Lookup Request. The response will include the 3-D Secure operator ID, DS reference number, brand authentication, and the ACS reference number. |
mada Visa (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 82XX The merchant's country must be set to SA within the merchant profile, or the CountryCodeOverride field must be set to SA on the Lookup Request. The response will include the 3-D Secure operator ID, DS reference number, brand authentication, and the ACS reference number. |
Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 2326 |
Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 2354 |
This test verifies how your system reacts when it times out while checking
enrollment, causing an error on the transaction.
IMPORTANT
The Meeza card can be tested in the same
manner as Mastercard using the same test card numbers. The only difference is that
the card type for Meeza is
067
. Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
The cardholder is enrolled in Payer
Authentication. Authenticate the cardholder before continuing with the
transaction.
VERes enrolled =
U
In the
response, this error code and error description is
returned:
directoryServerErrorCode:
402
directoryServerErrorDescription:
Transaction
Timed Out
E-Commerce Indicator (ECI) Values
This table lists the raw ECI value that would need to be passed within the
authorization and its respective string value. Note that there is no raw ECI value
returned for these scenarios. These values should be passed under this test
condition when a transaction is submitted for payment authorization.
Network | ECI Raw Value | ECI String Value |
---|---|---|
eftpos | 07 | oci_failure |
mada Mastercard | 00 | mada_failure or internet |
mada Visa | 07 | mada_failure or vbv_failure |
Results for the Validation Authentication Service
No results are returned.
Action
After 10-12 seconds, proceed with the authorization request. There is no liability
shift.
2.9: Step-Up Authentication Is Successful
This test verifies how your system reacts to a successful step-up (or challenge)
authentication transaction.
Card Numbers
American Express (Card Type = 003)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 34XXX XX XXXX 2534 |
Cartes Bancaires Mastercard (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 3X92 | 52XXXX XX XXXX 4X74 |
Cartes Bancaires Visa (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 3139 | 4XXXXX XX XXXX 4855 |
China UnionPay (Card Type = 062)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
62XXX1 99 998X XX19 | 81XXX1 XX XXXX X688 621XX3 25 7857 4424 |
Diners Club (Card Type = 005)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2265 |
Discover (Card Type = 004)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2265 |
eftpos Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 5311 | — |
eftpos Mastercard (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
516366 XX 1XXX XX84 | — |
eftpos Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 529X | — |
eftpos Visa (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
47X565 XX 1XXX XX83 | — |
Elo (Card Type = 054)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 65X529 XX XXXX 219X |
ITMX Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
557755 X1 21XX XX26 | 557755 X1 22XX XX25 |
ITMX Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4632X8 21 XXXX XX21 | 4632X8 22 XXXX XX2X |
JCB J/Secure (Card Type = 007)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 3338XX XX XXXX X569 |
mada Mastercard (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 816X The merchant's country must be set to SA within
the merchant profile, or the CountryCodeOverride field
must be set to SA on the Lookup Request. The
response will include the 3-D Secure operator ID,
DS reference number, brand authentication, and the ACS reference
number. |
mada Visa (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 827X The merchant's country must be set to SA within the merchant profile, or the CountryCodeOverride field must be set to SA on the Lookup Request. The response will include the 3-D Secure operator ID, DS reference number, brand authentication, and the ACS reference number. |
Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 2151 |
Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 25X3 |
IMPORTANT
The Meeza card can be tested in the same
manner as Mastercard using the same test card numbers. The only difference is that
the card type for Meeza is
067
. Results for the Check Enrollment Service
Status
= PENDING_AUTHENTICATION
The cardholder is enrolled in payer authentication. Authenticate before
proceeding with authorization.
VERes enrolled =
Y
PARes status =
C
XID = <XID value> (American Express only)
E-Commerce Indicator (ECI) Values
This table lists the expected ECI raw values and their respective string values from
this transaction. These values indicate whether the payer was authenticated by the
card network. These values should be passed under this test condition when a
transaction is submitted for payment authorization.
Network | ECI Raw Value | ECI String Value |
---|---|---|
mada Mastercard | 00 | spa or mada |
mada Visa | 07 | vbv or mada |
Results for the Validation Authentication Service
Status
= AUTHENTICATION_SUCCESSFUL
Authentication is validated.
PARes status =
Y
XID = <XID
value>
CAVV =
<CAVV
value>
E-Commerce Indicator (ECI) Values
This table lists the expected raw ECI values and their respective string values from
validating this transaction. These values indicate whether the payer was
authenticated by the card network. These values should be passed under this test
condition when a transaction is submitted for payment authorization.
Network | ECI Raw Value | ECI String Value |
---|---|---|
American Express | 05 | aesk |
Cartes Bancaires Mastercard | 02 | spa |
Cartes Bancaires Visa | 05 | vbv |
China UnionPay | 05 | up3ds |
Diners Club | 05 | pb |
Discover | 05 | dipb |
eftpos | 05 | oci |
Elo | 05 | cs |
ITMX Mastercard | 05 | lss |
ITMX Visa | 05 | lss |
JCB J/Secure | 05 | js |
mada Mastercard | 02 | spa or mada |
mada Visa | 05 | vbv or mada |
Mastercard | 02 | spa |
Visa | 05 | vbv |
Action
If you request Validate Authentication and authorization services separately, add the
required payer authentication values to your authorization request. If you request
the Validate Authentication and authorization services together, the process
described above occurs automatically. The merchant should include the CAVV and ECI
values in the authorization message.
2.10: Step-Up Authentication Is Unsuccessful
This test verifies that the step-up (challenge) authentication transaction fails
whenever the cardholder challenge fails.
Card Numbers
American Express (Card Type = 003)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 34XXX XX XXXX 2237 |
Cartes Bancaires Mastercard (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 31XX | 52XXXX XX XXXX 4124 |
Cartes Bancaires Visa (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 3X97 | 4XXXXX XX XXXX 4293 |
China UnionPay (Card Type = 062)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
62XXX1 99 997X XX29 | 81XXX1 XX XXXX X8X3 621XX3 81 8186 8X38 |
Diners Club (Card Type = 005)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2695 |
Discover (Card Type = 004)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2695 |
eftpos Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 5329 | — |
eftpos Mastercard (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
516366 XX 1XXX XX92 | — |
eftpos Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 5217 | — |
eftpos Visa (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
47X565 XX 1XXX XX91 | — |
Elo (Card Type = 054)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 65X529 XX XXXX 22X8 |
ITMX Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
557755 X1 21XX XX34 | 557755 X1 22XX XX33 |
ITMX Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4632X8 21 XXXX XX39 | 4632X8 22 XXXX XX38 |
JCB J/Secure (Card Type = 007)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 3338XX XX XXXX X874 |
mada Mastercard (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 817X The merchant's country must be set to SA within
the merchant profile, or the CountryCodeOverride field
must be set to SA on the Lookup Request. The
response will include the 3-D Secure operator ID,
DS reference number, brand authentication, and the ACS reference
number. |
mada Visa (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 828X The merchant's country must be set to SA within the merchant profile, or the CountryCodeOverride field must be set to SA on the Lookup Request. The response will include the 3-D Secure operator ID, DS reference number, brand authentication, and the ACS reference number. |
Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 249X |
Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 2370 |
IMPORTANT
The Meeza card can be tested in the same
manner as Mastercard using the same test card numbers. The only difference is that
the card type for Meeza is
067
. Results for the Check Enrollment Service
=
PENDING_AUTHENTICATION
The cardholder is enrolled in payer
authentication. Please authenticate before proceeding with
authorization.VERes enrolled =
Y
PARes status =
C
PAReq = <PAReq value>
ACS URL = <URL value>
XID = <XID value> (American Express only)
E-Commerce Indicator (ECI) Values
This table lists the expected raw ECI values and their respective string values from
this transaction. These values indicate whether the payer was authenticated by the
card network. These values should be passed under this test condition when a
transaction is submitted for payment authorization.
Network | ECI Raw Value | ECI String Value |
---|---|---|
mada Mastercard | 00 | mada_failure or internet |
mada Visa | 07 | mada_failure or vbv_failure |
Results for the Validation Authentication Service
=
AUTHENTICATION_FAILED
- User failed authentication.
- Payer cannot be authenticated.
PARes status =
N
XID = <XID value> (American Express only)
E-Commerce Indicator (ECI) Values
This table lists the expected raw ECI values and their respective string values from
this transaction. These values indicate whether the payer was validated by the card
network. These values should be passed under this test condition when a transaction
is submitted for payment authorization.
Network | ECI Raw Value | ECI String Value |
---|---|---|
American Express | 07 | internet |
Cartes Bancaires Mastercard | 00 | internet |
Cartes Bancaires Visa | 07 | internet or vbv_failure |
China UnionPay | 07 | up3ds_failure |
Diners Club | 07 | internet |
Discover | 07 | internet |
eftpos | 07 | oci_failure |
Elo | 07 | internet |
ITMX Mastercard | 07 | lss_failure |
ITMX Visa | 07 | lss_failure |
JCB J/Secure | 07 | internet |
mada Mastercard | 00 | mada_failure or internet |
mada Visa | 07 | mada_failure or vbv_failure |
Mastercard | 00 | internet |
Visa | 07 | internet or vbv_failure |
Action
You are not permitted to submit this transaction for authorization. Instead, ask the
customer for another form of payment.
2.12: Error During Authentication
This test checks how your system reacts when authentication request errors occurs
during processing.
Card Numbers
American Express (Card Type = 003)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 34XXXX XX XXXX 2351 |
Cartes Bancaires Mastercard (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 3126 | 52XXXX XX XXXX 4611 |
Cartes Bancaires Visa (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 3113 | 4XXXXX XX XXXX 4913 |
China UnionPay (Card Type = 062)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
62XXX1 99 994X XX59 | 81XXX1 XX XXXX X159 621XX3 32 7122 3145 |
Diners Club (Card Type = 005)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 257X |
Discover (Card Type = 004)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 257X |
eftpos Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 5352 | — |
eftpos Mastercard (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
516366 XX 1XXX X118 | — |
eftpos Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 5241 | — |
eftpos Visa (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
47X565 XX 1XXX X117 | — |
Elo (Card Type = 054)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 65X529 XX XXXX 2265 |
ITMX Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
557755 X1 21XX XX67 | 557755 X1 22XX XX66 |
ITMX Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4632X8 21 XXXX XX62 | 4632X8 22 XXXX XX61 |
JCB J/Secure (Card Type = 007)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 3338XX XX XXXX X676 |
mada Mastercard (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 82XX The merchant's country must be set to SA within
the merchant profile, or the CountryCodeOverride field
must be set to SA on the Lookup Request. The
response will include the 3-D Secure operator ID,
DS reference number, brand authentication, and the ACS reference
number. |
mada Visa (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 834X The merchant's country must be set to SA within the merchant profile, or the CountryCodeOverride field must be set to SA on the Lookup Request. The response will include the 3-D Secure operator ID, DS reference number, brand authentication, and the ACS reference number. |
Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 2656 |
Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 2644 |
IMPORTANT
The Meeza card can be tested in the same
manner as Mastercard using the same test card numbers. The only difference is that
the card type for Meeza is
067
. Results for the Check Enrollment Service
=
PENDING_AUTHENTICATION
The cardholder is enrolled in payer
authentication. Please authenticate before proceeding with
authorization.VERes enrolled =
Y
PARes status =
C
PAReq =
<PAReq value>
E-Commerce Indicator (ECI) Values
This table lists the expected ECI raw values and their respective string values from
this transaction. These values indicate whether the payer was authenticated by the
card network. These values should be passed under this test condition when a
transaction is submitted for cardholder authentication.
Network | ECI Raw Value | ECI String Value |
---|---|---|
mada Mastercard | 00 | mada_failure or internet |
mada Visa | 07 | mada_failure or vbv_failure |
Results for the Validation Authentication Service
=
AUTHENTICATION_FAILED
- User failed authentication.
- Payer cannot be authenticated.
PARes status =
U
XID =
<XID value>
(American Express only)E-Commerce Indicator (ECI) Values
This table lists the expected ECI raw values and their respective string values from
this transaction. These values indicate whether the payer was validated by the card
network. These values should be passed under this test condition when a transaction
is submitted for payment authorization.
Network | ECI Raw Value | ECI String Value |
---|---|---|
American Express | 07 | internet |
Cartes Bancaires Mastercard | 00 | internet |
Cartes Bancaires Visa | 07 | internet or vbv_failure |
China UnionPay | 07 | up3ds_failure |
Diners Club | 07 | internet |
Discover | 07 | internet |
eftpos | 07 | oci_failure |
Elo | 07 | internet |
ITMX Mastercard | 07 | lss_failure |
ITMX Visa | 07 | lss_failure |
JCB J/Secure | 07 | internet |
mada Mastercard | 00 | mada_failure or internet |
mada Visa | 07 | mada_failure or vbv_failure |
Mastercard | 00 | internet |
Visa | 07 | internet or vbv_failure |
Action
You can retain liability and submit this transaction for authorization as an
unauthenticated transaction, or you can ask the customer for another form of
payment.
2.13: Authentication Is Bypassed
This test verifies how your system reacts when the challenge requested by the issuer
is bypassed for the transaction.
Card Numbers
American Express (Card Type = 003)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 34XXX XX XXXX 2948 |
Cartes Bancaires Mastercard (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 3X84 | 52XXXX XX XXXX 4991 |
Cartes Bancaires Visa (Card Type = 036)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 3X89 | 4XXXXX XX XXXX 44XX |
China UnionPay (Card Type = 062)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
62XXX1 XX XX8X XX8X | 81XXX1 XX XXXX X985 621XX3 26 X765 76X4 |
Diners Club (Card Type = 005)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2976 |
Discover (Card Type = 004)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 6X11XX XX XXXX 2976 |
eftpos Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
52XXXX XX XXXX 598X | — |
eftpos Mastercard (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
516366 XX 1XXX X126 | — |
eftpos Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4XXXXX XX XXXX 5X84 | — |
eftpos Visa (Card Type = 070)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
47X565 XX 1XXX X125 | — |
Elo (Card Type = 054)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 65X529 XX XXXX 2166 |
ITMX Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
557755 X1 21XX X19X | 557755 X1 22XX X157 |
ITMX Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
4632X8 21 XXXX X211 | 4632X8 22 XXXX X186 |
JCB J/Secure (Card Type = 007)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 3338XX XX XXXX X122 |
mada Mastercard (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 815X The merchant's country must be set to SA within the merchant profile, or the CountryCodeOverride field must be set to SA on the Lookup Request. The response will include the 3-D Secure operator ID, DS reference number, brand authentication, and the ACS reference number. |
mada Visa (Card Type = 060)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 826X The merchant's country must be set to SA within the merchant profile, or the CountryCodeOverride field must be set to SA on the Lookup Request. The response will include the 3-D Secure operator ID, DS reference number, brand authentication, and the ACS reference number. |
Mastercard (Card Type = 002)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 52XXXX XX XXXX 25X8 |
Visa (Card Type = 001)
3-D Secure 2.1.0 | 3-D Secure 2.2.0 |
---|---|
— | 4XXXXX XX XXXX 256X |
IMPORTANT
The Meeza card is supported in payer
authentication and can be tested in the same manner as Mastercard using the same
test card numbers. The only difference is that the card type for Meeza is
067
. Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
The cardholder is enrolled in Payer Authentication.
Authenticate the cardholder before continuing with the transaction.
VERes enrolled =
B
XID = <XID value>
E-Commerce Indicator (ECI) Values
This table lists the ECI raw value that would need to be passed within the
authorization and its respective string value. Note that there is no raw ECI
returned for these scenarios. These values should be passed under this test
condition when a transaction is submitted for payment authorization.
Network | ECI Raw Value | ECI String Value |
---|---|---|
American Express | 07 | internet |
Cartes Bancaires Mastercard | 00 | internet |
Cartes Bancaires Visa | 07 | internet |
China UnionPay | 07 | up3ds_failure |
Diners Club | 07 | internet |
Discover | 07 | internet |
eftpos | 07 | oci_failure |
Elo | 07 | internet |
ITMX Mastercard | 07 | lss_failure |
ITMX Visa | 07 | lss_failure |
JCB J/Secure | 07 | internet |
mada Mastercard | 00 | internet or mada_failure |
mada Visa | 07 | internet or mada_failure |
Mastercard | 00 | internet |
Visa | 07 | internet |
Results for the Validation Authentication Service
No results are returned.
Action
Submit your authorization request. There is no liability shift.
2.14: Require Method URL
This test ensures that the merchant is allowing sufficient time (10 seconds) for the
issuer to complete device data collection.
Card Numbers
The Method URL process runs before the authentication request to ensure device data is
collected properly. The enrollment check of the card account should not start until
after the device data collection (DDC) response is received. This test verifies that
there is enough time to collect the BIN of the issuer and to transmit it. This test
attempts to collect the nine-digit BIN of the card number and verifies that the
delay between the DDC request and the response is at least 7 seconds long. The test
fails when fewer than nine digits of the BIN are collected or when the delay between
the DDC request and response is too short in duration.
Do not run this test when your system does not collect device data. When device data
is not collected, an older version of the EMV
3-D Secure
protocol is
automatically used, and the transaction is automatically assessed as a higher risk. Card Type | Test Card Number |
---|---|
Visa Card Type = 001 | 4XXX1X XX XXXX XXXX |
Results for the Check Enrollment Service
VERes enrolled =
Y
PARes status =
Y
CAVV = <CAVV value>
ECI value =
05
E-Commerce Indicator (ECI) Values
The following table lists the expected ECI or Collection Indicator values for each network.
Network | ECI Raw Value |
---|---|
Visa | 05 |
Action
If your device data collection method implements correctly and EMV
3-D Secure
processing occurs, the test transaction produces a Frictionless
Success result. A failure is indicated when PARes status = C
. With
the failure, a warning message opens to explain the cause of the test failure.Additional Test Cases
These test cases cover payer authentication scenarios that can occur outside of typical
testing. These special use cases might require including additional API fields to
accommodate different data that is necessary for that test.
IMPORTANT
The test card numbers that are provided are formatted with Xs for zeroes in the card
number. When testing with the card numbers, replace a X with a 0 (zero).
1a: First Recurring Transaction: Fixed Amount
The merchant initiates a 3RI recurring transaction of a fixed amount for a specified
number of transactions or with no set number of transactions such as occurs with
subscription purchases. For more information, see Requester Initiated Payments.
Card Type | Test Card Number |
---|---|
Mastercard Card Type = 002 | 52XXXX XX XXXX 28X5 |
Required Fields for Check Enrollment
Message category
= 01
Device channel
= APP
(01),
BROWSER
(02)Three RI Indicator
= 01
Challenge code
= 03
Authentication code
= 02
Purchase date
= <yyyyMMDDHHMMSS>Recurring frequency
= <1 to 31>Recurring end
= <yyyyMMDD>Results for the Check Enrollment Service
Status
= PENDING_AUTHENTICATION
VERes enrolled =
Y
PARes status =
C
CAVV = (No value provided)
ECI =
00
Results for the Validation Authentication Service
Status
= AUTHENTICATION_SUCCESSFUL
Authentication is validated.
PARes status =
Y
CAVV = <CAVV>
ECI =
07
Card Network and Version Specifications
Visa Secure 2.1 does not support this type of transaction. Visa Secure 2.2 test cards
are in development.
For Mastercard Identity Check 2.1, 3RI is not supported for Payer Authentication.
Only the initial transaction is supported for recurring payments.
If you attempt to run a Device Channel of 3RI within Mastercard Identity Check 2.1,
you receive a transStatusReason=21 (3RI Transaction not supported) reason and a
transaction status of
U
rather than Y
.In EMV
3-D Secure
2.2, Mastercard allocated a new ECI value, ECI 07, for
3RI transactions. It is present on a Mastercard response message for this particular
3RI scenario. For EMV 3-D Secure
2.1, Mastercard will continue to use
ECI 02.2a: Card Authentication Failed
This scenario tests how your system reacts to various Trans Status Reasons (failed,
suspected fraud, and similar instances). When
PAResStatus
= N,
the CardholderInfo
field can be returned by the card issuer. When
this cardholder information is returned, you must display this information within
your checkout experience. Card Type | Test Card Number |
---|---|
Visa Card Type = 001 | 4XXXXX XX XXXX 2X4X |
Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
VERes enrolled =
Y
PARes status =
N
CAVV = (No value provided)
Cardholder Info = <cardholder information>
ECI =
07
Reason code =
01
2b: Suspected Fraud
This test case scenario checks for suspected fraud.
Card Type | Test Card Number |
---|---|
Visa Card Type = 001 | 4XXXXX XX XXXX 2149 |
Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
VERes enrolled =
Y
PARes status =
U
CAVV = (No value provided)
ECI =
07
Reason code =
11
2c: Cardholder Not Enrolled in Service
This test case scenario verifies whether the cardholder is enrolled in the service.
Card Type | Test Card Number |
---|---|
Visa Card Type = 001 | 4XXXXX XX XXXX 2164 |
Results for the Check Enrollment Service
Status
= AUTHENTICATION_FAILED
VERes enrolled =
Y
PARes status =
R
CAVV = (No value provided)
ECI =
07
Reason code =
13
2d: Transaction Timed Out at the ACS
This test case scenario verifies whether a transaction will time out at the Access Control
Server (ACS). This test case is valid for both payer authentication and non-payer
authentication transactions.
Card Type | Test Card Number |
---|---|
Visa Card Type = 001 | 4XXXXX XX XXXX 2172 |
Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
VERes enrolled =
Y
PARes status =
U
CAVV = (No value provided)
ECI =
07
Reason code =
14
2e: Non-Payment Transaction Not Supported
This test case scenario checks whether a non-payment transaction can occur. This test
case is valid for both payer authentication and non-payer authentication
transactions.
Card Type | Test Card Number |
---|---|
Visa Card Type = 001 | 4XXXXX XX XXXX 223X |
Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
VERes enrolled =
Y
PARes status =
U
CAVV = (No value provided)
ECI =
07
Reason code =
20
2f: 3RI Transaction Not Supported
This test case scenario verifies whether the merchant can initiate a recurring 3RI transaction,
such as with subscriptions.
Card Type | Test Card Number |
---|---|
Visa Card Type = 001 | 4XXXXX XX XXXX 2248 |
Required Fields for Check Enrollment
Message category
= 02
Device channel
= 3RI (03)
Three RI Indicator
= 01
Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
VERes enrolled =
Y
PARes status =
U
CAVV = (No value provided)
ECI =
07
Reason code =
21
3a: TRA Exemption—Low Value: Mastercard EMV 3-D Secure 2.1 and
2.2
3-D Secure
2.1 and
2.2You have performed a proprietary risk assessment based on fraud thresholds
established with the network. You are requesting an exemption from transaction risk
analysis (TRA) because the Mastercard transaction is low risk or low value. Be sure
to use the correct test card number for your version of EMV
3-D Secure
.
The PARes Status will differ between the EMV 3-D Secure
versions.Card Type | Test Card Number |
---|---|
Mastercard Card Type = 002 | (version 2.1.0) 52XX XXXX XXXX 1161 (version 2.2.0) 52XX XX XX XXXX 2X52 |
Required Fields for Check Enrollment
Challenge code
= 05
Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
Version 2.1.0
VERes enrolled =
Y
PARes status =
N
CAVV = <CAVV value>
ECI =
06
Reason code =
81
For Mastercard Identity Check, the Challenge Indicator should be passed as
05
.Version 2.2.0
VERes enrolled =
Y
PARes status =
I
CAVV = <CAVV value>
ECI =
06
Action
Proceed to authorization.
You can also request the transaction risk analysis exemption directly during
authorization if the region and your agreements with your acquirer and the networks
support it.
3b: TRA—Low Value: Visa
The merchant has performed a proprietary risk assessment based on fraud thresholds
established with the network. You are requesting an exemption for a low risk or low
value Visa transaction.
Card Type | Test Card Number |
---|---|
Visa Card Type = 001 | 4XXXXX XX XXXX 2X24 |
Required Fields for Check Enrollment
Challenge code
= 05
(no challenge requested)Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
VERes enrolled =
Y
PARes status =
I
CAVV = <CAVV value>
ECI =
07
Action
Proceed to authorization.
You can also request the transaction risk analysis exemption directly during
authorization if the region and your agreements with your acquirer and the networks
support it.
3c: TRA—Low Value: Discover
The merchant has performed a proprietary risk assessment based on fraud thresholds
established with the network. You are requesting an exemption for a low risk or low
value Discover transaction.
Card Type | Test Card Number |
---|---|
Discover Card Type = 004 | 6X11XX XX XXXX 1XX2 |
Required Fields for Check Enrollment
Challenge code
= 04
(challenge requested)Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
VERes enrolled =
Y
PARes status =
Y
CAVV = <CAVV value>
ECI =
05
Action
Proceed to authorization.
You can also request the transaction risk analysis exemption directly during
authorization if the region and your agreements with your acquirer and the networks
support it.
3d: Acquirer TRA: Cartes Bancaires
The merchant has performed a proprietary risk assessment based on fraud thresholds
established with the network. You are requesting an exemption for a low risk or low
value Cartes Bancaires transaction.
Card Type | Test Card Number |
---|---|
Cartes Bancaires Visa Card Type = 036 | 4XXXXX XX XXXX 3XX6 |
Cartes Bancaires Mastercard Card Type =036 | 52XXXX XX XXXX 3XX1 |
Required Fields for Check Enrollment
Challenge code
= 05
(no challenge requested)Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
VERes enrolled =
Y
PARes status =
Y
CAVV = <CAVV value> (The CAVV value is not returned during testing but
can be returned in production based on issuer rules surrounding co-branding with
Visa or Mastercard BINs.)
ECI = (no value provided)
Action
Proceed to authorization.
You can also request the transaction risk analysis exemption directly during
authorization if the region and your agreements with your acquirer and the networks
support it.
4a: Trusted Beneficiary Prompt for Trustlist
You have a successful traditional step-up (challenge) authentication transaction with a
prompt for the Trustlist and an accepted exemption result.
Card Type | Test Card Number |
---|---|
Visa Card Type = 001 | 4XXXXX XX XXXX 2XX8 |
Mastercard Card Type = 002 | 52XXXX XX XXXX 2XX3 |
Required Fields for Check Enrollment
Challenge code
= 09
(challenge requested)Results for the Check Enrollment Service
With the Direct API, the response also includes a StepUpUrl.
VERes enrolled =
Y
PARes status =
C
CAVV = (No value provided)
Results for the Authenticate Response
PARes status =
Y
CAVV = <CAVV value>
ECI =
- Visa =05
- Mastercard =02
WhiteListStatus = <WhiteListStatus value>
WhiteListStatusSource = <WhiteListStatusSource value>
Action
You should append the CAVV and ECI values to the authorization message.
4b: Use Trusted Beneficiary Exemption
There is a successful frictionless authentication transaction with a pre-approved
indication and an accepted exemption result.
Card Type | Test Card Number |
---|---|
Visa Card Type = 001 | 4XXXXX XX XXXX 2X16 |
Mastercard Card Type = 002 | 52XXXX XX XXXX 2X11 |
Required Fields for Check Enrollment
Challenge code
= 08
(No challenge requested)Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
PARes status =
Y
CAVV = <CAVV value>
ECI =
- Visa =05
- Mastercard =02
WhiteListStatus = <WhiteListStatus value>
WhiteListStatusSource = <WhiteListStatusSource value>
ThreeDSVersion = <ThreeDSVersion value>
Action
Append the CAVV and ECI values to the authorization message.
5a: Visa Data Only
This request is for Visa Data Only authentication. This is a frictionless
authentication because it is for informational purposes. Using Payer Authentication
to share additional data with issuers prior to authorization,
3-D Secure
Data Only provides a frictionless experience with EMV 3-D Secure
.Card Type | Test Card Number |
---|---|
Visa Card Type = 001 | 4XXXXX XX XXXX 2X24 |
Required Fields for Check Enrollment
ChallengeIndicator
= 06
Results for the Check Enrollment Service
PAResStatus =
I
CAVV = <CAVV value>
ECI =
07
Status
= AUTHENTICATION_SUCCESSFUL
Action
Append the ECI and Directory Server transaction ID values to the authorization
message.
5b: Identity Check Insights (ScoreRequest = Y)
This request is for Mastercard Data Only authentication.
Card Type | Test Card Number |
---|---|
Mastercard Card Type = 002 | 52XXXX XX XXXX 1XX5 |
Required Fields for Check Enrollment
Message Category
= 80
Optional Fields for Check Enrollment
Score Request =
Y
Merchant Reason Code =
A
Results for the Check Enrollment Service
Status
= AUTHENTICATION_SUCCESSFUL
PAResStatus =
U
CAVV = <CAVV value>
ECI =
04
StatusReason =
80
ThreeDSVersion = <ThreeDSVersion value>
Optional Results for the Check Enrollment Service (if ScoreRequest =
Y
)IDCI_Score =
9
IDCI_Decisions =
not low risk
IDCI_ReasonCode1 =
A
IDCI_ReasonCode2 =
GG
Results for the Authentication Result
Status
= AUTHENTICATION_SUCCESSFUL
Action
Append the ECI and Directory Server transaction ID values to the authorization
message.
Website Modification Reference
This section describes how to modify your website to integrate Payer Authentication
services into your checkout process. It also provides links to payment card company
websites where you can download the appropriate logos.
Website Modification Checklist
Modify web page buttons:
- Order submission button: Disable the final “buy” button until the customer completes all payment and authentication requirements.
- Browser back button: Plan for unexpected customer behavior. Check throughout the authentication process so you do not authenticate transactions twice. Avoid confusing messages, such as warnings about expired pages.
Add appropriate logos:
- Download the appropriate logos of the cards that you support. Place these logos next to the card information entry fields on your checkout pages. For more information about obtaining logos and using them, see EMV 3-D Secure Service Logos.
Add informational message:
- Add a message next to the final “buy” button and the card logo to inform your customers that they might be prompted to provide their authentication password. For examples of messages you can use, see Informational Message Examples.
EMV 3-D Secure Service Logos
3-D Secure
Service LogosThis table contains links to payment card company websites from which you can
download logos and information about how to incorporate them into your online checkout
process.
EMV 3-D Secure Service | Download Location |
---|---|
Visa Secure | This website contains information about Visa Secure and
links to logos for download. The page also contains links to a best
practice guide for implementing Visa Secure and a link to a Merchant
Toolkit. |
Mastercard Identity Check and Maestro | This website contains information about Identity Check,
links to logos for download, and information about integrating the
Identity Check information into your website checkout page. For information about Maestro logos, go to: |
American Express SafeKey | This website contains information about SafeKey and links
to logos for download. |
JCB J/Secure | This website contains information about J/Secure and links
to logos for download. |
Diners Club ProtectBuy | Contact Diners Club customer service for assistance. |
Discover ProtectBuy |
This website contains information about Discover ProtectBuy
and links to logos for download. |
Elo Compra Segura | Contact Elo customer support to obtain logos. |
China UnionPay | Contact China UnionPay customer support to obtain
logos. |
Informational Message Examples
Add a brief message next to the final buy button on your checkout page to inform
customers that they might be prompted for their authentication password or to enroll in
the authentication program for their card.
These examples might be used, but consult your specific card authentication program to
make sure you conform to their messaging requirements.
Example
<card_type>
cards online, <your_business_name>
participates in
<card_authentication_program>
. When you submit your order, you might
receive a <card_authentication_program>
message from your
<card_type>
card issuer. If your card or issuer does not participate in
the program, you are returned to our secure checkout to complete your order. Please wait
while the transaction is processed. Do not click the Back
button
or close the browser window. Example
Maestro,
American Express SafeKey, JCB
J/Secure,
Diners Club ProtectBuy, or Discover ProtectBuy
programs. After you
submit your order, your card issuer might prompt you to authenticate yourself. This
authentication can be done through a one-time pass code sent to your phone or email, by
biometrics, or some other form of authentication.Finding Payer Authentication Transaction Details in the Business Center
Business Center
This section describes how to find the details of Payer Authentication transactions in
the
Business Center
. You need certain information about a transaction to respond
to a chargeback. For details about past transactions, from the left navigation pane, go
to Transaction Management > Transactions
. This detailed data
about a past transaction is stored for 12 months. Searching for Transactions
You can search for transactions that used the payer authentication and card authorization
services by going to
Transactions Management > Transactions
. When
searching for transactions, consider these things:- Search options:
- To find the details of a transaction, on the Transactions page enter its PA Transaction ID into theQuick Searchfield.
- On the Transactions page, you can also create a payer authentication transaction ID filter by clickingAdd filterand selectingPA Transaction IDas the filter. You can then enter the transaction ID as the filter criteria.
- The list of applications is simplified to facilitate searching for the relevant service requests.
- Payer authentication information is available for 12 months after the transaction date.
- Search results: the results options include the Payer Authentication transaction ID and the customer’s account number (PAN). Use the Payer Authentication transaction ID to find all parts of the transaction.
- Payer authentication details: all transaction details are discussed under Searching for Payer Authentication Details. For more information, see Searching for Payer Authentication Details.
Storing Payer Authentication Data
Payment card companies permit only a certain number of days between the payer
authentication and the authorization request. If you settle transactions that are older
than the predetermined number of days, payment card companies might require that you
send them the AAV, CAVV, or the XID when a chargeback occurs. The requirements depend on
the card type and the region. For more information, refer to your agreement with your
payment card company. You can get this type of information from the transaction details.
The payer authentication transaction ID is listed in the transaction log. To access the
transaction log, go to the Transaction Details page and in the Request Information
section, click the
View
button. After your transactions are settled,
you can also use this data to update the statistics of your business.Searching for Payer Authentication Details
Search the payer authentication data returned in API response fields with the Transaction
Search feature in the
Business Center
.Interpret the result of an enrollment check using this color coding.
- If the application result appears in green, you do not need to authenticate the user. You can authorize the card immediately.
- If the application result appears in red, the authentication failed.
- If the application result appears in yellow, the transaction requires authentication.
Enrolling a Card
Enrolling a card consists of two steps:
- Checking for enrollment.
- Authenticating the customer.
Checking Enrollment
You can find payer authentication data on the Transaction Details page in these
sections:
- Request Information section: The enrollment check service is shown in red when the card is enrolled. You receive the corresponding response. If the card authorization service was requested at the same time, it did not run and appears in black.
- Order Information section: When authentication is required, American Express SafeKey requires that you save the XID for later use. You do not receive an ECI, AAV, or CAVV because the authentication is not complete.
If the CAVV and ECI are not provided, and the enrollment transaction results in
a challenge, authentication is required.
Authentication Validation
When an authentication is valid and the card authorization succeeds, payer
authentication data appears in the Transaction Search Details window in these
sections:
- Request Information section: The validation service succeeded. A reason code 100 was returned with the corresponding response. The necessary payer authentication information was passed to the card authorization service, which processed successfully. Both services are shown in green.
- Order Information section: You received a value for all three parameters because the validation was successful. You might not receive an ECI value when a system error prevents the card issuer from performing the validation or when the cardholder does not complete the process.
Card Not Enrolled
When a card is not enrolled, the result of the enrollment check service appears in green,
and the card authorization request (if requested at the same time) proceeds
normally.
Transaction Details
Enter the payer authentication transaction ID into the quick search feature to find all
segments of a transaction. For a transaction in which the card is not enrolled, find
payer authentication data in the Transaction Details window in these sections:
- Request Information section: The service appears in green. You can obtain additional information about related orders by clicking the link on the right.
- Order Information section:
- For Mastercard, the ECI value is 00: authentication is not required because the customer’s Mastercard card is not enrolled. Other cards have an ECI value of 07.
- The AAV/CAVV area is empty because you receive a value only when the customer is authenticated.
- The XID area is empty because the card is not enrolled.
You might encounter these reason codes:
- 465: DAUTHENTICATE
- Encountered a Payer Authentication problem. Payer could not be authenticated. Authenticate the cardholder before continuing with the transaction.
- 475: DAUTHENTICATE
- The cardholder is enrolled in Payer Authentication. Authenticate the cardholder before continuing with the transaction.
- 476: DAUTHENTICATIONFAILED
- Encountered a Payer Authentication problem. Payer could not be authenticated. Authenticate the cardholder before continuing with the transaction.
- 261: DINVALIDDATA
- The merchant account set up is either invalid or missing on the acquirer’s gateway. Check the currency, acquirer ID, merchant ID configuration. If these are configured as expected, contact the acquirer.
Payer Authentication Reports
This section describes the Payer Authentication reports that you can download
from the
Business Center
.All reports on the production servers are retained for 16 months, but the
transaction history is kept in the database for only 12 months. All reports on the test
servers are deleted after 60 days. Only transactions that were processed are reported.
Those transactions that resulted in a system error or a time-out are not reported.
To get access to the reports, you must file a support ticket in the Support Center.
Payer Authentication Summary Report
This daily, weekly, and monthly summary report indicates the performance of the
enrollment and validation services as a number of transactions and a total amount for
groups of transactions. The report provides this information for each currency and type
of card that you support. You can use this information to estimate how payer
authentication screens your transactions: successful, attempted, and incomplete
authentication. The cards reported are Visa, Mastercard,
JCB,
Maestro,
China UnionPay, Elo,
Diners Club, Discover,
and
American Express. This daily report is generally available by 7:00 a.m. EST. Data in
this report remains available for 6 months.Download the Report
Follow these steps to view the Payer Authentication Summary report:
- In the left navigation panel, click theReportsicon.
- Under Transaction Reports, clickPayer Auth Summary. The Payer Auth Summary Report page appears.
- In the search toolbar, select a date range to include in the report. Account-level users must select a merchant as well.
- Based on the date range you selected, choose the specific day, week, or month you want to review.
RESULT
Only months that have already occurred in the current year display in the Month list. To view all
months of a previous year, select the year first, and then choose the month.
To view results from before the selected period, click
Previous
. Click Next
to see the
next period.Matching the Report to the Transaction Search Results
The image below shows the search results that contain the transactions that
appear in the report. For more information on search results, see Searching for Payer Authentication Details.
Figure:
Payer Authentication Report Details

Interpreting the Report
The report is organized by card type. In each card type section, currencies are
reported alphabetically. For each currency, a summary of your payer authentication
validation results appear as a total amount and number of transactions.
Card Type | Interpretation | Protected? | Commerce Indicator | ECI |
---|---|---|---|---|
Visa, American Express , and JCB | No authentication | No | Internet | 7 |
Recorded attempt to authenticate | Yes | VbV, Desk, or JS Attempted | 6 | |
Successful authentication | Yes | VbV, JS, or Aesk | 5 | |
Mastercard, Meeza, and
Maestro | No authentication | No | Internet** | 7* |
Recorded attempt to authenticate | Yes | SPA | 1 | |
Successful authentication | Yes | SPA | 2 | |
Diners Club and Discover | No authentication | No | Internet | 7 |
Recorded attempt to authenticate | Yes | PB or DIPB Attempted | 6 | |
Successful authentication | Yes | PB or DIPB | 5 | |
China UnionPay and Elo | No authentication | No | Internet | 7 |
Recorded attempt to authenticate | Yes | CS or Up3ds Attempted | 6 | |
Successful authentication | Yes | CS or Up3ds | 5 |
* Although the report heading is 7, you receive a collection indicator value of 1, or
the response field is empty.
** Although the report heading is Internet, you receive
spa_failure
in
the commerce indicator response field.Transactions are divided into two groups: those for which you are protected and
those for which you are not protected:
- For Visa,China UnionPay, Elo,JCB,Diners Club, Discover,and American Express: liability shift for VbV and VbV attempted.
- For Mastercard and Maestro: liability shift only for SPA.
- For all other results: no liability shift.
Comparing Payer Authentication and Payment Reports
The Payer Authentication report and the payment reports might differ when an
authenticated transaction is not authorized.
The values (amounts and counts) in the Payer Authentication report might not
match your other sources of reconciliation. This report shows the transactions validated
by payer authentication. A different number of transactions might have been authorized.
The amounts and numbers can be higher in the Payer Authentication report than in the
payment reports. This example shows the results of the first two numbers in the Payer
Authentication report and the last number in the payment reports.
To reconcile your reports more easily when using payer authentication, we
recommend that you attempt to authenticate the same amount that you want to
authorize.
Payer Authentication Reports Compared to Payment Reports
- 9900 successful enrollment checks (Payer Authentication report)
- 9800 successful authentication checks (Payer Authentication report)
- 9500 successful authorization checks (Payment report)
Payer Authentication Detail Report
This section describes the elements of the Payer Authentication Detail report. Refer to
the for instructions for downloading the report and additional report
information.
Business Center
Reporting User
GuideReport Element
The
Report
element is the root element of the
report.<Report> <PayerAuthDetails> (PayerAuthDetail+) </PayerAuthDetails> </Report>
Element Name | Description |
---|---|
PayerAuthDetails | Contains the transaction in
the report. For a list of child elements, see PayerAuthDetail . |
PayerAuthDetails Element
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE Report SYSTEM "https://api.visaacceptance.com/reporting/v3/dtds/padr"> <PayerAuthDetails> <PayerAuthDetail> ... </PayerAuthDetail> </PayerAuthDetails>
PayerAuthDetail Element
The
PayerAuthDetail
element contains information about a single
transaction.<PayerAuthDetail> (RequestID) (MerchantID) (RequestDate) (TransactionType) (PAReq)? (PARes)? (AuthInfo)? </PayerAuthDetail>
Element Name | Description | Type & Length |
---|---|---|
RequestID | Unique identifier generated for the transaction. This field
corresponds to the API field. | Numeric (26) |
MerchantID | Merchant ID used for the transaction. | String (30) |
RequestDate | Date on which the transaction was
processed. | DateTime (25) |
PAReq | The Payer Authentication Request message sent to the ACS through the
payment card company. Corresponds to the consumerAuthenticationInformation.payer
AuthEnrollReply_paReq API field.For a
list of child elements, see PAReq. | |
PARes | The Payer Authentication Response message sent by the ACS. For a list of child
elements, see PARes. | |
AuthInfo | Address and card verification data. For a list of child
elements, see AuthInfo Element. |
PayerAuthDetail Element
<PayerAuthDetail> <RequestID>0004223530000167905139</RequestID> <MerchantID>example_merchant</MerchantID> <RequestDate>2020-02-09T08:00:09-08:00</RequestDate> <TransactionType>ics_pa_enroll</TransactionType> <PAReq> ... </PAReq> <PARes> ... </PARes> </PayerAuthDetail>
PAReq Element
The
PAReq
element contains the payer authentication request message. This
element corresponds to the
consumerAuthenticationInformation.pareq
API field.<PAReq> (AcqBIN) (MerID) (Name) (Country) (URL) (XID) (Date) (PurchaseAmount) (AcctID) (Expiry) </PAReq>
Element Name | Description | Type & Length |
---|---|---|
AcqBIN | First six digits of the acquiring
bank’s identification number. | Numeric (6) |
MerID | Identifier provided by your
acquirer to the merchant to log in to the ACS URL. | String (24) |
Name | Merchant’s company name. | String (25) |
Country | Two-character code for the
merchant’s country of operation. | String (2) |
URL | Merchant’s business
website. | String |
XID | Unique transaction identifier
generated for each Payment Authentication Request (PAReq) message. The
PARes sent back by the issuing bank contains the XID of the PAReq. To
ensure that both XIDs are the same, compare it to the XID in the
response. To find all requests related to a transaction, you can also
search transactions for a specific XID. | String (28) |
Date | Date and time of request. Differing time zones and the lack of synchronization between servers might prevent the
date and time from appearing sequentially during all stages of
processing. | DateTime (25) |
Purchase Amount | Authorization amount and currency for the transaction. This element corresponds to the
totals of the offer lines or from:
orderInformation.amountDetails.totalAmount
or
purchaseTotals_grandTotalAmount from
external data
| Amount (15) |
AcctID | Masked string used by the
ACS. | String (28) |
Expiry | Expiration month and year of the
customer’s card. | Number (4) |
PAReq Element
<PAReq> <AcqBIN>123456</AcqBIN> <MerID>444444</MerID> <Name>example</Name> <Country>US</Country> <URL>http://www.example.com</URL> <XID>fr2VCDrbEdyC37MOPfIzMwAHBwE=</XID> <Date>2020-02-09T08:00:34-08:00</Date> <PurchaseAmount>1.00 USD</PurchaseAmount> <AcctID>NDAxMjAwMTAxMTAwMDc3MQ==</AcctID> <Expiry>2309</Expiry> </PAReq>
PARes Element
The
PARes
element contains the payer authentication response.<PARes> (AcqBIN) (MerID) (XID) (Date) (PurchaseAmount) (PAN) (AuthDate) (Status) (CAVV) (ECI) </PARes>
Element Name | Description | Type & Length |
---|---|---|
AcqBIN | First six digits of the acquiring
bank’s identification number. | Numeric (6) |
MerID | Identifier provided by your
acquirer; used to log in to the ACS URL. | String (24) |
XID | XID value returned in the
customer authentication response. This element corresponds to the
consumerAuthenticationInformation.xid API
fields. | String (28) |
Date | Date and time of request. Differing time zones and the lack of synchronization between servers
might prevent the date and time from appearing sequentially during
all stages of processing. | DateTime (25) |
PurchaseAmount | Authorization amount and currency for the transaction. This element corresponds to the
totals of the offer lines or from the orderInformation.amountDetails.totalAmount | Amount (15) |
PAN | Customer’s masked account number.
This element corresponds to the consumerAuthenticationInformation. proxyPan API field. | String (19) |
AuthDate | Date and time of
request. | DateTime (25) |
Status | Result of the authentication check. This field contains one of these values:
| String (1) |
CAVV | CAVV (Visa, American Express, JCB, China UnionPay,
Elo, Diners Club, and Discover cards ) element corresponds to the
consumerAuthenticationInformation.cavv field returned
in the customer authentication response. The AAV (Mastercard, and
Maestro cards) element corresponds to the consumerAuthenticationInformation.ucaf
AuthenticationData
API field
returned in the customer authentication response. | String (50) |
ECI | Electronic Commerce Indicator
returned in the customer authentication response. This element
corresponds to the consumerAuthenticationInformation.eci and
consumerAuthenticationInformation.ucaf
CollectionIndicator | Numeric (1) |
PARes Element
<PARes> <AcqBIN>123456</AcqBIN> <MerID>4444444</MerID> <XID>Xe5DcjrqEdyC37MOPfIzMwAHBwE=</XID> <Date>2020-02-09T07:59:46-08:00</Date> <PurchaseAmount>1002.00 USD</PurchaseAmount> <PAN>0000000000000771</PAN> <AuthDate>2020-02-09T07:59:46-08:00</AuthDate> <Status>Y</Status> <CAVV>AAAAAAAAAAAAAAAAAAAAAAAAAAA=</CAVV> <ECI>5</ECI> </PARes>
AuthInfo Element
The
AuthInfo
element contains address and card verification information.<AuthInfo> (AVSResult) (CVVResult) </AuthInfo>
Element Name | Description | Type & Length |
---|---|---|
AVSResult | Results of the address verification test. | String (1) |
CVVResult | Results of the card verification number test. | String (1) |
AuthInfo Element
<AuthInfo> <AVSResult>Y</AVSResult> <CVVResult/>git </AuthInfo>
Report Examples
These examples show a complete transaction: the failed enrollment check (enrolled card) and the
subsequent successful authentication.
Failed Enrollment Check
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE Result SYSTEM "https://api.visaacceptance.com/reporting/v3/dtd/padr"> <Report> Name="Payer Authentication Detail" Version="1.0” xmlns="https://api.visaacceptance.com/reporting/v3/dtds/padr" MerchantID="sample_merchant_id" ReportStartDate="2022-02-09T08:00:00-08:00" ReportEndDate="2022-02-10T08:00:00-08:00" <PayerAuthDetails> <PayerAuthDetail> RequestID=”1895549430000167904548” TransactionType=”ics_pa_enroll RequestDate=”2022-02-09T08:00:02-08:00” <ProofXML> <Date>20220209 08:00:34</Date> <DSURL>https:123.456.789.01:234/DSMsgServlet</DSURL> <PAN>XXXXXXXXXXXX0771</PAN> <AcqBIN>123456</AcqBIN> <MerID>4444444</MerID> <Password /> <Enrolled>Y</Enrolled> </ProofXML> <VEReq> <PAN>XXXXXXXXXXXX0771</PAN> <AcqBIN>123456</AcqBIN> <MerID>example</MerID> </VEReq> <VERes> <Enrolled>Y</Enrolled> <AcctID>NDAxMjAwMTAxMTAwMDc3MQ==</AcctID> <URL>https://www.sample_url.com</URL> </VERes> <PAReq> <AcqBIN>123456</AcqBIN> <MerID>example</MerID> <Name>Merchant Name</Name> <Country>US</Country> <URL>http://www.merchant_url.com</URL> <XID>2YNaNGDBEdydJ6WI6aFJWAAHBwE=</XID> <Date>2022-02-09T08:00:34-08:00</Date> <PurchaseAmount>1.00 USD</PurchaseAmount> <AcctID>NDAxMjAwMTAxMTAwMDc3MQ==</AcctID> <Expiry>2309</Expiry> </PAReq> </PayerAuthDetail> </PayerAuthDetails> </Report>
Successful Authentication
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE Result SYSTEM "https://api.visaacceptance.com/reporting/v3/dtd/padr"> <Report> <PayerAuthDetails> <PayerAuthDetail> RequestID=”1895549900000167904548” TransactionType=”ics_pa_validate” XID=”2YNaNGDBEdydJ6WI6aFJWAAHBwE=” RequestDate=”2022-02-09T08:00:02-08:00” <PARes> <AcqBIN>469216</AcqBIN> <MerID>6678516</MerID> <XID>2YNaNGDBEdydJ6WI6aFJWAAHBwE=</XID> <Date>2020-02-09T07:59:46-08:00</Date> <PurchaseAmount>1.00 USD</PurchaseAmount> <PAN>0000000000000771</PAN> <AuthDate>2022-02-09T07:59:46-08:00</AuthDate> <Status>Y</Status> <CAVV>AAAAAAAAAAAAAAAAAAAAAAAAAAA=</CAVV> <ECI>5</ECI> </PARes> </PayerAuthDetail> </PayerAuthDetails> </Report>
HTTP Status Codes
These HTTP status codes can appear during payer authentication.
- 201: AUTHENTICATION_FAILED
- Encountered a payer authentication problem. Payer could not be authenticated.
- 201: CONSUMER_AUTHENTICATIION_REQUIRED
- Encountered a payer authentication problem. Payer could not be authenticated.
- 400: CONSUMER_AUTHENTICATIION_FAILED
- Encountered a payer authentication problem. Payer could not be authenticated.
- 400: INVALID_DATA
- Declined: One or more fields in the request contain invalid data.
- 400: INVALID_MERCHANT_CONFIGURATION
- Declined: There is a problem with your merchant configuration.
- 400: MISSING_FIELD
- Declined: The request is missing one or more fields.
- 502: SYSTEM_ERROR
- Error: General system failure. A system error occurred.
- 502: SYSTEM_TIMEOUT
- Error: The request was received but a server timeout occurred. This error does not include timeouts between the client and the server.
- 502: SYSTEM_TIMEOUT
- Error: The request was received, but a service did not finish running in time.
Glossary
3RI Payment
The EMV
3-D Secure
request for information. It is an EMVCo term for the
EMV 3-D Secure service that can check a BIN without performing a complete
authentication.3-D Secure
3-D Secure
Security protocol for online credit card and debit card transactions used by Visa
Secure, Mastercard Identity Check, American Express SafeKey,
China UnionPay, Elo, JCB J⁄Secure,
Diners
Club ProtectBuy, and Discover ProtectBuy.AAV
Account Authentication Value. A unique 32-character transaction token for a
3-D Secure
transaction. For Mastercard Identity Check, the AAV is named the
UCAF. For Visa Secure, the AAV is named the CAVV.acquirer
The financial institution that accepts payments for products or services on behalf of
a merchant. Also referred to as the acquiring bank. This bank accepts or acquires
transactions that involve a credit card issued by a bank other than itself.
acquirer BIN
An eight-digit number that uniquely identifies the acquiring bank. Every
participating acquirer has a different acquirer BIN. The Mastercard BIN starts with
5 and the Visa BIN starts with 4.
acquirer processor
Processor that provides credit card processing, settlement, and services to merchant banks.
ACS
Access Control Server. The card-issuing bank’s host for the
payer authentication data.
ACS URL
The URL of the Access Control Server of the card-issuing bank that is returned in the
response to the request to check enrollment. You send the PAReq to this URL so that
the customer can be authenticated.
American Express
A globally issued card type that starts with 3 and which is identified as card type
003. These cards participate in a card authentication service (SafeKey) provided by
EMV
3-D Secure
.authentication result
Raw data sent by the card issuer that indicates the status of authentication. You do
not need to pass this raw data into the authorization.
Base64
Standard encoding method for data transfer over the internet.
BIN
Bank Identification Number. The eight-digit number that identifies the card
issuer.
CAVV
Cardholder Authentication Verification Value. A Base64-encoded string sent back with Visa
Secure-enrolled cards that specifically identifies the transaction with
the issuing bank and Visa. Standard for collecting and sending AAV data
for Visa Secure transactions. See AAV.
CAVV algorithm
The method used to generate the CAAV value.
Compra Segura
Trademarked name for the Elo card authentication service.
CVV
Card Verification Value. Security feature for credit cards and debit cards. This
feature consists of two values or codes: one that is encoded in the magnetic strip
and one that is printed on the card. Usually, the CVV is a three-digit number on the
back of the card. The CVV for American Express cards is a 4-digit number on the
front of the card. CVVs are used as an extra level of validation by issuing
banks.
Diners Club
A globally issued card type whose numbers start with a 3 or a 5. Diners Club cards
are identified as card type 005. These cards participate in a card authentication
service (ProtectBuy) provided by
3-D Secure
.Directory Servers
The Visa and Mastercard servers that are used to verify
enrollment in a card authentication service.
Discover
Primarily, a U.S. card type starting with a 6. Discover cards are identified as card
type 004. These cards participate in a card authentication service (ProtectBuy)
provided by
3-D Secure
.ECI (ECI Raw)
The numeric commerce indicator that indicates to the bank
the degree of liability shift achieved during payer authentication
processing.
E-Commerce Indicator
Alpha character value that indicates the transaction type,
such as MOTO or INTERNET.
Elo
A globally issued card type starting with a 5. Elo cards are identified as card type
of 054. These cards participate in a card authentication service (Compra Segura)
provided by
3-D Secure
.Enroll
A type of transaction used for verifying whether a
card is enrolled in the Mastercard Identity Check or Visa Secure service.
HTTP
The Hypertext Transfer Protocol is an application protocol used for data transfer on
the internet.
HTTP POST request
POST is one of the request methods supported by the HTTP protocol. The POST
request method is used when the client sends data to the server as part of
the request, such as when uploading a file or submitting a completed
form.
HTTPS
Hypertext Transfer Protocol combines with SSL/TLS (Secure Sockets
Layer/Transport Layer Security) to provide secure encryption of data
transferred over the Internet.
issuer
The bank that issues the credit card.
J/Secure
The EMV
3-D Secure
program of JCB.JCB
Japan Credit Bureau. A globally issued card type starting with a 3. JCB cards are
identified as a card type of 007. These cards participate in a card authentication
service (J/Secure) provided by EMV
3-D Secure
.Maestro
A card brand owned by Mastercard that includes several debit card BINs within the
U.K. and in Europe. Merchants who accept Maestro cards online are required to use
Mastercard Identity Check, Mastercard’s card authentication service. Maestro cards
are identified as 024 and 042 card types. Note that many international Maestro cards
are not set up for online acceptance and cannot be used even if they participate in
a Mastercard Identity Check authentication program.
Mastercard
A globally issued card that includes credit and debit cards. These cards start with a
5. These cards are identified as card type 002 for both credit and debit cards.
These cards participate in a card authentication service (Mastercard Identity Check)
provided by
3-D Secure
.Mastercard Identity Check
Trademarked name for Mastercard’s payer authentication service.
MD
Merchant-defined Data that is posted as a hidden field to the ACS URL. You can use
this data to identify the transaction on its return. This data is used to match the
response from the card-issuing bank to a customer’s specific order. Although payment
card companies recommend that you use the XID, you can also use data such as an
order number. This field is required, but including a value is optional. The value
has no meaning for the bank and is returned to the merchant as is.
Merchant ID
Data that must be uploaded for the Mastercard and Visa card
authentication process for each participating merchant. The Merchant ID
is usually the bank account number or it contains the bank account
number. The data is stored on the Directory Servers to identify
the merchant during the enrollment check.
MPI
Merchant Plug-In. The software used to connect to Directory Servers and to decrypt the PARes.
PAN
Primary Account Number. Another term for the credit card number.
PAReq
Payer Authentication Request. Digitally signed Base64-encoded payer authentication
request message, containing a unique transaction ID that a merchant sends to the
card-issuing bank. Send this data without alteration or decoding. Note that the
field name has a lowercase “a” (PaReq), but the message name has an uppercase “A”
(PAReq).
PARes
Payer Authentication Response. A compressed, Base64-encoded response from the card-issuing bank.
This data is passed for validation.
PARes status
Payer Authentication Response status. One-character length
status passed back by Visa and Mastercard that is required data for
Asia, Middle East, and Africa Gateway authorizations.
processor
Financial entity that processes payments. Also see
acquiring processor
.ProofXML
This field contains the VEReq and VERes messages for merchant storage. Merchants can
use this data for potential chargeback repudiation.
ProtectBuy
Trademarked name for the Diners Club and Discover card
authentication services.
request ID
A 22- or 23-digit number that uniquely identifies each
transaction. Merchants should store this number for
future reference.
risk-based authentication
Risk-based authentication is provided by the card-issuing bank. The card-issuing bank
gathers a cardholder’s transaction data or leverages whatever data they have to
silently authenticate the cardholder based on the perceived degree of risk. They
base their risk assessment on factors such as cardholder spending habits, order or
product velocity, the device IP address, order amount, and so on.
SafeKey
Trademarked name for the American Express card authentication service.
SCMP API
A legacy name-value pair API that was superseded by the Simple Order API.
Simple Order API
An API, that provides three ways to access services: name-value pair (NVP), XML, and
SOAP.
TermURL
Termination URL on a merchant’s website where the
card-issuing bank posts the payer authentication response (PARes)
message.
UCAF
Universal Cardholder Authentication Field. A Base64-encoded string sent back with
Mastercard Identity Check enrolled cards specifically identifying the transaction
with the issuing bank and Mastercard. Standard for collecting and sending AAV data
for Mastercard Identity Check transactions. See also
AAV
.UCAF collection indicator
Value of
1
or 2
that indicates whether a Mastercard
cardholder has authenticated themselves.validate
A service that decodes and decrypts the PARes message to determine success. The
validate service returns the needed values for authorization.
VEReq
Verify Enrollment Request. Request sent to the Directory Servers to verify that a card is enrolled in a card authentication service.
VERes
Verify Enrollment Response. Response from the Directory Servers to the VEReq.
VERes enrolled
Verify Enrollment Response enrolled. One-character length
status passed back by Visa and Mastercard that is required data for
Asia, Middle East, and Africa Gateway authorizations.
Visa
A globally issued card that includes credit and debit cards. These card numbers start
with a 4. These cards are identified as card type 001 for both credit and debit
cards. These cards participate in a card authentication service (Visa Secure)
provided by EMV
3-D Secure
.Visa Secure
Trademarked name for Visa’s card authentication service.
XID
String used by both Visa and Mastercard, that identifies a specific transaction on
the Directory Servers. This string value should remain consistent throughout a
transaction’s history.