8
10 Comments

How do you deal with Stripe failed payments?

Guys, I have a problem that drives me crasy. Around 20% charges for my infoproduct just declined by Stripe. Does anyone have a similar issue and what did you do? I think to implement PayPal integration as a second checkout option. Any other suggestions?

  1. 1

    Two different problems often get discussed as one in this thread:

    High first-time decline rates (the original post) = payment method or issuer issues. The card is being blocked on initial charge — often a country mismatch, fraud scoring, or card type. Adding PayPal and reviewing Stripe Radar settings is the right move here.

    Subscription payment recovery = a different problem. The first charge worked, but the card has since expired or changed, or there's a temporary funds issue. Retrying the same declined card won't fix an expired card — the customer needs to update their payment method.

    For anyone here dealing with the subscription side: there are now native Stripe Apps that handle dunning directly inside your Stripe Dashboard — no webhook setup, no code. Didn't exist when this thread was originally posted. RecoveryMRR (recoverymrr.com) is one option. Worth knowing the difference before you try to solve the wrong problem.

  2. 1

    The approaches I've seen work, ranked by effort vs. impact:

    Lowest effort (but limited): Stripe's built-in Smart Retries + their "Dunning" email setting. Gets you partway but doesn't customize timing or copy, and the emails are generic Stripe-branded.

    Medium effort: Configure Stripe webhooks to catch invoice.payment_failed events and trigger your own email sequence. Requires dev work, but you control everything. Standard pattern: Day 1 (informational) → Day 3 (urgency) → Day 7 (final warning).

    Highest ROI: Dedicated dunning automation. The math is simple — if you're at $5K MRR and 5% of invoices fail, that's $250/month at risk. A proper recovery sequence gets back 30-60% of that.

    I ended up building RecoverKit for this exact use case — Stripe OAuth connect, automated Day1/3/7 emails, no code needed. Beta is live if anyone wants to test it: https://recoverkit-frontend.pages.dev/connect

    What's your current MRR range? That determines whether DIY or a tool makes more sense.

  3. 5

    Yes I have struggled with this for a long time and spent days researching. It's very frustrating as Stripe does not provide much information. This is my understanding:

    'do not honors' are mostly a credit card provider's bank just not having confidence in the charge. Every bank has it's own risk tolerance models, but the biggest factors I understand are geography - eg US based customers will see this often for international transactions, and if the charge is in a currency that is not their standard. It is hard to get around this. I have stripe accounts in different countries, and found that the do not honor rate would be slightly different between, which I assume is banks having a slightly higher tolerance for that geography.

    My understanding is that a history of fraudulent charges can also obviously reduce this bank confidence, and also charges against brand new Stripe accounts (banks can take a while to build confidence).

    You can ask customers to call their banks to whitelist the charge which can help build up the confidence with banks over time, but it is hard to convince a customer to spend half an hour on the phone, but sometimes you can offer them a free month for example if they do this, which works both ways.

    Most things other than 'do not honor' can be addressed - eg. insufficient funds happens frequently if you are running trials, customers will intentionally use empty cards. Fraud charges you should just avoid entirely.

    The best solutions I've seen are to:

    • turn off trials - this will force a charge to attempt immediately, and likely to continue to work going forward. If it doesn't work at that point, the customer will generally ask you, or just use another card.

    • Use retry / dunning system - Something like Churnbuster, Dunning, or build your own (that's what I did). You'll find that often 'insufficient funds' failures will be resolved if you retry over say 3 weeks as users top up their cards over different period, and occasionally even 'do not honors' will start working.

    • Try to provide currencies matching your customer, I don't have evidence for this, but I think it will help, I understand some cards simply aren't able to charge in particular currencies.

    In regards to PayPal - I also tried this as an alternative, and the end result was worse - customers are very overzealous on disputing charges on PayPal, it's a lot easier for them than calling a bank, so you'll find this happens all the time even if customers have legitimately used the product. I used the integration where it was an obvious PayPal subscription though, if you use them as a back-end provider where it's not visible to the user, this may work better.

    I have heard that some gateways like 2Checkout may have better rates - because they are generally used by bigger providers and inspire more confidence, while it's very easy for frauds to setup on Stripe. I found some of these other providers super clunky to use, and had high charges, so did not go down that path.

    Just noticed you are in Australia btw - so this is where I had this issue originally, and moved account to Hong Kong, and rate has dropped slightly. I have considered moving the account to the US entirely as I think this would drop it the most.

    Curious about others insight into this.

    1. 1

      Thanks mate! It's a great and most comprehensive wrap up of what I was chasing to know. Do you think would the PayPal checkout option offering decrease the number of failed payments? Cheers. Alex.

  4. 4

    In addition to the great suggestions above and insights into the reasons for failures, honestly the best solution I've found is emailing and emailing people to get them to pay. It's a pain, but it works.

    1. 3

      This. We found out that emailing immediately your (would-be) customer is the best way to close that sale.

      Keep in mind that if your customer already made the decision to purchase from you, they're probably upset to NOT being able to buy.

      The best way is then to contact them while they're still thinking about your product—meaning, before they switch context. What we're saying is, you should email them within minutes of the failed payment.

      We had the exact same issue: our checkout was broken and we didn't know it, luckily one of our customer contacted us out of frustration. But Stripe never even alerted us about it.

      That's why we developed CashNotify (https://cashnotify.com): a desktop app, always running, which notifies you of every failed payment, so you can contact your customer ASAP.

    2. 3

      It's true, I recovered a lot of failed payments just sending an automated email with failure explanation and suggestion to try another card. There is one more email I'm sending a day after failing to people who did not become a customer with 20% Off. That works.

  5. 1

    FWIW, I'm having a similar problem, and it seems to come down to the fact that I'm a UK company. As has been mentioned, US banks are pretty overzealous about blocking our charges...

    I've been looking into whether I can set up a Stripe account with a US address, but haven't quite ironed out whether this means I'm due for US tax and other related responsibilities.

    Has anyone else outside of the US tried to set up a US stripe account?

  6. 1

    Have you checked the reason for the failures? If you click on the failed payment attempt it will tell you why the charge is failing.

  7. 1

    This comment was deleted 7 years ago

    1. 1

      Yeah, 90% of failed payments have do_not_honor code.