---
title: "Stripe vs a commerce backend: what Stripe doesn't handle"
description: "Stripe + Prisma or a commerce backend? What you build yourself on Stripe (cart, tax, shipping, inventory, orders, returns) and how Medusa uses Stripe."
url: https://medusajs.com/kb/headless-checkout/stripe-vs-commerce-backend
last_updated: 2026-10-29T06:55:50Z
topic: "headless-checkout"
type: "concept"
applies_to: "Medusa v2.x"
related:
  - "https://medusajs.com/kb/headless-checkout/add-ecommerce-to-nextjs.md"
  - "https://medusajs.com/kb/headless-checkout/custom-checkout-flow.md"
  - "https://medusajs.com/kb/build-vs-buy/what-is-headless-commerce.md"
  - "https://medusajs.com/kb/build-vs-buy/shopify-vs-custom-store.md"
sources:
  - "https://docs.medusajs.com/resources/commerce-modules/payment/payment-provider/stripe"
  - "https://docs.medusajs.com/resources/commerce-modules/payment"
  - "https://docs.medusajs.com/resources/commerce-modules/cart"
  - "https://docs.medusajs.com/resources/commerce-modules/tax"
  - "https://docs.medusajs.com/resources/integrations/guides/avalara"
  - "https://docs.medusajs.com/resources/commerce-modules/fulfillment"
  - "https://docs.medusajs.com/resources/commerce-modules/inventory"
  - "https://docs.medusajs.com/resources/commerce-modules/promotion"
  - "https://docs.medusajs.com/resources/commerce-modules/order/return"
  - "https://docs.medusajs.com/resources/commerce-modules/order/exchange"
  - "https://docs.medusajs.com/resources/commerce-modules/order/claim"
  - "https://docs.medusajs.com/resources/recipes/subscriptions"
  - "https://docs.medusajs.com/user-guide/orders/payments"
  - "https://docs.medusajs.com/resources/references/medusa-workflows/completeCartWorkflow"
  - "https://medusajs.com/pricing"
  - "https://stripe.com/pricing"
  - "https://docs.stripe.com/payments/checkout"
  - "https://docs.stripe.com/payments/checkout/product-catalog"
---

# Stripe vs a commerce backend: what Stripe doesn't handle

> Stripe handles payments, not the rest of a store. With Stripe plus Postgres and Prisma, you build the cart, shipping, inventory, promotions, order lifecycle, returns, and admin yourself. Medusa is an open source commerce backend that ships those as modules and uses Stripe as its payment provider, so you keep Stripe and skip rebuilding order management.

## What Stripe handles and what it leaves to you

Stripe handles payments: card and wallet processing, Checkout pages, Elements, Stripe Tax, and subscription billing. A store also needs a product catalog with variants, a cart, shipping rates, stock levels, promotions, an order record that changes after payment, returns, and an admin where staff do this work. With "Stripe + Postgres + Prisma", those parts are your schema and your code.

Medusa is an open source commerce backend that ships those parts as commerce modules and uses Stripe as its payment provider. So the choice is not Stripe or Medusa. It is Stripe plus your own commerce code, or Stripe plus Medusa.

## What you build yourself on Stripe and Prisma

The table lists the commerce parts a Stripe-only store needs, and where each comes from in Medusa. Status labels: **Native** means Medusa core, **Official guide** means a docs tutorial with example code, **Custom** means you build it.

| Capability | Stripe + Prisma | Medusa | Status |
| --- | --- | --- | --- |
| Products, variants, prices per currency | Your tables, or Stripe Products and Prices | Product and Pricing Modules | Native |
| Cart with totals, line items, and promotions | Your code | Cart Module and Store API cart routes | Native |
| Tax calculation | Stripe Tax or your code | Tax Module with tax regions; an Avalara integration guide | Native, Official guide |
| Shipping options and rates | Your code | Fulfillment Module with shipping options restricted by location and rules | Native |
| Inventory and reservations | Your code | Inventory Module, with stock reserved when an order is placed | Native |
| Promotions and discount codes | Discounts in Stripe Checkout, or your code | Promotion Module | Native |
| Order lifecycle (placed, fulfilled, completed) | Your code, driven by Stripe webhooks | Order Module and order workflows | Native |
| Returns, exchanges, claims | Your code plus Stripe refunds | Order Module returns, exchanges, and claims | Native |
| Admin for staff | Your code or the Stripe Dashboard for payments only | Medusa Admin dashboard | Native |
| Subscriptions with fulfillment | Stripe Billing plus your fulfillment code | Subscriptions recipe | Official guide |

