WooCommerce checkout not working: How to fix it

WooCommerce checkout not working: How to fix it

Are you having issues with your checkout page? Is your WooCommerce checkout not working properly? We’ve got you covered. In this guide, you’ll learn how to fix the most common problems on the checkout page so you can have your store up and running in no time.

Every store owner knows that the checkout is the most important page for a WooCommerce store because it’s the step where you close the sale. However, it’s also one of the pages that experiences the highest cart abandonment rate. Studies show that most shoppers drop off at checkout due to extra costs, because it’s too long or complicated, or if the site doesn’t seem trustworthy.

We’ve already seen how to customize the checkout and different strategies for checkout optimization in WooCommerce. It’s no secret that having an optimized checkout will help you increase conversions and boost your sales. Taking the time to polish it can have a great impact on your online store.

However, that’s easier said than done. Things can go wrong and create issues on the checkout page that can seriously affect your business. So in this guide, we’ll teach you different ways to troubleshoot the possible causes and fix the problems when your WooCommerce checkout isn’t working correctly.

WooCommerce checkout not working? How to fix common issues

Many things can cause the checkout not to work properly. In this section, we’ll have a look at the solutions to the most common problems to help you have your store up and running as soon as possible.

1. Deactivate plugins and themes

The most common issue that causes the checkout to stop working in WooCommerce is a theme or plugin that creates conflicts. The most effective solution is to deactivate all of the plugins and see which one is causing the problem.

You can check that by going to the checkout, right-clicking anywhere on the page, and going to Inspect > Console. If you see a Javascript error, then some of your plugins or themes are causing the problem. To check which plugin or theme is creating the conflict, you have two options:

  1. Deactivate plugins in bulk
  2. Use the Health Check plugin

NOTE: Before starting, we recommend you do a complete backup of your site in case something goes wrong. Even though deactivating and reactivating plugins shouldn’t cause any issues, having a backup will save you a big headache if it does.

With both options, the idea is to momentarily disable all the plugins (except WooCommerce) and activate a default theme for your user session. That way, you can activate the plugins one by one and check which one is causing the conflict. If you use Health Check, make sure you enter the troubleshooting mode from /wp-admin/index.php?page=health-check&tab=troubleshoot. Also, keep in mind that this tool requires a default theme like Twenty Seventeen or Storefront to work properly.

2. WooCommerce checkout page endless loading

Another common problem that causes the WooCommerce checkout to stop working is the endless loading. In most cases, AJAX causes the issue. The Review Order page loads the payment methods or totals via AJAX and this displays a loading spinner.

However, if there is a problem, the section may fail to load or the spinner may remain without loading the page. If that’s your case, first have a look at WooCommerce > System Status and check the errors.

These are some of the solutions to the most common problems:

AJAX error caused by WordPress settings

A common issue that causes the WooCommerce checkout to stop working is that the WordPress Address (URL) and Site Address (URL) don’t match. AJAX requests only work on the same domain so those two URLs must match.

To check if this is causing your problems, in your WordPress dashboard go to Settings > General and make sure that the WordPress Address (URL) and Site Address (URL) fields match. WooCommerce checkout not working - WordPress Address and Site Address

Conflicts with themes and plugins

As mentioned earlier, plugin and theme conflicts are one of the most common issues that cause the WooCommerce checkout to stop working. To check if that’s the case, go to the page that has problems, right-click and go to Inspect > Console. If you see a JavaScript error, the issue is probably caused by a theme or plugin.

WooCommerce checkout not working - Console JS error If this is the case, deactivate all the plugins and themes following the steps described in point 1.

Problems caused by transactional emails

Sometimes transactional emails related to the checkout may cause the checkout to stop working in WooCommerce. If you suspect that this may be the issue, you can enable a filter to send the emails after the order is complete. This will speed things up and may solve the problem.

add_filter( 'woocommerce_defer_transactional_emails', '__return_true' );

