Payment Plugins for Stripe WooCommerce 4.0.0

This is version 4.0.0-rc.2 โ€” a release candidate. Before we push this update to 100,000+ stores on WordPress.org, we’re asking merchants to test it against their setup and report any issues. Download 4.0.0-rc.2 and submit any feedback to the Github Issue Tracker.

What’s Coming in 4.0.0

When we released Payment Plugins for Stripe WooCommerce back in 2019, our goal was simple: build a merchant-first Stripe integration that gave WooCommerce store owners more flexibility and control than anything else available. Since then, more than 100,000 stores have made it their payment plugin of choice, and we’ve never stopped looking for ways to make it better.

Version 4.0.0 is six years of lessons learned put into practice โ€” a major update that builds on everything that’s made this plugin great and sets it up for the future.

This release brings several improvements merchants have asked for, along with under-the-hood changes that set the plugin up for the future. Here’s what’s new.


A Modern Foundation Built for What’s Next

Version 4.0.0 brings the plugin’s codebase fully up to date with modern JavaScript and PHP patterns. This isn’t something most merchants will notice directly โ€” but it’s what powers everything else in this release and what allows us to move faster on new features, Stripe API updates, and WooCommerce compatibility going forward.

One thing we were deliberate about: every filter and hook we’ve ever shipped still works. If you or a developer has written custom code that extends or hooks into Stripe plugin behavior, it will continue to work in 4.0.0 without any changes.

For developers
We’ve also published a companion technical post walking through the new architecture in detail โ€” the dependency injection system, the new Controller/Gateway model, how scripts are now loaded, and what changed under the hood. Read the technical deep-dive โ†’

Google Pay No Longer Requires a Merchant ID or Google Approval

For a long time the plugin offered two ways to accept Google Pay. The Payment Request Gateway used Stripe’s built-in Google Pay support, which required no setup at all โ€” but it had limitations. Browser support was restricted and it lacked some of the more robust features merchants needed. The Google Pay Gateway, on the other hand, used a direct Google Pay integration that was far more capable, but came with a manual setup process: submit an application to Google, provide screenshots of your checkout, wait for approval, receive a Merchant ID, and enter it manually into the plugin.

Stripe’s latest Google Pay integration changes this entirely. It now behaves exactly like the direct Google Pay integration โ€” full browser support, all the features merchants expect โ€” but without any of the manual setup. There is no application process, no screenshots, no Merchant ID, and no waiting for approval. If your Stripe account supports Google Pay, it works out of the box.

This means the Payment Request Gateway is no longer needed. In 4.0.0 it has been deprecated and replaced by the Google Pay gateway, and this happens automatically on update โ€” there is nothing merchants need to do. Any existing subscriptions or recurring payments tied to the Payment Request Gateway will continue to process without interruption through the Google Pay gateway. All future Google Pay purchases will go through the new Google Pay gateway. Existing merchants will not notice any difference at checkout.


โ˜… New in 4.0.0

New Payment Section Option For Express Payment Methods

Merchants have always been able to control whether Apple Pay and Google Pay appear in the express checkout section at the top of the page. What wasn’t possible โ€” and what merchants have been asking for โ€” was controlling whether those same payment methods also appear in the payment methods list below. On the checkout shortcode, Apple Pay and Google Pay would always show up there automatically, with no way to turn it off.

In version 4.0.0, merchants can independently control where Apple Pay and Google Pay appear โ€” in the express row, in the payment method list, or in both. And it works the same way whether you’re using the classic checkout shortcode or the WooCommerce checkout block.

In this example, the “Express Checkout” option has been enabled for Apple Pay and Google Pay, but not the “Checkout” section.
Apple Pay appearing as a selectable payment method inside the payment method list
In this example, the “Checkout” section has been enabled for Apple Pay and Google Pay.

Apple Pay admin settings showing the Payment Sections control
Payment Sections in the Apple Pay (and Google Pay) settings panel. Adding Checkout to this list is what controls whether the payment method appears in the payment methods section of the checkout page โ€” separate from the Express Checkout option at the top.

Why does this matter? Not all merchant sites are the same; some merchants might want to only offer Apple Pay and Google Pay as express payment options whereas other merchants might want an express checkout section and for those options to appear in the standard payment method section.

To our knowledge, no other Stripe plugin for WooCommerce offers this level of control over express payment method placement. It was one of the most-requested features we hadn’t been able to ship cleanly until the new architecture made it straightforward.


Customers With Saved Cards Get a Cleaner Experience

For returning customers who’ve saved multiple payment methods, the previous UI used a nested dropdown inside the Credit/Debit Cards section โ€” a radio button that revealed another set of choices inside it. It worked, but the nested structure could be confusing, and it made the checkout feel heavier than it needed to be.

The new design replaces that pattern entirely. Saved cards are now presented as clean, individual rows at the same level as other payment options. By default, the customer’s most recently used card is shown with a See more link to expand the full list โ€” keeping things tidy without hiding anything.

