The Five Bugs We Find In Almost Every Checkout

Checkout is where the expensive bugs live. It is the only part of a store where a defect converts directly into lost revenue on the same day.

These five appear again and again. Each one takes under two minutes to check. You can do all five yourself this afternoon.

1. The form clears itself when validation fails

What happens: A customer fills in eight fields, mistypes their postcode, and submits. The page reloads with an error — and every other field is now empty.

Why it matters: They have to start again. Many will not. 17% of US shoppers who abandon a cart say it was because the site had errors or crashed. This is one of the ways a site "has errors" from the customer's side, even though nothing crashed.

How to check: Fill in your checkout completely. Deliberately break one field — a postcode of "1". Submit. Look at whether the other seven fields survived.

Why automation misses it: The test asserts that an error message appears. It appears. The test passes. Nobody wrote an assertion about the state of the other fields.

2. Invalid cards are accepted at the form

What happens: A customer types a card number that cannot exist — wrong length, failing checksum. The form accepts it and sends it onward. The failure comes back from the payment provider seconds later as a generic decline.

Why it matters: The customer now believes their card was refused. Stripe found more than one in three European checkouts allowed submission of an invalid card number. And 42% of consumers say they would never return after a single false decline.

How to check: Enter 4111 1111 1111 1112 — one digit off a standard test card, which fails the Luhn checksum. Your form should catch it before submitting.

Why automation misses it: Tests use valid test cards, because the point is to test the happy path.

3. Nothing happens when you press Pay

What happens: The customer presses the button. No spinner. No state change. Behind the scenes the request is running, but nothing on screen says so.

So they press it again.

Why it matters: Duplicate orders, duplicate charges, and a support ticket. In the worst version the second press cancels the first, and the customer gets nothing while believing they paid twice.

How to check: Throttle your connection — every browser's developer tools can simulate a slow network. Press Pay. Watch what the button does in the two seconds afterwards. It should disable itself and show that something is happening.

Why automation misses it: Automated tests run against a fast local environment. The gap never opens.

4. Discount codes behave strangely on the second attempt

What happens: A valid code applies correctly. An invalid one shows an error. Then the customer applies the valid code again — and the discount stacks, or the total goes negative, or the code silently stops working.

Why it matters: Stacking costs you margin directly. Silent failure costs you the sale, because the customer came for the discount.

How to check: Apply a valid code. Then an invalid one. Then the valid one again. Then remove it and re-add it. Watch the total after each step.

Why automation misses it: One test applies one valid code once. The bug only exists in the sequence.

5. The confirmation email is wrong

What happens: The order completes. The email arrives with a field showing "undefined", or an unformatted date, or the wrong currency symbol, or a broken logo.

Why it matters: It is the first thing a customer receives after paying you. It sets whether they trust the order went through. 32% of consumers globally say they would walk away from a brand they love after one bad experience.

How to check: Complete a real order. Open the email on a phone and on a desktop client. Read every line. Check the sender name is your business, not "no-reply@mailserver".

Why automation misses it: Most suites assert that an email was sent. Very few open it and read it.

The pattern behind all five

None of these are hard bugs. None require deep technical knowledge to find.

They survive because they live in the second attempt, the slow connection, the wrong input, and the email nobody opens. Automated tests check the first attempt on a fast machine with correct data. Developers test the path they built. Customers do none of those things.

That gap is the entire job.

Want the full list for your store? Our checkout-focused Basic package is $349, delivered in three days.

Want a second pair of eyes on your product?

Fixed-price testing from $349, delivered in three days. You get a written report, a video walkthrough, and one free retest after your fixes.

See testing packages