## TL;DR
"The card is valid" almost always means the bank declined it anyway, the billing address does not match, or a fraud check tripped silently. Your job is to read the actual decline code in the processor dashboard, because the user only ever sees a generic failure. Never tell them to "just try again" without checking the code first.

## The query

```text
"payment failed but card is valid" support checklist
```

## Use this when

- A customer says their card is fine but payment fails
- Retries fail with the same generic error
- You need the billing macro for decline tickets
- The failure started after a card worked previously
- A payment fails only on your checkout, not elsewhere

## Not for

- Expired or cancelled cards the user already knows about
- Successful charges that show the wrong subscription state
- Refund requests, which are a different flow
- Fraud you have confirmed and must not help bypass

## Steps

### 1. Look up the real decline code in the dashboard

Open the failed attempt in your payment processor and read the decline reason. "Do not honor", "insufficient funds", "incorrect CVC", "transaction not allowed" each point somewhere different. The customer-facing message almost never says this.

Expected output: the actual decline reason, not the generic error.

### 2. Check the billing address and CVC match

The top silent killer is an address mismatch, often from autofill putting the shipping address in the billing field. Have them retype the billing address exactly as it appears on the bank statement, plus the CVC, in one clean attempt.

Expected output: a fresh attempt with a verified billing address.

### 3. Ask them to clear it with their bank

For "do not honor" and fraud-flag declines, the fix is the user calling the number on the back of the card and saying "please allow this charge." Banks block unfamiliar merchants by default and the user has to whitelist you. Give them your exact merchant name as it appears on statements so the bank can find it.

Expected output: the bank lifts the block, or confirms a real reason.

### 4. Try the 3D Secure step on a different device or browser

If the failure happens at the bank's verification popup, the popup is the problem, not the card. Have them retry in a fresh browser with popup blockers off, or on their phone. Corporate laptops with strict security software eat these popups constantly.

Expected output: the verification step completes, or you have ruled it out.

### 5. Offer an alternate payment path

A different card, a digital wallet, or an invoice they can pay by transfer. If one path keeps dying, stop burning their patience and route around it. Note every failed attempt in the ticket so billing can reconcile.

Expected output: the payment succeeds on an alternate path, or a clean handoff to billing.

## Ready-to-use message

```text
I can see the attempt on our end. Your card details look fine,
so this is most likely your bank declining the charge on their
side, which happens with new merchants.

Can you:
1. Retype the billing address exactly as it appears on your
   bank statement (autofill often gets this wrong)
2. If it still fails, call the number on the back of your card
   and ask them to allow a charge from [merchant name]

If you'd rather not wait on the bank, I can also send an invoice
you can pay by transfer. Just say the word.
```

## Variant phrasings

### card declined but I have money

Steps 1 and 3. This is almost always the bank's fraud filter, not the balance.

### payment keeps failing on checkout

Steps 2 and 4. Address mismatch first, then the verification popup.

### why does my valid card keep getting declined online

Steps 1 through 3 in customer-facing language. The honest answer is the bank said no and your site was just the messenger.

## Why it happens

Card networks let the issuing bank decline almost anything without telling the merchant why in plain language. So the user experiences "my good card does not work on your site" while the truth is "your bank refused to talk to this merchant." Until you read the decline code, you are both guessing, which is why step 1 comes before any advice.

## Edge cases

- Prepaid and gift cards: many processors reject them outright, or they fail address checks because they have no billing address. Ask early.
- International cards: the bank may require the user to enable foreign transactions. Same fix as step 3, different sentence.
- Duplicate charges feared: reassure them that failed attempts never move money, and show the dashboard proof. People stop retrying when they fear double billing, so address it head-on.
- Subscriptions failing on renewal only: the card on file expired or the bank blocked the recurring flag. Have them re-enter the card rather than debugging the old one.
- Everything fails including alternates: check your own processor status page before blaming the user further. Outages look exactly like user error from the ticket side.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_rArl4lV7Cch8ureUkRU2yw
