Quick Answer
Use the actual provider’s decline code and retry advice. A confirmed temporary refusal may permit a later authorization attempt; an authentication requirement needs the customer’s authentication flow; invalid or stopped credentials require action. A timeout or indeterminate server error is not a confirmed decline: recover the original payment before creating another attempt.
Key Takeaways
- An issuer refusal can be temporary; it is not automatically a hard decline.
- Authentication, insufficient funds and stopped cards require different actions.
- Recover unknown authorization before creating a new payment attempt.
- Retry limits and advice belong to the payment product and network rules.
Use the code to decide what happens next#
A customer’s payment fails at checkout. Calling it soft or hard is useful only if the label leads to the right action. Authentication required, a mistyped CVC and a reported-lost card are all refusals, but they do not share one recovery path.
In common operational use, soft suggests a potentially recoverable refusal and hard suggests that retrying the same conditions will not help. Providers can use these terms differently. Keep the raw response code, payment state and any advice code, and map them under the selected product’s documentation instead of letting the label itself authorize a retry.
This guide concerns inbound collections from customers. Bank rejection of an outbound seller or contractor payout is a separate workflow with its own codes, funding and beneficiary evidence.
Separate confirmed refusal from unknown execution#
| Outcome | What you know | Action |
|---|---|---|
| Confirmed authorization refusal | The selected attempt was refused | Apply the provider’s code-specific next step |
| Authentication required | Customer action is needed | Run or resume the supported authentication flow |
| Authorized or completed | An external financial action exists | Continue capture/fulfilment under its state; do not create a replacement |
| Timeout or indeterminate error | The financial outcome is incomplete | Recover the original resource/request before another attempt |
An HTTP error is not enough to establish a declined card. Stripe’s advanced error guidance warns that a server error can have side effects. Treat the result as unresolved until the original request, resource or reconciliation evidence establishes what happened.
A code-specific example using Stripe#
| Stripe card code | Interpretation in this product | Reader action |
|---|---|---|
| authentication_required | Authentication such as 3DS is needed | Use the supported authentication flow; off-session recovery may require bringing the customer on-session |
| incorrect_cvc | Entered CVC is incorrect | Ask for correct details through the secure payment UI |
| issuer_not_available | Issuer could not be reached | Apply permitted retry guidance after confirming the attempt’s state |
| insufficient_funds | Card lacks funds for this purchase | Offer another method or obtain customer action; do not assume one universal automatic-retry allowance |
| expired_card | Card has expired | Request an updated payment method |
| lost_card or stolen_card | Card is reported lost or stolen | Stop same-credential retry; use generic customer-facing wording |
| duplicate_transaction | A similar transaction was recently submitted | Check for an existing payment before creating another |
These actions are scoped to Stripe’s card decline codes, checked October 3, 2026. They do not define bank-payout recovery or every alternative payment method. Where advice codes or network restrictions provide a more specific instruction, apply that instruction to the actual account and product.
Distinguish replay from a new authorization#
A transport replay repeats the same supported request to recover its result. A new authorization asks the payment system to attempt collection again. The business invoice can stay the same, but the financial attempt is different. Keep both IDs so support can see whether it is recovering an existing result or trying another collection.
For a supported network-error replay, keep the original provider key and parameters. If you change payment details after a confirmed refusal, follow the resource’s update/reconfirmation rules and record the new attempt. Do not change a still-unknown request or create a fresh key solely to escape a cached response.
Stripe’s PaymentIntent guidance recommends reusing the intent when a checkout resumes. Treat the intent’s current state as the starting point for recovery. A page refresh should retrieve the existing payment, not create another independent collection for the same purchase.
Work through a missing response#
Suppose an invoice is for 120 and the collection call times out. The invoice remains unpaid locally, but that does not establish an issuer refusal. The service records the attempt as outcome unknown and recovers the original resource using supported lookup or same-request replay.
If the original succeeded, attach that result to the invoice and stop replacement collection. If it is conclusively refused, apply its code-specific next step and permit a new attempt only under the applicable rules. If it remains unresolved, show the customer a payment-being-checked state rather than a button that blindly starts another charge. These are illustrative design choices, not a promise that every provider exposes identical recovery APIs.
Put retry policy beside the payment product#
Define which codes permit an automated new attempt, its timing and applicable maximums from the provider/network rules for that flow. Separate one-time checkout from recurring off-session billing. The customer’s consent and a valid mandate do not override a do-not-retry instruction or permit repeated attempts without the required authentication.
Use backoff for transient transport failures under the same-request contract. Use a billing recovery schedule for genuinely failed recurring collections where permitted. Do not copy a transport retry count into an issuer reauthorization schedule, or invent a global rule that insufficient funds always allows exactly one retry.
An alternative provider should not bypass a blocked card, risk decision or network restriction. Before a new route, establish the original outcome and the rules that permit a new attempt. A shared platform operation ID helps control business duplication; provider keys do not protect across providers.
Make events update the same payment history#
Authenticate incoming events, commit durable intake, then acknowledge before complex downstream work. Process the local financial effect and its marker atomically. Separate event IDs may refer to the same successful collection, so also guard the invoice’s remaining amount and business effect.
Check out-of-order events against the current resource and permitted transitions. A late failure message for an earlier attempt must not overwrite a later success. Preserve the attempt history so the customer’s next action is based on the current payment state.
Give the customer a useful next action#
| Case | Useful message | Avoid |
|---|---|---|
| Authentication | Complete the bank’s authentication step | Repeated background retries with no customer prompt |
| Correctable details | Check and re-enter the requested details securely | Asking support to collect full card data in chat |
| Issuer question | Contact your issuer or choose another method | Claiming you know the issuer’s undisclosed reason |
| Stopped or risk-blocked payment | Payment could not be completed; use a permitted alternative | Revealing sensitive fraud/lost-card indicators |
| Unknown outcome | We are checking this payment; preserve the existing reference | Declaring failure and inviting an immediate duplicate |
Measure recovery without rewarding retry volume#
Track eventual paid invoices, customer actions completed, unnecessary reattempts, unresolved-outcome age and duplicate-collection incidents. Keep provider code, attempt count and product scope in the analysis. More successful HTTP responses or more attempts do not by themselves establish better collection recovery.
The practical goal is a controlled next step for each result. Use the issuer/provider’s instructions for a confirmed refusal and the original operation’s evidence for uncertainty. That distinction keeps checkout useful while preventing a retry loop from turning into duplicate money movement.
Frequently Asked Questions
Does every issuer decline count as hard?
No. Some refusals require authentication, corrected data or a provider-permitted later attempt. Use the actual code and advice rather than classifying every issuer refusal as nonretryable.
Should insufficient funds always receive one retry?
No universal rule applies. Follow the selected payment product’s guidance, network restrictions and customer context. Stripe’s card-code guidance recommends another payment method.
Is a timeout a soft decline?
No. It is an unknown outcome unless provider evidence establishes a refusal. Recover the original payment before permitting another financial attempt.
Can a new key fix an indeterminate error?
A fresh key can create a new financial operation. Do not use it to bypass uncertainty; resolve the original result and use the provider’s supported recovery contract.
What is the difference between replay and retrying a declined card?
Replay recovers the same supported request. Reauthorization is a new financial attempt after a confirmed result, with its own product, network and consent requirements.
When should payment events be acknowledged?
After authentication and durable intake, before complex processing. Commit local effects and processing markers atomically, and check the current payment state before applying delayed events.
Try a related tool
Researched and edited by the Gruv editorial team. Gruv builds cross-border billing, payouts, and finance-operations software for global businesses.
Sources
Educational content only. Not legal, tax, or financial advice.
Related Posts

The Freelance Payment Penalty: A Modeled Audit of Platform Fees, FX Spreads, and Payout Delays
The money rarely disappears through a single, easy-to-spot fee. The real loss is stacked. A marketplace takes its commission, a processor adds a charge for international cards, a bank or payment company converts the currency at a spread, a platform holds the funds before release, and a wire sheds a little to intermediaries on the way in. Each layer looks defensible on its own, but the worker feels the combined result as a smaller deposit and a later payday.

How to Respond to a Subpoena for Business Records
Move fast, but do not produce records on instinct. If you need to **respond to a subpoena for business records**, your immediate job is to control deadlines, preserve records, and make any later production defensible.

A US Expat's Guide to Investing in UCITS ETFs to Avoid PFIC Issues
The real problem is a two-system conflict. U.S. tax treatment can punish the wrong fund choice, while local product-access constraints can block the funds you want to buy in the first place. For **us expat ucits etfs**, the practical question is not "Which product is best?" It is "What can I access, report, and keep doing every year without guessing?" Use this four-part filter before any trade:

