Running the store yourself?
This guide covers the checks and fixes that protect store revenue, step by step.
Or hand the store to us
Our Commerce plan at $199/mo covers checkout testing, gateway monitoring and store speed work.
Last updated: August 2026
Before anything: define "not working"
Different symptoms, different causes:
- Button does nothing when clicked → JavaScript error (layer 3)
- "Payment declined" for every card → gateway credentials/mode (layer 1)
- Spinning forever, then error → gateway timeout or plugin conflict (layers 1-2)
- Cart empties itself / "session expired" → caching on checkout pages (layer 4)
- Works on desktop, fails on mobile → often a specific wallet (Apple Pay) or a mobile-only script conflict
- Customers report failures but tests work for you → check whether it's one card type, one country, or one device class
Also check WooCommerce → Status → Logs. Gateway plugins log their errors, and the log frequently hands you the answer in plain text.
Layer 1: The payment gateway
Expired API keys, a gateway accidentally left in test/sandbox mode, a disconnected Stripe/PayPal account (webhook or OAuth token lapsed), or the processor flagging the account. Log into the gateway's own dashboard, Stripe and PayPal both show declined/failed attempts with reasons. If the gateway shows no incoming attempts at all, the site isn't even reaching it, which points down the tree.
Quick test: enable the built-in "Cash on delivery" method temporarily and try checking out. If COD succeeds, the store works and the problem is isolated to the payment gateway connection.
Layer 2: Plugin conflict
Checkout touches more plugins than any other page: payments, shipping, tax, coupons, upsells, analytics pixels. If checkout broke right after updates, roll back the most recent one first. Otherwise do the standard conflict test on a staging copy: deactivate everything except WooCommerce and the gateway, confirm checkout works, reactivate in batches. Never run this experiment on the live store during business hours.
Layer 3: JavaScript errors
A dead place-order button is classic JS breakage. Open the checkout page, press F12 → Console, and attempt an order. Red errors naming a plugin's script file identify the culprit. Common sources: optimization plugins minifying/combining scripts (exclude checkout from optimization, always), outdated theme code after a WooCommerce update, and third-party pixels injected by tag managers.
Layer 4: Sessions and caching
Checkout must never be cached. If your cache plugin, host, or CDN is caching cart/checkout pages, customers get stale sessions, vanishing carts, and nonce errors ("checkout session expired"). Verify cart, checkout, and my-account are excluded from every caching layer, plugin, server, and CDN. After changing cache settings, purge everything and retest in an incognito window.
The weekly 10-minute habit that makes this article unnecessary
Place a real test order once a week (refund it after), on mobile, with your primary payment method. Then before any promotion: test every active payment method, every active coupon, and the exact landing-page-to-checkout path your ads use. Stores we maintain get an order-process check every month as standard, plus checkout monitoring, because checkout failures are silent, and silence during a sale is the most expensive sound in e-commerce.
FAQ
Checkout broke during our biggest sale, what's the fastest triage? Enable an alternate payment method (COD or a second gateway) immediately so revenue keeps flowing, put a notice on checkout, then debug. Restoring a path to purchase beats a perfect diagnosis.
Apple Pay / Google Pay stopped while cards work, why? Wallets have extra requirements: valid SSL, domain verification files, and correct merchant registration. A domain or certificate change silently breaks them until re-verified in the gateway dashboard.
Orders complete but show as "pending" forever, same problem? That's a webhook failure: the gateway can't notify your site of the payment result. Re-save/reconnect webhooks in the gateway settings and check the site isn't blocking the gateway's callback IPs.
How much revenue does a broken checkout lose? Your daily store revenue, essentially, minus the rare customer who emails instead of leaving. Divide last month's revenue by 30; that's the daily cost of not noticing.
Protect your store revenue automatically
Our Commerce plan covers weekly checkout and order-flow testing, payment gateway monitoring, staging, store speed work and peak-season readiness, so silent failures stop costing you orders.