WooCommerce + Stripe: orders stuck on-hold after payment
Quick answer
When Stripe shows a successful charge but the WooCommerce order stays on-hold or processing, Stripe's webhook to your site is failing. Confirm the Stripe webhook endpoint matches your live site URL, that its signing secret is correct, and that no firewall blocks Stripe — then replay the events to clear stuck orders.
Symptoms
- Charge succeeds in the Stripe dashboard but the order isn't marked paid
- Orders sit on-hold/processing and stock/emails don't fire
- Stripe webhook log shows failed deliveries
Common causes
- Stripe webhook endpoint URL wrong after a migration or HTTPS change
- Wrong or missing webhook signing secret
- Firewall/security plugin blocking Stripe's IPs
- PHP error on the Stripe webhook handler
How to check
- 1.Stripe Dashboard → Developers → Webhooks: check delivery attempts and errors
- 2.Confirm the endpoint URL and signing secret match your site
- 3.Check server logs for errors at the charge time
How to fix it
1. Correct the endpoint + secret
Point Stripe's webhook to your live endpoint and set the exact signing secret in the plugin settings.
2. Allowlist Stripe
Unblock Stripe's webhook IPs in your firewall/security plugin.
3. Replay events
Use Stripe's dashboard to resend recent webhooks so stuck orders complete.
4. Continuously watch the order path
Liulum monitors the payment-to-order path and, on managed sites, can auto-recover the endpoint and re-verify — logged and reversible — so orders don't silently pile up.
How Liulum helps
Liulum watches this path continuously, tells you in plain English the moment it breaks, and on sites it manages can run a safe, allow-listed, reversible repair automatically — so an outage lasts seconds, not hours.
Protect your storeFrequently asked questions
Why does Stripe charge but WooCommerce not complete the order?
Stripe's webhook that tells WooCommerce the payment cleared is failing — usually a wrong endpoint URL or signing secret, or a firewall blocking Stripe. Fix those and replay the events.
How do I recover the stuck orders?
Resend the failed webhooks from the Stripe dashboard once the endpoint is fixed; WooCommerce will then complete the orders, reduce stock, and send confirmations.
Can Liulum prevent this?
Liulum watches the order/payment path continuously and alerts you the moment orders stop completing; on managed sites it can run safe recovery playbooks automatically.