Account Name Inquiry with a Zero Amount Authorization {#payments-processing-zero-auth-ani-intro}
================================================================================================

Account name inquiry (ANI) is an optional enhancement to the zero-amount authorization for verifying that the customer's name matches the name on their card account with the issuing bank. ANI verification reduces fraud risk, especially for an account funding transaction (AFT) or original credit transaction (OCT).  
ANI verification is useful in these scenarios:

* Customer account set up.
* Before an AFT or OCT.
* To support regulatory and anti-money laundering expectations, particularly in gambling and money movement cases.

How to Request an ANI
---------------------

ANI does not run automatically.  
To request an ANI verification on a zero amount authorization, include the processingInformation.cardVerification.checkANI field in the authorization request, and set the value to `Y`.

Card Types {#payments-processing-zero-auth-ani-intro_ani-card-rules}
--------------------------------------------------------------------

ANI is available for Mastercard and Visa. More card types will support ANI in the future.

Handling Match Results
----------------------

Use match results to decide whether to proceed, retry, or flag the transaction for fraud checks.  
The ANI response includes name match results in these fields:

* processorInformation.merchantAdvice.nameMatch  
  Possible values:
  * `00`: Name match performed
  * `01`: Name match not performed
  * `02`: Name match not supported
* processorInformation.electronicVerificationResults.code  
  Possible values:
  * `Y`: Match
  * `N`: No match
  * `O`: Partial match
  * `U`: Not performed or supported
* processorInformation.electronicVerificationResults.firstName  
  Possible values:
  * `Y`: Match
  * `N`: No match
  * `O`: Partial match
  * `U`: Not performed or supported
* processorInformation.electronicVerificationResults.lastName  
  Possible values:
  * `Y`: Match
  * `N`: No match
  * `O`: Partial match
  * `U`: Not performed or supported
* processorInformation.electronicVerificationResults.middleName  
  Possible values:
  * `Y`: Match
  * `N`: No match
  * `O`: Partial match
  * `U`: Not performed or supported

Controlling ANI Results
-----------------------

By default, a no match or partial match ANI result might not result in a decline.  
You can change this behavior by including the processingInformation.authorizationOptions.declineAniFlags request field to specify a space-separated list of ANI result codes. If the ANI response matches one of those values, the transaction is declined.  
Example: `decline_ani_flags = N O ` results in a decline on **No match** or **Partial match**.  
The decline response code is `ANI_FAILED`.

Endpoint {#payments-processing-zero-auth-ani-intro_d7e16}
---------------------------------------------------------

**Production:** `POST ``https://api.visaacceptance.com``/pts/v2/payments`{#payments-processing-zero-auth-ani-intro_d7e25}  
**Test:** `POST ``https://apitest.visaacceptance.com``/pts/v2/payments`{#payments-processing-zero-auth-ani-intro_d7e35}

Required Fields for Account Name Inquiry {#payments-acct-name-inquiry-req-fields}
=================================================================================

orderInformation.amountDetails.currency
:

orderInformation.amountDetails.totalAmount
:
Set the value to `0`.

orderInformation.billTo.address1
:

orderInformation.billTo.address2
:

orderInformation.billTo.administrativeArea
:

orderInformation.billTo.country
:

orderInformation.billTo.email
:

orderInformation.billTo.firstName
:

orderInformation.billTo.lastName

orderInformation.billTo.locality
:

orderInformation.billTo.phoneNumber
:

orderInformation.billTo.postalCode
:

paymentInformation.card.expirationMonth
:

paymentInformation.card.expirationYear
:

paymentInformation.card.number
:

paymentInformation.card.securityCode
:

paymentInformation.card.type
:

processingInformation.cardVerification.checkANI
:
Set to `Y`.

Country-Specific Required Fields for Account Name Inquiry with Zero Amount Authorization {#payments-acct-name-inquiry-country-fields}
=====================================================================================================================================

Use these country-specific required fields to process an account name inquiry with zero amount authorization.

Argentina
---------

merchantInformation.taxId
:
Required for Mastercard transactions.

merchantInformation.transactionLocalDateTime
:
Required in Argentina when the time zone is not included in your account. Otherwise, this field is optional.

Brazil
------

paymentInformation.card.sourceAccountType
:
Required for combo card transactions.

paymentInformation.card.sourceAccountTypeDetails
:
Required for combo card line-of-credit and prepaid-card transactions.

Saudi Arabia
------------

processingInformation.authorizationOptions.transactionMode
:

Taiwan
------

paymentInformation.card.hashedNumber
:

Optional Fields for Account Name Inquiry {#payments-acct-name-inquiry-opt-fields}
=================================================================================

orderInformation.billTo.middleName
:

processingInformation.authorizationOptions.declineAniFlags
:
Possible values separated by a space:

    * `Y`: Match
    * `O`: Partial match
    * `N`: No match
    * `U`: Unverified
    * `R`: Retry

recipientInformation.firstName
:

recipientInformation.middleName
:

senderInformation.firstName
:

senderInformation.middleName
:

REST Example: Account Verification with Account Name Inquiry {#payments-porcesing-zero-auth-ani-ex-rest}
========================================================================================================

Request  
This example includes optional fields.

```
{
  "clientReferenceInformation": {
    "code": "TC50171_3"
  },
  "paymentInformation": {
    "card": {
      "number": "CARD_NUMBER",
      "expirationMonth": "12",
      "expirationYear": "2031",
      "securityCode": "501"
    }
  },
  "orderInformation": {
    "amountDetails": {
      "totalAmount": "0.00",
      "currency": "USD"
    },
    "billTo": {
      "firstName": "John",
      "lastName": "Doe",
      "address1": "1 Market St",
      "locality": "san francisco",
      "administrativeArea": "CA",
      "postalCode": "94105",
      "country": "US",
      "email": "test@cybs.com",
      "phoneNumber": "4158880000"
    }
  }
}
```

{#payments-porcesing-zero-auth-ani-ex-rest_codeblock_qw1_2cj_nhc}  
Response to a Successful Request

```
{
  "_links": {
    "authReversal": {
      "method": "POST",
      "href": "/pts/v2/payments/7664012361876450803814/reversals"
    },
    "self": {
      "method": "GET",
      "href": "/pts/v2/payments/7664012361876450803814"
    },
    "capture": {
      "method": "POST",
      "href": "/pts/v2/payments/7664012361876450803814/captures"
    }
  },
  "clientReferenceInformation": {
    "code": "TC50171_3"
  },
  "id": "7664012361876450803814",
  "orderInformation": {
    "amountDetails": {
      "authorizedAmount": "0.00",
      "currency": "USD"
    }
  },
  "paymentAccountInformation": {
    "card": {
      "type": "001"
    }
  },
  "paymentInformation": {
    "tokenizedCard": {
      "type": "001"
    },
    "card": {
      "type": "001"
    }
  },
  "processorInformation": {
    "systemTraceAuditNumber": "065281",
    "electronicVerificationResults": {
      "lastName": "Y",
      "firstName": "Y",
      "code": "Y",
      "middleNameRaw": "01",
      "firstNameRaw": "01",
      "lastNameRaw": "01",
      "codeRaw": "01",
      "middleName": "Y"
    },
    "merchantNumber": "123456789012",
    "approvalCode": "831000",
    "cardVerification": {
      "resultCodeRaw": "M",
      "resultCode": "M"
    },
    "merchantAdvice": {
      "code": "01",
      "codeRaw": "M001",
      "nameMatch": "00"
    },
    "networkTransactionId": "016153570198200",
    "retrievalReferenceNumber": "535611065281",
    "consumerAuthenticationResponse": {
      "code": "2",
      "codeRaw": "2"
    },
    "transactionId": "016153570198200",
    "responseCode": "00",
    "avs": {
      "code": "Y",
      "codeRaw": "Y"
    }
  },
  "reconciliationId": "7664012361876450803814",
  "status": "AUTHORIZED",
  "submitTimeUtc": "2025-12-22T11:00:36Z"
}
```

