What is Stripe for Magento?
Short answer
Stripe for Magento means taking card and wallet payments in Magento 2 through Stripe. Magento 2.4.x does not ship a Stripe payment method in core, so you add a module. The one I use is Stripe’s own extension, stripe/stripe-payments. It gives you cards, Apple Pay, Google Pay and local methods like SEPA Direct Debit, iDEAL and Bancontact, with 3D Secure and SCA handled by Stripe. Card details are entered in fields hosted by Stripe, which keeps your PCI scope small.
- Composer-install the Stripe module 01
- Register the module with Magento 02
- Paste publishable + secret keys from dashboard.stripe.com 03
- Checkout renders Stripe Elements; backend creates PaymentIntents 04
- Webhooks fire on charge events; Magento updates order status 05
Most common mistake Card-on-file without SCA exemption flags set
Five steps from composer-install to live charges
Adobe does not bundle Stripe in Magento, but Stripe publishes its own module. This is how a Stripe setup goes on the stores I work on, from install to webhooks.
-
01
Composer-install the Stripe module
Magento 2.4.x has no Stripe method in core, so the first step is a module. I install Stripe’s own package with
composer require stripe/stripe-payments. It plugs intoMagento_Paymentlike any other payment method, so captures, refunds through credit memos and the order grid behave the way the admin team already knows. Older community Stripe modules exist on GitHub, but I would not start a new store on an unmaintained payment module. -
02
Register the module with Magento
Next,
bin/magento setup:upgraderegisters the module and creates its tables, andbin/magento cache:flushmakes the new payment method show up in admin. On production I also runbin/magento setup:di:compileandbin/magento setup:static-content:deploy, because the Stripe checkout JS has to be deployed topub/staticbefore it can load. -
03
Paste publishable + secret keys from dashboard.stripe.com
The settings live under Stores → Configuration → Sales → Payment Methods → Stripe. I paste the test keys (
pk_test_…andsk_test_…) from the Stripe dashboard first, place a few test orders, and only then switch to the live keys. On the same screen you choose authorize only or authorize and capture, whether customers can save cards, and which payment methods appear. Which local methods actually show depends on what is enabled in your Stripe account and the shopper’s country and currency. -
04
Checkout renders Stripe Elements; backend creates PaymentIntents
At checkout the card fields are Stripe Elements, loaded in an iframe from Stripe, so the card number never passes through your Magento server. The browser sends the card to Stripe and gets back a PaymentMethod ID (
pm_…). Magento then works with a PaymentIntent on the server side for the order amount and currency. If the bank asks for 3D Secure, the shopper completes that step before the order is confirmed. -
05
Webhooks fire on charge events; Magento updates order status
Stripe sends signed webhook events such as
payment_intent.succeeded,charge.refundedandcharge.dispute.createdto your store. The module checks the signature with the webhook signing secret and then updates the order, for example moving a paid order toprocessing. After go-live I open Developers → Webhooks in the Stripe dashboard and check that the endpoint for the store exists and is not returning errors. If webhooks fail, orders that needed 3D Secure or a redirect can sit inpending_payment.
Four situations where Stripe is the obvious answer
Stripe is not the answer for every Magento store. These are the four cases where I usually recommend it.
-
New Magento stores that want payments that just work
For a new store, Stripe is one of the quickest gateways to get running. You get test keys as soon as you sign up, the API docs are clear, and you can place test orders before the business verification is finished. On a fresh launch that lets me finish and test the checkout early, while the owner completes the Stripe account setup in parallel.
-
Multi-currency, multi-country storefronts
Stripe can charge in many currencies and offers local methods in the same checkout: iDEAL in the Netherlands, Bancontact in Belgium, SEPA Direct Debit across the euro area, ACH in the US, Bacs in the UK. For a Magento store with several websites or currencies, that means one gateway and one webhook setup instead of a separate payment provider per country. Make sure the Magento store currencies match the currencies enabled in Stripe.
-
Marketplaces that need split payments
Stripe Connect is Stripe’s product for marketplaces: one customer payment can be split into payouts to several sellers, and Stripe handles seller onboarding and payout schedules. It has Standard, Express and Custom account types depending on how much of the seller onboarding you want to brand. The standard Stripe module does not turn Magento into a marketplace, so plan for a marketplace module or custom code that talks to Connect.
-
Stores that want strong ML-backed fraud screening
Stripe Radar ships included with every Stripe account, ML fraud scoring trained on the full Stripe network (billions of charges across millions of merchants), 3DS2 challenge triggering for risky cards, custom rule engine, manual review queue. For stores hit by card-testing attacks, BIN-based fraud, or chargeback fraud rings, Radar typically cuts dispute rates 40-70% without merchant-side ML work. Radar for Teams adds custom rules + reviewer roles for an extra fee.
Three Stripe misconfigs that wreck a Magento checkout
Every Stripe-on-Magento incident I have been called in to debug came from one of these three mistakes. Audit your config for them before launch.
-
Card-on-file without SCA exemption flags set
Enabling Stripe’s saved-card / card-on-file feature without also configuring the SCA exemption flags (
off_sessionintent on re-bills, MIT vs CIT classification) means every recurring charge gets routed through a fresh 3DS challenge. The customer is not present, the challenge times out, and the charge fails, subscription churn spikes overnight. Always mark recurring charges asoff_session=trueand setsetup_future_usage=off_sessionon the initial PaymentIntent so the saved card is exemption-eligible. -
Forgetting to configure the webhook signing secret
Both Pmclain and Mygento Stripe modules verify webhook signatures by default, if the webhook signing secret is not set in admin, every incoming event is rejected as untrusted. Stripe shows the events as successfully delivered (200 OK from the controller before signature check), but Magento never updates the order status. Orders stay stuck in
pending paymentfor hours until someone notices. Copy thewhsec_…secret from Stripe Dashboard → Developers → Webhooks into admin before going live. -
Shipping with test-mode keys in production
Stripe’s test keys (
pk_test_…/sk_test_…) and live keys (pk_live_…/sk_live_…) differ by exactly four characters inapp/etc/env.php. It is shockingly easy to ship a release where staging keys leaked into the production deploy, the checkout looks fine, customers enter cards, no money moves, no orders flow. Always grep forpk_test/sk_testin your env config as a pre-flight check, and add a CI guard that fails the deploy if test keys are present on the production branch.
Stripe for Magento: frequently asked questions
-
Which Magento Stripe module should I install, Pmclain or Mygento?
Both are solid. Pick Pmclain (pmclain/module-stripe) if you want the most-deployed option with the largest community, an active maintainer, and a documented Hyvä compatibility path, it is the de-facto standard for Magento Stripe integrations in 2026. Pick Mygento (mygento/magento2-stripe) if you want a simpler API surface, native Hyvä checkout components shipped in the module itself, and a slightly lighter footprint. Both modules are free, both follow Magento 2 conventions, both wire to Stripe Elements + PaymentIntents API. Whatever you pick, do not roll your own, Stripe-on-Magento has too many SCA / 3DS / webhook edge cases to reinvent. -
Stripe vs Braintree vs Adyen for Magento, quick decision?
Three-line answer. Pick Stripe if you want the best developer experience, multi-currency out of the box, and marketplace splits via Stripe Connect, ideal for stores under $5M/year revenue. Pick PayPal Braintree if you specifically need PayPal Express + Venmo + Pay Later all under one merchant agreement and you are happy with the legacy Magento integration, still ships first-party with Magento. Pick Adyen if you are above $5M/year and want better interchange rates, single-platform global reporting, and enterprise SLAs, heavier onboarding (merchant ID per region) but cheaper at scale. For most new Magento stores in 2026, Stripe wins on day-one velocity. -
What does Stripe actually charge on Magento transactions?
Standard published rates as of 2026. US domestic cards:2.9% + 30¢per successful charge. International cards: add+1.5%. Currency conversion: add+1%. ACH Direct Debit:0.8%, capped at $5. SEPA Direct Debit:0.8%, capped at €5. Apple Pay / Google Pay: same as the underlying card rate (no premium). Disputes / chargebacks:$15per dispute, refunded if you win. Subscription billing add-on (Stripe Billing):+0.5%on top of card rates. Above $80k/month volume you can negotiate custom pricing, Stripe sales will routinely cut 30-70 bps for high-volume merchants. -
How does Stripe handle SCA + 3DS2 in Magento?
Automatically, with one caveat. The Stripe Elements frontend SDK detects when SCA is required by the issuing bank, typically EU-issued cards above €30, EEA cardholders, or any Stripe Radar high-risk score, and triggers the 3DS2 challenge inline (modal popup, no full redirect). The customer authenticates via their banking app, the PaymentIntent returns tosucceededstate, and Magento receives thecharge.succeededwebhook. The caveat: for recurring charges on a saved card the SDK is not present (customer not at checkout), so you must mark the initial setup withsetup_future_usage=off_sessionand the recurring intent withoff_session=true, Stripe then exempts the charge from fresh SCA challenges using the original authentication. -
Does Hyvä Themes work with Stripe for Magento?
Yes, both major modules ship Hyvä integration paths. Pmclain (pmclain/module-stripe) has a documented Hyvä compatibility module that swaps the Knockout-based checkout components for Hyvä’s Alpine.js + Tailwind components, keeping the underlying Stripe Elements iframe intact. Mygento (mygento/magento2-stripe) ships native Hyvä components in the core module, no separate compat package needed. Migration overhead is minimal in both cases: keep your Stripe keys, redeploy the checkout, no payment-flow changes. Stripe Elements itself is theme-agnostic, it is just an iframe over Stripe-controlled HTML, so Hyvä vs Luma at the parent-page level is invisible to the card form. -
Can Stripe handle B2B, subscriptions, and marketplaces on Magento?
Yes, via three Stripe products bolted onto the same account. Stripe Billing handles subscriptions, dunning, proration, free trials, metered billing, the Magento module receivesinvoice.payment_succeededwebhooks and the storefront stays in sync. Stripe Connect handles marketplaces with split payments, vendor onboarding (Standard / Express / Custom), and 1099-K tax forms, this is the only mature marketplace option left on Magento after Adobe deprecated Braintree Marketplace. Stripe Invoicing handles B2B with PO numbers, net-30 terms, ACH pull, and emailed invoice links. Bolt these on through the Stripe dashboard, no extra Magento modules required, the same Pmclain or Mygento integration handles the webhooks for all three.
Want a Stripe integration audit on your Magento store?
Send your storefront URL: I will run a Stripe webhook + SCA + Radar audit and reply with a written remediation plan, fixed-price quote, and earliest start date. 24-business-hour turnaround.