

Your customer clicks "Place Order," the payment gateway responds, and then WooCommerce throws a wall: "The submission was not found in the database" — or a related "fault code … not found in the database" message in the logs. The cart looked fine. The payment may even have gone through. The order record is missing or incomplete. That mismatch is why store owners chase "database repair" plugins when the real fault is timing, caching, or a broken write path. Here is what the error means, the five causes we see most often, and a fix sequence that sticks.
WooCommerce does not treat "checkout submitted" and "order exists in MySQL" as the same moment. The browser (or a payment gateway callback) often asks for an order, session key, or store-API submission ID that should already be in the database. When that lookup returns empty, WordPress surfaces a "submission not found" style fault instead of a friendly "try again." From the customer's seat it feels random; from the server's seat it is a failed join between identity (session / order key) and persistence (the order row).
Two layers collide:
You will most often see this at checkout submit, on thank-you / order-received pages, or when a payment gateway webhook or return URL asks WooCommerce for an order that is not there yet — or was never written. Classic shortcode checkout and the Checkout Block / Store API both depend on that hand-off; only the intermediate IDs differ. Search logs for "not found in the database," "submission was not found," and gateway fault strings — not only the exact sentence in a support ticket.
If you are debugging the full purchase path, pair this guide with how to test your WooCommerce checkout so you can reproduce the failure on purpose instead of waiting for the next angry customer email.
The message is the symptom. These five root causes account for nearly every incident we have cleaned up on client stores. Redirect gateways and aggressive page caches sit at the top; pure MySQL corruption is rare.
1 — Payment gateway callback arriving before the order is written (race condition)
2 — Caching delivering stale checkout or order pages
3 — Database write failure (permissions, full disk, timeout)
4 — Plugin conflict overriding the WooCommerce order handler
5 — Session timeout (customer takes too long at checkout)
Animated diagram: a payment callback races ahead of the order write — the session asks the database for a record that is not there yet.
Work top-down. Do not start with schema repair until caches, isolation tests, and host logs say the write path is actually broken.
Purge WP Rocket / LiteSpeed / W3 Total Cache (or your stack), object cache if you use Redis/Memcached, server-level cache in the host panel, and Cloudflare (or other CDN) purge-everything. Retest checkout in a fresh incognito window. If the error vanishes immediately, you almost certainly had a stale session/page — continue to Step 2 so it does not return tomorrow. If it persists after a full purge, move on; you need exclusions or deeper diagnosis.
Exclude /cart, /checkout, /order-received (and translated slugs like /kasse/, /warenkorb/) from page cache. Confirm "cache everything" CDN rules bypass WooCommerce cookies. After exclusions, clear caches again and verify the page HTML changes between two anonymous loads.
Open WooCommerce → Status → System Status. Note outdated database tables, missing tables, or failed scheduled actions. Run WooCommerce → Status → Tools → Update database if prompted. Review Status → Logs for fatal-errors and your payment gateway log around the failed timestamps. A charge without a WooCommerce order is the smoking gun for race or write failure.
On staging (or Health Check troubleshooting mode), switch to Storefront or a default theme and leave only WooCommerce plus your payment gateway active. Place a test order. If the error disappears, reactivate plugins in halves until the offender returns. Roll that plugin back or replace it — do not keep "fixing" production with conflicting checkout hooks enabled.
Ask your host (or open the panel logs) for PHP fatals and MySQL errors in the same window as the customer failures: Lock wait timeout, MySQL server has gone away, Disk full, or max_connections. Fix the infrastructure issue first — no amount of plugin juggling repairs a database that cannot commit orders under load.
A one-off clear-cache is not a strategy. Lock in three habits:
Proper caching configuration for WooCommerce
Regular database health checks
Prove the path still works
After any fix, run a full test purchase — not just a page load. Our guide on WordPress form failure monitoring explains why one-off checks miss overnight breaks. Also verify confirmation mail still leaves the server; a "saved" order that never emails is a different silent failure covered in WooCommerce order confirmation email not sending.
ShopMonitor detecting a WooCommerce database checkout error
Manual spot-checks at 10 a.m. will not catch a race that only appears when the gateway is slow and traffic peaks at 01:00. Plugin auto-updates and CDN rule pushes love the same hours.
ShopMonitor runs automated checkout and form tests on a schedule — fills the cart, submits, and verifies the outcome. When a submission cannot be found in the database, you get an alert the moment the run fails, not after the review lands.
ShopMonitor runs automated checkout and form tests every day – and alerts you the moment something breaks. No code changes. No plugins. Setup in 5 minutes.
No credit card required for the trial.
Last updated: August 2026. Applies to WooCommerce 8.x+ on WordPress 6.5+. Always reproduce on staging before changing live checkout caching.

About the author
Written by the Winning Solutions team — the agency behind ShopMonitor. We built ShopMonitor after years of cleaning up overnight WooCommerce failures that customers noticed first.