New 24/7 monitoring and daily cloud backups now included in every Shield Pro plan.

Stripe

Learn how to fix WooCommerce Stripe payment failed.

Stripe failures split into customer-side declines and store-side misconfiguration. If the Payment Element never loads, JavaScript or keys are wrong. If payment fails after clicking Pay, webhooks or SCA handling may be broken.

Time: 25-40 minutes Level: Intermediate
Neil McNaught, founder of BugShield and WordPress author
Written by
Written by
Updated
Updated

What this problem looks like

The official WooCommerce Stripe plugin uses Payment Intents and may show Apple Pay or Google Pay buttons. Each requires domain verification in Stripe and HTTPS on your store.

Orders stuck on pending after a successful charge almost always mean webhooks never reached your site or the signing secret is wrong.

Step 1: Payment Element does not render

Open browser console on checkout. Content Security Policy, ad blockers, or minified JavaScript can block js.stripe.com. Disable JS combine in cache plugins and whitelist Stripe domains in CSP headers.

  • Invalid publishable key for the current mode.
  • Checkout not using HTTPS.
  • Another plugin loading an old Stripe.js version.

Step 2: Webhook configuration

Stripe sends charge.succeeded and payment_intent.succeeded events. The endpoint URL must be reachable and return HTTP 200 quickly. Security plugins blocking REST routes to wp-json are a common hosting issue.

text
Example endpoint path (varies by plugin version):
https://yourshop.co.uk/wp-json/wc-stripe/v1/webhook

Step 3: SCA and 3D Secure in the UK and EU

Strong Customer Authentication requires extra steps for many cards. Failed SCA shows as a decline in Stripe logs, not a WooCommerce bug. Test with Stripe test cards that trigger authentication challenges.

Step 4: Express checkout and wallet buttons

Apple Pay requires domain verification in Stripe and Safari testing. Google Pay needs compatible browsers and correct merchant settings. Disable express buttons temporarily if standard card checkout works but wallets fail.

Step 5: Currency and capture settings

Stripe account default currency must support your WooCommerce currency. Authorize-only modes leave orders on-hold until capture in Stripe dashboard or wp-admin. Align capture settings with how you fulfil orders.

When to stop DIY and hire help

Stripe plus subscriptions, deposits, or multi-currency plugins needs careful integration. BugShield resolves webhook failures and checkout JavaScript conflicts at a confirmed price without hourly billing surprises.

Questions answered

WooCommerce Stripe payment failed FAQs

Answers about Stripe declines, API keys, webhooks, order status, authentication, logs, and testing payments without duplicate charges.

Why is my WooCommerce Stripe order still pending?

Webhook not received or misconfigured signing secret. Check Stripe dashboard webhook delivery attempts for HTTP errors.

Can I use Stripe without webhooks?

Not reliably. Webhooks confirm payment after redirect-based methods and async events. Fix webhook delivery instead of disabling them.

Does Stripe test mode charge real cards?

No. Live keys are required for real charges. Using live keys on staging is a compliance risk.

Why does Stripe work on desktop but not mobile?

Often wallet button configuration, responsive theme JS errors, or mobile ad blockers. Test standard card fields separately from Apple Pay.

What causes WooCommerce Stripe payment failed errors?

Card declines, incorrect API keys, wrong mode, blocked Stripe scripts, webhook failures, account restrictions, currency settings, and plugin conflicts are common causes.

Where can I find the reason a Stripe payment failed?

Match the WooCommerce order notes and gateway log with the PaymentIntent or charge in Stripe. Use identifiers and timestamps, not customer card details.

Can wrong Stripe API keys break WooCommerce checkout?

Yes. Publishable and secret keys must belong to the same Stripe account and mode. Restricted keys also need the permissions required by the gateway.

Can a Stripe webhook failure leave a paid order pending?

Yes. Stripe may confirm payment while WooCommerce misses the event. Check webhook delivery and the PaymentIntent before asking the customer to pay again.

Why does Stripe ask some WooCommerce customers to authenticate?

Their bank may require 3D Secure or another verification step. The gateway must let the customer complete it and return to the correct order state.

How should I test a WooCommerce Stripe fix?

Use Stripe test mode and official test cards on staging, then run one controlled live order and confirm payment, webhook, stock, email, refund, and order status.

Would you rather a developer fixed it?

Request a fix at a confirmed price and speak directly with the BugShield developer working on your site.

Request a Fix