macrostack
Migration guide · Layer 5

Shopify → Medusa

What it saves, what actually moves, what you rebuild — and the thing that catches people.

What it costs, and what it saves

Shopify, as listed on 2026-10-03 (US): Basic $29/mo billed yearly or $39 monthly, Grow $79 or $105, Advanced $299 or $399, Plus from $2,300/mo. Shopify Payments online card rates run from 2.9% + 30c (Basic) to 2.25% + 30c (Plus), plus 1% on international cards; using a third-party payment provider adds a 2% / 1% / 0.6% / 0.2% transaction fee by plan. Medusa's core is MIT-licensed and free to self-host; you pay for PostgreSQL, Redis, two app instances (server and worker, at least 2 GB RAM per Medusa's guide) and storefront hosting. Medusa Cloud, as listed on 2026-10-03: Develop from $29/mo, Launch from $99/mo, Scale from $299/mo, Enterprise custom. Card fees do not disappear: Stripe's standard US rate is 2.9% + 30c, plus 1.5% for international cards and 1% when currency conversion is needed (stripe.com, 2026-10-03). The saving is the plan fee, third-party transaction fees and paid Shopify apps; the new cost is developer time to build and run the storefront, which for a small store usually exceeds the plan fee (estimate).

93
Medusa
MIT
Effort: Estimate, not a vendor figure: 6 to 16 weeks of developer time for a store with a few hundred products and a handful of apps; longer if subscriptions, B2B pricing or multi-currency need custom Medusa modules.

Moves cleanly

Catalogue data moves best: products, variants, prices, images, inventory levels, collections and categories, through Medusa's documented Shopify import, which pulls from Shopify's API and can be re-run. Customer names, emails, phone numbers, default addresses, marketing-consent flags, tags, notes and tax-exempt status come out of Shopify's customer CSV. Order history exports to a CSV with 60+ fields (line items, totals, discounts, refunds, addresses, payment references) and can be loaded as history, although Medusa's guide says its importer is built mainly for catalogue data.

You rebuild

The storefront itself (Shopify themes do not run on Medusa; Medusa points to its Next.js DTC starter), every Shopify app's function such as reviews, subscriptions, upsells and loyalty, payment and tax configuration, shipping rules, transactional emails, content and blog pages, the URL structure, and customer passwords: Shopify's customer CSV has no password column, so every account holder must set a new password.

What Shopify costs you today

Basic runs about $39/month, Shopify $105, Advanced $399, with Plus quoted in the thousands. The subscription is rarely the real cost. Transaction fees are: card rates around 2.9% plus 30 cents on Basic, and an additional 0.5% to 2% on top if you use a payment provider other than Shopify Payments. Apps add up quickly — a mature store commonly runs $200 to $500 a month in third-party subscriptions. Figures checked 2026-08-07.

What actually holds you in

High, and concentrated in the theme and app layer. Products, customers and orders export as CSV without much trouble. What does not move is everything built around them — Liquid templates, app configurations, the checkout customisations, and the URL structure your SEO depends on. Redirect planning is the step most migrations underestimate, and it is where the traffic loss happens.

What you are moving to

Medusa is a modular commerce backend built in Node and TypeScript: cart, orders, fulfilment, payments and inventory exposed as APIs, with the storefront entirely your own. There is no transaction fee and no seat count — you pay for hosting. MIT, around 35.6k stars and actively developed. It suits teams that already build in JavaScript and want commerce to be a service inside their own application rather than a platform their application lives inside. The cost is real: you are assembling a stack Shopify hands you complete.

Free and open source. You pay for hosting and the developers who build the storefront.

Medusa strengths

  • MIT with no revenue share — growth does not raise the software bill
  • TypeScript throughout, which is where most web teams already are
  • Modular by design: use the commerce parts you need, ignore the rest
  • Headless, so the storefront is yours entirely

What you give up

  • You build the storefront — Shopify gives you one on day one
  • No app store; integrations are code you write and maintain
  • Needs a developer permanently, not just at launch
  • Checkout conversion is your problem to solve and optimise

The migration, step by step

  1. 1Inventory and export: pull products through the Shopify Admin API, export customers (Customers > Export) and orders (Orders > Export; files over 50 orders are emailed), list every installed app and what it does for you, and crawl the live site for every product, collection, page and blog URL.
  2. 2Stand up Medusa: either self-host with PostgreSQL, Redis and separate server and worker instances (at least 2 GB RAM per Medusa's deployment guide) or use Medusa Cloud; then create regions, currencies, tax settings and shipping options that match what Shopify charges today.
  3. 3Set up payments: register the Stripe provider in medusa-config.ts, add a Stripe webhook at {server_url}/hooks/payment/stripe_stripe for the payment_intent events Medusa lists, and enable the provider in each region in Medusa Admin, since checkout will not offer it otherwise.
  4. 4Import with one method only: run the API-based importer for products first, then inventory, customers and orders; re-host product images on your own storage; spot-check variants, prices and stock counts against the Shopify admin before going further.
  5. 5Build the storefront from Medusa's DTC starter, rebuild content pages, and write a 301 redirect map from every old Shopify path (/products/<handle>, /collections/<handle>, /pages/, /blogs/) to its new URL. Parallel-run on a staging subdomain with Stripe in test mode, re-running the importer to pick up changes, and place full test orders including refunds.
  6. 6Cut over: freeze catalogue edits, run a final delta import, switch DNS, turn on the redirects, email password-reset invitations, and watch 404s and indexing in Search Console. Keep the Shopify account until order records are archived and the return window for orders paid through Shopify has closed.

The gotcha

Medusa's own Shopify guide names two traps. First, the CSV route is lossy: inventory quantities are not migrated, collections are usually missing from the export, and product images stay as URLs pointing at Shopify's CDN, so re-host them before closing the Shopify store or every product photo depends on an account you are shutting down. Second, do not mix the CSV and API importers on one store: CSV rows carry no source IDs, so a later API import cannot match them and fails on duplicates. Separately, URLs change shape: Shopify serves /products/<handle>, while Medusa's DTC starter routes products under /[countryCode]/products/[handle], so every indexed product URL needs a 301 or you lose its search ranking and backlinks. And orders paid through Shopify Payments were captured in Shopify, not in your new Stripe account, so refunds on pre-cutover orders still have to be issued from Shopify.

When to stay on Shopify

Stay if no one on your team can own a Node.js codebase, a database and a storefront deployment; if your revenue depends on Shopify's checkout, POS, Shopify Markets or apps you cannot rebuild; or if what you really want is a custom front end. Shopify's plans already include headless storefronts (1 on Basic to Advanced, 25 on Plus), so you can rebuild the front end without moving the back office.

Compare firstAll 5 Shopify alternatives, rankedWhere this sitsLayer 5 — Applications

More Layer 5 migrations

Figures verified 2026-08-07 against vendor pricing pages. Prices change and migrations differ by estate — treat the cost delta as a starting model, not a quote. Rankings and recommendations here are merit-only; affiliate income never changes a verdict. See our methodology.

The Macrostack brief

New swaps, worth your inbox.

A short, occasional email when we add a high-intent alternative or ship a new head-to-head. No spam, no selling your address — unsubscribe in one click.