WooCommerce Stripe Payment Gateway 11.1.1
Take credit card and Apple Pay payments directly on your store. The Stripe plugin for WooCommerce allows you to take payments directly on your store via Stripe’s API, including Apple Pay for mobile and desktop. Stripe is available in the United States, Canada, the UK, Australia, Belgium, France, Germany, Ireland, The Netherlands and more.
Out of stock
Description
WooCommerce Stripe Payment Gateway — download
Download WooCommerce Stripe Payment Gateway free with SrmehranClub membership. Exact files as listed on the official site. No license keys or author support. GPL pre-activated.
The Stripe plugin for WooCommerce allows you to take payments directly on your store via Stripe’s API, including Apple Pay for mobile and desktop.
Stripe is available in the United States, Canada, the UK, Australia, Belgium, France, Germany, Ireland, The Netherlands and more.
Stripe is a simple way to accept payments online. With Stripe you can accept Visa, MasterCard, American Express, Discover, JCB, and Diners Club cards, even Bitcoin, directly on your store. Stripe has no setup fees, no monthly fees, no hidden costs: you only get charged when you earn money! Earnings are transferred to your bank account on a 7-day rolling basis.
Stripe now includes Apple Pay, which means customers can pay using payment details associated to their Apple ID. Checkout is now just a thumbprint away. on both mobile and desktop.
Stripe also supports the Subscriptions extension and re-using cards. When a customer pays, they are set up in Stripe as a customer. If they create another order, they can check out using the same card. A massive timesaver for returning customers.
Installation
- Go to Plugins > Add New on your WordPress site.
- Enter WooCommerce Stripe in the Search Plugins bar. Author is Automattic/WooCommerce.
- Click Install Now and Activate.
Setup and Configuration
- Go to: WooCommerce > Settings > Checkout > Stripe.
- Tick the Enable Stripe checkbox. Untick to disable.
- Enter a Title (required) and Description (optional) seen by the customer during checkout.
- Tick the Enable Test Mode checkbox, if you wish to test before going live. Untick to begin accepting payments with Stripe.
- Enter your Live Secret Key and Live Publishable Key (obtained from your Stripe account). The Test Secret Key and Test Publishable Key are different and should only be used when Enable Test Mode selected in step 4.
- Enter Statement Descriptor, a description that appears on a customer’s credit card statement.
- Tick the checkbox to Capture Charge Immediately (Authorize and Capture) or untick to only Authorize. If you untick the box, you need to capture funds manually for each order via the order screen.
- Enable Stripe Checkout if you prefer a popup to request details, the ability to accept Bitcoin and using a checkout image. See next section Stripe Checkout to understand how it appears for customers.
- Enable Payment Request API (optional) if you wish to give customers the ability to pay via the API (must be supported by their browser). For example, this will prompt Chrome Pay if you’re using this browser on Android or desktop and you’ve got cards saved.
- Enable Apple Pay if you wish to give customers with an iOS 10+ device and Safari-based web browser the option to pay using Apple Pay.
Select Black or White for Apple Pay Button Style
Enter two-digit ISO code for Language. Default is en for English. Other languages, see: http://www.w3schools.com/tags/ref_language_codes.asp
Accept the Apple Pay Terms of Service (ToS). This is mandatory or you will receive an error. - Saved Cards, if you want to give Stripe customers the ability to use a card saved on their account for future purchases.
- Log Debug Messages, if you wish to save logs that can help you/us troubleshoot your site. Can be disabled and enabled as needed.
- Save Changes.
Stripe Checkout
- Stripe Checkout locale: English is default. Chinese, Dutch, French, German, Italian, Japanese and Spanish are also offered. Auto-displays user’s preferred language, if available.
- Enable Bitcoin Currency: Tick the box if you would like to accept Bitcoin via Stripe.
Stripe Checkout Image: Enter the URL of a 128×128 px image/logo to be displayed in checkout. Use an image already uploaded to your site or upload one now at Media > Add New.
FAQ
- The method is not showing.
In live mode, an SSL certificate must be installed on your site to use Stripe. In addition to SSL encryption, Stripe provides an extra JavaScript method to secure card data. - Apple Pay is not showing.
The customer must have a device with iOS 10+ and be using a Safari-based web browser. Otherwise the option is unavailable. - Apple Pay – I am getting this error “Error: Unable to copy domain association file to domain root”
That could mean your server configuration is not allowing files/paths to be written in that location. You would have to manually do this by following the step outlined here - Apple Pay – I am getting this error “Error: Unable to verify domain – Bad Request”
Try manually doing this by following the step outlined here - Can I test Apple Pay?
Yes, please follow the link here for instructions Apple Pay Testing - Can I hide the Apple Pay button on the single product / cart / checkout pages?
Yes you can! As we do not recommend using CSS to do so, we encourage you to follow this tutorial. - When switching from the paid Stripe gateway to the free version, will my settings be saved?
Yes, after installing the free Stripe 3.X version, your settings from the paid Stripe 2.612 version will carry over. - Can I use Apple Pay for recurring/subscription-based payments?
Not at this time. This feature is currently unsupported. The Apple Pay button stays hidden for recurring payments associated with a subscription. - Can a single customer have multiple subscriptions?
Using the WooCommerce Stripe extension and WooCommerce Subscriptions, you can have multiple subscriptions in your WooCommerce store. It should be noted that WC Subscriptions and the WC Stripe extension don’t use Stripe’s Recurring Plan feature, but instead manage subscriptions in WooCommerce and use token billing for each recurring payment. - Is it possible to override templates on the checkout page?
Yes. This extension only has one template, which is: saved-cards.php. To override it, copy the original template from wp-content/plugins/woocommerce-gateway-stripe/templates/ and place it in the wp-content/themes/your-theme-name/woocommerce-gateway-stripe/ folder. Open and edit as you wish. - What version of the Stripe API does this plugin use?
This plugin uses v1 of the Stripe API. - Does this extension support Bitcoin?
Yes, it does. As of version 2.4.0, Stripe accepts payment in Bitcoin (WooCommerce > Settings > Checkout > Stripe > Enable Bitcoin Currency). Refunds can be issued via the Stripe Dashboard and will require the customer’s Bitcoin address. See Changelog.?Recurring and repeat payments with Bitcoin are not currently supported. Bitcoin may only be used for a one-time payment. - Does this extension support Stripe Connect?
No, not currently; we’re unable to integrate at this time. - Does Stripe use AVS – Address Verification System?
Yes! This is enabled in your Stripe account dashboard and will then work in WooCommerce. See Stripe’s documentation about Avoiding fraud and disputes. - Does Stripe Support Authorization and Capture?
Yes! This is an option in the extension settings. Charges can be captured from within the WooCommerce dashboard. Please note that un-captured authorizations will expire after 7 days. - Does Stripe allow refunds inside WooCommerce?
Yes. - Does Stripe Support ACH?
The Stripe plugin from WooCommerce does not support ACH. - Why aren’t my subscriptions displayed in the Stripe Dashboard?
WooCommerce Subscriptions does not use the Stripe Subscriptions feature. Instead, it uses a Stripe Customer and Card token and controls the processing of recurring payments. This avoids many potential issues that could occur by trying to keep two copies of each subscription’s data in sync on two different systems (one in your store and one at Stripe). It also and makes it possible for Stripe to support all of WooCommerce Subscriptions’ features, like payment date changes, rather than only those the Stripe Subscriptions allows. Because of this, you will not see subscriptions created with WooCommerce in your Stripe Dashboard as Subscriptions. This does not mean recurring payments will not be processed. As long as your store is running correctly, recurring payments will be processed correctly and will show up in the Stripe Dashboard as Payments. - Do I need to enable “Saved Card” to process subscriptions?
Subscriptions have its own mechanism of saving credit card details. When a customer buys a subscription product, Stripe will create a special payment token that will use the same credit card details for future subscription payments. Saving the same card again on the customer’s account is not necessary, unless you want to allow the customer to reuse the card for other purchases in your store.
Changelog
From changelog.txt in the download
Fixed
- Stop blocking non-Stripe payment gateways on the Pay for Order, change payment method, and add payment method pages
Show 5 earlier versions
Version 11.1.03 new15 improved36 fixed
New
- Automatically configure test mode when onboarding to a live account
- Show the originating AI agent in the WooCommerce order Origin column for Agentic Commerce orders
- Agentic Commerce: add merchant settings to exclude add-on/configurator products from the feed or redirect shoppers to the store to check out, with per-product advisories in the feed preview
Improved
- Show the specific Stripe error reason in the settings save notice when a Payment Method Configuration update is rejected
- Add E2E coverage for express checkout with free trial subscriptions, with and without shipping, including completing the purchase with Link
- Ensure that application fees are not sent to Stripe for OAuth-connected accounts
- Improve checks in the wallet payment confirmation flow
- Block outbound HTTP requests from unit tests
- Reduce the size of the express checkout JS bundle
- Agentic Commerce: surface shipping zones with no flat-rate method (which contribute no shipping to the feed) in the feed preview and logs
- Reduce Blocks Javascript by moving payment method icon styles into CSS
+7 more
- Stop offering Sofort at checkout (discontinued by Stripe on March 31, 2025); refunds and subscription renewals for existing Sofort orders keep working
- Mark the Sofort and Giropay payment method classes and constants as deprecated ahead of their removal
- Make e2e tests runnable from Quality Insights Toolkit (QIT)
- Link the WooCommerce POS page from the in-person payments description in the readme
- Reduce the size of the Stripe settings JS bundles by loading only the Gridicons they use
- Update PHPCS rules and improve alignment with WordPress plugin rules
- Include the connected Stripe account ID in the account connection, account disconnection, and key update events sent when usage tracking is enabled
Fixed
- Show BLIK and ACSS payment methods at checkout when Optimized Checkout Suite is enabled
- Return an error response when a Payment Method Configuration update fails in settings, so the frontend correctly displays an error instead of a false success notice
- Show the correct guidance when a subscription renewal fails because its Stripe mandate is invalid
- Ensure retry with a saved payment method works after a declined Adaptive Pricing payment attempt on Classic Checkout
- Allow Classic Checkout payments without a WooCommerce billing country field when Adaptive Pricing is enabled
- Ignore Checkout Session failure webhooks after an order switches to another payment gateway
- Preselect the customer's default saved Stripe payment method within the active gateway in Blocks checkout
- Prevent dropped webhooks, double processing, and skipped pre-order handling when requests race for the order payment lock
+28 more
- Stop two requests from reclaiming the same expired Optimized Checkout or Agentic Commerce sync lock
- Include cart contents in agentic checkout shipping calculations so content-dependent shipping methods such as table rate and weight-based return accurate rates
- Reject agentic checkout line items with a zero or negative quantity, or a negative amount, when building shipping packages, instead of quoting rates from corrupted totals
- Show coupon discounts as negative line items in Express Checkout on classic cart and checkout pages
- Show negative cart fees (e.g. a discount extension applying its discount as a fee) as negative line items in Express Checkout on classic cart page
- Stop disabling Level 3 data account-wide when Stripe rejects it for a request that declares a non-card payment method
- Open testing and payment settings documentation links in new tabs
- Allow payment methods to be enabled when they support a currency supplied by a multi-currency plugin
- Show a useful error when a Stripe connection cannot start
- Prevent express checkout wallets from failing when rounded display items exceed the payment total
- Accept shipping addresses in the express checkout wallet sheet for free trial subscription carts whose shipping is charged with the recurring payments
- Remove account password data that may have been stored in order metadata by express checkout in version 10.9.0
- When checking if unpaid orders should be canceled, get the Stripe payment status, and update orders with Stripe payment details
- Preserve manually configured webhooks during automatic reconfiguration and warn when the configured webhook no longer exists
- Point a saved Stripe Link payment method at the newest card selection when the customer re-enrolls through Link, so subscription renewals stop charging the replaced card
- Retry matching a completed Adaptive Pricing checkout session to its order instead of giving up after the first attempt
- Show the on-page 3D Secure authentication modal instead of a full-page redirect for card payments under Optimized Checkout with Dynamic Payment Methods
- Show negative order fees as negative line items in Express Checkout on the Pay for Order page
- Link to checkout when missing required custom fields block express checkout on other pages
- Stop refusing express checkout orders over required classic custom checkout fields on stores whose checkout page uses the checkout block and cannot render them
- Send a return URL when the browser confirms an express checkout (Apple Pay, Google Pay) or 3D Secure card payment, so a payment that needs a redirect can complete
- Ensure the current Payment Method Configuration is specified for Optimized Checkout Suite and Adaptive Pricing
- Allow Klarna purchases for Puerto Rico shoppers, and refine billing country availability logic
- Add robust checks against order attribution Javascript not being fully loaded in block checkout
- Remove the duplicated period in the webhook status message when webhooks are pending
- Allow retries with an express wallet or saved card after a declined card under Optimized Checkout with Dynamic Payment Methods
- Show an error before submission when required custom checkout fields are empty in Classic Checkout
- Ensure that switching mode doesn't show an incorrect payment method save error
Version 11.0.11 fixed
Fixed
- Prevent non-card payment methods from failing under Optimized Checkout with Dynamic Payment Methods when the store has a statement descriptor set
Version 11.0.05 new11 improved30 fixed
New
- Show a placement simulator on each Customize express checkouts tab that previews where the express checkout button would and wouldn't appear, with the reason
- Show the fuller sync-eligibility verdict in the Products list Agentic Commerce column and link the excluded-products view from the settings page
- Bulk edit, quick edit, and a sync-status column and filter on the Products list for excluding products from the Agentic Commerce catalog sync
- Use Stripe Dynamic Payment Methods for on-session Optimized Checkout payments so eligible methods follow your Stripe Payment Method Configuration
- Log an error when missing required custom fields block express checkout, with a filter to disable the log
Improved
- Dim the button size hint on the Amazon Pay and Link customize tabs so it matches the Apple Pay/Google Pay tab
- Move hook registration out of the webhook, order, payment token, Apple Pay registration, and Connect handler constructors so repeated instantiation cannot duplicate callbacks
- Extract Optimized Checkout into a dedicated payment gateway class so the classic UPE and Optimized Checkout flows are handled independently
- Register Stripe.js through a single shared helper
- Use database cache for webhook status tracking
- Add WC_Stripe::get_settings()/update_settings() as the canonical accessors for the main Stripe settings, with the WC_Stripe_Helper shims delegating to them
- Remove the deprecated @woocommerce/settings npm package; settings are still read from the wc-settings script WooCommerce provides at runtime
- Make GITHUB_TOKEN optional for the local E2E Docker setup by falling back to the GitHub CLI and then to plugin zips placed in tests/e2e/deps
+3 more
- Fetch express checkout AJAX nonces on demand instead of embedding them in every page
- Disable the Agentic Commerce "Sync now" button until onboarding is complete, with a note explaining the remaining step
- Take already-synced products out of in-agent checkout when Agentic Commerce is disabled by pushing a final catalog feed, and stop the recurring product sync while it's off
Fixed
- Allow express checkout payments when a wallet provides a one-word shipping name
- Hide country-restricted payment methods (e.g. iDEAL) from Optimized Checkout when the billing country can't use them
- Register Multibanco, OXXO, Boleto, Link, and Cash App Pay hooks only once per request so email instructions and thank-you page content are not duplicated
- Resync the Agentic Commerce catalog when switching between test and live mode, and scope the sync status shown in settings to the active mode
- Don't show currency admin notices for payment methods when Adaptive Pricing is active
- Render classic-checkout card fields when a host optimizer defers render-blocking JavaScript (e.g. SiteGround Speed Optimizer)
- Exclude password-protected products and products hidden from the catalog from the Agentic Commerce feed
- Name password protection and hidden visibility as their own reasons in the Agentic Commerce feed preview
+22 more
- Open all Stripe Dashboard links in admin notices and order notes in a new tab
- Reload the plugin's payment method settings when refreshing account details, so the settings screen no longer keeps showing stale values
- Load a single instance of Stripe.js per page
- Keep the wallet billing and shipping addresses on express checkout orders when the address normalization request returns an unusable response
- Remove stale saved payment methods at checkout when the Stripe customer no longer exists, and keep valid ones when Stripe returns a transient API error
- Render the Adaptive Pricing payment element in the store's Stripe locale
- Stop sending Level 3 data when paying with a non-card payment method through express checkout (e.g. Amazon Pay), which Stripe rejects and can disable Level 3 data for card payments
- Record the charge-captured state for asynchronously confirmed payments (e.g. ACH) so refunds from wp-admin and the Stripe Dashboard behave correctly
- Reject negative refund amounts with an explicit error instead of silently refunding the absolute value
- Refresh account details re-evaluates Payment Method Configuration availability so a disabled pmc_enabled flag recovers automatically
- Complete 3DS card payments on Optimized Checkout when the Stripe Payment Method Configuration also has wallet or voucher methods active
- Clear the shopper's cart after a redirect payment method (e.g. Amazon Pay on mobile) completes in a different browser context, preventing duplicate orders
- Prevent test and live Stripe connections from reusing each other's cached account data
- Hide the Apple Pay and Google Pay express buttons on pages unchecked in their own locations setting, instead of following other wallets' locations
- Leave the Expires column blank instead of showing "N/A" on My Account → Payment methods for saved payment methods that have no expiry date, such as Link, SEPA and Cash App Pay
- Remove the empty box shown under "Use a new payment method" on classic checkout when the save-payment-method checkbox is hidden
- Ensure webhook status checks reset API key
- Keep express checkout and the payment options rendering on the first block checkout load of a free-trial subscription cart
- Prevent cart from being emptied after My Account registration when Stripe, WooPayments, and Jetpack are all active by scoping the logged-in cookie update to checkout context only
- Honor subscription renewal payment locks while preserving retry attempts
- Only sync the Agentic Commerce catalog, inventory, and archive feeds to Stripe after onboarding is complete (the feature is enabled and the webhook secret is saved)
- Attach a Stripe customer to guest Adaptive Pricing checkouts, linking it to the order and any account created at checkout
Version 10.9.16 fixed
Fixed
- Allow express checkout payments when automatic account password generation is disabled
- Stop flagging the checkout page as the cart page (is_cart() returning true) when express checkout buttons are enabled, which made analytics and other plugins misread the page
- Recreate the Adaptive Pricing Checkout Session when a shopper logs in or out mid-checkout, so payment methods can be saved correctly
- Surface express checkout order failures instead of leaving the Apple Pay or Google Pay sheet open with no error
- Prevent classic checkout from processing an empty payment method when custom required fields are present
- Explain that payment details were not submitted, instead of reporting the selected payment method as invalid, when checkout is submitted without them
Version 10.9.09 new34 improved55 fixed
New
- Show a "Paid by customer" row with the Adaptive Pricing amount and currency on the order edit page
- Add dedicated settings page for Link with button size and location customization
- Add a wc_stripe_is_adaptive_pricing_supported filter so extensions can disable Adaptive Pricing for carts their flows are incompatible with
- Stripe admin pages to the WordPress Command Palette
- Show a "What's new" inbox note after the plugin updates, including via auto-update
- Per-product "Agentic Commerce" exclude toggle on the product editor's Inventory tab
- Verify that Stripe.js was served from the official Stripe origin before processing checkout payments
- Add an Agentic Commerce checkout mode that redirects shoppers to your store to check out instead of completing the purchase in the AI agent
+1 more
- Add a wc_stripe_subscription_renewal_blocked_by_radar action hook that fires when Stripe Radar blocks a subscription renewal payment
Improved
- Render the Express Checkout button on the cart and checkout from page-bootstrapped data, removing a cart-details request from the critical path to first button render
- Memoize the Blocks Express Checkout button so it no longer re-renders the Stripe element on unrelated cart updates
- Dim the test mode checkbox when it can't be toggled so the disabled state is visible in the UI
- Use a shared hook manager to prevent duplicate subscription hook registrations
- Initial infrastructure for more complex Agentic feed filtering
- Agentic Commerce: add the shareable woocommerce_agentic_commerce_disable_checkout filter, deprecating the wc_stripe_-prefixed twin
- Replace shipping AJAX endpoints with Store API calls for Express Checkout Element
- Consolidate the default payment intent metadata fields into a shared method so they stay consistent across payment flows
+26 more
- Use clsx library instead of classnames
- Add more robust purchase checks in e2e tests
- Add a Code Comment Conventions section to AGENTS.md to standardize agent and contributor comment guidance
- Deprecate the internal WC_Stripe_Feature_Flags::is_amazon_pay_available() helper now that Amazon Pay is permanently enabled
- Don't show the Stripe API outage notice on local and development sites, where Stripe is often unreachable for benign reasons
- Clarify in the saved payment methods setting that Link by Stripe collects save consent in the payment form instead of a separate checkbox
- Deprecate the wc_stripe_agentic_commerce_should_sync_product filter in favor of the shareable woocommerce_agentic_commerce_should_sync_product
- Replace the legacy add-to-cart AJAX endpoint with a Store API call for variable products in Express Checkout
- Add booking products to the cart via the Store API in Express Checkout when WooCommerce Bookings supports it
- Rename internal Blocks API references to Store API in the Express Checkout client for naming consistency
- When enabling manual capture, clarify to Agentic Commerce merchants that Agentic Commerce purchases follow the capture setting in the Stripe Agentic Commerce dashboard
- Centralize Agentic Commerce feed scheduling in integration class
- Process classic checkout custom fields in express checkout by default (opt out via the wc_stripe_express_checkout_enable_classic_checkout_custom_fields filter)
- Update subscription E2E fixtures to use WooCommerce Subscriptions product plans
- Cap the Agentic Commerce feed preview scan so it stays responsive on large catalogs instead of timing out
- Make the Express Checkout entrypoint bootstrap test deterministic to remove a CI flake
- Break down the Agentic Commerce feed preview's excluded product count by reason so subscriptions are no longer mistaken for a merchant-configured filter
- Update the Stripe API version and the Stripe.js release train to 2026-03-25 (dahlia)
- Move the checkout sessions availability check to WC_Stripe_Helper and remove the deprecated wc_stripe_is_checkout_sessions_available filter
- Show a clear message when manual capture is blocking Adaptive Pricing from being enabled
- Add e2e coverage for Adaptive Pricing: shortcode and blocks purchases, address-less logged-in buyers, and the manual-capture settings gate
- Document that WooCommerce coupons do not apply to in-agent agentic purchases and reject discounted agentic sessions with an explicit error
- Move the Agentic Commerce settings to their own tab on the Stripe settings page
- Add PHPDoc for some deprecated hooks
- Use WooCommerce Core hooks for Adaptive Pricing session management
- Multiple security hardening improvements
Fixed
- Re-enable Adaptive Pricing if it was automatically disabled after a Checkout Session amount mismatch
- Match the Google Pay express checkout button height to Apple Pay when using the Light or Outline button theme
- Keep the currently loaded Stripe account details visible when an account refresh fails
- Surface an error and block checkout when the Adaptive Pricing order total can't be synced with Stripe, instead of silently letting the buyer pay a stale amount
- Stop attaching Level 3 data to captures and payments for non-card methods
- Add the missing order and customer metadata to Adaptive Pricing payment intents
- Send the admin New Order and customer Processing emails when an asynchronous payment method (iDEAL, Klarna, Bancontact) is confirmed via the deferred webhook path
- Use the Amazon Pay custom button size setting on the product, cart, and checkout pages instead of falling back to the Apple Pay/Google Pay size
+47 more
- Show the Stripe payment block as supported in the Checkout block editor when Optimized Checkout is enabled and only non-card methods (e.g. Cash App Pay) are active
- Keep the subscription payment-method row in sync with the saved-card list when a card has been used both directly and through Apple Pay/Google Pay
- Ignore incoming webhook events whose Stripe account does not match the connected account to avoid acting on another account's data
- When changing a subscription's payment method, reflect the new card and its Apple Pay/Google Pay branding on My Account and clarify the admin order note
- Show the selected variation's line items in the Apple Pay/Google Pay payment sheet on variable product pages, instead of the previously selected variation's breakdown
- Prevent unnecessary Stripe payment method creation when shortcode checkout has empty required fields
- Prevent classic and Blocks checkout submissions from failing while the Stripe Payment Element is re-mounting after a checkout update
- Decommission the previously configured webhook before connecting via OAuth so reconnecting to a different Stripe account no longer leaves an orphaned webhook on the old account
- Send the billing address to Stripe on the Pay for Order page so paymen
