Treat failure as a state, not a verdict
A shopper who sees “payment failed” needs to know whether the order went through, whether a charge is still being processed, and what they can safely do next. A generic red banner answers none of these questions. Start by separating a confirmed card decline from an interrupted browser connection and from a payment still awaiting authentication or processing. Those conditions can look similar on the screen but call for different actions. Stripe’s PaymentIntent documentation distinguishes statuses such as requires_payment_method, requires_action, processing, and succeeded; the exact implementation depends on the payment provider. The shop should map provider states to plain customer language and to its own order state.
Do not assume the bank has explained a decline. Stripe says issuers often return a generic decline, so even the payment provider may not know the precise reason. Tell the customer what is known: the attempt did not complete, or the issuer asked for another step, or the result is being checked. Avoid blaming the shopper, announcing insufficient funds without evidence, or saying that changing a card will certainly work. Where the provider offers a usable hint, translate it into a safe action rather than exposing an opaque code. If a reason is unclear, suggest checking card details, trying another available method, or contacting the issuer.
Offer the next action in place
For a correctable entry error, let the shopper fix the payment detail while retaining their cart, delivery choice, contact details, and reviewed total. Stripe lists incorrect card number, CVC, or expiration date among common reasons for a decline and recommends re-entering information in those cases. For an authentication requirement, send the customer through the provider’s supported authentication path and return to the same checkout context. For a generic decline, offer another eligible payment method where available. Make each instruction specific to the observed state, and leave a clear way to stop or return later without losing the order reference.
Preserve context without preserving sensitive payment secrets. The business can keep a server-side order draft or a customer-safe checkout reference while delegating card collection to its payment provider. Do not display full card details in an error message or a support transcript. When a customer switches payment method, show the current order total and what will be charged before asking them to confirm again. If promotions, stock, or delivery availability have changed, explain the change and request a fresh review rather than quietly charging an altered amount. Recovery should return the person to a known decision point, not to an unexplained new transaction.
Keep payment and order records aligned
A declined attempt should not automatically create a fulfilled order, and a browser error should not automatically cancel a payment that may still settle. The server should use the provider’s authoritative payment status to decide when an order can move forward. Stripe’s status guidance says PaymentIntent status can require another method, confirmation, action, or processing before success; the dashboard’s summary is not always the full state. A shop using another provider should verify its equivalent states. Give staff an order reference and a simple operational view: unpaid, awaiting customer action, processing, paid, or needing investigation, with transitions based on evidence rather than customer assertions.
A retry must refer back to the intended purchase. If a shopper taps Pay again after a timeout, the site should identify the same cart and checkout attempt, check whether payment already succeeded, and avoid creating an independent second order simply because a new page loaded. The exact mechanism depends on provider and architecture; a stable order reference and agreed idempotency handling are common building blocks. Do not tell customers to keep pressing Pay while the result is unknown. Show a checking state and a way to return to the order status instead. This is particularly important when a redirect or authentication screen temporarily takes the person away from the shop.
Walk through two failed attempts
Imagine a shopper ordering a book and a gift, then entering an expired card. The provider returns a decline that calls for corrected card details. The checkout shows that no payment was completed, keeps the selected items and delivery choice, and invites the shopper to update the payment method. Before confirming again, it displays the order total. If the new attempt succeeds, the order moves to paid once the server verifies the provider state. Staff see one order with a failed attempt followed by a successful attempt, not two separate purchases. The customer receives one clear final confirmation.
Now imagine the shopper completes a bank authentication step but the browser loses its connection before returning to the shop. The site cannot infer failure from the missing browser response. It should look up the provider result, display “checking payment status” while uncertain, and avoid offering an immediate blind retry. If the provider still says processing, present that state and a reliable place to check later. If it says succeeded, confirm the existing order. If it clearly says another payment method is required, offer recovery in the same order context. This path protects both the customer from duplicate charges and staff from premature fulfilment.
Test messages and operational recovery
Build test cases around each provider outcome the shop actually supports: incorrect details, generic decline, authentication required, processing, success, and unknown result after interruption. Confirm that the message shown to the shopper matches the provider and order records, and that the chosen action remains usable on mobile and with a keyboard. Check whether the cart survives a decline, whether the price is reviewed again, and whether support can locate the attempt without asking for sensitive card information. Test what happens when the shopper closes the tab, refreshes, uses Back, or opens the checkout link on another device.
Review the operational path as carefully as the screen. Staff should know which state permits fulfilment, which state needs customer action, and which state requires reconciliation with the provider. A support response should refer to a safe order reference and explain the next step without claiming the issuer’s private reason. If the customer reports a charge but the site shows a failed attempt, investigate the provider record before asking them to pay again. Track these cases as customer support and reconciliation work; do not describe a measured decline reduction unless the business has actual before-and-after evidence.
Write the on-screen copy for each state before designing a single generic error component. For a confirmed decline, say the payment was not completed and offer the permitted correction. For an action required state, explain that the customer needs to finish the bank or provider step. For processing, state that the result is still being checked and where it will appear. For an unknown result after a connection loss, avoid claiming either success or failure. Give the customer a stable order reference, a status page or other verified contact route, and a clear instruction about waiting before another attempt. Then make the same meanings available in Traditional Chinese and English if the checkout serves both audiences.
Agree in advance how customer support handles a shopper who presents a bank notification while the shop has no paid order. A bank notification may describe an authorization hold rather than a final completed charge, so support must inspect the provider record and explain only what it confirms. If the provider state and shop record disagree, escalate for reconciliation instead of manually inventing a paid state. Keep a record of the order reference, attempt reference, provider status, and the time checked, without copying full payment credentials into tickets. This gives the customer a concrete follow-up path and prevents staff from treating a screenshot as the sole source of truth.
The decision to offer a different payment method should reflect what the shop can actually process for that cart, currency, and customer. Do not show an alternative simply because it appears in a generic design template. If the alternative changes the amount or the time when funds are collected, explain that before the next confirmation. If no alternative is available, a useful recovery path may be to save the order draft and let the customer contact their issuer or return later. Test that an abandoned declined attempt does not silently reserve scarce stock forever and that any reservation policy is explained. Payment recovery is part of the whole order journey.
Before you proceed
- Distinguish confirmed decline, authentication, processing and unknown outcome.
- Keep the cart and reviewed amount while the customer changes payment method.
- Use provider evidence before marking an order paid or asking for another attempt.


