The menu and popup now repaint the moment a run settles.Download
All guides

Guide

One re-confirm, then the truth

A declined intent deserves exactly one second attempt. Beyond that, the gateway's own code is the answer, not another attempt.

4 min read

What a decline actually means

A decline is a statement about a moment, not about a customer. The card is valid, the account is open, and the issuer decided against this payment right now.

That makes one re-confirm the honest response: enough to separate a transient failure from a real decline, and no more.

Why more attempts rarely help

Beyond a second attempt, the recovered revenue per attempt falls faster than issuer friction rises. A third and fourth attempt mostly add noise to your acceptance reputation.

The extension re-confirms once, records the gateway's own code, and stops. A run that declines twice reports the second code verbatim.

The code is the outcome

A declined run reports its own code instead of posting a card. That keeps the relay honest about what actually settled, and keeps the menu readable when a card fails.

The Decline retry switch writes straight to storage, so the behaviour can be turned off entirely and the checkout's own decline path restored.

Record it, then read it

Status, decline code and charge id are kept beside the last run. A failure is visible rather than hidden, and a settled run shows the charge id that proves it.

The point is not how many attempts ran. It is whether the outcome is readable afterwards.

Apply it without writing a retry engine

The extension ships the scheduling described here. Install it against a test key and watch one declined card get its attempts.

From theory to test mode

Run one declined card through the sandbox.

The retry schedule, the event log and the recovery are all visible before you touch production.

  • Test mode free
  • No card required
  • Reversible in one deploy