Why good payments get declined, and what you control

A declined payment from a real customer is lost revenue, and can be a lost customer. Some declines are out of your hands; many are not. Here's how to tell who declined a payment, what the codes mean and which levers you control.

Last updated By Gil Levy

Short answer

Most declines come from the customer's bank (the issuer), which may give no reason: Stripe describes do_not_honor as "declined for an unknown reason". Others come from fraud tools such as Stripe Radar. You can't overrule an issuer, but you can send it better payments: network tokens, an account updater, authentication when it helps, accurate data, sensible fraud rules and well-timed retries.

Who declined it: the issuer, Radar or the network?

Three different parties can stop a card payment, and the fix depends on which one did:

  • The issuer, the customer's bank, approves or declines every authorization. Its reasons include fraud suspicion, credit limits, unusual spending and its own risk rules.
  • Your processor's fraud tools. On Stripe, Radar (and Adaptive Acceptance) can block a payment before it reaches the issuer. Stripe's documentation says these blocks show up as generic_decline.
  • The card network or the payment data. Wrong card details, unsupported currencies or an expired card fail with specific codes.

In the Dashboard, each failed payment shows the decline code and, for blocked payments, the Radar rule or risk score involved. Start every investigation there.

What do do_not_honor and generic_decline mean?

Two common decline codes, as Stripe's documentation describes them
CodeStripe's descriptionSuggested next step
do_not_honorThe card was declined for an unknown reasonThe customer contacts their card issuer
generic_declineDeclined for an unknown reason, or Stripe Radar or Adaptive Acceptance blocked the paymentThe customer contacts their card issuer

"Unknown reason" means the issuer didn't say. The customer's bank may know; your processor usually doesn't. Stripe also returns an advice code with some declines, which tells you whether a retry could work.

Common Stripe decline codes and what to do about each

Meanings from Stripe's decline codes documentation
CodeWhat it meansWhat to do
generic_declineDeclined for an unknown reason, or blocked by Stripe Radar or Adaptive AcceptanceCheck the payment in the Dashboard: if Radar blocked it, review the rule; otherwise the customer asks their bank
do_not_honorThe issuer declined for an unknown reasonThe customer asks their bank; retrying the same card unchanged rarely helps
insufficient_fundsNot enough funds or credit availableOffer another payment method, or retry later for subscriptions
card_velocity_exceededThe customer exceeded the balance, credit limit or transaction amount limit on the cardThe customer asks their bank to raise the limit; for large amounts, offer ACH or wire
fraudulentStripe suspects the payment is fraudulentShow the customer a generic decline message; review the payment before allowing a retry
transaction_not_allowedDeclined for an unknown reasonThe customer asks their bank whether this kind of purchase is allowed
card_not_supportedThe card doesn't support this type of purchaseThe customer uses another card or asks their bank
currency_not_supportedThe card doesn't support the currency chargedCharge in another currency, or the customer uses another card
Blocked by RadarStripe's fraud tools stopped the payment before it reached the issuer (reported as generic_decline)Review the rule and risk score in the Dashboard; add trusted customers to an allow list

Why do cross-border, large and retried payments decline more?

  • Cross-border: a card used with a merchant in another country can look riskier to an issuer, and currency mismatches add friction. Charging in the customer's local currency can help.
  • Large payments: a charge far above the cardholder's usual spending can trip issuer fraud checks or hit a card limit. See taking large card payments.
  • Retries: repeating a hard decline rarely succeeds, can look like card testing, and card networks limit how often a declined card can be retried.

The levers you control

  • Network tokens: card-network tokens stay valid when cards are reissued, and issuers tend to trust them. See network tokens.
  • Account updater: refreshes stored cards before renewals fail. See card account updater.
  • 3D Secure where it helps: authentication shifts fraud liability and can win approval for higher-risk payments, at the cost of some checkout friction. Use it selectively.
  • Radar allow lists and rules: make sure trusted customers and large known accounts aren't blocked by default rules, and review blocked payments regularly.
  • Clear descriptors and accurate data: a recognizable statement descriptor, billing address and customer details help issuers approve.
  • Smarter retries: follow the decline and advice codes, retry soft declines later, and stop on hard declines.

What is a 1-point authorization gap worth?

Every percentage point of authorization rate is a percentage point of attempted volume that turns into revenue, or doesn't:

One percentage point of authorization rate
Card volume attempted per yearExtra approved salesGross profit at 70% margin
$10,000,000$100,000$70,000
$25,000,000$250,000$175,000
$50,000,000$500,000$350,000

Illustrative. Some declined customers retry with another card, so not every decline is a lost sale; for subscriptions, a failed renewal can lose the customer's whole remaining lifetime value.

How to measure the authorization rate properly

  1. Count approved authorizations divided by all authorization attempts, counting each payment once, not every retry.
  2. Split it by card type, issuing country, amount band and new vs returning customers.
  3. Separate issuer declines from fraud-tool blocks, because they have different fixes.
  4. Compare the same period before and after any change, adjusted for seasonality.

Track it monthly. A drop after a pricing change, a new checkout or new fraud rules is easier to fix when you catch it early.

How 71P handles this

71P moves high-volume merchants to interchange-plus pricing with our licensed processing partner. Here's what that changes for this problem:

Tools built to win more approvals

Our processing setup adds tools built to win more approvals: authentication only when it's needed, smart routing, payment messages formatted for each issuing bank, an automatic card updater, and smart retries on declined payments. We measure your approval rate before and after, so you see the difference in your own numbers.

One person who knows your business

You get one dedicated person who stays the same, knows you and your business, and is reachable directly. On standard plans, Stripe's support runs through shared phone, email and chat queues, not a named contact.

See how it works, or start with a free savings analysis.

Sources

All checked on November 4, 2026.

  1. Stripe docs: Decline codes
  2. Stripe docs: Declines
  3. Stripe docs: Radar lists

Decline questions

What does do_not_honor mean on Stripe?

Stripe's documentation describes do_not_honor as a card declined for an unknown reason: the issuing bank didn't say why. The suggested next step is for the customer to contact their card issuer. It's an issuer decision, not a Stripe one, so retrying the same card without a change rarely helps.

Should you retry declined card payments?

Retry selectively. Some declines can succeed later, for example a temporary issuer problem, but repeated retries of a hard decline won't, and card networks limit retries and can charge for excessive ones. Follow the decline code and Stripe's advice code, and space out retries for subscriptions.

How do you measure your authorization rate?

Divide approved card authorizations by all authorization attempts in the same period, counting each payment once rather than every retry. Track it by card type, country and amount, and compare the same period before and after any change, so seasonality doesn't hide the effect.