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?
| Code | Stripe's description | Suggested next step |
|---|---|---|
| do_not_honor | The card was declined for an unknown reason | The customer contacts their card issuer |
| generic_decline | Declined for an unknown reason, or Stripe Radar or Adaptive Acceptance blocked the payment | The 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
| Code | What it means | What to do |
|---|---|---|
| generic_decline | Declined for an unknown reason, or blocked by Stripe Radar or Adaptive Acceptance | Check the payment in the Dashboard: if Radar blocked it, review the rule; otherwise the customer asks their bank |
| do_not_honor | The issuer declined for an unknown reason | The customer asks their bank; retrying the same card unchanged rarely helps |
| insufficient_funds | Not enough funds or credit available | Offer another payment method, or retry later for subscriptions |
| card_velocity_exceeded | The customer exceeded the balance, credit limit or transaction amount limit on the card | The customer asks their bank to raise the limit; for large amounts, offer ACH or wire |
| fraudulent | Stripe suspects the payment is fraudulent | Show the customer a generic decline message; review the payment before allowing a retry |
| transaction_not_allowed | Declined for an unknown reason | The customer asks their bank whether this kind of purchase is allowed |
| card_not_supported | The card doesn't support this type of purchase | The customer uses another card or asks their bank |
| currency_not_supported | The card doesn't support the currency charged | Charge in another currency, or the customer uses another card |
| Blocked by Radar | Stripe'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:
| Card volume attempted per year | Extra approved sales | Gross 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
- Count approved authorizations divided by all authorization attempts, counting each payment once, not every retry.
- Split it by card type, issuing country, amount band and new vs returning customers.
- Separate issuer declines from fraud-tool blocks, because they have different fixes.
- 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.