Before you launch or pay for traffic

Payment result page: say what happened

A buyer who has just pressed Pay wants one answer: was I charged, and is my order safe. The result page is where that answer either arrives or does not.

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

What should a payment result page say?

It should say the outcome in its first line, in plain words: paid, declined, still being checked, or not yet known. It should keep the cart and the address when the payment did not go through, and name the next step, such as trying another card or emailing the store. A simulated test cannot make a real payment, so it reaches only the messages a buyer sees before any charge, and it shows whether those messages are clear.

What this looks like in a report

Who
Desmond, ordering a gift box for a colleague's leaving card
How they arrived
Opened a shared product link on his phone
Where they stopped
Result page, after his card was refused

“The page shows only error 402 and my cart is empty now. Did the money go out? I do not know whether to start again or wait for an email before I try another card.”

The fix. Replace the code with a plain line that says your card was declined, and say nothing was charged only when your payment provider confirms it. Keep the cart and the address, and add a button back to the payment step.

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

A vague result sends the buyer back to the card form, or out of the store

Many result pages answer with a code, a red box or a spinner that never ends. A declined card that returns to an empty cart makes the buyer think the order vanished. A payment still being checked, shown under the words thank you, makes them think it went through, so they order again. A page that needs a reload to finish makes them press refresh, and the browser asks whether to send the attempt once more. You usually see only the success page, because that is the outcome you test for first.

  • The first line says what happened: paid, declined, still being checked, or not yet known.
  • A declined or failed payment keeps the cart and the address, so the buyer can try again.
  • A payment still being checked never uses the words thank you or order confirmed.
  • A refresh or the back button does not place a second order or repeat the charge.
  • The page names a next step and gives an email address for the store.

Each outcome needs its own first line

A buyer reads the first line before anything else, so each outcome gets its own. Wrong: Thank you for your order, shown on every result, with the details below. Right: Your payment went through, and the order number is below, on a success page that is different from the one a declined card sees. Wrong: Error, with a code and nothing else. Right: Your card was declined. Try another card, or use a different payment method.

The result page should also say whether money has moved, but only when the payment provider has confirmed it. Guessing is worse than saying the answer is not known yet, because a buyer who is told the wrong thing will act on it. A line such as your payment is still being checked, and you will get an email when it clears, tells the truth while the provider is still deciding.

A payment still being checked can look like success

Some payments are confirmed after the buyer has already been sent back to your site. The redirect can arrive before the provider has settled the amount, so a page that shows the order as done is showing a guess. Read the states your store can receive, and send each one to a page that says only what is known. The page that shows order confirmed should be reached only after the provider has said the payment succeeded, not after the buyer returns.

The fault is easy to miss in a quick test, where the result arrives before any delay shows. It shows up later as a buyer who got a thank you page and no receipt, then writes in to ask if the order exists. Check your order list for each state you send through a test before you trust the page, and check it again after each change.

A refresh or a second tap should not repeat the charge

A buyer who sees no reply after pressing Pay taps again, or presses refresh. If the result is a form that posts again when reloaded, the second press sends the attempt a second time. The back button is the other route: it can bring back the card form with the old amount, and pressing Pay again sends the attempt once more. Each of these should lead to the same result, or to a page that shows the outcome without sending anything.

Test this on your own staging store with a payment provider's test mode, pressing Pay twice and then reloading the result page. A simulated visitor can press Pay on an empty card form, which shows the validation message, but it cannot reach the processing state, so only your own staging test can show whether a reload repeats the charge. Check the order list after each attempt, because that record is what a buyer will ask about.

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 state the result page never shows

A store adds a wallet, a bank redirect or a deferred payment option, and each one can return a state the page was never built for. Check each outcome after every change to the payment setup, and read its first line on a phone. Rerun the empty card attempt after each change to the payment form. With paid credits, visitors can reach a payment page behind a site password.

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 result page after a real payment?

No. A simulated visitor cannot pay with a real card, so the test cannot reach the result page after a payment attempt. Make each outcome in your payment provider's test mode on a staging copy of the store, then read each result page yourself, on a phone, before you go live.

What can the test reach on the payment step?

The messages a buyer sees before any charge, such as a validation error when the card fields are empty or a card number is incomplete. It shows whether the message names the field, whether it sits near that field, and what the visitor did next. It does not show whether a charge was made, refused or held.

Does the test check my receipt or refund email?

No. Visitors have a working inbox, so an email sent during a run can reach them, but the test does not send a payment, so there is no receipt to check. Place a real order you can refund, and read both emails yourself.

Should the result be a separate page or the same page?

Either works if the first line says the outcome. A separate result page tends to make a reload safer, because the page shows what happened and does not send the attempt again. The fault to avoid is one page that resubmits whenever it is reloaded, so test that reload on your own staging store.

Does the test tell me how many buyers hit a failed payment?

No. It does not predict how many buyers will hit a declined card, and it gives no rate. Failed payment counts come from your payment provider's dashboard, read over real orders.

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 .