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 necessary

The 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
&AddressVerificationResult=Y
&AccountNameRequestResult=00
&AccountNameMatchDecision=01
&LastNameAccountMatchDecision=N%2fA
&FirstNameAccountMatchDecision=N%2fA

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).
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.

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

ValueDescription
YFull match
APartial match (street address only)
ZPartial match (postal/zip only)
NNo match
UUnable to verify / data not checked
RIndeterminate Outcome (Retry) / System unavailable

Verification details - ANI (account name verification)

to be added