Stripe failed payments
Stripe payment recovery
Stripe blocked payments

Gal Cegla
Feb 10, 2026
Every subscription business running on Stripe has felt the sting of a failed payment. A customer who loves your product, uses it daily, and never intended to leave—suddenly churned. Not because they wanted to cancel, but because a credit card expired, a bank flagged a transaction, or funds were temporarily short. This is involuntary churn, and it is one of the most overlooked revenue leaks in SaaS and eCommerce. Failed payments account for a massive share of total subscriber losses across industries. According to Stripe's own Billing report, 43% of businesses don't even know how much revenue they've lost due to involuntary churn or payment failure—yet 72% say fighting churn remains a top priority. The disconnect is staggering, and the opportunity for recovery is enormous.
This guide covers everything you need to know about Stripe failed payments in 2026: why they happen, how to identify and analyze them, the most common decline codes and what they mean, how to configure Stripe's native recovery tools, and how AI-powered solutions like FlyCode are helping companies recover 16–25% more failed payments than legacy methods.
Whether you're a SaaS founder, a billing operations manager, or an eCommerce retention leader, this is the only resource you need.
What Are Failed Payments in Stripe and Why Do They Matter?
A failed payment occurs when a customer's card transaction cannot be completed during the billing cycle. The payment processor—in this case, Stripe—attempts to charge the card on file, and the issuing bank or card network declines the transaction. When this happens, the subscription enters a "past due" state. If the payment isn't recovered within a certain window, the subscription is canceled automatically.
This is involuntary churn. The customer didn't choose to leave. They didn't click "cancel." They were lost to a mechanical failure in the payment process—and most of the time, they don't even know it happened.
The financial impact compounds quickly. A single failed payment doesn't just cost you that month's revenue. It erases the customer's entire future lifetime value (LTV). If your average subscriber pays $50 per month and retains for 18 months, one unrecovered failed payment doesn't cost you $50—it costs you $900. Multiply that across hundreds or thousands of subscribers, and you begin to understand why failed payment recovery should be treated as a core revenue function, not an afterthought.
There are two broad categories of payment failures in Stripe: Declines and Blocked Payments. Declines come from the issuing bank or card network rejecting the charge. Blocked payments are transactions that Stripe's own fraud detection system (Radar) prevents from processing. Understanding the distinction matters because the recovery strategy differs for each.
The Most Common Stripe Decline Codes (and What They Actually Mean)
When a payment fails in Stripe, it returns a specific decline code. Understanding these codes is the first step toward building an effective recovery strategy. Here is a comprehensive reference of the codes you'll encounter most frequently.
Insufficient Funds (Code 51)
This is the single most common reason for failed payments. The customer's account doesn't have enough money to cover the charge at the moment the retry occurs. This is often a timing issue—the customer may have funds available a few days later, after a paycheck deposits. Companies with customers who frequently use prepaid debit cards see this code disproportionately. The key insight here is that retrying at the right moment, rather than on a fixed schedule, can dramatically improve success rates for this code.
Expired Card (Code 54)
The card on file has passed its expiration date. In most cases, the customer simply forgot to update their payment method. This is rarely intentional churn. It's worth noting that the industry has moved away from warning customers about upcoming expirations. Instead, the best practice is to proactively encourage customers to add a backup payment method before expiration becomes an issue, and to leverage card account updater services that automatically refresh expired card details.
Do Not Honor (Code 05)
This is a catch-all code from the issuing bank indicating that the transaction was rejected, but the bank isn't providing a specific reason. It can be triggered by something as simple as an incorrect billing address, a temporary hold on the account, or the bank's own fraud detection flagging the charge. This code requires nuanced handling—sometimes a simple retry at a different time resolves it, and sometimes direct customer outreach is needed.
Stolen Card (Code 43)
The card has been reported stolen. This is a fraud-related decline and should not be retried. The appropriate action is to reach out to the customer through a separate channel and ask them to update their payment method with a new card.
Incorrect Card Number (Code 14)
The card number on file is invalid—typically because a digit was entered incorrectly during the original signup or card update. Like the stolen card code, this requires customer action. No amount of retrying will resolve an incorrect card number. The best approach is a clear, frictionless card update flow.
Generic Decline
Stripe surfaces this when the issuing bank provides no additional detail. It can encompass a wide range of underlying issues. These are among the trickiest to handle because there's no clear signal about what went wrong. AI-based systems that analyze patterns across millions of transactions have a significant advantage here, as they can infer the likely cause based on historical data and optimize the retry strategy accordingly.
Other Notable Codes
Processing errors, card not supported, currency not supported, and rate limit exceeded are less common but still appear in Stripe dashboards. Each requires a different approach—some are transient (processing errors often resolve on retry), while others require permanent changes (currency or card type issues).
How to Find and Analyze Your Failed Payments in Stripe
Before you can recover failed payments, you need to understand what you're actually losing. Stripe's dashboard provides some visibility, but getting a true picture requires a bit of work.
Filtering Failed Payments in the Stripe Dashboard
Inside your Stripe dashboard, navigate to the Payments tab. By default, it shows successful transactions—all that green can be misleading. Click on Filters, set your date range (we recommend pulling a full calendar month for meaningful analysis), and then uncheck "Succeeded" and select "Failed." You'll also want to pay attention to the distinction Stripe makes between "Canceled" and "Failed" statuses. Canceled means the customer created a subscription but canceled before the next charge—Stripe won't retry these. Failed means the bank rejected the charge, and these are the transactions you can potentially recover.
Exporting to CSV for Deeper Analysis
The in-dashboard view for payment recovery is useful for a quick glance, but it doesn't let you sort, deduplicate, or run meaningful analysis. Export your failed payments to CSV. This gives you additional fields like card brand, card expiration month and year, card funding type, and dispute reason—all of which can inform your recovery strategy.
Deduplicating Your Data
This is a critical step that many teams skip. When Stripe exports failed payment data, it includes every retry attempt. So a single customer whose payment failed and was retried four times shows up as four rows. Your raw export might show 1,200 failed transactions, but after deduplication, the actual number of unique failed customers might be 500. Use your spreadsheet tool's deduplication features to clean up the data based on customer email and amount, then use SUM and COUNT functions to understand your true failed payment volume and dollar impact.
Ongoing Monitoring
Pulling manual exports monthly is a start, but it's not sustainable at scale. This is where analytics tools—whether built into your billing stack or provided by a dedicated platform—become essential. You need real-time visibility into your failed payment rate, recovery rate, and the net revenue impact, segmented by decline code, card type, geography, and customer cohort.
Configuring Stripe's Native Payment Recovery for failed payment
Stripe offers several built-in features for handling failed payments. These should be your baseline—but as we'll discuss later, they're often not enough on their own.
Smart Retries
Stripe's Smart Retries use machine learning across the Stripe network to determine the optimal time to retry a failed payment. Instead of retrying on fixed intervals (every 3, 5, 7 or 9 days), Smart Retries dynamically adjust timing based on signals from the card network. This is a significant improvement over manual retry schedules and should generally be enabled. However, Smart Retries are optimized across the entire Stripe network—they're not tailored specifically to your business, your customer segments, or your unique billing patterns.
Retry Schedules
Stripe allows you to disable Smart Retries and configure your own retry schedule. You can set the number of days between each attempt and the total number of attempts before the subscription is canceled. To configure this, go to the payment recovery settings. This approach gives you predictability but sacrifices the data-driven optimization that machine learning provides. It's less recommended
Automated Dunning Emails
Stripe can send automated emails to customers when a payment fails, including a link to update their payment information. These are Stripe-branded by default. While helpful, these emails are generic—they don't account for the customer's timezone, engagement level, or the specific reason their payment failed. You don't have anu open rates and conversion rates on these default emails. Also, they are not coordinate with the retries.
Auto Card Account Updater
Stripe works with card networks to automatically update expired or replaced card details when banks issue new cards. This runs silently in the background and can prevent a meaningful number of failures related to expired cards.
Why Stripe failed payments Tools Aren't Enough
Stripe's built-in recovery features provide a solid foundation. The problem is that they represent a one-size-fits-all approach. Smart Retries optimize across the entire Stripe network, not for your specific business. Dunning emails are generic and not coordinated with retry timing. There's no intelligence around when a customer is most likely to have funds available, no ability to route a retry through a different payment path, and no mechanism to automatically fall back to a backup card on file.
The result? Most businesses using only Stripe's native tools recover somewhere around 35–40% of failed payments. That means 60% or more of your involuntary churn goes unaddressed. For a company doing $5M in ARR, even a small improvement in recovery rate can translate to hundreds of thousands of dollars in retained revenue.
This is where purpose-built payment recovery platforms come in.
AI-Powered Recovery: How FlyCode partnered with Stripe to turn Failed Payments Into Revenue
FlyCode was built from the ground up as an AI-native payment recovery platform. Unlike legacy dunning tools that rely on static rules and fixed retry schedules, FlyCode's machine learning models learn from every transaction and every issuer response, continuously refining their approach in real time.
You can get FlyCode's Stripe app here: https://marketplace.stripe.com/apps/flycode-payments
How FlyCode Works with Stripe
Getting started takes hours, not weeks. You connect FlyCode through Stripe's native app integration. Once connected, FlyCode reads your billing webhooks in real time, analyzes every failed transaction, and begins orchestrating recovery automatically. There's no code to write, no complex configuration, and no disruption to your existing billing flow.
Intelligent Retry Optimization
FlyCode's core engine analyzes hundreds of data points for each failed payment—including the decline code, card type, issuing bank, customer geography, time of day, day of week, historical payment patterns, and more. It uses this data to predict the exact moment when a retry is most likely to succeed. This is fundamentally different from fixed-interval retries (every 3 or 7 days) or even Stripe's network-wide Smart Retries. FlyCode's models are trained on your specific business data, continuously adapting as patterns change.
Dynamic Routing and Alternate Payment Methods
Recovery doesn't stop at retrying the same card at a better time. FlyCode's decisioning models can automatically route a retry through the highest-approval path available, and—critically—can charge alternate cards the customer already has on file. This backup payment method capability is a simple toggle (no code required) that unlocks significantly higher recovery rates. If a customer's primary Visa is declining but they have a Mastercard saved as a backup, FlyCode handles the switch automatically and seamlessly.
Coordinated Email Outreach
Most recovery tools treat retries and customer communication as separate workflows. FlyCode coordinates them. Its email models are timed to work in harmony with payment retries—reaching customers at the right moment, in their local timezone, with the right message. Emails are sent from your verified domain with your branding, maintaining trust and maximizing deliverability. The messaging adapts based on the failure reason, the number of attempts, and the customer's engagement history.
Revenue Intelligence and Analytics
FlyCode provides granular analytics that go far beyond a basic recovery rate metric. You get visibility into failure reasons by decline code, recovery performance by card type and geography, revenue impact over time, and anomaly detection that surfaces unexpected patterns before they become major problems. This intelligence layer turns failed payments from a black box into an actionable data stream.
Real Results
The numbers speak for themselves. Companies using FlyCode see a 19–25% lift in recovery rate compared to their previous solution, with an ARR boost of 5–9%. Top Stripe customers like Nav, Riverside, OpenLoop, Simply and many others got a recovery boost in just one month. And FlyCode's performance has been recognized at the highest levels—winning Best FinTech Startup at the Visa Everywhere Initiative and being featured as a Stripe Marketplace partner.
Pricing That Aligns Incentives
FlyCode charges only on dollars it actually recovers. There are no seat fees, no minimums, and no upfront costs. If FlyCode doesn't recover revenue for you, you don't pay. This performance-based model means FlyCode's incentives are perfectly aligned with yours.
Building a Complete Failed Payment Recovery Strategy
The most effective approach to failed payment recovery combines multiple layers. Here's the framework we recommend for any subscription business running on Stripe
Layer 1 — Prevention. Encourage customers to add backup payment methods. Use card account updater services. Send pre-dunning nudges before cards expire. The best failed payment is one that never happens.
Layer 2 — Intelligent Retries. Move beyond fixed schedules. Use AI-optimized retry timing that accounts for decline reason, customer behavior, and bank patterns. This alone can recover a significant portion of failed payments without any customer friction.
Layer 3 — Alternate Payment Routing. If the primary card fails, automatically attempt backup cards on file. Route through the payment path with the highest approval probability. This is where platforms like FlyCode deliver outsized impact.
Layer 4 — Strategic Customer Communication. Coordinate emails and notifications with retry attempts. Personalize messaging based on failure reason. Send from your domain, in the customer's timezone, with a frictionless card update flow. Consider SMS and in-app notifications for customers who don't respond to email.
Layer 5 — Analytics and Optimization. Monitor your recovery metrics continuously. Segment by decline code, card type, and customer cohort. Identify trends and anomalies early. Use this data to refine every other layer of your strategy.
Conclusion
Failed payments are not a minor billing nuisance—they are a material revenue problem that affects customer lifetime value, ARR growth, and overall business health. The good news is that most failed payments are recoverable. The subscribers behind those failed charges want to keep using your product. They just need the payment to go through.
Stripe provides a solid foundation with Smart Retries, dunning emails, and card updaters. But if you're serious about maximizing recovery, you need a purpose-built solution that goes beyond one-size-fits-all logic.
FlyCode combines AI-optimized retries, dynamic payment routing, backup card automation, coordinated email outreach, and deep revenue analytics into a single platform that connects to Stripe in hours and starts recovering revenue immediately. With direct partnerships with Visa and Stripe, performance-based pricing, and proven results across hundreds of SaaS and eCommerce brands, FlyCode represents the new standard for failed payment recovery.
Stop losing revenue to failed payments. Get started with FlyCode today.
What happens when a Stripe payment fails?
When a payment fails in Stripe, the subscription moves into a "past due" status. Stripe will attempt to retry the charge based on your configured retry schedule or its built-in Smart Retries. During this retry window, the customer typically retains access to your product. If all retry attempts fail, Stripe takes the action you've configured in your billing settings—usually canceling the subscription or marking it as unpaid. The customer receives an automated email (if you've enabled dunning emails in Stripe) notifying them of the failure and prompting them to update their payment details. This entire process is what leads to involuntary churn—subscriber losses that happen without the customer ever choosing to cancel. With FlyCode, this process is enhanced by AI-optimized retry timing, automatic fallback to backup cards on file, and coordinated email outreach that dramatically increases the chance of recovery before the subscription lapses.
2. How do I retry a failed payment on Stripe?
There are three ways to retry a failed payment in Stripe. First, you can retry manually by navigating to the specific invoice in your Stripe dashboard and clicking "Retry payment." Second, you can let Stripe handle retries automatically through Smart Retries (which uses machine learning to pick optimal retry times) or through a custom retry schedule you configure under Settings → Subscriptions and Emails → Manage Failed Payments. Third, you can use a dedicated recovery platform like FlyCode, which goes far beyond Stripe's native retries. FlyCode analyzes hundreds of data points per transaction—including decline code, card type, issuing bank, customer timezone, and historical patterns—to predict the precise moment a retry is most likely to succeed. It also automatically routes retries through the highest-approval payment path and can charge alternate cards on file without any manual interventio
3. Why does my Stripe payment keep failing?
Payments fail in Stripe for a variety of reasons, and the specific decline code returned by the issuing bank tells you what went wrong. The most common causes are insufficient funds (the customer's account balance is too low at the time of the charge), expired cards (the card on file has passed its expiration date), "do not honor" responses (the issuing bank rejected the transaction without a specific reason), incorrect card numbers, and fraud-related blocks. Some failures are also caused by Stripe's own fraud prevention system, Radar, blocking a transaction it considers suspicious. To diagnose recurring failures, export your failed payments from Stripe to CSV with all columns, deduplicate the data to remove repeat retry attempts, and analyze the decline codes to identify patterns. FlyCode's analytics dashboard automates this entire process, giving you real-time visibility into failure reasons segmented by decline code, card type, and customer cohort—so you can see exactly why payments are failing and what's being done to recover them.
4. How do I set up failed payment email notifications in Stripe?
The pros are strategic redundancy: if one gateway fails because of a cyberattack, technical issue, or routine maintenance, another can take over so transactions can continue without interruption.
Global market penetration: each payment gateway supports different currencies, regions, and local payment methods.
Competitive routing: by employing advanced routing algorithms, businesses can dynamically select the most cost-effective gateway for each transaction based on real-time fee assessments.
Approval ratios: Different payment gateways have different relationships with financial institutions and their underlying technology, which affect transaction approval rates.
Consumer preferences: different consumers have divergent preferences and trust levels with various payment methods and gateways.
Risk mitigation and compliance: because different gateways often have varied security features and adhere to regional regulations, such as GDPR in Europe or CCPA in California, using multiple gateways allows businesses to diversify their risk and maintain continuous compliance with regulatory standards across borders.
How can I stop Stripe from blocking my payments?
Stripe blocks payments through its fraud prevention system called Radar. If legitimate payments are being blocked, there are several steps you can take. First, review your Radar rules in the Stripe Dashboard to see if any custom rules are being too aggressive. Second, add trusted customers to your Radar allow list. Third, ensure your payment forms collect complete billing information (full address, zip code, CVV) since missing data increases the chance of a Radar block. Fourth, review your overall block rate in Stripe's Radar analytics to identify patterns. It's important to distinguish between Stripe-blocked payments (which you can influence through Radar settings) and bank-declined payments (which require retry and recovery strategies). FlyCode's intelligent routing engine helps with both—it understands the difference between fraud blocks and recoverable declines, and it routes each retry attempt through the path with the highest approval probability while maintaining full compliance with card network rules.
What is a good failed payment recovery rate for Stripe?
Using Stripe's native recovery tools alone—Smart Retries, dunning emails, and card account updater—most businesses recover approximately 35–40% of failed payments. This means that 60% or more of customers who experience a payment failure end up churning involuntarily. Industry benchmarks for dedicated payment recovery solutions range from 50% to 70%, depending on the tool, the business model, and the customer base. FlyCode consistently delivers recovery rates at the top of this range, with customers seeing a 16–25% lift over their previous recovery rate. For example, BUBS Naturals went from 51% to 66% recovery in their first month with FlyCode, and other brands have reported even higher gains. The key difference is that FlyCode's AI models are trained on your specific business data and continuously adapt, rather than applying generic retry logic across an entire network.
What's the difference between involuntary churn and voluntary churn, and how do failed payments cause it?
Voluntary churn happens when a customer actively decides to cancel their subscription—they click the cancel button, downgrade, or choose not to renew. Involuntary churn is the opposite: the customer loses access not because they wanted to leave, but because their payment failed and was never recovered. Involuntary churn is entirely driven by payment failures—expired cards, insufficient funds, bank declines, and processing errors. What makes involuntary churn so damaging is that these customers had no intention of leaving. They represent recoverable revenue, and every one you lose is a failure of your billing infrastructure, not your product. Research across the subscription industry shows that involuntary churn can account for 20–40% of total churn for many businesses. FlyCode attacks involuntary churn on three fronts: AI-optimized retries that recover the payment before the customer even notices, alternate-card-on-file routing that automatically tries backup payment methods, and predictive dunning that reaches customers before their subscription lapses. The result is fewer cancellations, higher lifetime value, and measurable ARR growth of 5–9%.

