Skip to content

Open Source experience notes

Mercur

Open-source multi-vendor marketplace on Medusa — sellers, offers, commissions, order splitting, and payouts without GMV platform fees.

Mercur

Features, structure, and why it matters

Inside Mercur

A clear project walkthrough you can scan section by section.

Mercur is an open-source, headless marketplace platform built on Medusa — positioned as a Mirakl-style alternative you can self-host without GMV fees or a locked SaaS runtime. I follow it when the job is real multi-vendor commerce (seller onboarding, shared catalogs with seller offers, commissions, split orders, payouts) rather than bolting “vendors” onto a single-seller cart. The GitHub monorepo, mercurjs.com, features, and v2 docs describe an MIT-licensed core plus optional Enterprise modules, with Admin, Vendor, and Storefront surfaces talking to a TypeScript / Medusa API. Setup for product work is typically bun create mercur-app@latest — clone the monorepo mainly when contributing upstream.

Mercur marketplace overview
Mercur — multi-vendor marketplace platform

What I like most about Mercur

I keep Mercur on the shortlist when marketplace primitives matter more than another B2C theme — sellers and offers are first-class, not an afterthought plugin.

1. Marketplace domain on a real commerce core

Medusa already covers products, carts, orders, payments, shipping, tax, and stock; Mercur adds sellers, onboarding, product requests/approvals, commissions, reviews, return escalations, order splitting, and vendor payouts (docs intro).
Why it matters: You inherit a battle-tested commerce engine instead of reinventing checkout while still getting multi-vendor behavior.

2. Master catalog + seller offers

Products are shared master catalog items; sellers attach offers (their SKU, price, inventory, shipping) against the same product — the model docs call out explicitly (Offers, Products).
Why it matters: True marketplace assortment (multiple sellers on one product) is different from “each vendor owns a private product tree.”

3. Commissions, split orders, and payouts

Rule-based commissions (flat, percentage, or mixed by site/category/product/seller), multi-seller carts that become order groups with split seller orders, and payout plumbing integrated with Stripe Connect (features, commissions, payouts).
Why it matters: Fee math and money movement are usually the hardest parts of a marketplace build.

4. Operator + seller workspaces

Admin panel for marketplace operators (vendors, catalog, commissions, rules) and a Vendor panel for sellers (catalog/offers, orders, payouts) — plus storefronts for B2C/B2B/hybrid browsing and checkout (site suite, README architecture).
Why it matters: You need three audiences day one: operator, seller team, and buyer — not only a storefront.

5. Block-based ownership model

v2 docs emphasize blocks copied into your project via CLI (not opaque forever-plugins), with workflow hooks, typed clients, and registry/diff tooling for upgrades (welcome, blocks).
Why it matters: Marketplace logic is rarely “config only”; owning source in-repo reduces fork anxiety vs patching a black box.

6. Deployment choice without a proprietary host

Plain Node.js + PostgreSQL + Redis — containers, K8s, your cloud, or air-gapped; optional Medusa Cloud if you want managed backend. Marketing also describes standalone vs connected marketplace (layer on Magento/Shopify/custom) (homepage, README deployment).
Why it matters: Brands with an existing commerce core often want marketplace as a parallel layer, not a full replatform on day one.

TIP

For a first look: run bun create mercur-app@latest, hit Admin (/dashboard) and Vendor (/seller) with the seeded demo seller, then read installation and the Mirakl alternative note before promising enterprise features that may live in Mercur Enterprise.

Project structure

Product shape (from README + site): independently deployable pieces over APIs.

Piece Role
Mercur Core Marketplace engine on Medusa — vendors, commissions, payouts, multi-vendor primitives
Admin Panel Operators manage sellers, catalog, categories, commissions, rules
Vendor Panel Sellers manage products/offers, orders, payouts
Storefronts Buyer-facing B2C/B2B multi-vendor browse, cart, checkout
Mercur Connect Data/integrations layer (imports, sync across systems) — marketed alongside core

Upstream monorepo (mercurjs/mercur) is the development workspace: @mercurjs/core, React + Vite admin/vendor dashboards, @mercurjs/cli, typed API client, dashboard SDK, Stripe Connect payout provider, integration suites. App projects from bun create mercur-app@latest are the normal path for building a marketplace.

@mercurjs/core layout (from architecture docs):

