Verify a card
Last updated: October 22, 2025
You can perform a card verification to verify a cardholder's payment details without charging them.
For example, you can use this type of authorization request if you offer a free trial period for a product or service.
For example, you can collect card details during registration, and then offer a free 30-day trial period before charging the card. The cardholder's details are saved to their account, which you can charge when necessary.
To verify a card, call the Request a payment or payout endpoint.
In the request body, set the amount
field to 0
, or omit it.
post
https://api.checkout.com/payments
1{2"source": {3"type": "token",4"token": "tok_yo2zfqgdnn4u7gswjbjmqt5mza"5},6"currency": "USD"7}
1{2"id": "pay_aqwuar5sjb5upkupgywyzapfii",3"action_id": "act_aqwuar5sjb5upkupgywyzapfii",4"amount": 0,5"currency": "USD",6"approved": true,7"status": "Card Verified",8"auth_code": "085143",9"eci": "05",10"scheme_id": "638284745624527",11"response_code": "10000",12"response_summary": "Approved",13"risk": {14"flagged": false15},16"source": {17"id": "src_o67xgoxulgnuhgeaxsdk4cbvgq",18"type": "card",19"expiry_month": 9,20"expiry_year": 2022,21"scheme": "Visa",22"last4": "4242",23"fingerprint": "F31828E2BDABAE63EB694903825CDD36041CC6ED461440B81415895855502832",24"bin": "424242",25"card_type": "CREDIT",26"card_category": "CONSUMER",27"issuer": "Test Bank",28"issuer_country": "US",29"product_id": "A",30"product_type": "Visa Traditional",31"avs_check": "S",32"cvv_check": ""33},34"customer": {35"id": "cus_vrdaroxvawlevmxxvhi66thpum"36},37"processed_on": "2024-01-17T17:41:52Z",38"_links": {39"self": {40"href": "https://api.sandbox.checkout.com/payments/pay_aqwuar5sjb5upkupgywyzapfii"41},42"actions": {43"href": "https://api.sandbox.checkout.com/payments/pay_aqwuar5sjb5upkupgywyzapfii/actions"44}45}46}
If the card verification is successful, the response returns:
"approved": true
"status": "Card Verified"
If you receive a 202
response, a redirect is required. For example, for 3D Secure (3DS) authentication.
You can also view the results in the Card verified webhook.
For more information on the value returned in the source.cvv_check
field, see CVV response codes.
If the verification fails, it may be for the following reasons:
- The card may be invalid, expired, or have insufficient funds.
- The issuer may not support card verification. They may reject the charge request even if the card details are valid.
- The issuer may not support zero-amount authorizations.
If the issuer does not support zero-amount authorizations, try the following:
- Manually retry the verification with the
amount
field set to a low nominal value, and then void the payment. - Enable Intelligent Acceptance to automatically retry these payments through any other possible methods. Intelligent Acceptance does not retry non-zero amounts.
To test your card verification integration, see Simulate card verification outcomes.
To reduce fraud risk, you can validate a cardholder's name against the name held by their issuing bank using an Account Name Inquiry (ANI). ANI is a card verification service that works independently of the financial transaction.
When you request an ANI check, the system can return the following:
- A match result for each name you provided
- An overall match result for the whole name
ANI checks are available for:
- Visa in Canada, the United Kingdom, and the United States
- Mastercard globally, subject to issuer acceptance – For more information, contact your account manager or request support.
To request an ANI, call the Request a payment or payout endpoint.
Set the amount
field to 0
.
In the account_holder
object, provide the following:
type
– Set to one ofindividual
,corporate
, orgovernment
.first_name
,middle_name
, andlast_name
– Provide if the account holder is an individual.company_name
– Provide if the account holder is a corporate or government entity.account_name_inquiry
– Set totrue
.
post
https://api.checkout.com/payments
1{2"source": {3"type": "token",4"token": "tok_yo2zfqgdnn4u7gswjbjmqt5mza",5"account_holder": {6"type": "individual",7"first_name": "John",8"middle_name": "Joe",9"last_name": "Doe",10"account_name_inquiry": true11}12},13"amount": 0,14"currency": "USD"15}
1{2"id": "pay_aqwuar5sjb5upkupgywyzapfii",3"action_id": "act_aqwuar5sjb5upkupgywyzapfii",4"amount": 0,5"currency": "USD",6"approved": true,7"status": "Card Verified",8"auth_code": "085143",9"eci": "05",10"scheme_id": "638284745624527",11"response_code": "10000",12"response_summary": "Approved",13"risk": {14"flagged": false15},16"source": {17"id": "src_o67xgoxulgnuhgeaxsdk4cbvgq",18"type": "card",19"expiry_month": 9,20"expiry_year": 2022,21"scheme": "Visa",22"last4": "4242",23"fingerprint": "F31828E2BDABAE63EB694903825CDD36041CC6ED461440B81415895855502832",24"bin": "424242",25"account_holder": {26"account_name_inquiry": "full_match",27"account_name_inquiry_details": {28"first_name": "full_match",29"middle_name": "full_match",30"last_name": "full_match"31}32},33"card_type": "CREDIT",34"card_category": "CONSUMER",35"issuer": "Test Bank",36"issuer_country": "US",37"product_id": "A",38"product_type": "Visa Traditional",39"avs_check": "S",40"cvv_check": ""41},42"customer": {43"id": "cus_vrdaroxvawlevmxxvhi66thpum"44},45"processed_on": "2024-01-17T17:41:52Z",46"_links": {47"self": {48"href": "https://api.sandbox.checkout.com/payments/pay_aqwuar5sjb5upkupgywyzapfii"49},50"actions": {51"href": "https://api.sandbox.checkout.com/payments/pay_aqwuar5sjb5upkupgywyzapfii/actions"52}53}54}
The response returns the result of the ANI check as an ANI code in the account_holder.account_name_inquiry
field.
If you request an ANI check from Visa, you can inspect the account_name_inquiry_details
object for a more detailed breakdown of the matches.
For example, you can get an account_name_inquiry": "partial_match"
result, if:
account_name_inquiry_details.first_name
and account_name_inquiry_details.last_name
result in a full_match
but
account_name_inquiry_details.middle_name
is no_match
You can use this detailed information to better determine whether you verify the transaction or not.
To simulate different outcomes, see ANI check testing.