In this essay
A customer approves a purchase in their banking app, returns to the shop and finds the basket unchanged. They have no order confirmation. The merchant records an abandoned checkout.
This is a fictional scenario, but it poses a concrete product question: did the customer stop, did the authentication fail, or did the shop lose the result? Those possibilities need different recovery paths. Treating all three as a failed payment can send a customer back through checkout while the first attempt is still unresolved.
The first useful action is to recover the state of the existing attempt. A browser event tells you what happened in the browser. It cannot, by itself, tell you what every payment participant has decided.

Recover the interrupted checkout
Join the checkout, provider account, payment reference and order intent. Do not start another charge to recover a missing screen.
Record authentication separately. A definitive authentication failure stays failed; any linked payment still needs its own outcome.
Use provider-supported checks and verified updates. Escalate when the recovery window ends; once resolved, classify again.
Only offer another attempt when provider and merchant rules permit it.
Keep authorization and completed capture distinct. Do not call this completed payment. Once capture completes, classify again.
Check whether it already exists. Repair it once or route the exception to its owner, then show the customer the actual status.
Alternative branches are outcomes, not sequential steps. Authentication completion alone never selects the paid branch. Exact states and recovery windows depend on the integration.
Keep three questions separate
EMV 3-D Secure exchanges information between the merchant and issuer to help authenticate the cardholder. The issuer may complete authentication without an interactive challenge or may ask the customer to complete an additional step. EMVCo’s overview describes that role.
For a merchant, three separate questions follow:
| Question | Evidence to retain | What it does not establish |
|---|---|---|
| Did authentication finish, fail or remain unresolved? | The provider’s authentication outcome and relevant reference | Whether the payment was authorized or captured |
| What happened to the payment attempt? | The current provider payment state, linked to the order | Whether the merchant created or fulfilled an order |
| What did the customer see? | Checkout and return-page events, linked to the same attempt | The final state of the payment system |
Stripe’s documented 3DS flow makes the distinction visible: an authenticated result leads to an attempt to charge, and the payment can finish in different states. Authentication completion is therefore insufficient evidence for an order-paid decision. This is a description of that provider’s integration, not a universal mapping of every processor’s response codes. Stripe’s authentication flow
Follow one interrupted purchase
In the illustrative purchase, the merchant creates an order reference and a payment attempt before sending the customer to authentication. The customer switches to their banking app. The app shows that its step is complete. Connectivity then drops before the customer reaches the merchant’s return page.
The product should now have a record to investigate, rather than only an empty browser session. That record connects the order, checkout, provider attempt and authentication reference where available. An approved prompt shown to the customer is useful context for support, but the merchant still needs the provider outcome.
Stripe explicitly documents that a successful payment can be followed by a lost internet connection before the success page loads. Its hosted Checkout integration requires server-side webhook handling for fulfillment rather than relying on the landing page. Hosted Checkout confirmation guidance
When the shopper returns, load the existing order and its permitted recovery state. Do not silently create a second payment just because the browser no longer has the first response. If a new attempt is appropriate, record it as a new attempt under the same order, with the earlier attempt’s disposition preserved.
Decide from the last confirmed state
The following table is a proposed operating design. A team should translate it into its provider’s actual state model and test each transition before release.
| Confirmed situation | Customer experience | Operator action |
|---|---|---|
| Payment completed; order exists | Restore that order’s confirmation | Repair a missing notification without taking another payment |
| Payment completed; order creation failed | Explain that the payment is being reconciled with the order | Recover the order or follow an approved exception path; prevent duplicate fulfillment |
| Authentication succeeded; authorization declined | Explain that this payment did not complete | Preserve both outcomes and offer the permitted retry path |
| Authentication failed or timed out definitively | Explain the failed authentication step | Close that authentication attempt correctly and check the linked payment before retrying |
| Payment authorized; capture remains required | Show the status appropriate to the business’s capture policy | Complete or cancel capture through the documented flow |
| Provider result still unavailable | Say the status is being checked and give a usable reference | Assign an owner and deadline for resolution; avoid an automatic second charge |
“Unknown” is an evidence state, not a permanent customer experience. Set an internal escalation time and decide who investigates unresolved attempts. The customer needs a way to return to the order or contact support; an indefinite spinner is not a recovery design. Do not promise a universal resolution time. Choose one that operations can meet for the payment methods being offered.
Adyen’s redirect Component guide illustrates why naming matters. It separates handling the redirect from presenting a payment result. Its documented Authorised result still requires capture when the integration uses manual capture. The guide also describes asynchronous payment outcomes through webhooks. Those details belong to the specified Adyen integration path; they should not be copied as a state table for another provider. Adyen redirect integration
Give support a timeline they can use
A useful investigation starts with an order reference, not a request for the customer to repeat their card details. The proposed timeline records checkout creation, authentication initiation, any confirmed authentication result, payment outcome, merchant order update and customer notification. Record when an event occurred and when the merchant received it where those times are available.
Keep an unresolved field visibly unresolved. Do not fill a missing authentication result with a payment decline or use the browser’s last page as a substitute for the processor record. If later evidence changes the diagnosis, retain that history so the incident can be explained.
Stripe’s PaymentIntent guidance supports inspecting the current payment state and monitoring server-side events. It also warns that repeated polling is less reliable and may encounter rate limits. An occasional provider-supported inquiry to resolve an incident is different from an unrestricted polling loop. Stripe payment status updates
For operations, the timeline should answer a practical question: can this customer safely continue, or does the existing attempt need resolution first? Restrict access to the records needed for that answer. Authentication secrets, full card details and unnecessary customer data do not belong in a general support conversation.
Test the missing return, not only the happy path
These are proposed tests, not results from a production integration. Use the provider’s supported test environment and record the expected state, observed state and evidence for each case.
- Approve the authentication step and close the browser before the merchant return loads. Recover the same order when the customer comes back.
- Complete authentication but decline authorization. Confirm that support can see both outcomes and the order remains unpaid.
- Time out authentication and receive a definitive failed outcome. Confirm that the application records the failure rather than leaving authentication pending forever.
- Delay the payment notification. Keep the order’s uncertainty visible until the authoritative outcome arrives.
- Deliver the same payment result twice. Confirm that the customer receives one order and that fulfillment is not repeated.
- Return to the confirmation page repeatedly. Confirm that viewing the page cannot create additional charges or orders.
- Use a manual-capture flow. Confirm that authorization is not mistaken for completed capture.
- Lose the merchant’s order update after a confirmed payment. Exercise the exception process with inventory and fulfillment owners involved.
The provider may supply separate test cards or controls for authentication outcomes. Failure injection for the merchant’s own order update is a different exercise. Record what was simulated and what was actually tested; a screenshot of a successful challenge does not prove the recovery path works.
Measure abandonment after reconciliation
A checkout funnel can record that the browser did not return. Label that observation precisely. Before treating it as a lost payment, reconcile it with the provider’s payment outcome and the merchant order record.
A proposed report would distinguish customer cancellation, technical interruption, confirmed authentication failure, authorization decline, unresolved payment and completed payment with a broken return. Keep an order-level view alongside attempt-level events so retries do not inflate the apparent number of customers.
Define the observation window before comparing releases. A result that arrives later can change an unresolved attempt into a completed payment. Preserve that correction in reporting instead of letting the original browser label become permanent.
For the wider protocol and exemption context, read the EMV 3DS flow guide. For retry and duplicate protections, use payment idempotency guidance. This article addresses the handoff back to the merchant: the customer should be able to recover one purchase, with a status the business can explain.
Closing thought and further reading
A customer completes bank authentication but receives no order confirmation. Recover the original payment state before interpreting the checkout as abandoned.
Need help applying this to your business?
Explore practical support for payment operations, product decisions, program delivery and AI automation, grounded in the challenges behind this essay.


