Before you launch or pay for traffic

Payment failed page design: keep the cart

A declined card is the moment a buyer decides whether your shop can be trusted. The page either says what happened and what to try next, or it looks like the site broke.

5 visitors try to .
First test free with an accountRun it from your coding agent

What should a payment failed page say?

A payment failed page should say plainly that the payment did not go through, keep the cart and the details the buyer typed, and put the next choice on the same screen, such as another card or another payment method. A generic error code or an empty cart sends a buyer away, even though the card was the only problem. A visitor never submits a card, so a simulated test cannot reach a declined payment. It checks the step before payment, where the buyer will return.

What this looks like in a report

Who
Tavita, buying a winter jacket from a clothing shop she has not used before
How they arrived
Found the jacket in a search for the shop's name
Where they stopped
Payment form, after pressing Pay once

“The page says Error and a code, and my cart is gone. Did they take the money? I'll try once more, and if the card fails again I'm buying it from somewhere else.”

The fix. Show a message beside the card form that says the payment did not go through, keeps the cart and the typed details, and offers another card or payment method. Disable Pay while the payment is processing, and show Processing on the button until the result returns.

An illustration. Run a test to see your own.See a real sample report

A declined card looks like a broken site to the buyer who sees it

A decline is routine for your payment provider and alarming for a buyer who has just typed their details. If the page says Error code 402 or Something went wrong, the buyer cannot tell whether their card, their address or your shop failed, so they blame the shop. If the cart is empty when they return, they must rebuild the order, and some will not. If they press Pay again while the first attempt is still processing, the screen may show no sign that anything is pending, and a second attempt can follow the first. Each of these is a page problem, not a bank problem.

  • The message says the payment did not go through, in words a buyer uses.
  • The cart still holds every item, with the same total as before.
  • The message sits beside the payment form, where the buyer's eye already is.
  • Pay is disabled while the payment processes, and the button says so.
  • Another card or payment method is on the same screen, not behind a link.

Say the payment did not go through, in words a buyer uses

A decline needs three facts on the screen: the payment did not go through, the order is not placed, and the buyer can try again. Wrong: Transaction failed with code 402. Right: Your card was not accepted. Your cart is still here. Try another card or pay another way. The first version blames nothing and tells the buyer nothing to do. The second tells them their items are safe. The third names the next move. If your payment provider sends a reason you can show safely, such as an expired card, add it. Do not guess a reason when the provider gives none, because a wrong reason sends the buyer to the wrong fix.

Keep the cart and the typed details when the card is refused

A decline that sends the buyer to a new page with an empty cart asks them to start again. Some shops do this without meaning to. A common cause is clearing the cart when the order is created, before the payment succeeds. Keep the cart until the payment is confirmed, and keep the delivery details in the session. Then check the result by reloading the page the decline lands on, and going back once. The cart should show the same items and total, and the delivery fields should still hold what was typed. The card number itself should not come back on the page.

Stop a second press from charging the card again

A buyer who sees no change after pressing Pay presses it again. If the first attempt is still running, two requests can reach the payment provider, and the buyer may see two charges or a confusing decline for the second one. Disable the Pay button as soon as it is pressed, change its label to a processing state, and keep it disabled until the result returns. The server should also refuse a second payment for the same order while the first is pending, so a refresh cannot start another. Check this part with a test order in your store's test mode.

Where a simulated test stops before the decline

A simulated visitor fills the checkout with a delivery address and an item, then reaches the payment step. The report shows the page it reached, the total at that step and a screenshot, so you can check the form the buyer will retry on. It never submits a payment, so a declined card is outside what it can show. You will need to trigger a decline yourself. If your payment provider has a test mode with a card set to decline, running that card through your own store shows the page as a buyer sees it.

What you get with Mimiq

  1. 01

    Run it by hand, or on every pull request

    Paste a link and a task in the app and watch the visitors work. Or run them on every preview deploy: the GitHub Action comments on the pull request, any other CI can call the MCP endpoint, and your coding agent can run it too.

  2. 02

    Bugs and usability problems in one report

    The browser records errors and failed or slow requests on the step they happened. The visitors say where the wording or the steps confused them, and where they left.

  3. 03

    Visitors that behave like your audience

    Each visitor is a different profile with a reason to be there, matched to who the page is for, described by you, or built from your own customers.

  4. 04

    A prompt to fix each problem

    Every problem comes with a fix to paste into Cursor, Claude Code, Lovable or any coding agent, and one prompt hands over the top problems at once. Then send the same visitors through again.

  5. 05

    Follow every visitor

    See each visitor's whole path, step by step with screenshots, and what it was thinking at every step. Ask any visitor a question.

The browser records relevant JavaScript errors and failed or slow app requests encountered during the run, attached to the step where they occurred. The visitors are simulated: they find problems, they do not predict how many real people will convert.

A new payment method can add a decline reason you never tested

Each new payment method brings its own refusal messages, and a page written for cards may show a blank or wrong line for a wallet or a bank transfer. After a change to the payment provider or the methods offered, trigger a decline on each method in test mode and read the page each one produces. With paid credits, a test account lets visitors reach checkout behind a login, so the steps before payment can be rerun.

Starter

Try it on one launch

$9 once
120 credits, never expire

About 4 tests of 5 visitors

  • Visitors on your landing page, signup and checkout
  • Where they left and why, with a fix to copy for each problem
  • Run it in the app or on every pull request
  • Ask any visitor a question, included
  • Test accounts and protected previews
Buy 120 credits

Builder

Test every build

$19 a month
500 credits every month

About 20 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Cancel anytime
Choose Builder

Pro

Test every release, as a team

$49 a month
1,500 credits every month

About 60 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Cancel anytime
Choose Pro

Scale

Test at scale, every day

$149 a month
6,000 credits every month

About 240 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Priority support
  • Cancel anytime
Choose Scale
$0for your first test, with a free account (Google sign-in, no card). It includes 50 credits, enough for 10 visitors. After that a visitor uses 5 credits, and packs start at $9 for 120 credits.
See a sample report

Questions

Can the test show my declined card message?

No. A visitor never submits a payment, so the test cannot produce a decline, and it cannot tell you what a real bank will say. Trigger a decline with a test card in your payment provider's test mode, then read the page as the buyer would, on a phone and a laptop.

Should the message give the bank's reason?

Only what is safe to show and what the provider actually sends. A reason such as an expired card helps the buyer fix it. A vague reason, or one you made up, sends them to the wrong fix. When the reason is unknown, say the card was not accepted, offer a different card or method, and suggest the buyer contact their bank if the card keeps failing.

Should I email the buyer after a failed payment?

You can, and some shops do for an abandoned payment. The test cannot show whether that email reaches a real buyer or what it says in their inbox. Keep it short, name the cart, and link back to the same checkout, not to the homepage.

Does a failed payment page need its own web address?

A separate address helps analytics and lets a buyer reload without starting over, but it is not required. What matters is that a refresh and the back button show the same cart, the same total and the same options, with no second payment attempt.

Keep reading

Send visitors and see what breaks first.

Your first test is free: sign in with Google and it starts right away. Last checked 2026-11-02.

5 visitors try to .