Start with the Checkout Session, not the message shown in the browser. In Stripe’s embedded Checkout Sessions integration, a session with status: "complete" means payment succeeded; status: "open" means payment failed or was canceled. Retrieve the session on your server, then use its status and any available payment error details to decide whether to remount Checkout, ask the customer to correct or authenticate payment details, or stop retrying.
First confirm you are troubleshooting embedded Checkout
This guidance is for Stripe Checkout embedded in your website through the Checkout Sessions API with ui_mode: "embedded_page". It is not a custom Payment Element integration or a redirect Checkout page. The server creates the Checkout Session and returns its client secret to the browser, where the embedded form is mounted. Keep secret or restricted API keys, prices, and sensitive inventory data on the server. See Stripe’s embedded Checkout quickstart.
As an Amazon Associate I earn from qualifying purchases.
If the integration is actually using Payment Element or redirect Checkout, follow the recovery and confirmation flow for that integration rather than applying embedded Checkout’s session-state guidance.
Use the session status to establish the outcome
- Retrieve the session: On the return page, use the Checkout Session ID in the return URL to retrieve the current session from your server.
- Handle
completeas success: Show the successful outcome only after verifying the session status. Do not treat the customer reaching a return page or a client-side callback alone as proof of payment. - Handle
openas failed or canceled: Stripe documents that an open session means payment failed or was canceled. Remount Checkout to give the customer another attempt.
These statuses and the remount behavior are documented in Stripe’s embedded Checkout guide. They are a better starting point than interpreting a generic message in the page or assuming a form-rendering problem.
#1 Best Overall
- Get your money as soon as the next business day.
- Get set up quickly with no long-term commitments. Download the Square Point of Sale app for free, create an account, and start taking payments anywhere.
- Run your business all in one place with the free Square Point of Sale app. Track your sales, manage inventory, accept tips, send receipts digitally, and more.
- Works with Apple devices with a Lightning connector.
Find the available decline evidence
For a card payment, inspect the payment details in the Stripe Dashboard and API. Where available, review the related PaymentIntent’s last_payment_error.decline_code and the attempted charge’s failure message. Stripe may expose issuer-provided information, but declines can be generic; the merchant cannot always determine the precise reason. Some issuers provide specific explanations only to the cardholder. Stripe describes common causes and the limits of decline details in its card decline guidance and PaymentIntent API reference.
- Incorrect card information: Ask the customer to correct the card details and try again.
- Insufficient funds or another issuer decline: Offer another payment method or ask the customer to contact their issuer if needed. A generic decline is not, by itself, evidence of a Stripe outage.
- Suspected fraud or a no-retry instruction: Do not keep submitting the same payment. Follow the network advice code when present.
- Authentication issue: Determine whether the customer needs to complete or repeat an authentication step rather than simply retrying without addressing it.
Choose recovery based on the customer and failure
| Situation | Useful next step |
|---|---|
| Customer is present and card details are incorrect | Let them correct the details in the remounted Checkout form and retry. |
| Customer is present and the issuer declines the card | Offer another payment method or let them retry if the decline details support it. |
| Customer is off-session | Notify them to return to the site or application to update payment details or authenticate. Do not assume they can complete an on-session action while absent. |
| Card network advice says not to retry | Follow the advice rather than automatically submitting another attempt. |
| Payment method may require redirection for confirmation | Check authentication and page embedding; do not nest Checkout inside another iframe. |
Stripe documents advice codes including do_not_try_again, try_again_later, and confirm_card_data. For charges that permit retries, Stripe’s card-decline guidance sets a maximum of eight retries and warns that additional retries can be treated as potential fraud. That is card-charge guidance, not a universal retry limit for every payment method. Apply the specific advice and avoid indiscriminate retries. See Stripe’s decline and retry guidance.
Rank #2
- Pay one transparent rate per swipe for Visa, Mastercard, Discover and American Express.
- Works in conjunction with most downloadable Square point-of-sale apps on your device. Customers can pay, tip and sign directly on your device. Track payments in cash, gift cards and more. Also lets you send receipts via e-mail or text message, makes it easy to apply discounts, keeps a data and sales history log and more.
- Accepts magstripe credit card payments, including those from Visa, Mastercard, Discover and American Express (fees apply).
- App sends deposits to your bank account within 1 to 2 business days, or enjoy instant deposits (fees apply).
Check 3DS and iframe behavior
Test the authentication path as well as the initial decline. Stripe warns: “Avoid placing Checkout within another iframe because some payment methods require redirecting to another page for payment confirmation.” The embedded Checkout page itself should not be nested inside another iframe when a payment method may redirect. Authentication may fail or be unavailable for a particular card, so investigate whether the customer completed the challenge and whether the resulting status is reflected in the session. See Stripe’s embedded Checkout guidance and testing guide.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Reproduce the failure in test mode
Use Stripe’s documented test cards to determine whether the issue is tied to a normal decline or authentication. These are test-mode values, not real payment credentials.
Rank #3
- USB interface, keyboard emulation, no need to install software to read, configuration software for changing settings available.
- Read data from all 3 tracks, high and low coercivity cards, ISO7811, AAMVA, CA DMV and most magnetic card data formats.
- Work on Windows, Mac and other USB capable systems. Work with TXT, notepad, Word, Excel, POS systems and son on.
- Compact size, with 145cm USB cord, two 3mm-diameter screw holes for fixing at the bottom, a LED indicator light
- Perfect for POS, Banking, Loyalty, Access Control, ID verification and other applications.
| Test scenario | Test card number |
|---|---|
| Successful card payment | 4242 4242 4242 4242 |
| 3DS authentication required | 4000 0025 0000 3155 |
| Card declined | 4000 0000 0000 9995 |
For deeper authentication coverage, Stripe’s testing guide includes 3DS-required success, a decline after authentication, and a 3DS lookup or processing error. Select the case that matches the observed failure. Stripe says not to use its testing environments for load testing because API rate limits apply.
In application tests, simulate the error handling and mock server API responses rather than relying on automated interaction with the protected frontend UI. Stripe’s automated-testing material gives examples of client error objects and varied error codes; those examples cover Payment Element and confirmPayment, so use them as testing principles, not as embedded Checkout API code. See Stripe’s automated-testing guide.
Rank #4
- Accept all major credit and debit cards for one low rate.
- Accepts Visa, Mastercard, Discover, and American Express—no hidden fees.
- Track your earnings and view your complete sales history from the free Square Point of Sale app.
- Works with Apple and Android devices that have a 3.5 mm headphone jack. No charging needed
Verify payment before fulfilling an order
For business-critical work such as fulfillment, confirm payment on the server. Stripe’s Payment Element migration guidance recommends server-side payment events instead of relying on a client callback, because a customer can close the page before the callback runs. That document concerns Payment Element and PaymentIntents; in embedded Checkout, align session retrieval and webhook handling with the Checkout Session integration. Do not fulfill merely because the browser displayed a success screen. See Stripe’s Payment Element migration guidance and embedded Checkout quickstart.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsQuick Recap
Best Value
- MSR90 is a USB emulation keyboard interface that not need any driver or software,USB simply plug and play
- Reads up to 3 tracks of information,can reads ISO7811, AAMVA, CA DMV and most other card data formats
- Threaded inserts for mounting. LED indicator, green light is on when connecting,green light blinks when cards swiped
- Bi-directional swipe reading, superior reading of high jitter, scratched, and worn magstripe cards, reliable for over 1,000,000 card swipes
- Configuration software makes configuration changes easy,works with: Windows OS and Mac OS
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