Path Role
modules/ Seller, commission, offer, payout, product-attribute, product-edit, …
links/ Relationships to Medusa entities without mutating core models
workflows/ Multi-step flows (cart split, commissions, payouts, product approval, …)
`api/admin vendor
subscribers/ / jobs/ Event side effects and scheduled work
providers/ Third-party integrations (e.g. payouts)

API paths: /admin/* (operators), /vendor/* (sellers), /store/* (storefront / checkout with splitting).

Mental model:

  • Medusa foundation — catalog, cart, order, payment, fulfillment, events
  • Mercur marketplace layer — sellers, offers, commissions, order groups / split orders, payouts, request/approval flows
  • Blocks + registry — install/extend features as owned source in your project
  • Panels — Admin / Vendor / Storefront consumers of those APIs
# Prerequisites (README): Node.js >= 20.x, PostgreSQL >= 13, Redis; Bun recommended
bun create mercur-app@latest my-marketplace
cd my-marketplace
bun run dev
# Backend API:  http://localhost:9000
# Admin:        http://localhost:9000/dashboard
# Vendor:       http://localhost:9000/seller
# Demo seller:  seller@mercur.dev / supersecret (seeded catalog)

Optional integrations called out upstream: Stripe Connect payouts, Resend email, Algolia/Meilisearch search — credentials in .env when enabled.

Code analysis

Stack snapshot (README, site, monorepo package.json):

Layer Technology Notes
Commerce core Medusa (overrides pin ~2.17.x in monorepo) Products, carts, orders, payments, etc.
Language TypeScript API-first, event-driven
Runtime Node.js (≥18 engines; README recommends ≥20) + Bun bun as package manager / create CLI
UI React + Vite Admin and vendor dashboards
Data PostgreSQL ≥13 Primary store
Cache / jobs Redis Required companion service
Monorepo tooling Turbo workspaces apps/*, packages/*, providers
Payouts Stripe Connect provider Pluggable payout interface
Search Algolia or Meilisearch Optional discovery
License (core) MIT Open core; Enterprise is a separate licensed suite

Strengths when I evaluate it:

  • Real marketplace model — sellers, offers, commissions, split orders, payouts documented as product concepts
  • Medusa leverage — commerce primitives you do not rebuild
  • Headless / API-first — Admin, Vendor, Storefront APIs for custom UIs
  • Block + CLI workflowadd, codegen, diff oriented toward owned customization (and AI-assisted extension per docs)
  • No GMV fee on self-host core — cost shifts to infra and team, not platform cut

Trade-offs / caveats:

  • Not PHP / Laravel — older labels that call it a “PHP script” are wrong; this is a Node/TypeScript/Medusa stack. Plan ops accordingly.
  • Open-core — advanced modules (Buy Box, KYC, EAN matching, multi-channel stock sync, etc.) are marketed under Mercur Enterprise; do not assume every feature page item ships in MIT core
  • Stack weight — Node, Postgres, Redis, Medusa, and marketplace domain is heavier than a simple CodeCanyon multi-vendor theme
  • B2B depth varies by storefront/template — e.g. food wholesale templates (PROKITCHEN) are called out separately; confirm quote/company flows for your vertical
  • Team must be comfortable extending Medusa workflows and TypeScript services

Env sketch (illustrative):

# .env — follow the create-app template; names illustrative
DATABASE_URL=postgres://user:pass@localhost:5432/mercur
REDIS_URL=redis://localhost:6379
# Stripe Connect / Resend / Algolia or Meilisearch when those integrations are enabled

Why people use it

Audience Why Mercur fits
Marketplace founders Multi-vendor primitives without Mirakl-class SaaS fees
Brands adding 3P sellers Connected model alongside Magento/Shopify/custom (per site)
B2B / hybrid operators Price lists, company-oriented storefront patterns, shared catalog + offers
Medusa / TypeScript teams Marketplace layer on a stack they already ship
Self-host / data-control buyers Own infra, MIT core, no forced proprietary runtime

Skip it if you only need a single-seller shop, refuse Node/Postgres ops, or need Enterprise-only modules without budget for that tier — a thinner custom Medusa or Laravel path may be clearer.

Conclusion

Mercur is one of the strongest open-source marketplace options I follow on the Medusa ecosystem: sellers, offers, commissions, split orders, and payouts as first-class product — not a B2C cart with a “vendor” checkbox (repo, site, features, docs, resources/blog).

Honest caveat: treat marketing feature lists as platform capability, then verify what lands in MIT core vs Enterprise for your go-live scope. And if an older brief called this a PHP script — correct the architecture assumption before staffing the build.

Keep exploring

Curious about my Mercur notes?

Happy to share how I evaluate open-source marketplaces like Mercur — or if you need help mapping marketplace requirements to a deployable stack, tell me about your setup.