More fixes

WooCommerce Stripe payment failed

Customers reach checkout, enter a card, and get There was an error processing your payment. Please try again, or Your card was declined on cards that work everywhere else, or the card field never appears at all. Each failed checkout is a lost sale. Two checks tell you whether Stripe saw the payment and refused it, or whether the request never reached Stripe.

Checkout

What the checks found


  

Check 1: did Stripe see the payment

Open your Stripe Dashboard, make sure the Test mode switch matches what the shop uses, and go to Payments, filter Failed or Incomplete. Find the attempt by time or amount. If it is there, Stripe's own reason is on it: a bank decline code (insufficient_funds, do_not_honor), Blocked by Radar, a failed security check (CVC or postcode), or requires authentication where 3D Secure was never completed. If there is no attempt at all, the payment never left your site, so go to Check 2.

Check 2: what does the shop log say

In WordPress, go to WooCommerce > Settings > Payments > Stripe, turn on Log debug messages, and place one test order logged out in a private window. Then read WooCommerce > Status > Logs and pick the newest woocommerce-gateway-stripe log. An Invalid API Key or No such customer line means the keys are wrong or from the other mode. No log line at all, with a red error in the browser console (F12), means a script on the checkout page stopped the card form before it could talk to Stripe.

What each answer means

What you seeCauseFix
Card field missing or blankStripe's script blocked by a script-delay or combine setting, a console error from another plugin, or the page not on HTTPSExclude Stripe and WooCommerce checkout scripts from delay and combine, fix the console error, force HTTPS on checkout
Invalid API Key in the logKeys pasted from the wrong mode, an old key that was rolled, or test mode left onReconnect the account from the Stripe settings page, or paste the live publishable and secret keys together
Declined in Stripe with a bank codeThe customer's bank refused itNothing to fix on the site; the message should ask them to use another card or call their bank
Blocked by RadarA Radar rule blocks the country, a failed CVC or postcode, or a high risk scoreReview the rule in Radar > Rules; collect the billing postcode at checkout so the check can pass
Incomplete, requires authenticationThe 3D Secure pop-up never opened or was closed, often because a script error or a page reload killed itFix the console error, exclude checkout from caching, update the Stripe plugin
Paid in Stripe, order stays Pending or FailedThe webhook does not reach the site, or its signing secret is wrongAdd the webhook URL shown in the plugin settings to Stripe, paste its signing secret, and allow it through the firewall
Apple Pay or Google Pay button missingThe domain is not registered for Apple Pay, or the browser has no saved cardRegister the domain in the plugin or Stripe settings, and test on a device with a card in the wallet
"Error processing" only for some currencies or amountsThe currency is not enabled on the account, or the total is below Stripe's minimum chargeCheck the currency settings and the minimum amount for that currency

Check it worked

In test mode, pay with Stripe's test card 4242 4242 4242 4242 and the 3D Secure test card 4000 0025 0000 3155: both orders should reach Processing and appear as Succeeded in Stripe. Then switch to live mode and make one small real purchase and refund it. Watch the next few real orders in Stripe's Payments list.

What not to do

If you would rather someone else finds why Stripe payments fail and fixes it, that is what the box below is for. Related: checkout not working, orders stuck on Pending payment, no available payment methods.