Practical Guide

Failed-payment recovery for one-off Shopify orders

A shopper who reached your payment step and was declined is not an undecided browser. They chose your product, entered their card, and were refused by a machine. Almost every tool in this category is built for subscriptions and cannot help them.

9 min read
Updated September 2026

The problem almost nobody builds for

Search for failed-payment recovery and every result assumes you sell subscriptions. The tools are called dunning tools, the guides are about involuntary churn, and the advice is to retry a stored card on a schedule until it clears.

None of that applies to a normal Shopify order. There is no stored agreement to retry against and no next billing date to wait for. There is one person, one basket, and an intent that starts decaying the moment the error appears.

The result is a gap. Subscription merchants have a mature toolset. Everyone else has an abandoned checkout email written for a different problem, which tells the shopper their order did not complete without telling them why or what to do about it.

Why these orders hide from your reports

A declined card usually means no order object is ever created, so the attempt does not appear in your order list. It surfaces as an abandoned checkout, grouped with people who simply wandered off. That is why most merchants underestimate this number: the two failures look identical in the dashboard and are nothing alike in intent.

Which declines are worth chasing

Not every failure deserves a follow-up. Chasing a blocked card irritates the shopper and achieves nothing, while a mistyped security code is the easiest revenue you will recover all week. The decline reason tells you which is which.

Insufficient funds

Usually recoverable

The card is valid and active. There was not enough available balance at that moment.

Wait a few hours, then invite a retry. Payday and balance transfers change the answer without the shopper doing anything.

Do not honor

Usually recoverable

The issuing bank declined without giving a reason. This is the most common decline code and the least informative.

Ask the shopper to retry or use a different card. A second attempt often clears, especially from a different device or network.

Issuer fraud rule or velocity check

Usually recoverable

The bank blocked an unfamiliar merchant, an unusual amount, or too many attempts in a short window.

The shopper usually needs to approve the charge in their banking app or answer a verification message, then retry.

3DS not completed

Usually recoverable

The shopper was sent to their bank for verification and never finished it. The session timed out or they closed the tab.

Send a fresh secure link. The original session cannot be resumed, so a reminder without a new link goes nowhere.

Expired card

Needs a new card

The card details are correct but the expiry date has passed.

The shopper has to supply the reissued card. Tell them exactly that, because the generic error will not.

Incorrect CVV or postal code

Usually recoverable

A typo, or a billing address that does not match what the bank holds.

A retry fixes this in seconds. This is the cheapest recovery there is and the one most often left on the table.

Lost, stolen, or closed account

Do not retry

The bank has blocked the card itself.

Do not chase a retry on the same card. Offer an alternative payment method instead, and stop after one message.

Banks deliberately keep decline reasons vague to avoid helping card testers, so your gateway may report several of these as a single generic code. Where the reason is unclear, treat it as recoverable and send one helpful message rather than none.

Speed matters more here than anywhere else

Abandoned cart advice usually tells you to wait an hour before the first message, because someone who left a cart may still be comparing options and a fast message reads as pushy.

A failed payment inverts that. The shopper has already decided. They are often still on the page, wondering whether the problem is their card or your store. A message that arrives while they are still holding the card recovers the order. The same message tomorrow arrives after they have bought elsewhere.

There is a second reason to move quickly. A shopper who cannot tell whether your checkout is broken will not try again, and may quietly conclude your store is not trustworthy. Explaining the failure protects the relationship even when it does not recover the order.

First hour

One clear message with a fresh secure link. This is where most recoverable orders are won.

Same day

A single follow-up if the first went unanswered, ideally on a different channel.

After 24 hours

Stop. Intent has gone and further messages read as pressure rather than help.

What to say, and what never to say

Do

  • Lead with the order, not the failure. They know something went wrong.
  • Give one secure link that starts a fresh payment session.
  • Say plainly that their card was not charged.
  • Offer an alternative payment method in the same message.
  • Make it easy to reply with a question, because many declines are really hesitation.

