Skip to content

Flint vs Medusa

Flint vs Medusa: the commerce backend, hosted, with payments and tax built in.

Medusa is a commerce framework you deploy and run, on your own servers or on Medusa Cloud from $29, $99, or $299 a month. Payments are a Stripe provider you configure with your own Stripe account and webhook, and automatic tax is a provider module you build. Flint Pay is the hosted alternative: one commerce API with Stripe processing, inventory held at payment, and a dashboard included at 3.79% + 35¢ per card payment with no monthly fee, and automatic US sales tax built in at 0.50% of payments that carry tax.

3.79% + 35¢ on cards · no monthly fee · free sandbox · no credit card

last reviewed 2026-10-15 · sources

01Side by side

Flint vs Medusa, need by need.

The Medusa column is what Medusa's own pricing page, documentation, and GitHub issues say today, each linked under Sources. The Flint column is what a Flint account does, with the API name behind it.

Running the backendMedusa v2, self-hosted or on Medusa Cloud: You deploy the Medusa application and its database, or use Medusa Cloud: Develop from $29, Launch from $99, Scale from $299 a month, with compute hours, seats, and storage metered above each plan's allowance.Flint: Hosted. There is no server, database, or worker to run, and no monthly fee. Unlimited seats and sandboxes.GET /v1/balance-transactions
Taking paymentsMedusa v2, self-hosted or on Medusa Cloud: Bring your own Stripe account. Add the Stripe provider to the config with your secret key and webhook secret, enable it in each region, and register a webhook route for four payment events. Capture is off by default.Flint: Stripe processing is part of the account, at 3.79% + 35¢ per card payment with Stripe's fees included. Flint takes the payment on the order; you add no Stripe keys and register no Stripe webhooks.POST /v1/orders/{order_id}/pay
When a payment failsMedusa v2, self-hosted or on Medusa Cloud: Open issue #16398, opened August 11, 2026: canceled and failed Stripe payment webhooks are ignored, leaving orders in a pending state.Flint: The payment's outcome lands on the order. A failed payment releases the stock the order held; a successful one commits it and sends your server order.paid, retried for up to 72 hours.order.paid
Sales taxMedusa v2, self-hosted or on Medusa Cloud: A built-in system provider performs basic calculation. For automatic rates you create a custom module: Medusa's Avalara guide has you write the provider, the workflows, and the subscribers.Flint: Automatic US sales tax, calculated after discounts from the buyer's address and connected once in the Dashboard. 0.50% on payments that carry tax, or pass your own rates for free.tax_money
SubscriptionsMedusa v2, self-hosted or on Medusa Cloud: Medusa's subscriptions recipe has you build a Subscription Module and scheduled renewal jobs. Its Stripe provider doesn't handle subscriptions.Flint: Plans with any interval, trials, setup fees, dunning, and buyer pause and skip. Each renewal is an order that can ship. 0.40% of subscription payments.POST /v1/subscription-plans
CheckoutMedusa v2, self-hosted or on Medusa Cloud: Your storefront collects payment through the Stripe provider you configured.Flint: A hosted checkout and payment links, or your own checkout pages with Stripe Elements, all priced and paid on the same order.POST /v1/checkout-sessions

02What you run

What do you set up yourself to sell on Medusa?

Medusa gives you commerce modules. The processor, the tax engine, the subscription logic, and the servers they run on are yours to connect and keep running. On Flint each of those is a field or an endpoint of one hosted account.

On Medusa, you connect and run

Medusa orderyour database
  1. Hosting

    The Medusa server, its database, and workers

    deployed, scaled, and upgraded by you

  2. Payments

    Your own Stripe account and secret key

    plus a webhook route and secret per provider

  3. Capture

    Manual capture unless you turn it on

    and the provider enabled in each region

  4. Sales tax

    A tax provider module you write

    with workflows and subscribers to keep in sync

  5. Subscriptions

    A Subscription Module of your own

    and scheduled jobs that renew and expire

5 pieces to configure, deploy, and upgrade

On Flint, it's the account

ord_1kmn0aExampleGET /v1/orders/{order_id}
  1. Hosting

    hosted APIPOST /v1/orders
  2. Payments

    payment on the orderPOST /v1/orders/{order_id}/pay
  3. Capture

    payment_intentGET /v1/payment-intents/{payment_intent_id}
  4. Sales tax

    tax_moneyPOST /v1/orders
  5. Subscriptions

    subscription planPOST /v1/subscription-plans

