Account Name Inquiry
A Card Verification payment is a message sent by the acquirer to the issuer, using a zero (0) amount, for confirmation that a transaction can be completed using the card.
With the Account Name Inquiry, merchants can be informed if some customer data on their side does not match card holder data on the issuer side.
Issuers in Canada, the U.K. and the U.S. are required to support Account Name Inquiry requests in account verification messages.
The following method IDs are covered in this section:
ID | Name | Credit/Debit State |
---|---|---|
202 | VisaCardVerification | AuthorisedByProvider (13) |
203 | ECMCCardVerification | AuthorisedByProvider (13) |
Payment method interaction type: Synchronous Execution (see Interaction Types).
The credit card verification payments are credit card deposits with a zero amount. Payment methods interaction and states are the same as for Card Deposits (see Card Deposits and as per flows for 3DS2). The only difference is that amount should not be sent in initiatePaymentRequest
.
AuthorisedByProvider
state in initiatePaymentResponse
means successful card verification. See below for the result code returned on the account name inquiry.
No amount must be sent
To initiate a Card Verification payment, the
amount
parameter must not be sent ininitiatePaymentRequest
.
Redirect Integration
Account Name Inquiry has not yet been prepared for the redirect integration.
Backend2Backend Integration
In order to initiate a account name inquiry, the merchant has to send a parameter EnableAccountNameInquiry in the initiatePayment request. Alternatively the parameter can be preconfigured for the merchant so that the merchant does not need to send the parameter.
Payment detail | Description |
---|---|
EnableAccountNameInquiry (optional, boolean) | Enable the account name inquiry feature. True or False. |
The merchant should also pass the user´s first name and last name in the request. They will be added to the authorisation request only if present.
Example initiatePaymentRequest
for a Account Name Inquiry:
<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.cqrpayments.com/PaymentProcessing">
<merchantID>merchant</merchantID>
<shopID>shop</shopID>
<merchantTransactionID>{{$guid}}</merchantTransactionID>
<paymentMethodID>203</paymentMethodID>
<userID>hc_2023042719112477U</userID>
<userData>
<username>hc_2023042719112477U</username>
<firstname>4FirstName</firstname>
<lastname xsi:nil="true" />
<languageCode xsi:nil="true" />
<email xsi:nil="true" />
<address xsi:nil="true" />
<identificationNumberType xsi:nil="true" />
<drivingLicenseNumber xsi:nil="true" />
<drivingLicenseIssuingState xsi:nil="true" />
<globalUserID xsi:nil="true" />
<nationality xsi:nil="true" />
<identificationIssuingCountry xsi:nil="true" />
</userData>
<userIP>127.0.0.1</userIP>
<userSessionID>05641380-002e-4a99-b2ad-6fbca3c512ef</userSessionID>
<creationTypeID>1</creationTypeID>
<specificPaymentData>
<data xsi:type="keyStringValuePair">
<key>PaymentDescription</key>
<value>4eb6a8dd-7b6a-4bed-b41b-834152b2639d</value>
</data>
<data xsi:type="keyStringValuePair">
<key>PaymentDescriptionLanguageCode</key>
<value>en</value>
</data>
<data xsi:type="keyIntValuePair">
<key>PaymentProviderID</key>
<value>92</value>
</data>
<data xsi:type="keyBooleanValuePair">
<key>EnableAccountNameInquiry</key>
<value>true</value>
</data>
</specificPaymentData>
<paymentAccount>
<specificPaymentAccountData>
<data xsi:type="keyStringValuePair">
<key>CardNumber</key>
<value>5204740000009518</value>
</data>
<data xsi:type="keyStringValuePair">
<key>CardVerificationCode</key>
<value>111</value>
</data>
<data xsi:type="keyIntValuePair">
<key>ExpiryMonth</key>
<value>12</value>
</data>
<data xsi:type="keyIntValuePair">
<key>ExpiryYear</key>
<value>2030</value>
</data>
<data xsi:type="keyStringValuePair">
<key>HolderName</key>
<value>Barry Allen</value>
</data>
</specificPaymentAccountData>
</paymentAccount>
</initiatePaymentRequest>
<!--INITIATE PAYMENT RESPONSE:-->
The initiatePaymentResponse will include the following details:
Payment Detail | Description |
---|---|
ANIResponseCode | Account Name Inquiry response code describing the match details (see below) |
Example successful initiatePaymentResponse
for a Account Name Inquiry:
<initiatePaymentResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<payment xsi:type="paymentWithPaymentAccount">
<merchantID>merchant</merchantID>
<shopID>shop</shopID>
<paymentMethod>
<key>203</key>
<value>ECMCCardVerification</value>
</paymentMethod>
<merchantTransactionID>04d9f100-4643-449c-bac0-c731de54b645</merchantTransactionID>
<paymentID>845b0700-4387-4f3d-ab60-2dce119dbe06</paymentID>
<userID>hc_2023042719112477U</userID>
<paymentProvider>
<key>92</key>
<value>CQRUK</value>
</paymentProvider>
<amount currencyCode="EUR">0</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>8feda4b8-2350-4c7c-852c-d0ea21aa75a9</id>
<definition>
<key>13</key>
<value>AuthorisedByProvider</value>
</definition>
<createdOn>2023-11-08T16:53:29.0498171Z</createdOn>
<description>Approved or completed successfully</description>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderResponseCode</key>
<value>0</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ApprovalCode</key>
<value>862280</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>true</isExecuted>
<baseAmount currencyCode="EUR">0</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ElectronicCommerceIndicator</key>
<value>07</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ANIResponseCode</key>
<value>U</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>SchemeTransactionIdentifier</key>
<value>318004</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>b9a90c61-512b-4a23-8b71-089a0658e35d</paymentAccountID>
</paymentAccount>
</payment>
</initiatePaymentResponse>
In order for the payment to reach the final AuthorisedByProvider
state the user has to authenticate on the 3DS page via the RedirectionUrl
as received in the initiatePaymentResponse
. For more information about 3DS please refer to 3DS2 Information Hub.
For other response states, see the page on Card Verifications.
Account Name Inquiry response codes
VISA response codes:
ANI Response Code | Scheme | Description |
---|---|---|
E | Visa | Full name: match |
A | Visa | First name: partial match, Last name: match |
B | Visa | First name: no match, Last name: match |
C | Visa | First name: match, Last name: partial match |
D | Visa | First name: match, Last name: no match |
F | Visa | First name: partial match, Last name: partial match |
G | Visa | First name: no match, Last name: partial match |
H | Visa | First name: partial match, Last name: no match |
I | Visa | Last name: match |
J | Visa | Last name: partial match |
N | Visa | First name: no match, Last name: no match or Last name: no match |
U | Visa | Name match not performed |
Mastercard response codes:
ANI Response Code | Scheme | Description |
---|---|---|
E | Mastercard | Full name: match |
N | Mastercard | No match if last name does not match regardless if first name is provided or not |
P | Mastercard | Partial match as first name is not supplied or Full name: partial match |
U | Mastercard | Unverified as last name is not supplied |
Test data - VISA
Scenario | FirstName | LastName | ANIResponseCode |
---|---|---|---|
Visa - Name match not performed | "4FirstName" | "4NoCheck" | U |
Visa - Name match not supported | "4FirstName" | "4NoSupp" | U |
Visa - Last name: match | - | "4LastName" | I |
Visa - Last name: partial match | - | "LastName" | J |
Visa - Last name: no match | - | "NoMatch" | N |
Visa - First name: no match, Last name: no match | "NoMatch" | "NoMatch" | N |
Visa - Full name: match | "4FirstName" | "4LastName" | E |
Visa - First name: partial match, Last name: match | "FirstName" | "4LastName" | A |
Visa - First name: no match, Last name: match | "NoMatch" | "4LastName" | B |
Visa - First name: match, Last name: partial match | "4FirstName" | "LastName" | C |
Visa - First name: match, Last name: no match | "4FirstName" | "NoMatch" | D |
Visa - First name: partial match, Last name: partial match | "FirstName" | "LastName" | F |
Visa - First name: no match, Last name: partial match | "NoMatch" | "LastName" | G |
Visa - First name: partial match, Last name: no match | "FirstName" | "NoMatch" | H |
Test data - Mastercard
Scenario | FirstName | LastName | ANIResponseCode |
---|---|---|---|
Mastercard - Full name: match | "4FirstName" | "4LastName" | E |
Mastercard - No match if last name does not match regardless if first name is provided or not | "4FirstName" or omitted | "LastName" | N |
Mastercard - Partial match as first name is not supplied | - | "4LastName" | P |
Mastercard - Full name: partial match | "NoMatch" | "4LastName" | P |
Mastercard - Unverified as last name is not supplied | "4FirstName" | - | U |
Updated 7 months ago