If the WooCommerce checkout page is not working, the problem usually originates in one of four places: a cached checkout page, a plugin or theme conflict, payment gateway settings, or the SSL and redirect layer. The “Place order” button may not respond, a payment method may be missing from the list, or an order may remain “Pending payment” even though money has been charged. Randomly deleting plugins or changing settings because WooCommerce is not creating orders conceals the source of the error.

This article covers the diagnostic table by symptom, cache and conflict testing, reading WooCommerce logs, payment gateway settings, the difference between block-based checkout and the classic shortcode, orders left “on hold”, and 3D Secure return errors, in that order. The explanations are based on WooCommerce’s official documentation and our own maintenance process. Onur Freelance is not WooCommerce’s official support channel; for payment provider-specific settings, the relevant provider’s own documentation is the reference.

If orders are being lost, let us examine the checkout flow together

Every customer stuck on the checkout page represents a lost sale. An unresponsive button, a missing payment method, or orders remaining on hold are examined in a free initial assessment; a backup is taken first, then the layer causing the problem is identified. The scope of the work is clarified during the initial consultation.

Diagnosis by symptom: Which layer contains the problem?

The source of a checkout problem can largely be inferred from the symptom visible on screen. The same “not working” complaint can come from caching on one website and a payment gateway key on another. The table below is prepared to identify where to look first:

SymptomPossible causeFirst place to check
The “Place order” button does not respond and the page keeps spinningJavaScript error, plugin/theme conflict, combined scriptsBrowser console, conflict test
Cart appears empty or displays another customer’s cartCart and checkout pages being cachedExclusions in the caching plugin and server cache
Payment method missing from the listGateway disabled, currency or country restriction, block incompatibilityPayment settings, whether checkout uses blocks or a shortcode
Cards are declined but test orders workConfusion between test mode and live keysPayment plugin’s mode setting and keys
Money charged but the order remains “Pending payment”The payment provider’s notification is not reaching the websiteCallback URL, firewall, logs
Error page after 3D Secure verificationReturn address, lost session, SSL or domain mismatchSSL settings, caching, domain consistency

For a WooCommerce checkout page not working complaint, the table is a starting point; if several symptoms appear at once, check caching and conflicts first, as the broadest layer.

First check: Does it affect everyone or only one browser?

The aim of the first check is to distinguish whether the problem is actually on the website or on a single device. Repeat the checkout steps under different conditions and note the results:

  1. Try the checkout page in an incognito window, in another browser, and on a phone using mobile data.
  2. Write down the step where the problem occurs: adding to cart, entering address details, selecting a payment method, or bank verification.
  3. Look for red error lines in the console in the browser’s developer tools.
  4. Note the date of the most recent update, new plugin, or settings change.
  5. Check the WooCommerce orders screen for failed or incomplete order records.

If the problem occurs in just one browser, browser extensions or old cookies may be responsible. If it happens for everyone, examine the website itself and proceed with the steps below.

Page contents

WooCommerce ödeme sayfası çalışmıyor: boş ödeme formu, takılı alışveriş sepeti, kredi kartı simgesi, yükleme halkası ve uyarı işareti illüstrasyonu

Is the caching plugin caching cart and checkout pages?

If the cart, checkout, and My account pages are cached, the WooCommerce checkout page appears not to work; every visitor receives a previously saved copy. WooCommerce’s caching plugin configuration documentationstates that these three pages must remain dynamic because they display information specific to the current customer and cart.

The same document lists the cookies that must be excluded from caching. woocommerce_cart_hash and woocommerce_items_in_cart track changes to the cart; the cookie beginning with wp_woocommerce_session_ enables each customer’s cart data to be located in the database. If caching ignores these cookies, the cart may empty, the checkout form may fail to submit, or the session may be lost on returning from 3D Secure.

