// the find
mercurjs/mercur
Open-source multi-vendor marketplace platform for B2B & B2C. Built on top of MedusaJS. Create your own custom marketplace. 🛍️
Mercur is a multi-vendor marketplace layer built on top of MedusaJS, adding vendor onboarding, commission management, offer systems, and automated payouts to Medusa's existing commerce core. It positions itself as an open-source Mirakl alternative for teams who want marketplace primitives without building them from scratch or paying per-GMV SaaS fees. Best fit for developers already bought into the Medusa/Node.js ecosystem who need to ship a real marketplace.
The architecture decision to build on Medusa rather than reinventing catalog, orders, payments, and shipping is the right call — you get a tested commerce core and Mercur only adds the marketplace-specific layer (vendors, commissions, order splitting, payouts). The offer system, where multiple sellers can list competing prices against the same product SKU, is exactly the right primitive for a genuine marketplace rather than a multi-store hack. The monorepo structure with separate admin, vendor, and storefront apps plus a typed API client and dashboard SDK gives teams clear seams for customization without forking the core. Stripe Connect payout provider is included out of the box, which is the hardest part to get right in any marketplace implementation.
The enterprise upsell wall is real: buy box logic, EAN deduplication, and split payout automation are all locked behind the paid tier, which means the open-source version is missing the pieces that matter most at scale. The dependency on MedusaJS means you inherit whatever breaking changes Medusa ships — the migration guides from 1.x to 2.0 and 2.0 to 2.1 exist for a reason, and Medusa has historically moved fast and broken things. There's no mention of how dispute resolution, returns, or refunds work in a split-order context, which is a significant operational gap for any real marketplace. Redis and PostgreSQL are both required dependencies, so the local dev setup is heavier than it looks from the README.