WordPress Memory Limit

The WP memory limit can also create issues and prevent the WooCommerce checkout from working properly. When that happens, you’ll see one of these messages on your site.

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 2356915 bytes) in /home4/xxx/public_html/wp-includes/plugin.php on line xxx

Or

413 Error: Request Entity Too Large

There are two options to fix this problem. You can:

  • Increase the memory yourself
  • Contact your hosting company

If you have some coding skills and want to fix it yourself, you can try any of these three methods:

  • Edit the wp-config.php file
  • PHP.ini file
  • .htaccess file

Let’s have a look at how to locate and edit each of them. Pro Tip: The following methods involve editing core WordPress files. That means that you can break your site if something goes wrong so before you edit it, we recommend you create a full backup of your site. If you don’t know how to do it, follow this tutorial.

A) Edit the wp-config.php file

To access and edit the wp-config.php file you have two options:

  • cPanel
  • FTP Client

If you try the cPanel option, you’ll find the wp-config.php file under File Manager > public_html. On the other hand, if you use an FTP Client, the wp-config.php file is in the public_html folder. Regardless of the method you use, you have to download the file, edit it, and upload it again.

To increase the WP Memory Limit, add the following code before the line that says That’s all, stop editing! Happy blogging.

define('WP_MEMORY_LIMIT', '256M');

This script basically tells WordPress to increase the PHP memory limit to 256MB. If that doesn’t work, you can increase the limit to 512MB but in most cases, 256MB should be enough.

NOTE: It’s worth noting that the WordPress memory can be different from the server memory, so we recommend you set this limit regardless of your server memory settings.

Alternatively, if you don’t feel comfortable editing core files, you can contact your hosting company.

B) Edit the PHP.ini file

Another way to increase the memory limit in WordPress is to edit the PHP.ini file. To do this, go to the public_html folder or wherever you have installed WordPress and look for a file called php.ini. There, paste the following line of code to increase the limit to 256 MB.

memory_limit = 256M
C) Edit the .htaccess file

A third option to increase the WP memory limit and fix the issue that may cause WooCommerce to stop working is to edit the .htaccess file. This file is in the root folder but if you have installed WordPress on your primary domain, you’ll find the htaccess file under the public_html folder. This is a hidden file so make sure you enable the hidden files.

Once you locate the .htaccess file, paste this code to increase the memory limit:

php_value memory_limit 256M

AJAX call error caused by index.html file

Another common issue that may cause the WooCommerce checkout page to stop working correctly is an invalid response from an AJAX call caused by an index.html file.

To troubleshoot this problem, go to the XHR tab (XMLHttpRequest) on the developer console and check the response. If the response is HTML instead of JSON, the issue is probably caused by an index.html file in the root directory.

The easiest way to fix this is to remove the index.html file. However, if you don’t want to delete any files, you can adjust the indexes directive on the server settings and prioritize index.php over index.html.

It’s worth noting that some caching plugins can also add HTML to the JSON response so that can also be the cause of the issue if you use one of those tools.

3. Confirmation emails don’t contain download links

Another common WooCommerce issue that can cause you a lot of trouble is when the confirmation emails you send after a customer purchases a downloadable product don’t contain download links. As you can imagine, this can create a lot of complaints because users aren’t able to download what they’ve just bought.

This issue is caused because the SQL table wp_woocommerce_downloadable_product_permissions is missing in your database. This happens because when you activate WooCommerce on your site, some SQL tables are added to your database. However, this process sometimes may fail if the WordPress SQL tables prefix, stored in the wp-config.php file, is too long.

To fix this issue, you need to rename the WordPress SQL table prefix. The names can contain more than 64 characters so we recommend you choose a prefix that contains no more than 20-25 characters.

