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 will be available shortly 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.
The following initiatePaymentResponse will be returned to the merchant.
CVC validation is declined
The response below include the detail CVCResponse set to NotMatched.
Due to a pre-configured policy the state ValidationFailed is set.
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="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 detail AVSResponseCode set to U and AVSResponseMessage set to Data not checked.
It also include CVCResponse being Matched.
The AVS validation is declined due to a pre-configured policy and thus 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_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="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 detail AVSResponseCode set to U and AVSResponseMessage set to Data not checked.
Due to a pre-configured policy the payment is moved to state ValidationFailed.
The CVC verification was not requested here.
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="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
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 | GUID | Generate a random GUID |
x-pxp-scenario-actions | CardVerification2Result=P | Note: not all value need to be passed |
Verification details - Card Verification
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 | This value may be removed by Visa. The issuer was unable to perform CVV2 verification. |
U | CVSNotCheckedByIssuer | This value may be removed by Visa (in clarification). |
Based on the default configuration, the payment is moved to ValidationFailed only for value N (NotMatched). A different policy may be assigned on request.
Verification details - AVS
| 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 |
Verification details - ANI (account name verification)
to be added
Updated about 6 hours ago
