At some point, every business that takes online payments faces the same problem: a list of card numbers with no reliable way to know which ones are still alive, and a very strong incentive not to charge all of them to find out. Maybe it's a subscription list full of cards that expired six months ago. Maybe it's a developer testing a payment flow at 11pm. Maybe it's a fraud team trying to validate some suspicious card data before flagging an account.
The solution — and this is something many merchants don't know exists — is a live card authorization at zero cost to the cardholder. No charge, no statement entry, real response from the card network. Here's how it works.
The two main methods
Setup Intent — zero dollars, zero trace
A Setup Intent is Stripe's implementation of what the industry calls a zero-dollar authorization. You send a $0.00 authorization request to the card network. The bank responds with whether the card is currently active and authorized for transactions — but no money moves, and in most cases nothing appears on the cardholder's statement at all.
This is the invisible option. It's best for confirming whether a card is active without tipping off the cardholder that you're checking. Subscription businesses use this constantly — it's how you validate a card during signup without initiating a charge.
Auth Hold — small hold, voided immediately
An auth hold places a temporary hold on a small amount (often $1.00) against the card. The bank confirms the card is active and has the available funds to cover the hold amount. The hold is voided immediately after the check — it typically disappears from the cardholder's account within minutes to a couple of days depending on the bank.
This method is more informative because it confirms available funds, not just account validity. A Setup Intent tells you the card is active; an auth hold tells you the card is active and has money on it. The trade-off is that the cardholder may see the pending hold briefly.
When you actually need this
Here are the most common scenarios where pre-verification saves merchants significant money:
Subscription businesses cleaning their card portfolio
Expired cards sitting in your subscriber database aren't just failed renewals — they're chargeback risk, customer service load, and silent churn. Running a verification sweep before the billing cycle reveals which cards need to be updated before you attempt a charge.
Developers testing payment integrations
Stripe's test card numbers are fine for testing your integration. But if you want to know how your payment flow actually behaves with a real card — real bank response codes, real BIN data, real decline reasons — you need a live verification. Test cards don't simulate the full range of real-world responses.
Fraud and risk teams
Before flagging an account or blocking a transaction, many risk teams want to know whether the card on file can actually authorize. A verification gives you the bank's real-time response, including whether the card has been flagged or suspended, without making a charge the cardholder would dispute.
High-ticket merchants
Running a verification before a large transaction means you know the card is live before you ship product or render services. A $5,000 transaction on a suspended card costs you processing fees, staff time, and potentially the sale.
How to run a verification with CVV Checker
- Create an account. Username and password — no email required, takes about 30 seconds.
- Add credits. Each verification costs $0.20. Deposit via cryptocurrency with no minimum. You get bonus credits on larger deposits.
- Enter the card details. Card number, expiry date, and CVV. Optionally add the cardholder name and billing ZIP for an AVS check.
- Choose your method. Setup Intent for a zero-dollar stealth check. Auth Hold if you need fund confirmation.
- Read the result. You get the card status, the exact bank response message, full BIN data (issuing bank, card type, level, country), and a fingerprint for duplicate detection — usually in under 10 seconds.
What the result actually tells you
A VALID result means the card authorized successfully. It's active, the bank approved the request, and in the case of an auth hold, funds are available.
A DECLINED result comes with a response message from the issuing bank — this is where it gets useful. "Insufficient funds" is different from "Card suspended" which is different from "Do not honor." These distinctions matter for how you handle the customer next.
You also get BIN data regardless of the result, which tells you the issuing bank, card type (credit/debit/prepaid), card level (Classic/Gold/Platinum/Business), and the country of issuance. A prepaid card from a high-risk country means something different than a corporate Platinum from a major US bank.