Web shop checkout
Checkout or payment not working: causes and how to fix it
The short answer
Every customer who cannot pay is an order you lose, and some will not come back. Tell us what they see. We find where the payment breaks and quote a fixed price first.
- Backup before every change
- Fixed price before we start
- Remote, anywhere in the world
- Free diagnosis
A payment passes through several links: the checkout page in the browser, your shop, the payment provider and a webhook, which is the message the provider sends back to your shop to say “this order is paid”. When one link fails, customers see an error or you find paid orders stuck as pending. Each link leaves traces in the browser console, the shop logs and the provider dashboard, and that is where we start.
Sound familiar?
Signs that checkout or payment is not working
- The checkout button does nothing, spins forever or shows a general error
- Customers are charged, but the order stays “pending” or “on hold” in your shop
- Payment methods are missing, or only some customers can pay
- The provider shows test payments, or an error such as “invalid API key”
- Card payments fail at the extra bank check (3-D Secure), or the bank window never opens
- The problem started after an update, a theme change or a move to another host
Causes
Why checkout or payment stops working
API keys in the wrong mode
Test keys on the live shop, live keys in a staging copy or keys from another account make the provider refuse or ignore real payments.
Webhooks fail
The provider cannot tell your shop that a payment succeeded, because the webhook URL is wrong, blocked by a firewall or returns an error. The order then stays pending.
JavaScript error or plugin conflict
An error from another plugin, the theme or an optimisation tool stops the payment form from loading, or blocks the 3-D Secure window where the bank confirms the payment.
Checkout pages are cached
A cache plugin, the host or a CDN serves a stored copy of the cart or checkout, so tokens and totals are outdated and the payment is rejected.
SSL or mixed content
An expired certificate or scripts loaded over plain http make browsers block the payment fields, which only work on a fully secure page.
Currency, tax or shipping settings
A currency the payment method does not support, a missing shipping zone or a minimum amount hides payment methods or blocks the order.
Try it yourself
Checking a failing web shop payment yourself
Before you change anything, try these checks. Test with a small real amount or the provider’s test mode on a copy of the shop.
- 1 Place a test order yourself in a private browser window and note exactly where it stops and which message appears.
- 2 Open the browser console on the checkout page. Red errors there often name the plugin or script that breaks the payment.
- 3 Log in to your payment provider’s dashboard. Check that the account is active and in live mode, compare its keys with those in your shop settings, and look for failed webhooks or error events.
- 4 Exclude the cart, checkout and my-account pages from every cache: the cache plugin, the host’s cache and the CDN.
- 5 On WooCommerce, look under WooCommerce › Status › Logs for entries from your payment plugin.
- 6 If it started after an update, roll back that one plugin or the theme on a staging copy and test again.
Our approach
How we fix a checkout that is not working
-
1
You tell us what customers see
Send a short description and, if possible, a screenshot or an order number. We tell you which access we need.
-
2
We back up the shop
We copy the files and the database, including orders, before we change anything, so nothing is lost and every step can be undone.
-
3
We find the failing link and quote
We check the browser console, shop logs and provider dashboard to find where the payment stops, then send a fixed price.
-
4
We fix, test and report
After your OK we fix it, run test payments, check that orders update correctly and send a short report of what changed.
What we need
What we need from you
- An admin login for your shop (WooCommerce, Magento, custom or other)
- Access to your payment provider’s dashboard, or a user with developer rights
- Hosting control panel or SFTP/SSH access, for logs and files
- One or two order numbers that went wrong, and when it started
We ask for the least access that does the job. Payment dashboards let you create a limited user for us that you can remove afterwards. We never need card data.
What we cannot fix
We cannot fix outages at the payment provider, accounts the provider has frozen or still has to verify, or decisions made by a bank or card scheme. On hosted platforms such as Shopify we can only work on your theme code and app settings, not on the platform itself. If the cause lies there, we tell you quickly and help you contact the right party.
Price
Price and what happens next
-
1
Free diagnosis
We find the cause and tell you what is wrong.
-
2
Fixed price
You get a price and a time estimate. Nothing starts without your yes.
-
3
Fixed and reported
We repair it, test it and send a short report.
From €450 excl. VAT
Fixed price, agreed before we start
Is it urgent? Say so in the form or in the chat. We start as soon as we can and give you a realistic time estimate with the quote. If priority work costs extra, you see that in the quote before you agree.
Get it fixedQuestions?
Checkout and payment problems: FAQ
Also see
Related problems
SSL certificate error
“Your connection is not private” means the browser does not trust the SSL/TLS certificate your site presents. On a site that worked before,...
Read more →Broken after an update
A website that breaks right after an update usually has a version mismatch: a plugin, theme or piece of custom code that does not work with...
Read more →HTTP error 500
A 500 Internal Server Error is a generic HTTP status code. It means the server hit an unexpected problem while building your page and cannot...
Read more →Last updated:
Request
Tell us what is wrong
Answer a few short questions. You get a fixed price before we do anything.
Thank you for your request!
We will contact you shortly
An error occurred!
Please try again.