To change the WordPress SQL table prefixes, you have two options:

  1. Use plugins like Change Table Prefix or Brozzme DB Prefix. These tools haven’t been updated in a while but they still get the job done.
  2. Rename the tables manually. For this, you’ll need to use phpMyAdmin, reduce the table’s prefix, and update the prefix value in wp-config.php. Then, deactivate WooCommerce and reactivate it to force the creation of the missing SQL tables.

NOTE: Regardless of the method you choose, we recommend you create a backup of your site before starting.

4. Pages not displaying in WooCommerce

If you have issues with pages not displaying content. There can be several reasons for this but in most cases, the following will help you fix it:

  • Create a new page, add the correct shortcode, and publish it.
  • Then, go to WooCommerce > Settings > General to select the page you’ve just created and press Save.

5. Fatal error: Call to undefined function is_woocommerce_active()

If you’re facing this issue and the checkout page isn’t working in your WooCommerce store, there are two probable causes:

  • Outdated plugins
  • Third-party themes

To solve this problem, first, make sure that all your plugins are up to date. If that doesn’t fix the error, deactivate your theme, swap to Twenty Sixteen, and activate the plugin again. Then, you will be able to go back to the theme you prefer.

6. Proceed to checkout and Pay with PayPal buttons aren’t working

If you’re having problems with the Proceed to checkout and Pay with PayPal buttons and the issue isn’t caused by a plugin or theme conflict, you may be able to solve it with a bit of CSS. Sometimes, some <div> containers have a float set that can cause problems.

To fix this, you can clear the floats after they are finished, or set overflow:hidden on the containing <div>. This way, you clip the overflow and hide the rest of the content.

To clear the floats from the <div> container, in your WordPress dashboard go to Appearance > Customize > Additional CSS and paste the following code:

.e1120-2.x-container, .e1120-10.x-container {
  clear: both;
}

Alternatively, you can paste the code in the style.css file of your child theme. If you don’t have a child theme, you can create one or use one of these plugins.

7. ssl_error_rx_record_too_long

If your WooCommerce checkout page isn’t working and you see the following error:

SSL received a record that exceeded the maximum permissible length.
(Error code: ssl_error_rx_record_too_long)

There’s a misconfiguration of SSL/apache. If that’s your case, you’ll need to contact your hosting provider because it’s not a WooCommerce problem. Alternatively, if you don’t need to use SSL you can turn off the Force SSL setting from WooCommerce > Settings.

Additionally, you can disable the Force secure checkout option from the Checkout tab. WooCommerce checkout not working - Disable Force SSL

8. Place order button doesn’t work

If the Place Order button on the checkout page doesn’t work, there’s probably a theme or plugin conflict. Simply follow the steps described above and you’ll get your store up and running in no time.

9. session_start errors

If you see warnings like this in your site header, there’s an issue with your server.

Warning: session_start() [function.session-start]: open(xxx) failed: Permission denied (13) in xxx/wp-content/plugins/woocommerce/woocommerce.php on line XX

This is caused by one of these two things:

  • PHP Sessions aren’t set up correctly
  • The sessions directory (/tmp) is not writable

To fix this you’ll need to contact your hosting provider.

What to do when the checkout stops working?

Having issues on the checkout page is the worst nightmare for any online store. However, if you’re dealing with problems with your checkout, don’t panic. Different problems may have different origins so it can be hard to know what’s causing the issue.

In most cases, a plugin or theme conflict is to blame so try deactivating all your plugins and themes first as described in point 1. If that doesn’t solve the issues, try the different solutions we’ve covered in this guide depending on the type of error message you get. If you don’t find the solution, you can have a look at WooCommerce’s troubleshooting guide.

Conclusion

All in all, several reasons may cause the checkout to stop working in WooCommerce. In this guide, we’ve shown you several solutions to fix the most common problems that most users face. 

Some of these problems are easier to solve than others but in most cases, you can solve them without having to contact your hosting provider.

Could you fix the issues with the checkout page and get your store back up and running? Are you facing problems that aren’t covered in this guide? Let us know in the comments section below! We’ll be happy to help you out!