Check the following layers:

  • The caching plugin’s page exclusion list (cart, checkout, My account)
  • The hosting provider’s server cache and any exclusion rules it maintains
  • Page caching rules in a CDN such as Cloudflare
  • CSS and JavaScript combining, deferring, and minification settings; temporarily disable them on the checkout page and test

Changing performance plugin settings should not slow down the website; ways to speed up the rest of the website while excluding checkout are explained in the WordPress website loading slowly guide .

How do you test for conflicts when the “Place order” button does not respond?

An unresponsive button usually results from a plugin or theme conflicting with checkout scripts; identify the culprit by testing with a default theme and only WooCommerce active. WooCommerce’s conflict testing documentationrecommends switching to a default WordPress theme such as Twenty Twenty-Five or the Storefront theme, and temporarily deactivating all plugins except WooCommerce and the plugin experiencing the issue.

The documentation recommends performing this test in a staging environment, a copy of the website, rather than on the live website with orders and visitors. Changing the theme on a live store can show visitors a broken storefront. If no staging environment is available, test at the lowest-traffic time and take a backup first.

If checkout works with a default theme and only WooCommerce active, reactivate plugins one by one; the plugin that breaks checkout again is the conflicting plugin. Types that frequently cause checkout problems include caching and performance plugins, checkout field editors, bot verification plugins, and security plugins. If changing the theme resolves the issue, examine the theme’s checkout templates or custom code.

What should you look for in WooCommerce › Status › Logs?

The most concrete clues to payment errors are in WooCommerce logs; the screen called WooCommerce › Status › Logs in official documentation appears as Durum › Günlükler in the Turkish interface. According to WooCommerce’s logging documentation , records are written by default to the wc-logs subfolder in the uploads directory, or to the database depending on settings, and can be filtered by source.

WooCommerce’s PHP error log documentation states that the record named fatal-errors on this screen stores PHP fatal errors. Each entry includes the error’s time, message, file and line, and stack trace. The plugin folder name in the file path often directly identifies which plugin caused the problem.

If the WooCommerce checkout page is not working but no warning appears on screen, this is still the first place to open. Most payment plugins create a separate log source under their own name; some require enabling a debugging option in the plugin settings for detailed logging. When examining logs, use the problem order’s time and look at records from the same minute. Before sharing a log, check that it contains no customer details or fragments of keys.

Which settings should be checked if a WooCommerce payment method is missing?

If a WooCommerce payment method does not appear, first check WooCommerce › Settings › Payments; if the method is not enabled here, it will not appear at checkout either. If it is enabled but missing, the problem usually comes from the gateway’s own restrictions or the checkout page’s structure.

Settings that can cause a payment method to disappear from the list include:

  • Currency: If the payment provider does not support the store’s currency, the method may be hidden; if a multicurrency plugin is used, check the selected currency separately.
  • Country and region: Some gateways appear only for particular billing countries; WooCommerce’s selling countries setting also affects this list.
  • Amount limits: Methods such as installments or cash on delivery may have minimum and maximum cart totals defined.
  • Shipping method: Methods such as cash on delivery can be restricted to particular shipping options.
  • Incomplete connection: A gateway without a store ID or API keys entered may be missing from checkout even if it appears enabled in settings.

Confusion between test mode and live keys

Most payment gateways work with separate test and live sets of keys; payments are rejected if test keys are used in live mode or a real card is used in test mode. The WooPayments documentation for WooCommerce’s own payment plugin also states that test mode works only with test cards, orders with real card details will fail, and test mode must be disabled before accepting live payments. Since mode and key arrangements can differ with other payment providers, consult the provider’s own integration documentation.

Secret keys, API passwords, and store passwords must not be shared with anyone; do not paste them into email, messaging apps, or support forums. When obtaining support, provide only which mode is selected, rather than the key itself. If a key is suspected of leaking, generate a new one in the payment provider’s dashboard.

Block-based checkout or the classic shortcode?

