WordPress 2 min read

WooCommerce Stripe payments not working: what I check

WooCommerce Stripe payments failing: decline vs redirect fail vs test mode, dashboard vs Woo logs, webhooks and API keys, checkout conflicts, and when to escalate.

WooCommerce Stripe payments not working: what I check

Customer hits Pay with Stripe and nothing good happens. Decline. Endless spinner. Bounce back to cart. Or it “works” in test and dies the second you flip live.

Here’s the order I check WooCommerce Stripe failures before I start swapping plugins for sport.

Decline vs redirect fail vs the test-mode trap

  • Hard decline usually shows in Stripe with a clear code. Card, bank, or risk rules
  • Redirect / return fail looks like Stripe charged or tried, but Woo never got the order complete
  • Test-mode trap is the classic: test keys still in live, or live keys while Stripe is still in test

Get clear which one you’re in. Saves a lot of shouting at the wrong screen.

Stripe dashboard vs Woo logs

Open the Stripe payment and the Woo order side by side. Match amounts, times, and payment intents.

  • Stripe succeeded, Woo still pending → webhook or return URL problem more often than not
  • Stripe failed with a code → fix that cause first, not the theme
  • Nothing in Stripe at all → checkout never handed off cleanly

WooCommerce → Status → Logs, and Stripe’s own logs, tell you more than the front-end error ever will.

Webhook and API key gotchas

  • Wrong mode keys (test vs live)
  • Restricted keys missing payment permissions
  • Webhook secret out of date after a key rotate
  • Site URL changed (www vs non-www, http vs https) so webhooks 404
  • Security / firewall plugins blocking /wp-json/ or Stripe IPs

I re-save the webhook endpoints and fire a test event before I touch anything fancy.

Checkout plugin conflicts

One-page checkouts, custom fields, currency switchers, and “optimise JS” plugins love to break Stripe Elements. Reproduce with a default theme and only Woo + Stripe active if you can risk it on staging.

If it works on staging vanilla and fails on production, you’ve found a conflict, not a Stripe outage.

What I fix vs when to escalate

I’ll sort keys, webhooks, obvious plugin fights, and checkout JS errors. If Stripe risk rules or the bank are declining good cards, that’s their side. If a custom checkout fork is tangled, that’s a proper build job, not a toggle.

If the till’s down and you want a second pair of eyes on a live shop, I do WooCommerce rescue work without the runaround: WordPress and WooCommerce support.

Need a hand with this?

Get help with a broken order journey, custom store features or ongoing WooCommerce care.

A related project

A custom price history feature for WooCommerce

Bespoke plugin work to record product price changes and present the history by date, delivered through an agency.

Talk directly to Adam

Share this article

Back to Blog