1 API key · 1 webhook stream · no servers

Medusa's Stripe provider docs →Medusa's Avalara guide →

03The glue

What goes wrong between Medusa, Stripe, and tax?

The code that joins the processor and the tax engine to the order is code your team owns. Two bug reports on Medusa's GitHub, open as of October 15, 2026, show where it breaks.

Issue #16398, opened August 11, 2026 against Medusa 2.18.0 and open as of October 15, 2026: “Canceled / failed Stripe payment webhooks are ignored, leaving orders in a pending state.” The provider translates Stripe’s events, but the webhook handler returns early on them, so the payment and the order never reach a final state.

Issue #17055, opened September 28, 2026 and open as of October 15, 2026, with a proposed fix not yet merged: “Cart tax lines are duplicated every time a workflow compensates.” Each failed workflow multiplies a cart item’s tax lines, so completed orders can show more tax than the payment provider charged.

On Flint there is no glue to own. The payment, the stock hold, and the tax are parts of the same order: a failed payment releases the stock, tax is recalculated when anything that affects it changes, and your server hears order.paid once money has moved.

Webhooks on Flint →Inventory held at payment →The Stripe Checkout events you'd otherwise handle →

04Included

What does a Flint account include that Medusa leaves to you?

One hosted API and one dashboard behind your storefront. Each job below is a field or an endpoint, in the core card rate except automatic tax.

Stock is held per location when payment starts, committed on success, and released on failure.

held_quantity

Automatic US sales tax is calculated after discounts and recorded on every line item and charge.

tax_money

Codes and automatic promotions stack by rules you set, with a preview call that shows the result first.

combines_with

Shipping prices by region, goes free over a threshold, or switches to in-store pickup or scheduled local delivery.

POST /v1/delivery-methods

Returns run from a policy, with inspections, restocking fees, exchanges, and buyer self-serve.

POST /v1/return-policies

Refund one line item and its share of the discount and the tax goes back with it.

line_item_allocations

Buyers get a hosted account with their orders, tracking, returns, subscriptions, and saved cards.

GET /v1/me/orders

The commerce API →Next.js commerce on Flint →Build a headless storefront →

05Who Flint is for

Flint is built for US businesses with their own storefront.

If that describes you, the payments, tax, inventory, and checkout above are running the day you create your account.

US businesses

Flint onboards businesses in the US, sells in USD, and pays out to your own bank account. Buyers can pay from anywhere with a card.

Your own front end

A Next.js or any other storefront reads the catalog and creates orders through your backend. Hosted checkout, payment links, and a buyer account are included.

Goods and services

Orders that ship, get picked up, deliver locally, or fulfill as a download or a service, with stock held at payment.

Developers and agents

A public OpenAPI spec, Node and PHP SDKs, a CLI, llms.txt, and MCP servers a coding agent can read.

06Switching

How do you move from Medusa to Flint?

Your storefront keeps its design. The backend it calls moves to Flint, and the Medusa server, the Stripe provider, and the tax module go away.

  1. Recreate the catalog

    POST /v1/products

    Create each Medusa product on Flint with its options and variants, SKUs, and prices.

  2. Load stock by location

    POST /v1/inventory-items

    Create an inventory item for each tracked variant and set its stock at each location you ship or pick up from.

  3. Point checkout at Flint

    POST /v1/checkout-sessions

    Have your backend create an order from the cart and either send the buyer to a hosted checkout or confirm the payment from your own page with Stripe Elements. Turn on automatic tax in the Dashboard.

  4. Move subscribers without a second charge

    billing_start

    If you sell subscriptions, each subscriber saves a card on Flint once; then create the subscription with an imported billing start so Flint charges nothing until the next renewal.

  5. Fulfill from order.paid

    order.paid

    Run fulfillment from the order.paid webhook, test every flow in a sandbox with Stripe's test cards, then switch to live keys.

Read the headless storefront guide →

07Start

From a sandbox key to a paid test order in ten minutes.

Node

npm install @flintpay/node

CLI

npm install -g @flintpay/cli

Test keys are prefixed flint_test_ and bound to a sandbox with its own data, so nothing you try there touches live money. Pay with 4242 4242 4242 4242, any future expiry, any CVC.

Sources