In WooCommerce, the checkout page is created either with the block-based Checkout block or the classic shortcode, and some payment plugins work correctly with only one of them. According to WooCommerce’s customizing cart and checkout pages documentation , cart and checkout blocks are the default experience for stores installed after version 8.3, released in November 2023.

The same document states that a payment gateway incompatible with blocks will not appear among payment options. If an incompatible plugin is active, selecting the Checkout block in the editor shows a warning in the settings panel and a button to switch to classic checkout with one click. To revert, select the block and choose “Classic Shortcode” from the transformation menu; because cart and checkout blocks work together, converting both at the same time is recommended.

CriterionBlock-based checkoutClassic shortcode
Stores where it is the defaultNew installations after WooCommerce 8.3Older installations and manually changed pages
Plugin compatibilityGateway block support is requiredMost older plugins were written for this structure
Typical symptomPayment method never appears in the listTheme template or field editor conflict
Editing methodBlock editorTheme templates and plugin settings

WooCommerce’s order status documentation also states that block-based checkout creates temporary “Draft” records before an order is submitted. If only draft records accumulate on the orders screen and WooCommerce appears not to create orders, the checkout step is getting stuck during submission.

Blocks, shortcode, or plugin? Let us identify the source together

When a payment method disappears, mixing page structure changes, plugin deletion, and reentering keys makes the problem larger. The existing settings, logs, and checkout page structure are examined to determine which change is needed. The initial assessment is free; the scope of the work is clarified during the initial consultation.

What happens if payment was received but the order remains “On hold”?

If money has been charged but the order remains “Pending payment”, the confirmation notification the payment provider should send to the website has usually not arrived. This background request from the payment provider’s server to the website’s callback address is what updates the order status according to the payment result.

WooCommerce’s order status documentation defines the statuses as follows:

  • Pending payment: The order has been received but payment has not been made; the customer’s action is usually awaited.
  • On hold: Payment confirmation is awaited and stock has been reduced; usually seen with manually verified methods such as bank transfers.
  • Processing: Payment has been received and stock has been reduced; the order awaits shipping.
  • Failed: Payment has failed or been declined; reduced stock is restored.

It is normal for a bank transfer order to appear “On hold”; a card-paid order remaining “Pending payment” for a long time can indicate a notification problem. Notifications can be blocked by maintenance mode, firewall or bot protection rules, or a callback address not updated after a domain or http/https change. If notification delivery records are available in the provider’s dashboard, failed requests can be viewed there and compared with WooCommerce logs from the same time.

Do not manually change an order to Processing without confirming in the provider’s dashboard that payment actually completed. Manually correcting statuses without resolving the notification problem causes confusion in later refund and accounting records.

Errors returning from 3D Secure: How do you check SSL and mixed content?

An error after 3D Secure verification usually results from the session or secure connection breaking when the customer returns from the bank’s page to the website. If the cart session cannot be found, or the address switches from https to http or between www and non-www, payment may fail to complete.

WooCommerce’s SSL and HTTPS documentationstates that most gateways require SSL and recommends using HTTPS across the entire store, rather than only at checkout. It also states that after SSL installation, the WordPress address and site address on Settings › General should be updated to begin with https. If some scripts, images, or stylesheets on a secure page are requested over http, the browser shows a mixed content warning and may block some scripts.

For 3D Secure return problems, check that the website opens at one consistent address (fixed https and www preference), return addresses are excluded from caching, the security plugin does not block incoming return requests, and there are no mixed content warnings in the browser console. SSL’s role in secure payments is covered in detail in the SSL, HTTPS, and secure payment guide .

Test order checklist

