A soft decline is basically the bank saying "not right now" instead of "no." The payment was rejected, but the reason is temporary. Retry later, and there's a good chance it'll go through.
Here's the good news: about 60-70% of failed payments are soft declines. Recoverable rejections.
What soft declines look like
When Stripe or your payment processor returns an error, the code tells you what type of decline it is. Here are the most common soft declines:
"Insufficient funds" — The account doesn't have enough money. Classic end-of-month situation. Retry after the 5th or 10th when paychecks have cleared.
"Card declined" (generic) — The bank rejected it without giving a specific reason. Often an overly cautious fraud system. A second attempt usually works.
"Try again later" — Temporary technical issue on the bank's side. Wait a few hours and retry.
"Exceeds withdrawal limit" — The customer hit their daily or monthly spending limit. Tomorrow, it should work.
"Processing error" — Timeout or communication error. Retrying immediately might work.
Why these are recoverable
The key difference from a hard decline: the card is still valid. The account exists. The customer can still pay.
The problem is contextual, not structural. Bad timing, not enough money at that exact moment, finicky banking system. Change the context (the timing, the amount, the number of attempts), and the payment has a good chance of going through.
That's why smart retry systems exist. They analyze the error type and pick the best moment to try again.
How to maximize soft decline recovery
Space out your attempts. Retrying 5 times in 5 minutes is pointless. The problem won't resolve itself in a few minutes. Wait at least 24 hours between attempts.
Choose the right moment. Payments go through better mid-week than on a Sunday night. Better mid-month than end-of-month. Better in the morning than at 11 PM.
Adapt to the error type. "Insufficient funds"? Wait a few days. "Processing error"? Retry in a few hours. Generic "card declined"? Try the next day.
Notify the customer in parallel. Even if you're retrying automatically, send an email. If the retry fails again, the customer will already know and can update their card.
Limit the number of attempts. After 3-4 failures over several days, move to plan B: explicitly ask the customer to update their payment method. Too many attempts can trigger fraud alerts on the bank's side.
The trap to avoid
Don't treat all declines the same way. Blindly retrying a hard decline (expired card, closed account) wastes time. Worse, it can hurt your reputation with payment processors.
Before defining your retry strategy, make sure you're distinguishing soft declines (retry) from hard declines (ask for a new card).
Most dunning tools make this distinction automatically. If you're handling this manually, check the error codes returned by your payment processor.