If Stripe is showing “Your card was declined” or “Your card does not support this type of purchase” during WooCommerce checkout, the message comes from the customer’s bank or Stripe’s risk checks, not WooCommerce. The fastest path to a fix is to pull the decline_code from your logs/order notes, then apply the matching remedy below.
This guide shows how to find the exact decline reason in WooCommerce/Stripe logs, common codes and what they mean, and the configuration checks (live keys, webhooks, SCA/3-D Secure) that resolve many failures.
Stripe in WooCommerce keeps saying “Your card was declined.” Sometimes it says “Your card does not support this type of purchase.” How do I troubleshoot and fix this?
stripe-*.log. You’ll see the WooCommerce order number, PaymentIntent ID, and the decline_code if it failed. This is the shortest route to the root cause. (Official WooCommerce Stripe troubleshooting recommends using the logs.)card_declined (do_not_honor)).”live, and recent deliveries are 2xx. Broken webhooks can leave payments incomplete or mis-reported.Stripe returns a generic “Your card was declined” when the bank or Stripe’s risk checks refuse the charge. The decline_code provides the exact reason (e.g., do_not_honor, insufficient_funds, card_not_supported, transaction_not_allowed, authentication_required). Use the code to pick the right fix below.
| Decline code | What it means | Action to fix |
|---|---|---|
do_not_honor / generic_decline |
Bank refused without specifics. | Ask customer to contact card issuer or try a different card/payment method (Apple Pay/Google Pay). Multiple rapid retries usually fail. |
insufficient_funds |
Not enough funds/limit. | Customer must use a different card or add funds; retry later. |
card_not_supported or transaction_not_allowed |
Card can’t do online/e-commerce, international, or MCC-restricted transactions. | Customer contacts bank to enable e-commerce/international use or tries a different card/method. If you sell subscriptions or foreign currency, advise a card that allows it. |
authentication_required |
SCA (3-D Secure) challenge needed and wasn’t completed. | Ensure your Stripe checkout prompts 3-D Secure. Customer must complete the bank’s popup. If it times out, retry and finish the challenge. |
stolen_card / lost_card / fraudulent |
High risk or reported lost/stolen. | Don’t retry; use another payment method. Consider enabling additional risk tools and alternative methods. |
incorrect_cvc / incorrect_number / expired_card |
Card details failed validation. | Have the customer re-enter details or use another card. |
testmode_charges_only / invalid API keys |
Using test keys for a live transaction or wrong keys. | Paste live Publishable and Secret keys in Stripe settings and save. Retry. |
authentication_required usually clear after a successful challenge.stripe- log. Search for your order number or pi_ PaymentIntent; read last_payment_error and decline_code.card_declined (do_not_honor)).do_not_honor): “Your bank declined the transaction. Please contact the number on your card or try another card/payment method such as Apple Pay or Google Pay.”card_not_supported/transaction_not_allowed): “This card isn’t enabled for online or cross-border payments. Your bank can usually enable this instantly, or you can use another card/payment method.”authentication_required): “Your bank needs a quick 3-D Secure verification. Please try again and finish the popup challenge.”fraudulent flags.do_not_honor, card_not_supported, authentication_required), and SCA flows with PaymentIntents.WP Assistant is a free tool created by Atiba Software, a WordPress design and development company located in Nashville, TN. If you need more personalized WordPress assistance let us know, and we’ll get back to you ASAP!