Card Decline Codes Explained: What They Mean and What to Do
A practical reference to card decline codes across major payment processors. Learn the difference between soft declines, hard declines, and card-update declines, with specific recovery strategies for each category.
What Are Card Decline Codes and Why Do They Matter?
When a credit or debit card transaction is declined, the issuing bank sends a numeric or alphanumeric code back through the payment network to explain why. These card decline codes are the starting point for every payment recovery decision. Understanding what each code means, and more importantly, what action to take in response, can mean the difference between recovering a failed payment and losing a customer to involuntary churn. Payment processors like Stripe, Braintree, and Adyen each have their own code formats, but they all map back to a set of standard reason categories defined by the card networks (Visa, Mastercard, American Express, Discover). The challenge is that these codes are often vague, inconsistent across processors, and sometimes outright misleading. A "Do Not Honor" response from one issuer might mean temporary insufficient funds, while the same code from another issuer could indicate a permanent block. Building an effective recovery strategy requires translating these raw codes into actionable categories.
Common Soft Decline Codes: Temporary Failures You Can Retry
Soft declines represent temporary conditions that may resolve on their own or with properly timed retries. They are your highest-opportunity recovery targets. Insufficient funds (ISO code 51, Stripe "insufficient_funds") is the most common decline code, accounting for roughly 40% of all payment failures. The cardholder account does not have enough money to cover the charge right now, but it might tomorrow or on the next payday. Retry these with payday-aware timing for optimal results. Issuer temporarily unavailable (code 91) means the bank systems are down or experiencing issues. This is purely transient and can usually be retried within minutes to hours. Rate limit exceeded or too many requests (code 65) indicates the card has hit a velocity limit set by the issuer. Wait 24 hours before retrying. Processing error (code 96) is a generic catch-all for technical failures in the authorization network. Retry after a short delay. For all soft declines, the recovery strategy is timing-based: retry when conditions are most likely to have changed. Smart retry engines achieve 35% to 45% recovery rates on soft declines, compared to 15% for standard retry schedules.
Hard Decline Codes: Permanent Failures That Require Customer Action
Hard declines indicate a permanent problem with the payment method that will not resolve through retrying. Attempting to retry hard declines wastes processing resources and can damage your merchant reputation with card networks. Card reported stolen (code 43) means the cardholder has reported the card as stolen. Do not retry under any circumstances. Contact the customer to collect a new payment method. Account closed (code 46) indicates the bank account associated with the card no longer exists. The customer needs to provide a completely different card. Fraudulent transaction (code 59) means the issuer suspects fraud. Retrying may trigger additional fraud monitoring. Card restricted (code 62) indicates the card has been restricted by the issuer, often due to geographic or merchant category limitations. For all hard declines, the correct response is immediate customer outreach via dunning email, explaining that their current payment method cannot be charged and providing a secure, one-click link to enter a new card. Speed matters: customers contacted within 4 hours of a hard decline update their payment method 70% of the time. After 24 hours, that rate drops to 25%.
Card Update Decline Codes: The Predictable Failures
Card update declines are the most preventable category of payment failures because they involve information that is known in advance. Expired card (code 54, Stripe "expired_card") is entirely predictable since every card has a printed expiration date. If you are not monitoring card expiry dates and sending proactive update reminders, you are leaving money on the table. Implement reminders at 14, 7, and 3 days before expiry to reduce card-expiry failures by 45%. Invalid card number (code 14) often occurs after a bank reissues a card with a new number due to a data breach or routine replacement. Card updater services from Visa (Account Updater) and Mastercard (Automatic Billing Updater) can automatically update the stored card number in many of these cases, recovering the payment with zero customer friction. Invalid CVV (code 82) typically indicates stored payment data has become stale. These codes have the highest recovery potential of any decline category when handled promptly. Customers who are asked to update their card within 24 hours of an expiry-related decline recover at rates above 60%. The recovery window closes rapidly: after 7 days, rates fall below 20%.
Cross-Processor Code Normalization and What to Do Next
One of the biggest operational challenges with card decline codes is that every payment processor uses a different format. Stripe returns human-readable strings like "card_declined" and "insufficient_funds." Braintree uses numeric codes like 2001 and 2004. Adyen returns alphanumeric codes like "Refused" with sub-codes. PayPal uses its own error code system entirely. If you process payments through multiple providers, or if you are considering switching processors, you need a unified decline code taxonomy that normalizes all these formats into consistent, actionable categories. LostChurn maintains a taxonomy of over 316 decline codes across 18 major payment processors, automatically classifying each failure and routing it to the optimal recovery workflow: smart retry for soft declines, immediate outreach for hard declines, and proactive update requests for card-update declines. This classification alone improves recovery rates by 30% compared to treating all declines identically. To see how LostChurn can help you decode decline codes and recover more failed payments, connect your payment processor to start a free trial. You will see your complete decline code breakdown and recovery opportunities within minutes. For more details on plans and features, visit our pricing page.
Related Resources
- Decline Intelligence — Automatic classification of 316+ decline codes
- Full Decline Code Reference — Browse all decline codes across 18 processors
- Blog: Stripe Decline Codes Explained — In-depth guide to Stripe-specific decline codes
- Glossary: Decline Code — Codes explaining why payments are rejected
- Stripe Integration — Classify and recover all 52 Stripe decline codes
Start recovering revenue today
Join thousands of subscription businesses using LostChurn to automatically recover failed payments and reduce churn.
Start free trial