Back to Blog
medusa Mar 5, 2026 6 min read

Medusa vs Shopify: When Open-Source E-Commerce Makes More Sense

H

HowToDeploy Team

Lead Engineer @ howtodeploy

Medusa vs Shopify: When Open-Source E-Commerce Makes More Sense

Shopify dominates e-commerce — and for good reason. It's polished, reliable, and has a massive app ecosystem. But that convenience comes with real costs: transaction fees (0.5-2% unless you use Shopify Payments), theme limitations, and platform lock-in that makes migration painful.

Medusa is an open-source commerce platform that gives developers full control over the commerce backend — no transaction fees, complete API access, and a modular architecture that lets you build exactly the store you need.

The real cost of Shopify

Shopify's pricing looks simple on the surface:

PlanMonthlyTransaction fee (non-Shopify Payments)
Basic$39/mo2.0%
Shopify$105/mo1.0%
Advanced$399/mo0.6%

But the real cost is higher:

Transaction fees add up fast

If you process $10,000/month through a non-Shopify payment gateway (PayPal, Stripe, etc.), that's an extra $100-200/month in transaction fees on top of your plan cost.

Even with Shopify Payments, credit card rates are 2.9% + 30¢ on the Basic plan — higher than Stripe's standard 2.9% + 30¢ because you're also paying the $39/month platform fee.

App costs compound

Shopify's app store is a strength and a weakness. Need advanced analytics? $29/month app. Better email marketing? $19/month. Subscriptions? $49/month. A typical store runs 5-10 paid apps, adding $100-300/month.

With Medusa, these features are either built-in or available as free plugins in the modular architecture.

Theme limitations

Shopify themes use Liquid — a proprietary templating language. Want a fully custom storefront? You're either limited by what Liquid supports or building a headless setup on top of Shopify, which defeats the purpose of the platform fee.

How Medusa is different

API-first architecture

Medusa is headless by default. The backend handles products, orders, customers, inventory, payments, and shipping. The frontend is completely separate — you can build it with Next.js, Remix, Gatsby, or any framework.

This means:

  • No theme limitations — your storefront is a regular web app
  • Multi-storefront — one backend serving web, mobile, POS, and marketplace
  • Full design freedom — no Liquid templates, no theme constraints

Modular architecture

Medusa's architecture is built around swappable modules:

  • Payment providers — Stripe, PayPal, or any custom provider (no transaction fees from Medusa)
  • Fulfillment — integrate with any 3PL or custom fulfillment workflow
  • Notifications — email, SMS, push — use any service
  • Search — Algolia, MeiliSearch, or Elasticsearch

You only install what you need. No bloat, no paying for features you don't use.

No transaction fees

Medusa doesn't take a cut of your sales. Ever. You pay your payment provider's processing fees (Stripe's 2.9% + 30¢, for example) and your server costs. That's it.

On $10,000/month in sales, that saves you $100-200/month compared to Shopify with a third-party gateway.

Feature comparison

FeatureShopify (Basic)Medusa (Self-hosted)
Product management
Order management
Customer management
Inventory tracking
Multi-currency✅ (with Shopify Payments)
Multi-regionLimited✅ (native)
Discount/promotion engine
Gift cards
Tax calculations✅ (via plugins)
Payment gatewaysShopify Payments + othersAny provider (Stripe, PayPal, etc.)
Headless/API✅ (Storefront API)✅ (native — API-first)
Custom storefrontLimited (Liquid themes)Full freedom (any framework)
Transaction fees0.5-2% (non-SP)None
Source code access✅ (fully open source)
Self-hosting
Data ownershipShopify's serversYour server
Monthly cost$39-399/mo + fees$12-30/mo (server)

Who should use Medusa?

Medusa is ideal for:

  • Developer-led teams that want full control over the commerce stack
  • Businesses with custom requirements — unique checkout flows, B2B pricing, marketplace features
  • Companies scaling past $10K/month revenue where Shopify's fees add up
  • Multi-region businesses needing native multi-currency and multi-warehouse support
  • Brands building custom storefronts with React/Next.js — Medusa's headless approach is a natural fit
  • Privacy-conscious businesses that need data on their own infrastructure

Stick with Shopify if:

  • You're a non-technical founder who needs a store live today
  • You rely heavily on Shopify's app ecosystem
  • You need Shopify's built-in POS system for physical retail
  • You want a fully managed solution with no server management

Self-hosting Medusa

Medusa requires Node.js, PostgreSQL, and Redis. A manual setup involves:

  1. Provisioning a server (2GB+ RAM recommended)
  2. Installing Node.js, PostgreSQL, and Redis
  3. Cloning the Medusa starter
  4. Configuring database, Redis, and payment providers
  5. Running migrations
  6. Setting up a reverse proxy and SSL
  7. Deploying the storefront separately

With HowToDeploy, it's 3 steps:

  1. Connect your cloud provider
  2. Select Medusa from the catalog
  3. Enter your admin email and click Deploy

PostgreSQL, Redis, and the Medusa backend are configured automatically. Add a custom domain for your storefront from the deployment settings.

Deploy Medusa →

Cost comparison: first year

Monthly revenueShopify Basic (annual)Medusa self-hosted (annual)Savings
$5,000/mo$468 + ~$600 fees = $1,068$144-360$708-924
$10,000/mo$468 + ~$1,200 fees = $1,668$144-360$1,308-1,524
$50,000/mo$1,260 + ~$3,600 fees = $4,860$360-720$4,140-4,500

Shopify fees assume 1% transaction fee on non-Shopify Payments. Medusa costs include server + management fee only.

The higher your revenue, the more you save with Medusa.

Bottom line

Shopify is the right choice for getting a store live fast with minimal technical effort. But if you're a developer or have developers on your team, Medusa gives you dramatically more flexibility at dramatically lower cost.

No transaction fees, full API access, complete source code ownership, and the freedom to build exactly the commerce experience your customers need.

Try Medusa on your own server →