WooCommerce orders stuck on "Pending Payment"? Here's what's actually causing it and how to fix it fast.
After 14+ years of WooCommerce development, these are the 7 root causes I see most often:
1. Payment Gateway in Test Mode
Easy to miss after a migration or plugin update. Check WooCommerce → Settings → Payments.
2. Wrong or Missing Webhook URL
For Stripe:
https://yourdomain.com/?wc-api=wc_stripe
If this isn't set correctly in your Stripe dashboard, orders stay Pending forever.
3. Caching on Checkout Pages
Exclude /cart, /checkout, /my-account, /wc-api from every cache layer — plugin, CDN, and server-level.
4. WP Cron Disabled
If DISABLE_WP_CRON is set to true in wp-config.php, payment callbacks never process:
// Remove or set to false in wp-config.php:
define('DISABLE_WP_CRON', false);
5. Plugin Conflict
Disable all plugins except WooCommerce + gateway. Test. Re-enable one by one.
6. Server Firewall Blocking Gateway Callbacks
Especially common on self-managed VPS/dedicated servers. Whitelist payment gateway IP ranges in your firewall.
7. PHP Error During Checkout
Check WooCommerce → Status → Logs. The error is almost always logged there.
Full guide with checklist and quick reference table:
👉 https://amanurrahman.com/blog-post/woocommerce-order-not-completing-fix