Visa Token Account Verification (VTAV)
Overview
For merchant processing tokenized transactions, PXP offers support for Visa Token Account Verification.
Merchants can utilize CVV2 validation, address verification and account name inquiry with VTAV when the cryptogram is obtained prior to the authorization. Payments failing these checks will not undergo authorization.
VTAV functionality is available on PXP acquiring and may be available also on other acquirers on request.
This is available only for acquirers supporting tokenization.
Prior activation necessaryThe checks will only be performed if they have been enabled by PXP for your merchant.
See the following section for examples.
Backend2Backend Integration
When a payment is declined due to the result of one of the VTAV checks, PXP will move the payment to state ValidationFailed.
On a CVC check, the following codes may be returned on the CVCResponse value:
Value | Mapping | Description |
|---|---|---|
M | Matched | CVV2 Match. The issuer was able to verify the CVV2 value provided by the merchant. |
N | NotMatched | CVV2 No Match. The issuer was not able to verify the CVV2 value provided by the merchant. |
P | CVCNotCheckedByIssuer | Not processed. The issuer was unable to verify the CVV2 value provided by the merchant. |
S | CVCNotSuppliedByShopper | The issuer was unable to perform CVV2 verification. |
U | CVCNotCheckedByIssuer | The issuer does not participate in CVV2 service or there is a technical issue in the communication between Visa and the issuer or the issuer is unavailable. |
Per default policy, only value N (NotMatched) results in the payment being moved to ValidationFailed. On all other values, the payment will proceed to authorization.
A different policy may be assigned on request.
In addition, an actionCode value maybe returned in initiatePaymentResponse with paymentDetail VTAVResponseCode and VTAVResponseMessage.
Example initiatePaymentResponse:
<initiatePaymentResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment xsi:type="paymentWithPaymentAccount">
<merchantID>B2BTestMerchant</merchantID>
<shopID>VTAV_CVCOnlyEnabledShop</shopID>
<paymentMethod>
<key>2</key>
<value>VISA Deposit</value>
</paymentMethod>
<merchantTransactionID>VTAV-16f2b7ab-23db-45ad-aacf-71372d56a041</merchantTransactionID>
<paymentID>9f86339b-1ab3-4c39-909d-6e9af1a7a171</paymentID>
<userID>VTAV_User</userID>
<paymentProvider>
<key>92</key>
<value>CQRUK</value>
</paymentProvider>
<amount currencyCode="USD">12.12</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>9c750511-6469-4806-93be-54c8a830e6c4</id>
<definition>
<key>225</key>
<value>ValidationFailed</value>
</definition>
<createdOn>2025-10-13T09:55:59.2114609Z</createdOn>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>CVCResponse</key>
<value>NotMatched</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">9.11</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ElectronicCommerceIndicator</key>
<value>07</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseCode</key>
<value>85</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseMessage</key>
<value>No reason to decline a request for address verification, CVV2 verification, or a credit voucher or merchandise return</value>
</detail>
<detail xsi:type="keyBooleanValuePair">
<key>UserConsentForStoredAccount</key>
<value>true</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>23391218</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>8736f347-6604-4de9-922d-ed1f1e2ed8ec</paymentAccountID>
<details>
<detail xsi:type="keyStringValuePair">
<key>IssuerCountry</key>
<value>AT</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>AccountFundingSource</key>
<value>Credit</value>
</detail>
<detail xsi:type="keyBooleanValuePair">
<key>FastFunds</key>
<value>false</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>IssuerName</key>
<value/>
</detail>
</details>
</paymentAccount>
</payment>
</initiatePaymentResponse>
Response overview
Depending on which VTAV checks (CVC, AVS, ANI) the merchant has requested, when a payment is blocked, it will stop in ValidationFailed state and the following values may be returned in the initiatePaymentResponse or in a handlePaymentStateChangedNotification:
- CVCResponse
- AVSResponseCode and AVSResponseMessage
- ANIResponseCode
A payment reaching AuthorisedByProvider or RefusedByProvider state after the corresponding VTAV checks, may include these payment details as well (AVSCheckStatus, CVCCheckStatus, ANIResponseCode).
Action code
Optionally the action code may be considered for blocking a payment.
On the following values a payment will not be blocked:
VTAVResponseCode | VTAVResponseMessage |
|---|---|
85 | No reason to decline |
00 | Approve |
10 | Partial approval |
11 | Approved (VIP) |
On any other actionCode value, the payment will be blocked, but the check result codes for AVS, CVC and ANI can still be returned.
| VTAVResponseCode (actionCode) | VTAVResponseMessage |
|---|---|
| N7 | Decline for CVV2 failure |
| 46 | Closed account |
Sample initiatePaymentResponse with AuthorisedByProvider state, VTAVResponseCode (actionCode) being "85", VTAVResponseMessage being "No reason to decline a request for address verification, CVV2 verification, or a credit voucher or merchandise return":
<initiatePaymentResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment
xsi:type="paymentWithPaymentAccount">
<merchantID>B2BTestMerchant</merchantID>
<shopID>VTAV_All3ChecksEnabledShop</shopID>
<paymentMethod>
<key>2</key>
<value>VISA Deposit</value>
</paymentMethod>
<merchantTransactionID>VTAV-76959e3c-b8c5-4018-8d3b-2b6ba298ad0c</merchantTransactionID>
<paymentID>915cbae1-74b2-411f-8a84-ce7ffb38fb1c</paymentID>
<userID>VTAV_User</userID>
<paymentProvider>
<key>92</key>
<value>CQRUK</value>
</paymentProvider>
<amount currencyCode="USD">12.12</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>f6ec3747-16d8-4818-ab42-8f9719499288</id>
<definition>
<key>13</key>
<value>AuthorisedByProvider</value>
</definition>
<createdOn>2025-11-21T15:17:22.1428817Z</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>182946</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>true</isExecuted>
<baseAmount currencyCode="EUR">8.05</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ElectronicCommerceIndicator</key>
<value>07</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseCode</key>
<value>85</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseMessage</key>
<value>No reason to decline a request for address verification, CVV2 verification, or a credit voucher or merchandise return</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>AuthorizationMID</key>
<value>2234567890</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>CardAcceptorNameLocation</key>
<value>B2BTestMerchant London GB</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>SchemeTransactionIdentifier</key>
<value>939441567812128</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>23605450</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>8736f347-6604-4de9-922d-ed1f1e2ed8ec</paymentAccountID>
<details>
<detail xsi:type="keyStringValuePair">
<key>IssuerCountry</key>
<value>AT</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>AccountFundingSource</key>
<value>Credit</value>
</detail>
<detail xsi:type="keyBooleanValuePair">
<key>FastFunds</key>
<value>false</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>IssuerName</key>
<value/>
</detail>
</details>
</paymentAccount>
</payment>
</initiatePaymentResponse>
Sample initiatePaymentResponse with AuthorisedByProvider state, VTAVResponseCode (actionCode) being "00", VTAVResponseMessage being "Approved and completed successfully" :
<initiatePaymentResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment
xsi:type="paymentWithPaymentAccount">
<merchantID>B2BTestMerchant</merchantID>
<shopID>VTAV_All3ChecksEnabledShop</shopID>
<paymentMethod>
<key>2</key>
<value>VISA Deposit</value>
</paymentMethod>
<merchantTransactionID>VTAV-641cb802-9b55-43ec-9019-00ca13d22c5c</merchantTransactionID>
<paymentID>8c07433e-5215-45d4-9b6c-157c8b4a9a28</paymentID>
<userID>VTAV_User</userID>
<paymentProvider>
<key>92</key>
<value>CQRUK</value>
</paymentProvider>
<amount currencyCode="USD">12.12</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>73b8bd57-6bef-48ac-bdc3-adbbca2c3dd1</id>
<definition>
<key>13</key>
<value>AuthorisedByProvider</value>
</definition>
<createdOn>2025-11-21T15:20:22.3789017Z</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>667087</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>true</isExecuted>
<baseAmount currencyCode="EUR">8.05</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ElectronicCommerceIndicator</key>
<value>07</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseCode</key>
<value>00</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseMessage</key>
<value>Approved and completed successfully</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>AuthorizationMID</key>
<value>2234567890</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>CardAcceptorNameLocation</key>
<value>B2BTestMerchant London GB</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>SchemeTransactionIdentifier</key>
<value>123958589344346</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>23605452</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>8736f347-6604-4de9-922d-ed1f1e2ed8ec</paymentAccountID>
<details>
<detail xsi:type="keyStringValuePair">
<key>IssuerCountry</key>
<value>AT</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>AccountFundingSource</key>
<value>Credit</value>
</detail>
<detail xsi:type="keyBooleanValuePair">
<key>FastFunds</key>
<value>false</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>IssuerName</key>
<value/>
</detail>
</details>
</paymentAccount>
</payment>
</initiatePaymentResponse>
Sample initiatePaymentResponse with ValidationFailed state, VTAVResponseCode being "N7" and VTAVResponseMessage being "Decline for CVV2 failure":
<initiatePaymentResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment xsi:type="paymentWithPaymentAccount">
<merchantID>B2BTestMerchant</merchantID>
<shopID>VTAV_All3ChecksEnabledShop</shopID>
<paymentMethod>
<key>2</key>
<value>VISA Deposit</value>
</paymentMethod>
<merchantTransactionID>VTAV-56ad8029-b269-4235-9e04-84a895476e13</merchantTransactionID>
<paymentID>9b1fa97b-1349-406f-bda8-0c1913bfdeae</paymentID>
<userID>VTAV_User</userID>
<paymentProvider>
<key>92</key>
<value>CQRUK</value>
</paymentProvider>
<amount currencyCode="USD">12.12</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>58e17233-f4a0-44f0-88f5-7eda9dfea3da</id>
<definition>
<key>225</key>
<value>ValidationFailed</value>
</definition>
<createdOn>2025-11-19T11:34:26.1552685Z</createdOn>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>AVSResponseCode</key>
<value>Y</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>AVSResponseMessage</key>
<value>Exact match</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>CVCResponse</key>
<value>Matched</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">8.05</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ElectronicCommerceIndicator</key>
<value>07</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseCode</key>
<value>N7</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseMessage</key>
<value>Decline for CVV2 failure</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ANIResponseCode</key>
<value>E</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>23583560</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>8736f347-6604-4de9-922d-ed1f1e2ed8ec</paymentAccountID>
<details>
<detail xsi:type="keyStringValuePair">
<key>IssuerCountry</key>
<value>AT</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>AccountFundingSource</key>
<value>Credit</value>
</detail>
<detail xsi:type="keyBooleanValuePair">
<key>FastFunds</key>
<value>false</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>IssuerName</key>
<value/>
</detail>
</details>
</paymentAccount>
</payment>
</initiatePaymentResponse>Sample initiatePaymentResponse with ValidationFailed state, VTAVResponseCode being "46" and VTAVResponseMessage being "Closed account":
CVC, ANI and AVS response values
CVC validation is declined
The response below include the detail CVCResponse set to NotMatched and also VTAVResponseCode being 85. Due to the CVCResponse value, the payment is moved to state ValidationFailed .
Example initiatePaymentResponse:
<initiatePaymentResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment
xsi:type="paymentWithPaymentAccount">
<merchantID>B2BTestMerchant</merchantID>
<shopID>VTAV_CVCOnlyEnabledShop</shopID>
<paymentMethod>
<key>2</key>
<value>VISA Deposit</value>
</paymentMethod>
<merchantTransactionID>VTAV-16f2b7ab-23db-45ad-aacf-71372d56a041</merchantTransactionID>
<paymentID>9f86339b-1ab3-4c39-909d-6e9af1a7a171</paymentID>
<userID>VTAV_User</userID>
<paymentProvider>
<key>92</key>
<value>CQRUK</value>
</paymentProvider>
<amount currencyCode="USD">12.12</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>9c750511-6469-4806-93be-54c8a830e6c4</id>
<definition>
<key>225</key>
<value>ValidationFailed</value>
</definition>
<createdOn>2025-10-13T09:55:59.2114609Z</createdOn>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>CVCResponse</key>
<value>NotMatched</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">9.11</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ElectronicCommerceIndicator</key>
<value>07</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseCode</key>
<value>85</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseMessage</key>
<value>No reason to decline a request for address verification, CVV2 verification, or a credit voucher or merchandise return</value>
</detail>
<detail xsi:type="keyBooleanValuePair">
<key>UserConsentForStoredAccount</key>
<value>true</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>23391218</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>8736f347-6604-4de9-922d-ed1f1e2ed8ec</paymentAccountID>
<details>
<detail xsi:type="keyStringValuePair">
<key>IssuerCountry</key>
<value>AT</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>AccountFundingSource</key>
<value>Credit</value>
</detail>
<detail xsi:type="keyBooleanValuePair">
<key>FastFunds</key>
<value>false</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>IssuerName</key>
<value/>
</detail>
</details>
</paymentAccount>
</payment>
</initiatePaymentResponse>
AVS validation is declined
The response below include the details for an AVS check and a CVC check and also VTAVResponseCode (actionCode)
- The AVS check has the result AVSResponseCode set to U and AVSResponseMessage set to Data not checked.
- The CVC check has the result CVCResponse being Matched.
- The **actionCode **is 85.
The AVS check result is identified as failed and therefor the payment is moved to ValidationFailed state.
For the mapping of CVS and AVS codes see further below.
Example initiatePaymentResponse:
<initiatePaymentResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment
xsi:type="paymentWithPaymentAccount">
<merchantID>B2BTestMerchant</merchantID>
<shopID>VTAV_AVSCVCEnabledShop</shopID>
<paymentMethod>
<key>2</key>
<value>VISA Deposit</value>
</paymentMethod>
<merchantTransactionID>VTAV-66ee2df5-256c-4f32-9584-e818552ef3db</merchantTransactionID>
<paymentID>8b53f75a-4e20-435e-aac0-26ba5fe737f6</paymentID>
<userID>VTAV_User</userID>
<paymentProvider>
<key>92</key>
<value>CQRUK</value>
</paymentProvider>
<amount currencyCode="USD">12.12</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>dde0569e-3d01-441e-b010-3f59e5b0bcc3</id>
<definition>
<key>225</key>
<value>ValidationFailed</value>
</definition>
<createdOn>2025-10-13T09:56:09.1108578Z</createdOn>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>AVSResponseCode</key>
<value>U</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>AVSResponseMessage</key>
<value>Data not checked</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>CVCResponse</key>
<value>Matched</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">9.11</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ElectronicCommerceIndicator</key>
<value>07</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseCode</key>
<value>85</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseMessage</key>
<value>No reason to decline a request for address verification, CVV2 verification, or a credit voucher or merchandise return</value>
</detail>
<detail xsi:type="keyBooleanValuePair">
<key>UserConsentForStoredAccount</key>
<value>true</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>23391219</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>8736f347-6604-4de9-922d-ed1f1e2ed8ec</paymentAccountID>
<details>
<detail xsi:type="keyStringValuePair">
<key>IssuerCountry</key>
<value>AT</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>AccountFundingSource</key>
<value>Credit</value>
</detail>
<detail xsi:type="keyBooleanValuePair">
<key>FastFunds</key>
<value>false</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>IssuerName</key>
<value/>
</detail>
</details>
</paymentAccount>
</payment>
</initiatePaymentResponse>AVS validation is declined
The response below include the details for an AVS check only (besides the actionCode response). The CVC verification was not requested.
- The AVS check has the result AVSResponseCode set to U and AVSResponseMessage set to Data not checked.
- The actionCode value is 85.
Due to a pre-configured policy the payment is moved to state ValidationFailed.
For the mapping of AVS codes see further below.
Example initiatePaymentResponse:
<initiatePaymentResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment
xsi:type="paymentWithPaymentAccount">
<merchantID>B2BTestMerchant</merchantID>
<shopID>VTAV_AVSANIEnabledShop</shopID>
<paymentMethod>
<key>2</key>
<value>VISA Deposit</value>
</paymentMethod>
<merchantTransactionID>VTAV-6cc8e352-db2d-41e9-8512-727632fbbd11</merchantTransactionID>
<paymentID>e3ad4dc3-9677-42e1-8738-c417f906c75c</paymentID>
<userID>VTAV_User</userID>
<paymentProvider>
<key>92</key>
<value>CQRUK</value>
</paymentProvider>
<amount currencyCode="USD">12.12</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>65dad68f-13aa-45d0-a8c7-09cbd3497379</id>
<definition>
<key>225</key>
<value>ValidationFailed</value>
</definition>
<createdOn>2025-10-13T09:56:25.0063292Z</createdOn>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>AVSResponseCode</key>
<value>U</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>AVSResponseMessage</key>
<value>Data not checked</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">9.11</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ElectronicCommerceIndicator</key>
<value>07</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseCode</key>
<value>85</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>VTAVResponseMessage</key>
<value>No reason to decline a request for address verification, CVV2 verification, or a credit voucher or merchandise return</value>
</detail>
<detail xsi:type="keyBooleanValuePair">
<key>UserConsentForStoredAccount</key>
<value>true</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ANIResponseCode</key>
<value>P</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>23391220</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>8736f347-6604-4de9-922d-ed1f1e2ed8ec</paymentAccountID>
<details>
<detail xsi:type="keyStringValuePair">
<key>IssuerCountry</key>
<value>AT</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>AccountFundingSource</key>
<value>Credit</value>
</detail>
<detail xsi:type="keyBooleanValuePair">
<key>FastFunds</key>
<value>false</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>IssuerName</key>
<value/>
</detail>
</details>
</paymentAccount>
</payment>
</initiatePaymentResponse>ANI validation failed
The ANI response code is passed in the paymentDetail field.
<detail xsi:type="keyStringValuePair">
<key>ANIResponseCode</key>
<value>E</value>
</detail>Mock Testing
In order to test Visa Deposit payments being moved to ValidationFailed state, the merchant should include the following details in the header of the initiatePaymentRequest:
Detail | Value | Description |
|---|---|---|
x-pxp-scenario-id | A random GUID value | Generate a random GUID |
x-pxp-scenario-actions | CardVerification2Result=M& | Note: not all value need to be passed. Please pass at least the ActionCode value and either the CardVerification2Result value and/or the AddressVerificationResult and/or the remaining values for the ANI check. |
Mapping values - CVC Check
The following values can be returned on the CVC check:
Value | Mapping | Description |
|---|---|---|
M | Matched | CVV2 Match. The issuer was able to verify the CVV2 value provided by the merchant. |
N | NotMatched | CVV2 No Match. The issuer was not able to verify the CVV2 value provided by the merchant. |
P | CVCNotCheckedByIssuer | Not processed. |
S | CVCNotSuppliedByShopper | CVV2 should be on the card. |
U | CVVNotCheckedByIssuer | The issuer does not participate in CVV2 service or there is a technical issue in the communication between Visa and the issuer or the issuer is unavailable. |
On the default configuration, only value N (NotMatched) results in the payment being moved to ValidationFailed. On all other values, the payment will proceed to authorization.
A different policy may be assigned on request.
Mapping values - AVS Check
The following values can be returned on the AVS check:
| Value | Description |
|---|---|
| Y | Full match |
| A | Partial match (street address only) |
| Z | Partial match (postal/zip only) |
| N | No match |
| U | Unable to verify / data not checked |
| R | Indeterminate Outcome (Retry) / System unavailable |
For the AVS policies see here.
Mapping values - ANI Check
For Account Name Inquiry codes see here.
On testing, the appropriate values have to be passed in the fields accountNameRequestResult (AN Request), accountNameMatchDecision (aN Match), lastNameAccountMatchDecision (LN Match) and firstNameAccountMatchDecision (FN Match).
The character "-" indicates not present.
| aN Request | aN Match | LN Match | FN Match | ANI code | Description |
|---|---|---|---|---|---|
| 1 | - | - | - | U | Name match not performed |
| 2 | - | - | - | X | Name match not supported |
| 0 | 1 (Match) | - | - | E | Exact name match |
| 0 | 50 (Partial) | - | - | P | Partial name match |
| 0 | 99 (No Match) | - | - | N | No data match |
| 0 | Any value or not present | 1 (Match) | 1 (Match) | E | Exact name match |
| 0 | Any value or not present | 1 (Match) | 50 (Partial) | A | FN partial match, LN matches |
| 0 | Any value or not present | 1 (Match) | 99 (No Match) | B | FN no match, LN matches |
| 0 | Any value or not present | 50 (Partial) | 1 (Match) | C | FN matches, LN partial match |
| 0 | Any value or not present | 99 (No Match) | 1 (Match) | D | FN matches, LN no match |
| 0 | Any value or not present | 50 (Partial) | 50 (Partial) | F | FN partial match, LN partial match |
| 0 | Any value or not present | 50 (Partial) | 99 (No Match) | G | FN no match, LN partial match |
| 0 | Any value or not present | 99 (No Match) | 50 (Partial) | H | FN partial match, LN no match |
| 0 | Any value or not present | 1 (Match) | - | I | FN not available, LN match |
| 0 | Any value or not present | 50 (Partial) | - | J | FN not available, LN partial match |
| 0 | Any value or not present | - | 1 (Match) | K | FN matches, LN not available |
| 0 | Any value or not present | - | 50 (Partial) | L | FN partial match, LN not available |
| 0 | Any value or not present | 99 (No Match) | 99 (No Match) | N | No data matches |
| 0 | Any value or not present | 99 (No Match) | - | N | No data matches |
| 0 | Any value or not present | - | 99 (No Match) | N | No data matches |
Updated 3 days ago