Screenshot showing the old way of displaying a customer’s saved payment methods
Clear UX with expandable “See more” option
Expanded saved payment method list showing multiple cards as individual rows
Clicking See more expands the full list of saved cards โ€” each one a clean, selectable row with no nesting required.
After selecting a saved card the list collapses back to show just the selected card
Once a payment method is selected, the list collapses back to show just the chosen method โ€” keeping the checkout page clean while making it easy to switch cards via See more at any time.

Buy Now Pay Later Messaging Updates

Buy Now Pay Later options โ€” Klarna, Afterpay, and Affirm โ€” show promotional messaging across your store to remind customers that flexible payment options are available. In earlier versions, each payment method had its own separate messaging element, which created redundancy and made it harder to keep everything in sync.

Prior to 4.0.0, Buy Now Pay Later messaging was not unified and rendered separate messages.

Version 4.0.0 uses a single unified messaging element that renders all supported BNPL methods together, which is how Stripe designed the new API to work. The result is cleaner messaging that’s easier to manage and understand.

Unified Buy Now Pay Later messaging in version 4.0.0

BNPL messaging also now integrates with popular Product Add-On plugins. When a customer adds a product add-on the installment messaging updates dynamically to reflect the new total. So customers always see an accurate “pay as low as $X/month” figure, not one that was calculated before they configured their product.

The two screenshots below show this in action. The product is displayed with two different add-ons selected โ€” and the BNPL messaging updates automatically each time to reflect the new grand total.

The Buy Now Pay Later messaging reflecting the $100 product amount
Buy Now Pay Later payment options showing the $100 product price

Supported add-on plugins include WooCommerce Product Add-Ons, Advanced Product Fields for WooCommerce, Extra Product Options & Add-Ons, and others.

Where You Manage BNPL Messaging has Moved

In version 4.0.0, we have moved the BNPL location settings to the Advanced Settings page. This makes sense because now that messaging has been unified, it doesn’t need to be individually controlled on the Affirm, Afterpay, or Klarna settings pages.

Screenshot of the new BNPL location settings on the Advanced Settings page

Enabling BNPL Messaging

To enable Affirm, Afterpay, or Klarna messaging, you still manage that on each settings page. For example, to enable Affirm messaging, navigate to the Affirm Settings page, /wp-admin/admin.php?page=wc-settings&tab=checkout&section=stripe_affirm, and scroll to the Messaging Enabled option. Select the checkbox and then configure the pages where you want Affirm messaging to display.

The Affirm Messaging Enabled option

Performance Improvements

Prior to 4.0.0, the plugin used a mixture of modern webpack-built scripts and older ES5 scripts written in the traditional prototype pattern. Having both approaches in the same codebase was not ideal โ€” combining them resulted in larger than necessary script files and made it harder to optimize how scripts were delivered to the browser.

By rewriting all of the plugin’s Javascript code we have been able to take advantage of optimizations not previously available. This has resulted in significant performance improvements on customer facing pages where the Stripe plugin is enabled.

PageBeforeAfterReduction
Checkout194 kB95.6 kB51%
Product Page153.6 kB94.3 kB39%
Cart Page145.5 kB92.3 kB37%
If you’re using a cache plugin, make sure you clear/purge the cache so the new scripts are loaded properly. All Javascript files and styles are located in the “/wp-content/plugins/woo-stripe-payment/assets/build” directory.

WooCommerce Mini Cart Support

In version 10.4.0 of WooCommerce, the Woo team added a new mini cart that taps into the WordPress Interactivity API. We have now added full support for this new cart feature in the 4.0.0 release. You can read more about the new mini cart here.

Apple Pay and Google Pay rendered inside the WooCommerce mini cart using the WordPress Interactivity API

Installments Now Render Natively Through Stripe

For merchants selling in Mexico or Brazil, the plugin has long supported installment payments โ€” letting customers split their purchase into monthly payments directly at checkout. Previously, this required a custom-built dropdown that the plugin maintained entirely on its own: custom HTML, custom styling that had to work across every theme, and complex logic to determine when installment plans were available and how to fetch them. Keeping that UI consistent and conflict-free across the wide variety of WooCommerce themes out there was an ongoing challenge.

In 4.0.0, all of that custom code is gone. Installment options are now rendered natively inside Stripe’s own Payment Element iframe, which means Stripe handles the display, the plan fetching, and the UI. Because it renders inside the Stripe iframe, there are no styling conflicts with themes โ€” it just works, regardless of how your checkout page is styled.

Old installment UI with custom HTML dropdown
New installment UI rendered natively inside Stripe Payment Element
Action required for installment merchants
To take advantage of native installment rendering, make sure you are using the Stripe Payment Form option on the Credit Card Settings page. Installments will not render natively with the inline card form. To test installments in test mode, use the Stripe installment test cards.

This Is a Release Candidate โ€” We Need Your Help

Version 4.0.0-rc.2 is ready for testing. We’re holding it back from the main WordPress.org listing for now to give merchants time to verify compatibility with their themes, other plugins, and any custom code before we push it to 100,000+ sites.

If you run into anything unexpected, please create an issue on the Github Issue Tracker page. Your testing directly shapes the quality of the final release.

Related Articles

Elevate Your eCommerce Store Today: Discover the Ultimate Payment Plugin!

Shopping Cart