Your WooCommerce customers
can't pay anymore?
we get the gateway running again.
Diagnostic and fix of WooCommerce payment bugs
Order stuck on "Pending payment" indefinitely, Stripe webhook returning 403, PayPal looping, customer paid but no order created, HPOS breaking everything: every scenario has a precise technical cause. We find it, we plug it back in.
How much you lose every day
Measurements observed across 12 WooCommerce payment audits run in 2025-2026.
lost to specific payment bugs
with a silently failing webhook
after fix on a standard WC store
Every payment plugin has its typical failures
Recognising your gateway is 50% of the diagnostic.
Frequent failures:
- Webhook
/?wc-api=wc_stripereturning 403 → Cloudflare or Wordfence - Order stuck on "pending" → IPN never received
- 3DSv2 not handled on plugin versions < 7.0
- HPOS conflict on plugin versions < 7.5
- Secret key expired after Stripe rotation
Frequent failures:
- "Pay with PayPal" button not displaying → JS SDK not loaded
- Sandbox active in production → test client ID never swapped
- IPN webhook not received → URL changed without updating the PayPal dashboard
- Duplicate orders if the return page is reloaded
Frequent failures:
- Order status "Pending payment" indefinitely → webhook returns 200 but PHP hook crashes
- Multi-currency mismatch with the Stripe account default currency
- Test/live mode confused after migration
- Conflict with WP Rocket on the return page
Frequent failures:
- HMAC / signature invalid after a technical key change
- 3DS redirect bouncing back to a WooCommerce error page
- Server callback returning 500 → broken endpoint
- Currency not supported (EUR/USD) on a multi-currency store
Frequent failures:
- Apple Pay button invisible on iOS →
apple-developer-merchantid-domain-associationmissing from/.well-known/ - HTTPS not valid across the whole site (subdomains)
- Domain not verified in the Stripe / Adyen dashboard
- JS conflict with a GDPR / cookies plugin
Frequent failures:
- Instructions email not sent → SMTP broken (
wp_mail()) - Bank details misrendered → variable not set
- Method disabled by default in some shipping zones
- Conflict with a loyalty plugin that rejects manual payments
Pricing stated up-front
Pre-audit is free. For the intervention, you know exactly what it costs before we touch the code.
Pre-audit
- Payment journey test on 3 cards (Visa, MC, 3DS)
- PSP + WooCommerce log review (
wc-logs/) - Firm quote + recoverable revenue estimate
- You decide whether we continue
Targeted intervention
- Backup of files + DB before intervention
- Fix webhook / API key / HPOS / 3DS / plugin
- Tests on Visa, MC, AmEx, Apple Pay if applicable
- Recovery of orphan orders (≤ 10 included)
- 30-day warranty on the fix
WooCommerce maintenance
- Monthly automated payment replay
- Daily backups externalised automatically
- Alert if PSP webhook errors more than 3 times
- Priority intervention for payment incidents
"WooCommerce payment blocked" is not...
If the whole WordPress site shows "There has been a critical error on this website" and not just the checkout, it's a general WP bug, not a payment bug. Dedicated page.
Critical error page → ❌ Not a store completely downIf customers can't access the site at all, it's not a payment bug but a site outage. Dedicated page.
WC down page →If Stripe/PayPal refuses your business (CBD, vape, gambling, certain crypto), it's a commercial decision by the PSP, not a technical bug. Solution: switch to a PSP that accepts your sector.
WooCommerce payment blocked — frequently asked questions
wp_woocommerce_order_items. Diagnostic via PSP dashboard > Webhooks + wc-logs/./?wc-api=... after payment. If the request fails (firewall, security, fatal), no order despite payment. Immediate check: PSP dashboard > Webhooks > status of recent events. 403/500/502/timeout = webhook not getting through. Causes: Cloudflare blocking PSP IPs, Wordfence in strict mode, endpoint crashing. Fix: whitelist IPs + debug the hook. Orphan orders manually recreated (≤ 10 included).wp_posts to wp_wc_orders. Older plugins still reading wp_postmeta break. Symptoms: paid orders not appearing, method not found errors. Solutions: (1) check HPOS compatibility via WC > Status > Plugins, (2) update non-compatible plugins, (3) if a critical plugin has no HPOS version: synchronisation mode (both tables populated) while you wait, (4) temporarily disable HPOS. HPOS compatibility audit in 1 hour.wc-logs/, auditing wp-config.php, identifying payment plugins and versions, inspecting the child theme. For fixes requiring admin access (plugin activation, gateway config), we create an admin via wp_users in SQL if needed, use it temporarily, delete it afterwards. Free diagnostic possible with limited access.Other issues I handle
Your customers can't pay on WooCommerce?
Free 30-min pre-audit: journey tested, break point identified, recoverable revenue estimated. Quote within 24 business hours.