Replace Stripe for WooCommerce with DashCommerce
Stripe for WooCommerce bolts Stripe into WordPress as a payment gateway; DashCommerce is Stripe-shaped from the ground up.
If you're staying on WooCommerce, the official Stripe plugin is perfectly fine — it's Stripe's own code, it's free, and it supports Payment Element, SCA, Apple Pay, Google Pay, and saved cards. You do not need to move. DashCommerce only matters when you want to stop routing commerce through WordPress entirely. The switch replaces the whole platform, not just the gateway — so only consider it if the CMS move is already on the table.
What the Stripe plugin for WooCommerce does
The “Stripe” plugin on WooCommerce — the free one published by Stripe Inc., sometimes listed as “WooCommerce Stripe Payment Gateway” — adds Stripe as a payment method on Woo’s checkout. You connect your Stripe account, set keys, and Woo’s checkout renders Stripe’s Payment Element. It handles SCA, 3DS 2, Apple Pay, Google Pay, saved cards, and the Payment Intents flow. Webhooks sync charge status back into Woo orders. Disputes and payouts live in the Stripe dashboard.
It’s good software. It’s free. It’s Stripe’s own code. For a WooCommerce merchant who wants Stripe as their processor and doesn’t want Automattic sitting in the middle (which is what WooCommerce Payments / WooPayments gives you), the Stripe plugin is the correct choice.
It is also, by design, a payment gateway. The Woo data model — orders, line items, customer records, subscriptions via Woo Subscriptions — wraps around it. Stripe is one leg of the stack. WordPress, WooCommerce, and the add-on ecosystem are the other three.
The architectural difference with DashCommerce
DashCommerce is not a gateway. It’s a commerce plugin for EmDash CMS where Stripe primitives are the commerce primitives. Orders wrap Stripe Payment Intents. Subscriptions wrap Stripe Subscriptions. Customers wrap Stripe Customers. Payouts are Stripe payouts. Webhooks are idempotent against Stripe event IDs.
In the Woo + Stripe-plugin world, you have Woo’s notion of an order, and the plugin bridges it to a Payment Intent. That bridge is mostly reliable — Stripe’s team maintains it — but it is still a translation layer between two data models. Subscription renewals go through Woo Subscriptions’ hook system, which calls the Stripe plugin’s Payment Intent code, which calls Stripe. Refunds from Stripe’s dashboard have to be reconciled back into Woo’s order status via webhook handlers. Multi-currency support requires a Woo extension that talks to both Woo and Stripe.
In DashCommerce, the translation layer doesn’t exist because there’s nothing to translate between. An order is a Payment Intent reference. A subscription is a Stripe Subscription reference. Refunding from Stripe’s dashboard and refunding through DashCommerce’s admin are the same operation — one is just a different UI for the same Stripe call. Multi-currency works because Stripe supports it and DashCommerce doesn’t fight Stripe’s model.
Neither approach is objectively better. “Gateway inside a larger platform” and “platform shaped around the gateway” are both legitimate designs. They fit different stacks.
When the Stripe plugin is fine
If any of the following describe you, stay on the Stripe plugin:
- You run WordPress and plan to keep running it. The content side of your site is built on WordPress, your team edits in the WP admin, and your writers would revolt if you moved them to something else. Don’t move commerce just to match architecture — stay.
- Your Woo stack works. You have subscriptions via Woo Subscriptions, membership gating via Woo Memberships, shipping via a 3PL extension, tax via TaxJar for WooCommerce. The whole thing is wired up. Ripping it out to swap gateways is negative-value work.
- Your team is WordPress-native. You hire WordPress developers, use Advanced Custom Fields, and your processes depend on the WP plugin ecosystem. DashCommerce is an Astro + TypeScript world — wrong shape for you.
- You want Stripe’s own plugin specifically so Automattic isn’t in the middle. The Stripe plugin (direct Stripe account, you own it) is better than WooPayments (Automattic’s Connect platform) for teams that want nothing between them and Stripe. Keep it.
This is most merchants using the Stripe plugin, and that’s fine. The software does what it says.
When DashCommerce makes sense
The situations where replacing the Stripe plugin with DashCommerce is actually correct are narrower:
- You’re leaving WordPress anyway. This is the only case that really matters. If the broader migration — content to EmDash or another modern CMS, hosting to Cloudflare or Vercel, templates to Astro — is already happening, DashCommerce is the commerce layer shaped for that world. Moving commerce at the same time is cheaper than two separate migrations.
- You want Stripe primitives surfaced directly. If your team is building with Stripe’s API anyway — custom checkout flows, embedded Payment Elements in non-standard places, Stripe Connect marketplace payouts with complex transfer logic — fighting Woo’s abstraction over Stripe stops being worth it. DashCommerce exposes Stripe with less translation.
- You want TypeScript end-to-end. Woo + Stripe-plugin is PHP. DashCommerce is TypeScript. If your team would rather extend a typed plugin than read PHP hooks, this is a real ergonomic win.
- You want edge-native deployment. DashCommerce runs on Cloudflare Workers. WordPress does not, practically speaking. If your stack is already edge-first and WordPress is the outlier, commerce should move with it.
Outside those cases, the Stripe plugin is already solving your problem. Don’t over-engineer it.
Migration steps
If the CMS move is happening and you want the gateway to come with it:
- Keep the same Stripe account. The publishable and secret keys you use on Woo go straight into DashCommerce settings. No Stripe-side change. Payouts, dashboard, and history continue on the same account.
- Re-link active subscriptions. Stripe Subscriptions keep billing — they live in Stripe, not in WordPress. DashCommerce reads them back into its own subscription records via the Stripe API. No customer re-tokenization required (unlike migrating off a managed platform that holds its own Stripe Connect tokens).
- Export Woo orders as reference data. Historical orders import into DashCommerce read-only, mostly for customer support lookup. You don’t need to re-process them.
- Point webhooks at the new endpoint. Update the webhook URL in the Stripe dashboard from your Woo webhook endpoint to DashCommerce’s. DashCommerce uses idempotent handlers keyed on Stripe event IDs — duplicate events from a transition window are safe.
- Run both in parallel briefly if needed. Since both clients use the same Stripe account, you can technically run Woo and DashCommerce against the same Stripe while cutting over. Most teams won’t, but the option exists.
The CMS migration itself (WordPress to EmDash, Woo templates to Astro) is the hard part. The gateway swap is mechanical.
Honest recommendation
The official Stripe plugin for WooCommerce is fine. If that’s the only thing you were planning to change, don’t. It works, it’s Stripe’s own software, it’s free, and it will keep working.
DashCommerce is the right answer when the architecture underneath is wrong — you’re leaving WordPress, you want TypeScript commerce, you’re running at the edge, or you want Stripe primitives surfaced instead of wrapped in Woo’s data model. In that context DashCommerce is the version of the Stripe-native idea that assumes you’ve already walked away from the WordPress substrate.
If WordPress is staying, stay. If it’s going, DashCommerce is shaped for the other side.
Stripe for WooCommerce → DashCommerce, feature by feature.
| Stripe for WooCommerce | DashCommerce equivalent | Notes |
|---|---|---|
| 01 Stripe as payment gateway (WooCommerce plugin) | Native Stripe Payment Intents — not a gateway bolt-on | DashCommerce is built around Stripe primitives; there is no abstraction layer calling Stripe as one of N gateways. |
| 02 Payment Element (in Stripe for Woo) | Payment Element, configured once in plugin settings | Same Stripe primitive on both sides. |
| 03 Apple Pay / Google Pay (via Stripe plugin) | Included — Payment Element surfaces both | |
| 04 SCA / 3DS 2 handling | Handled by Stripe, same primitive | SCA and 3DS 2 are Stripe-side features; identical behavior. |
| 05 Webhook handling (Woo + Stripe plugin) | Idempotent via unique Stripe event IDs | |
| 06 Saved payment methods (Stripe plugin + Woo customer) | Stripe Customer + PaymentMethod, stored against the Stripe side | |
| 07 Woo Subscriptions + Stripe (paid extension) | Stripe Subscriptions directly — no extra extension | |
| 08 Dispute handling | Stripe dashboard (same as today) | Disputes live in Stripe in both architectures. |
| 09 Payouts | Stripe direct — you own the Stripe account in both cases | |
| 10 Woo checkout page wrapping the gateway | Hosted Checkout or embedded Payment Element, both first-class |
- DashCommerce does not have a WooCommerce admin around the Stripe keys. Keys live in the EmDash admin's DashCommerce settings, not the WP dashboard.
- If you use WordPress for content and WooCommerce for commerce, DashCommerce requires moving the content layer to EmDash as well — it's not just a payment gateway swap.
- The Stripe plugin on WooCommerce covers only payments. Switching to DashCommerce replaces the entire commerce platform (cart, checkout, orders, subscriptions, admin), not just the gateway.
- Woo extensions tied to the Stripe plugin (e.g., Woo Subscriptions, Woo Memberships) do not carry over. Subscriptions migrate; the extension-specific admin flows do not.
- DashCommerce is pre-1.0 (`@dashcommerce/core` v0.1.3). The official Stripe plugin is years-mature. Treat it accordingly — pin versions, evaluate carefully.
Replacing Stripe for WooCommerce — FAQ
- Is Stripe for WooCommerce the same thing as WooCommerce Payments?
- No — and this is the single most common confusion. The 'Stripe' plugin (sometimes called WooCommerce Stripe Payment Gateway) is published by Stripe Inc. and connects your own Stripe account directly to Woo checkout. WooCommerce Payments (now called WooPayments) is Automattic's own platform that also uses Stripe under the hood, but through Automattic's Stripe Connect account — which means Automattic sits between you and Stripe and takes a small cut. With the Stripe plugin you own the Stripe account; with WooPayments you're on Automattic's platform.
- Why switch if the Stripe plugin is free and works?
- If it works for you, don't. The Stripe plugin is solid software and costs nothing. DashCommerce matters when the broader architecture is wrong for your team — you're leaving WordPress, you want to run Astro at the edge, you want TypeScript end-to-end, or you want to stop maintaining PHP and a dozen Woo add-ons. Switching just to change the gateway is not a reason.
- Is DashCommerce cheaper than Stripe plugin + WooCommerce?
- On Stripe fees, no — you pay the same 2.9% + 30¢ (US) either way. The difference is operational: no paid Woo extensions for subscriptions, memberships, or multi-currency; no managed WordPress host bill for the commerce side; no LiteSpeed / WooCommerce optimization rabbit holes. Whether that adds up to real savings depends on how much your current Woo stack costs in extensions and hosting.
- What happens to my Stripe customer data during migration?
- Stripe customers, payment methods, and subscriptions live in Stripe — not in WordPress. If you use the same Stripe account on DashCommerce, the Customer and PaymentMethod objects are already there; DashCommerce references them via their Stripe IDs. Active Stripe Subscriptions continue billing against your Stripe account without interruption — you re-link them into DashCommerce's subscription records, not re-tokenize.
- Does DashCommerce support all the payment methods the Stripe plugin does?
- Anything Stripe's Payment Element exposes is supported in DashCommerce: cards, Apple Pay, Google Pay, Link, ACH, SEPA, iDEAL, Klarna, Afterpay, and others depending on region. The Payment Element is the same primitive in both products; the LPM (local payment method) coverage matches.
- What about Stripe Radar and other fraud tools?
- Stripe Radar runs server-side in Stripe's dashboard in both architectures. Rules, risk scores, block lists, and 3DS triggers are configured in the Stripe dashboard and apply identically whether the charge originated from the Woo Stripe plugin or DashCommerce. No change.
- Can I use the same Stripe account on DashCommerce that I use on WooCommerce?
- Yes. Put the same publishable and secret keys into DashCommerce's settings. The Stripe account, dashboard, payouts, and history are all unchanged. You can even run both side-by-side temporarily while migrating — they're just two clients of the same Stripe account.
- Does the switch break my PCI compliance posture?
- No. In both architectures card data is tokenized by Stripe Elements on the client and never touches your server — you stay in SAQ A scope. DashCommerce's embedded Payment Element works the same way the Stripe plugin's Payment Element does.
Replace Stripe for WooCommerce in an afternoon.
Scaffold a new storefront with every feature category in core. No plugin sprawl, no platform fees.