Skip to content
AI

What a soft decline really tells you

Reading decline codes so you can act on them.

[Author name]Product, PayServ · · 1 min read
Abstract violet and mint gradient

A decline is not a verdict. It is a message from the issuing bank, and most of the time it says not right now rather than never. This article walks through how to read that message. It also doubles as a sample post that shows every content block the PayServ blog supports.

Hard declines and soft declines

Issuers return a reason with every decline. Some reasons are final, others are temporary.

  • Hard declines mean the payment will not succeed on a retry, for example a closed account or a card reported lost.
  • Soft declines are temporary, for example insufficient funds or a cautious fraud check at the bank.
  • Some codes are ambiguous and are best judged together with the customer’s history.

What to do with each one

  1. Stop retrying hard declines and ask the customer for a new payment method.
  2. Retry soft declines later, at a time that suits the customer’s bank.
  3. Watch ambiguous codes and learn from how they resolve.
Illustrative gradient placeholder standing in for a retry timeline chart
Illustrative image. Replace with a real chart before publishing.

A closer look at timing

Timing matters because a soft decline usually clears once the underlying cause goes away. Read more in How AI recovers failed subscription payments.

A failed renewal rarely means a customer wants to leave.

Watch: the walkthrough

Sample YouTube embed. Replace with a PayServ video.
Sample uploaded video, autoplaying muted on loop.
Sample Lottie animation.
Illustrative small gradient
A small image.
retry.ts
const soft = ['insufficient_funds', 'issuer_unavailable', 'try_again_later'];

export function shouldRetry(code: string): boolean {
  return soft.includes(code);
}
Sample HTML embed. Only administrators can add this block.

Keep reading