Why Does My WooCommerce Checkout Show a 404 Error?
Why a WooCommerce Checkout 404 Happens
WordPress relies on rewrite rules to translate a clean URL like /checkout/ into the correct page request internally, and these rules are cached and only regenerated in specific circumstances (a permalink settings save, certain plugin activations). A change to the server, a migration, or an update that alters URL structure without triggering a rule refresh can leave WordPress unable to correctly resolve the checkout URL, resulting in a 404 despite everything otherwise being configured correctly.
Common Causes of a Checkout 404
- Stale permalink rewrite rules, particularly after a server migration, a caching plugin change, or a .htaccess file being overwritten or reset.
- The page assigned as checkout being deleted, unpublished, or moved to trash, sometimes accidentally during a content cleanup that didn't account for it being a functional page rather than regular content.
- A conflicting page or post using the same slug as the checkout page, confusing which one WordPress should actually serve.
- A caching or CDN layer serving a stale 404 response cached from before a fix was applied, making a genuinely resolved issue appear to persist.
How to Fix the Checkout 404
- Go to WordPress → Settings → Permalinks and simply click Save (no changes needed) to force a rewrite rule refresh — this alone resolves many cases.
- Confirm the checkout page still exists and is published, and re-select it under WooCommerce → Settings → Advanced if needed.
- Check for a slug conflict with another page or post using the same URL.
- Clear all caching and CDN layers after any fix, to rule out a stale cached 404 response.
Checkout completely down and losing orders right now? See WooCommerce fixes for urgent help.
Narrowing down a checkout 404
- Find the checkout page in Pages. If it is in the Trash or a draft, restore or publish it. If it exists, view it from there: when that URL works but
/checkout/doesn't, the page's slug differs from the address your links use. - Confirm the assignment. In WooCommerce → Settings → Advanced, check that the Checkout and Cart pages are the ones you expect.
- See whether other inner pages 404 too. If every page except the homepage returns a 404, WooCommerce isn't the cause. The server's rewrite rules are:
.htaccesson Apache, or the WordPresstry_filesrule on Nginx. - Check any multilingual or translation plugin. Translated pages with their own slugs can leave the checkout assigned to a page in only one language.
After a migration
A site moved to a new server can lose its .htaccess file, or land on an Nginx configuration without the WordPress rewrite rule. The homepage keeps working while every pretty permalink returns a 404. Saving the Permalinks screen fixes it on Apache when the file is writable; on Nginx the server configuration itself needs the rule.
Go deeper
- Full diagnostic guide: WooCommerce Checkout Not Working? Why Orders Are Failing at the Last Step — the step-by-step version of this problem, with the likely causes in the order worth checking.