Never

  • Ask for card numbers, a security code, or an expiry date in the conversation.
  • Blame their bank or claim to know why the bank refused.
  • Send them back to a dead checkout session that cannot be resumed.
  • Discount immediately. The obstacle was the card, not the price.
  • Send a third message. Two is help, three is pressure.

The discount point is worth dwelling on. Offering money off a failed payment teaches shoppers that a declined card produces a coupon, and it spends margin on a problem that a working link would have solved for nothing.

Choosing a channel by order value

Every channel costs something per attempt, and the right one is decided by what the order is worth rather than by preference.

WhatsApp and SMS

Most orders. Immediate, cheap enough to use on every failure, and a link is one tap away. A reply costs the shopper nothing, which matters when the real obstacle is a question.

AI voice call

Higher-value orders only. A call costs several times a message, so it earns its place when one recovery pays for many attempts. It also handles objections a link cannot.

Email

A backstop, not a first move. It is the one channel you almost always have, and the one least likely to be read inside the hour that matters.

A note on consent in the United States

Messages and calls to US shoppers are regulated, and the rules for a transactional message about an order someone just placed are not the same as for marketing. Confirm what you are permitted to send before you automate anything, keep a record of consent, and honour an opt-out on every channel at once rather than per channel.

Measuring it honestly

The easiest way to overstate recovery is to count every order that happens after a message as one you caused. Some of those shoppers would have retried anyway.

  • Count only completed, attributable orders

    The order has to follow the interaction, inside a window you set in advance. Exclude anything cancelled, refunded, duplicated, or already completed before you made contact.

  • Separate carts from payment failures

    They have different intent and different recovery rates. Blending them hides which part of the system is actually working.

  • Hold back a control group

    Leave a small share of failures uncontacted for a period. The gap between the two groups is your real recovery rate, and it is always lower than the headline.

  • Watch opt-outs and complaints, not just revenue

    A rising opt-out rate is the earliest sign that your timing or frequency is wrong, and it shows up long before revenue falls.

Frequently asked questions

What is the difference between failed-payment recovery and subscription dunning?

Dunning is built for recurring billing. It retries a stored card on a schedule over days or weeks because the customer already agreed to be charged again. A one-off order has no stored agreement and no future billing date. The shopper is sitting at your checkout right now with an intent that expires in hours, so the job is to reach them quickly with a working link, not to schedule retries.

Does Shopify recover failed payments automatically?

A declined card means the order is never created, so the checkout is left incomplete. Shopify can send abandoned checkout emails, but those are written for someone who changed their mind, not for someone whose card was refused. The shopper is told the order did not go through without being told why or what to do next.

How long do I have to recover a failed payment?

Far less time than with an abandoned cart. Someone who reached the payment step had already decided to buy, and that decision decays quickly. Treat the first hour as the window that matters and the first day as the outer limit for most orders.

Is it safe to message someone about a declined payment?

Yes, provided you never include card details, never state the decline reason as though you have inside knowledge of their bank, and send them to a secure payment link rather than asking for card numbers in the conversation. Treat it as a transactional message about an order they started, and honour opt-outs immediately.

Which channel works best for a failed payment?

It depends on order value. Messaging suits most orders because it is immediate and cheap. A voice call costs several times more per attempt, so it earns its place only on higher-value orders where a single recovery pays for many attempts.

What does Cartio charge for failed-payment recovery?

The plan buys the rate. Launch is $0 a month and 12% of revenue Cartio recovers. Growth is $99 a month at 7%, Scale is $299 a month at 4%, and Enterprise is 2.5%. The percentage applies only to carts and payments Cartio actually recovers.

Cartio does this automatically

It detects the failed payment on your Shopify store, reaches the shopper on WhatsApp, SMS, or an AI voice call with a fresh secure link, answers their questions, and confirms the order once it goes through.

Launch is $0 a month and 12% of what Cartio recovers. You pay only on revenue Cartio brings back.