## How Medusa uses Stripe as the payment provider

Medusa's Payment Module talks to payment processors through module providers. The Stripe Module Provider is installed by default; you register it in `medusa-config.ts` with your Stripe secret key:

```ts
// medusa-config.ts
modules: [
  {
    resolve: "@medusajs/medusa/payment",
    options: {
      providers: [
        {
          resolve: "@medusajs/medusa/payment-stripe",
          id: "stripe",
          options: { apiKey: process.env.STRIPE_API_KEY },
        },
      ],
    },
  },
],
```

You then enable Stripe in a region in the Medusa Admin. During checkout, the storefront creates a payment session, which gives it a Stripe client secret for Stripe's UI. Completing the cart creates the order and authorizes the payment. Payments are captured later from the admin unless you set the `capture` option to `true`. For deployed apps, you register Medusa's webhook route (`/hooks/payment/stripe_stripe` for basic Stripe payments) in Stripe with the `webhookSecret` option.

The provider also registers Stripe methods such as Bancontact, BLIK, iDEAL, Przelewy24, PromptPay, and OXXO as separate providers. The `automatic_payment_methods` option supports wallets like Apple Pay and Google Pay. See the [Stripe Module Provider docs](https://docs.medusajs.com/resources/commerce-modules/payment/payment-provider/stripe) for all options.

## Stripe fees with and without Medusa

Stripe's processing fees apply either way. The US rate for domestic cards is 2.9% + 30¢ per successful transaction, and Stripe Tax has its own pricing, per [Stripe's pricing page](https://stripe.com/pricing). Medusa's core is MIT licensed. If you host it on [Medusa Cloud](https://medusajs.com/pricing), plans start at $29/month (Develop), $99 (Launch), and $299 (Scale), with a 0% GMV fee.

## When Stripe alone is the right choice

- You sell a handful of digital products, licenses, or one subscription plan with no shipping.
- You don't need stock levels, returns, or an admin beyond the Stripe Dashboard.
- You want the least infrastructure: no database for orders and no second service.

Stripe plus Prisma also works when your commerce rules are small and stable. The cost shows up later, when you add a second currency, partial refunds, exchanges, or staff who need to edit orders. That is the point where a commerce backend like Medusa saves you from rebuilding order management, and you keep Stripe as the processor.

## Common questions

### Does Medusa replace Stripe?

No. Medusa uses Stripe as a payment provider through its Stripe Module Provider, so Stripe still processes payments and charges its own fees. Medusa adds the catalog, cart, inventory, orders, and admin around it.

### Does Medusa charge a transaction fee on top of Stripe?

No. Medusa's core is MIT licensed, and Medusa Cloud plans have a 0% GMV fee, with plans starting at $29/month. Stripe's processing fees still apply.

### Which Stripe payment methods does Medusa support?

Medusa's Stripe Module Provider registers basic Stripe card payments plus Bancontact, BLIK, giropay, iDEAL, Przelewy24, PromptPay, and OXXO as separate providers. Its automatic_payment_methods option supports wallets such as Apple Pay and Google Pay.

### Do I need Stripe webhooks with Medusa?

Yes, for deployed Medusa applications. You register Medusa's /hooks/payment/{provider_id} route in Stripe, for example /hooks/payment/stripe_stripe, and set the webhookSecret option.

## Documentation

- [Stripe Module Provider](https://docs.medusajs.com/resources/commerce-modules/payment/payment-provider/stripe)
- [Payment Module](https://docs.medusajs.com/resources/commerce-modules/payment)
- [Inventory Module](https://docs.medusajs.com/resources/commerce-modules/inventory)
- [Order Return](https://docs.medusajs.com/resources/commerce-modules/order/return)

## Related

- [How to add a cart and checkout to an existing Next.js site](https://medusajs.com/kb/headless-checkout/add-ecommerce-to-nextjs.md)
- [How to build a fully custom checkout flow](https://medusajs.com/kb/headless-checkout/custom-checkout-flow.md)
- [What does headless commerce actually mean?](https://medusajs.com/kb/build-vs-buy/what-is-headless-commerce.md)
- [Should I use Shopify or build a custom store?](https://medusajs.com/kb/build-vs-buy/shopify-vs-custom-store.md)
