Making sure your store can accept payments smoothly and securely is non-negotiable. In this walkthrough, we’ll take you—from store owner to developer—to a fully hands-on Stripe integration for your Shopware 6 site (or similar setup). You’ll discover exactly how to:
Follow along with step-by-step screenshots and you’ll end up with a battle-tested Stripe integration that delivers a frictionless checkout for every customer.
At its simplest, Stripe is the toolkit you use to accept payments online—whether that’s a one-time charge, a subscription, or marketplace payouts. Beyond just charging cards, Stripe offers:
Whether you’re selling worldwide or just locally, Stripe covers 135+ currencies and all the major regional payment methods to help you maximize conversions.
Since card data is handled by Stripe’s hosted pages or secure iframes, you drastically shrink your PCI-DSS footprint—Stripe takes care of most of the heavy lifting.
Radar analyzes global transaction patterns on your behalf, automatically flagging or blocking high-risk charges so you can sleep easier.
If you run a membership or SaaS business, Stripe’s Billing tools automate invoices, trials, proration, and even tax calculation—so you spend more time growing and less time wrangling spreadsheets.
payment_succeeded
,
payment_failed
, and
charge.refunded
.For headless or deeply customized stores:
stripe/stripe-php
via Composer and create PaymentIntents, confirm charges, and manage subscriptions right in your controllers.payment_intent.succeeded
,
invoice.payment_failed
, or
charge.refunded
—and update your Shopware order status automatically.composer require stripe/shopware-payment
payment_intent.succeeded
payment_intent.payment_failed
charge.refunded
invoice.payment_succeeded
4242 4242 4242 4242
, any future expiry, and any CVC.<form id="payment-form"> <div id="card-element"></div> <button id="submit">Pay</button> </form>
const stripe = Stripe('YOUR_PUBLISHABLE_KEY'); const elements = stripe.elements(); const card = elements.create('card'); card.mount('#card-element');
const {error, paymentIntent} = await stripe.confirmCardPayment( clientSecret, { payment_method: { card } } );
Stripe sends webhook notifications whenever key events happen. Here are the most common ones you’ll want to catch:
payment_intent.succeeded
– mark the order as paid and send a confirmation email.payment_intent.payment_failed
– notify the shopper and ask for another payment method.charge.refunded
– update the order to “Refunded” and email a refund receipt.invoice.payment_succeeded
– extend the customer’s subscription and send a receipt.// Example (pseudo-code) if (signatureIsValid(request, STRIPE_SECRET)) { switch (event.type) { case 'payment_intent.succeeded': markOrderPaid(event.data.object.metadata.order_id); break; case 'payment_intent.payment_failed': notifyCustomer(event.data.object.metadata.order_id); break; // … } }
var/log/dev-*.log
) to catch exceptions.stripe listen --forward-to https://your-site.com/webhook
Using Stripe Checkout or Elements means sensitive card data is handled by Stripe’s servers—not yours—greatly reducing your PCI burden. Always serve checkout pages over HTTPS.
Turn on Stripe Radar’s default rules, review flagged payments, and refine velocity limits to cut down on fraud.
Attach order IDs, customer IDs, and cart summaries as metadata on each PaymentIntent so you can reconcile transactions easily. Never log full card information.
How can I swap out API keys without taking my site offline?
Most Stripe plugins let you enter both test and live keys side by side. Simply paste your new live keys in and switch modes in the UI—no reinstallation needed. For custom setups, push your changes during a slow traffic window so there’s no interruption for customers.
Is it possible to offer installment plans?
Absolutely. In your Stripe Dashboard under Payments, you can enable Buy Now, Pay Later options like Klarna or Afterpay. Then in your Shopware plugin settings, flip on those payment methods so they appear at checkout.
What’s the process for issuing refunds?
Full Refunds: Head to the order in Shopware and click Refund—the plugin will call Stripe’s refund API automatically.
Partial Refunds: You can issue these either in the Stripe Dashboard (just enter the amount) or via API by specifying the refund amount in cents.
How much does Stripe charge?
Standard rates are around 2.9% + $0.30 for domestic cards, but you’ll want to check your Stripe Dashboard for your region’s exact pricing. International cards typically add 1% extra, and if you’re converting currencies, there’s usually another 1% fee.