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.

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.
Find the right support
A related project
A custom price history feature for WooCommerceBespoke plugin work to record product price changes and present the history by date, delivered through an agency.
Related Articles
Building a WooCommerce Store Versus Maintaining One -- Why They Are Different Jobs
Building a WooCommerce store and maintaining one that handles complex business logic are completely different types of work. Here is what changes when a store becomes operational infrastructure.
Why WordPress Sites Get Slow and How to Fix Them
A slow WordPress site is almost always caused by one of a handful of fixable problems. Here is how to diagnose what is actually slowing yours down and how to address it properly.
Why WordPress Agencies Should Build Their Own Blocks Plugin
Custom WordPress blocks can save time, reduce messy theme code, and make sites easier to manage. DawsonyWeb builds reusable blocks, plugins and WooCommerce tools for businesses and agencies.