Troubleshooting Common WooCommerce Stripe Payment Gateway Issues
Content
If you're using the WooCommerce Stripe Payment Gateway plugin, you might encounter a few common issues that can disrupt your checkout process. This guide covers the most frequently reported problems and offers solutions to help you get back on track.
1. Express Checkout Incompatibility with Multi-Vendor Plugins
The Problem: Express checkout elements (like Google Pay) may not appear on the checkout page when using a multi-vendor marketplace plugin (e.g., YITH Multi-Vendor). This happens because the plugin creates multiple shipping packages, which the express checkout pop-up cannot handle.
The Solution: Unfortunately, this is a known incompatibility. The WooCommerce Stripe Payment Gateway team has designed the express checkout to work with a single shipping package. You may need to configure your multi-vendor plugin to use a unified shipping method or temporarily disable express checkout on pages where multiple vendors are involved.
2. Payment Gateway Disappears in Safari (Link-Related Bug)
The Problem: In Safari browsers, the Stripe Link express button and sometimes the entire Stripe payment gateway can disappear. This issue is inconsistent but persistent and is tied to the Link payment method.
The Solution: The most reliable workaround is to disable the Stripe Link payment method in your plugin settings. This has been shown to resolve the issue and restore other Stripe payment options. For users experiencing a 'broken' session, clearing all website data in Safari's settings is necessary, as manually deleting cookies and cache may not be sufficient.
3. Payment Methods Displayed Incorrectly
The Problem: Payment methods like Giropay or iDeal are shown to customers worldwide, regardless of their billing country, making the checkout confusing.
The Solution: The plugin's description of dynamically showing relevant payment methods based on location does not always function as expected. Currently, there is no built-in conditional logic to hide payment methods based on the customer's billing country. A common solution is to use custom code to conditionally disable specific payment gateways. For example, you can use the woocommerce_available_payment_gateways filter to manipulate which gateways are shown based on the customer's billing country.
4. Gateway Appears in Unsupported Countries
The Problem: The Stripe gateway remains visible to customers in countries where Stripe is not officially available.
The Solution: WooCommerce does not automatically hide payment gateways based on the user's location. If a customer from an unsupported country attempts to pay, the transaction will simply fail. To improve the user experience, it is recommended to implement a geo-location solution or custom code to hide the gateway for users in unsupported countries, preventing them from attempting a failed transaction.
5. Issues on the Order-Pay Screen with Multiple Gateways
The Problem: On the /order-pay/ page (for paying for a failed order), if multiple payment gateways are available, selecting a non-Stripe gateway may still trigger Stripe's validation scripts, preventing the order from being placed.
The Solution: This is a bug where Stripe's JavaScript is not properly context-aware on the order-pay screen. A temporary fix is to ensure customers use the standard checkout flow. For advanced users, custom JavaScript may be needed to unload the Stripe payment request script when another gateway is selected.
6. Confusing OTP Verification Pop-up
The Problem: A pop-up window for OTP (One-Time Password) verification appears and then quickly disappears, confusing customers during test transactions.
The Solution: This pop-up is a standard security feature (3D Secure) required by certain banks and cards. The behavior you are seeing is likely due to using a specific test card that triggers this flow. To test without confusion, use a different test card number that does not require 3D Secure authentication, such as the card number 4242 4242 4242 4242.
7. Unnecessary Script Loading Affecting Performance
The Problem: The Stripe plugin loads its scripts on every page, even for customers in countries where the gateway is disabled, negatively impacting site performance.
The Solution: To reduce unnecessary load, you can use custom code to conditionally disable the Stripe gateway and prevent its scripts from loading. By hooking into the woocommerce_available_payment_gateways filter, you can remove Stripe entirely for users from specific countries, which should also stop the associated scripts from being enqueued.
While these workarounds can help, always remember to clear your cache after making changes and test thoroughly on a staging site before applying them to your live store.
Related Support Threads Support
-
Express checkout with multi-vendor marketplacehttps://wordpress.org/support/topic/express-checkout-with-multi-vendor-marketplace/
-
Link cause entire Stripe gateway to crash in Safarihttps://wordpress.org/support/topic/link-cause-whole-stripe-gateway-crash-in-safari/
-
Adaptive Pricehttps://wordpress.org/support/topic/adaptive-price/
-
wrong redirection after google payhttps://wordpress.org/support/topic/wrong-redirection-after-google-pay/
-
Country availability / display payment methodshttps://wordpress.org/support/topic/country-availability-display-payment-methods/
-
stripe gateway in countries where stripe isn’t availablehttps://wordpress.org/support/topic/stripe-gateway-in-countries-where-stripe-isnt-available/
-
Bug in /order-pay/ screen and multiple gateway optionshttps://wordpress.org/support/topic/bug-in-order-pay-screen-and-multiple-gateway-options/
-
Stripe validation popup get confused to customerhttps://wordpress.org/support/topic/stripe-validation-popup-get-confused-to-customer/
-
Reduce load of payment gateway in checkout pagehttps://wordpress.org/support/topic/reduce-load-of-payment-gateway-in-checkout-page/
-
Stripe Gateway Reporting incorrect payout.https://wordpress.org/support/topic/stripe-gateway-reporting-incorrect-payout/