How to connect Stripe to WooCommerce
Installing the plugin takes minutes — getting from test mode to a live payment without a mistake is where this guide actually helps.
Stripe is one of the two payment options most WooCommerce stores end up offering, and the setup itself is quick — the part worth being careful about is the move from test mode to real money, which is where most avoidable launch-day problems happen.
Before you start
You need a Stripe account of your own. Sign up directly with Stripe rather than through any third party, and complete the business verification steps they ask for — bank details, business information, sometimes identity documents depending on your country. This can take from minutes to a couple of days, so do it before you need it working, not the night before launch.
Installing the plugin
From Plugins > Add New in wp-admin, search for the official Stripe payment gateway for WooCommerce and install it. Once activated, it adds a Stripe settings screen under WooCommerce's payment settings, plus a connect button that links your WordPress site to your Stripe account without you having to copy and paste API keys by hand.
Search results will show several. Use the official WooCommerce Stripe gateway rather than a generic third-party alternative — it stays aligned with WooCommerce's checkout and gets updated when either side changes something.
Test mode first, always
Every Stripe integration ships with a test mode that uses published dummy card numbers instead of real ones. Leave test mode switched on while you configure everything, place at least one order using one of Stripe's documented test cards, and confirm two things: the order shows as paid inside WooCommerce, and the same payment appears in your Stripe dashboard under test data.
This step exists because a checkout that looks correct is not the same as a checkout that actually charges a card and records the order. Skipping straight to live mode is how a store discovers, from an angry customer, that orders were never actually being captured.
Going live
| Step | What to check |
|---|---|
| Switch off test mode | Usually one toggle in the Stripe settings screen. Save, and reload the page to confirm it stuck. |
| Confirm live keys are connected | The plugin should show a live-mode indicator once toggled — if it still references test keys, the connection has not actually switched. |
| Place one genuine low-value order | Use a real card for a small, real purchase. This is the only way to confirm live mode actually works end to end. |
| Check the money lands | Confirm the payment appears in your Stripe dashboard as a live transaction, not a test one. |
Orders will appear to succeed in WooCommerce even though no money has moved, and customers walk away believing they have paid. This is one of the most common causes of "why haven't I been paid for these orders" tickets, and it is entirely preventable by placing one real order before announcing the store is open.
What Stripe means for card data and compliance
Stripe's standard integration (Stripe Elements) loads the actual card input fields from Stripe itself, even though they appear to sit inside your checkout page. The card number never passes through your server or your WordPress database. This matters directly for PCI scope — see does my store need to be PCI compliant for what that means in practice, and confirm your exact SAQ type with Stripe or your acquirer rather than assuming.
If Stripe stops working at checkout
- Check the API keys match the mode. A live key paired with test mode switched on, or vice versa, produces confusing failures rather than a clear error.
- Check for a caching or security plugin interfering with the checkout page. Some aggressive optimisation settings strip the JavaScript Stripe needs to render its fields. See fixing a WooCommerce checkout that fails for the general troubleshooting order.
- Check your SSL certificate is valid and not expiring. Stripe will not load its fields on a page with a broken certificate.
Once Stripe is confirmed working, most stores add PayPal alongside it — the two cover different customer preferences and neither replaces the other.
Handling refunds and disputes
Issuing a refund through the WooCommerce order screen, when Stripe is connected correctly, should push the refund through to Stripe automatically rather than requiring you to process it twice in two separate places. Confirm this actually happens with a small test refund rather than assuming it, since a refund recorded in WooCommerce but never actioned in Stripe leaves the customer without their money despite your own records showing the order as refunded.
A customer disputing a charge directly with their card issuer, rather than asking you for a refund, triggers Stripe's own dispute process with its own evidence requirements and timelines. It is worth reading Stripe's documentation on disputes before one arrives, rather than during it.
Related reading
Hosted checkout, embedded fields, or building your own form — the choice affects your security workload far more than your conversion rate.
How to add PayPal to your storePayPal brings its own customers who already trust it — here is how to add it without duplicating or confusing your existing checkout.
Does my store need to be PCI compliant?Almost certainly yes in some form, but how much work that means depends entirely on whether card data ever touches your own server.
How to fix a WooCommerce checkout that failsA broken checkout loses money every hour it stays broken, so work through the common causes in order rather than guessing.