After every fix and major update, test the checkout flow from beginning to end along the route a real customer would follow, avoiding an unexpected WooCommerce checkout page failure. We follow this list in our maintenance process:

  1. Add a product to the cart in an incognito window and check the cart page and total.
  2. Proceed to checkout separately as a guest and with a registered account.
  3. Verify that every active payment method appears and can be selected.
  4. If the gateway is in test mode, use only test cards published by the provider; if live, use a real order for a small amount.
  5. Check that the thank-you page opens after returning from the 3D Secure screen.
  6. Check that the order is created with the correct status in the dashboard and that stock is reduced.
  7. Verify that order emails reach both the customer and the store.
  8. Check that WooCommerce logs contain no error entry for the same time.
  9. Refund the real-money test order through the payment provider’s dashboard and add a note.

During this round, also check that the distance sales agreement and preliminary information consent checkboxes work on the checkout page; the scope of these texts is explained in the e-commerce website legal requirements article.

Common mistakes and the correct approach

Damage during payment faults often comes from rushed interventions. Deleting and reinstalling the payment plugin can lose settings and keys; the correct approach is to deactivate it first and test. Use staging or a low-traffic period instead of changing the theme on a live website to find a conflict. Changing plugins without reading the error log can reproduce the same problem with another plugin.

When should a WooCommerce checkout error be left to a specialist?

If a WooCommerce checkout error is not resolved within an hour through cache clearing and conflict testing, or money is charged without an order being created, specialist support limits lost sales. The intervention should be systematic, particularly if no current backup exists, logs contain unexplained fatal errors, payment provider notifications are rejected, or the problem began with an update.

For one-time faults, the WordPress troubleshooting service diagnoses and resolves the problem. If the store needs to be planned correctly from the start, the e-commerce website development service covers payment, shipping, and legal pages together; e-commerce website prices start at 24,000 TL. The steps for building a store on WordPress are in the building an e-commerce website with WordPress article.

If you want updates performed with backups and tests and the checkout flow tested regularly to prevent WooCommerce checkout page failures recurring, WordPress maintenance costs between 500–2,000 TL per month depending on the website’s size and scope. In the maintenance routine, the test order checklist is followed after every update round and operations are recorded.

Let us connect the checkout flow to a reliable store routine

If checkout is not working now, the first priority is to restore sales; once the problem is resolved, the next step is preventing recurrence. The existing store is reviewed in a free initial assessment, examining payment and cache settings, plugin compatibility, and the testing routine together. Get in touch through WhatsApp or by phone for information, to compare options, or to get started immediately.

Frequently asked questions

Try the checkout steps in an incognito window and on a different device, noting where the problem occurs. Then check that cart and checkout pages are excluded from caching and examine error records under WooCommerce › Status › Logs.

A plugin or theme conflicting with checkout scripts, or a performance plugin combining scripts, is usually responsible. WooCommerce recommends a conflict test by switching to a default theme and temporarily disabling plugins other than WooCommerce; perform this in staging if possible.

The method may be disabled under WooCommerce › Settings › Payments, restricted by currency, country, amount, or shipping, or missing API details. If checkout uses blocks and the gateway is incompatible with blocks, the method never appears in the list.

Select the Checkout block in the editor and choose “Classic Shortcode” from the transformation menu; do the same for the cart block. If an incompatible plugin is active, selecting the block makes WooCommerce display a one-click classic checkout switch in the settings panel.

The confirmation notification the payment provider should send to the website most likely did not arrive. Check the callback address, firewall, and maintenance mode; do not manually change the order status without verifying completed payment in the provider’s dashboard.

According to WooCommerce’s order status documentation, “On hold” indicates orders awaiting payment confirmation with stock reduced; this is normal for manually verified methods such as bank transfers. Once payment reaches the account, manually change the order to Processing.

The session may be lost on return from the bank page, the address may switch between http and https or www and non-www, or the security plugin may block the return request. Run the entire website at one HTTPS address and exclude return addresses from caching.

The scope of one-time faults is clarified during the initial consultation; for ongoing monitoring, WordPress maintenance costs between 500–2,000 TL per month, while e-commerce website development starts at 24,000 TL. Onur Freelance is not WooCommerce’s official support channel.