What breaks
Payment page stuck on processing: find the wait
The payment page shows a spinner that says processing and never finishes, so the shopper cannot tell whether they were charged. This page shows where the wait sits, and what a simulated visitor can reach before the card.
Why is my payment page stuck on processing?
A payment page sticks on processing when it waits for one answer that never arrives: a shipping or tax figure before the card fields become active, a bank check the shopper cannot see, or a confirmation from the provider that the store never records. Open the Network tab, find the request that is still pending, and read its address. A simulated visitor can reach the first kind of wait, which comes before any card is sent, and the run records the spinner with a screenshot.
What this looks like in a report
“The card box showed a grey spinner that said Preparing payment. I waited, scrolled, then waited again. Nothing moved, so I assumed the store had gone down and I closed the tab.”
The fix. Give the shipping and tax request a time limit, and when it fails or times out, show 'We could not calculate shipping, so try again' with a retry button that enables the card fields once a quote returns. Test with a quote service that never answers in your staging environment before each release.
An illustration. Run a test to see your own.See a real sample report
The spinner says the store is working, and the store is waiting
The spinner tells the shopper that something is happening, and nothing on the screen says what. The page may be waiting for a shipping or tax figure before the card fields become active, or for the provider to confirm a card the shopper already sent. In both cases the page has no fallback, so the spinner never gives way to an error. The shopper cannot see the request that is hanging, so they wait, press the button again or leave. An owner whose session already holds those figures sees the fields become active at once, and never meets the wait.
- Does the spinner start before you enter any card number, or only after you press Pay?
- Does the Network tab show a request with no response, still pending after the spinner starts?
- Does a status address keep returning 404 or 401 while the spinner runs?
- Does a bank check open in a window or frame you cannot see on a phone?
- Does a reload end the spinner, and does the cart still hold the same items afterward?
The spinner before the card fields is a quote that never returns
A payment page often needs a shipping rate and a tax figure before it can lock the total. It can request them when the page opens or when the address changes, and it keeps the card fields disabled until both answer. If one answer never comes, the fields stay disabled and the Pay button keeps spinning. This is the wait a visitor can reach, because it happens before any card is sent. Read the Network tab for a request that stays pending, and note its address.
A quote that hangs for one country and answers for another points at the rule behind that country, not at the payment provider. Change the address to one that fails, then to one that works, and watch the pending request each time. The report lists failed or slow app requests on the step where they happened, so a quote that stalls should show up on the address step.
After Pay, a bank check opened where the shopper cannot see it
Some card payments need an extra check with the shopper's bank, shown in a box over the page or in a separate window. On a phone that box can open behind the page, under the keyboard or off the screen, and the shopper sees only the spinner. The store waits for the provider to say the payment is complete, and the provider waits for the check. Nothing on the page times out, so the spinner keeps going.
The Network tab shows which side is waiting. If the provider's answer says an action is needed and the page never shows that action, the check is hidden. If the store keeps polling its own status address and gets 404 or 401 each time, the store cannot match the payment to an order, and a common cause is a session cookie dropped during a redirect. A simulated visitor cannot send a card, so it cannot reach this part. Check it in the provider's test mode with its published test card numbers.
A payment the provider confirmed and the store never recorded
Some stores finish an order only when the provider sends a confirmation to the store's server, usually called a webhook. If that message is blocked, delayed or rejected, the shopper's page waits for a result the server never recorded. The payment may still have gone through, which is why you check the provider's log before you tell anyone to try again. A shopper who retries can be charged twice if the store does not catch the duplicate.
Check the webhook delivery log in the provider's dashboard for the failed attempt, and the store's own log for the request that came in. A request missing from the store's log, with a delivered one in the provider's log, means the store's endpoint rejected or dropped it. Fix the endpoint first, then send a test event from the provider's dashboard to confirm the fix.
What you get with Mimiq
- 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.
- 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.
- 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.
- 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.
- 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 shipping rule or webhook change can freeze the spinner again
A new shipping rule, a changed tax service or a moved webhook address can bring the spinner back after a release that touched no payment code. Rerun the same shopper after each change, with a quote for each country, and check the pending requests in the Network tab. Owners also test behind a site password and check each preview deploy first.
Starter
Try it on one launch
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
Builder
Test every build
About 20 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Cancel anytime
Pro
Test every release, as a team
About 60 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Cancel anytime
Scale
Test at scale, every day
About 240 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Priority support
- Cancel anytime
Questions
Can a test show the spinner my shoppers see after they press Pay?
No. It cannot tell you what happens after Pay, because a visitor cannot pay with a real card. It can show the spinner that starts earlier, while the card fields wait for a quote. Test the after-Pay spinner yourself, in the provider's test mode.
Was the customer charged if the spinner never stopped?
Check before you reply. The provider's log shows whether a payment was taken, and the store's order list shows whether an order was recorded. A spinner can end with a charge and no order, or an order and no charge. Find that one payment, complete or refund it, and only then email the shopper.
Why does it spin only on my customer's phone?
A phone can drop a session cookie during a redirect, and a box that opens off the screen is hard to see on a small display. Your laptop may keep the session and show the box. Test on a phone in a private window, in the same tab the shopper would use.
Should the spinner have a time limit?
Yes. A spinner with no time limit can run forever, and the shopper leaves without a clue. After the limit, show a message that says what to try next and keep the cart intact. Log each timeout with its request address, so you can see which step hangs.
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.