Where each claim comes from.

  • Medusa Cloud Develop from $29 a month, Launch from $99, Scale from $299, Enterprise custom; 0.0% GMV platform fee; compute at $0.16 an hour and seats at $30 a month above each plan's allowance. Medusa pricing

    medusajs.com · checked 2026-10-15
  • The Stripe provider takes an API key and webhook secret, must be enabled in each region, receives Stripe events at a webhook route per provider, and leaves capture off by default. Medusa docs: Stripe Module Provider

    docs.medusajs.com · checked 2026-10-15
  • The system tax provider acts as a placeholder and performs basic tax calculation; other providers implement the tax provider interface. Medusa docs: Tax Module Provider

    docs.medusajs.com · checked 2026-10-15
  • To integrate third-party services you create a custom module; the guide builds the Avalara provider, workflows, and subscribers. Medusa docs: Integrate Avalara

    docs.medusajs.com · checked 2026-10-15
  • Subscriptions are built with your own Subscription Module and scheduled jobs; the Stripe provider doesn't handle subscriptions. Medusa docs: Subscriptions recipe

    docs.medusajs.com · checked 2026-10-15
  • Open as of October 15, 2026, opened August 11, 2026 against Medusa 2.18.0: canceled and failed Stripe payment webhooks are ignored, leaving orders in a pending state. medusajs/medusa issue #16398

    github.com · checked 2026-10-15
  • Open as of October 15, 2026 (fix proposed in pull request #17056), opened September 28, 2026: cart tax lines are duplicated every time a workflow compensates. medusajs/medusa issue #17055

    github.com · checked 2026-10-15
  • US monthly billing: Basic $39, Grow $105, Advanced $399, Plus from $2,300; third-party transaction fees 2%, 1%, 0.6%, 0.2%. Shopify pricing (US)

    www.shopify.com · checked 2026-10-15

last reviewed 2026-10-15 · corrections: Flint Help

FAQ

Questions people ask.

Is Flint a good alternative to Medusa?

For a US business that wants a commerce backend without running one, yes. Flint is hosted, includes Stripe processing at 3.79% + 35¢ per card payment with no monthly fee, and has the catalog with variants, inventory held at payment, promotions, automatic US sales tax, shipping and pickup, returns, subscriptions, a hosted checkout, and a dashboard. Create an account from the website, or from the terminal with flint signup.

How much does Medusa cost?

The Medusa framework is free to self-host, and you pay for the servers and database it runs on. Medusa Cloud starts at $29 a month for Develop, $99 for Launch, and $299 for Scale, with compute hours, seats, and storage metered above each plan’s allowance and no GMV fee. Stripe’s processing fees come on top in every case. Flint has no monthly fee and charges 3.79% + 35¢ per card payment with Stripe’s fees included.

Does Medusa include payments?

No. Medusa ships a Stripe provider that you add to its config with your own Stripe secret key and webhook secret, enable in each region, and connect to a webhook route for Stripe's payment events. Capture is off unless you turn it on. Stripe bills its fees to your Stripe account. On Flint, Stripe processing is part of the account and the payment runs on the order.

Does Medusa calculate sales tax automatically?

Not on its own. Medusa’s built-in system tax provider performs basic calculation, and its documentation describes it as a placeholder. For automatic rates, Medusa’s Avalara guide has you create a custom module with the provider, workflows, and subscribers. Flint calculates US sales tax automatically after discounts once you connect it in the Dashboard, at 0.50% on payments that carry tax. Sales tax on Flint

Medusa vs Shopify: which should I use?

Shopify is a hosted platform with a monthly plan, from $39 to $399 on Basic through Advanced billed monthly, and a 2% to 0.2% fee when another processor takes the payment. Medusa is a framework you host and connect a processor and a tax engine to yourself. Flint is the third option: hosted like Shopify with no monthly fee, API-first like Medusa, with payments included and automatic US sales tax built in (0.50% on taxed payments). Flint vs Shopify

Can I keep my Medusa storefront and move the backend to Flint?

Yes. Your storefront keeps its design and calls your own backend, which calls Flint for products, orders, checkout, and payments. Flint’s headless storefront guide covers your own checkout with Stripe Elements and your own customer account, or Flint’s hosted versions of both.

Keep the storefront. Stop running the backend.

Free sandbox, no credit card, no sales call. Create a product with variants, take a test payment with tax, and watch the stock hold release when a test card declines.

Or run npm install -g @flintpay/cli && flint signup to create your account and a sandbox key from the terminal. CLI guide

More comparisons · last reviewed 2026-10-15