gmi.software
Services

Start with the outcome you need to achieve.

Explore all services
Core areas
Mobile appsApp takeover, development and iOS/Android releasesOnline stores & B2B platformsOnline store development and integrations with business systemsIntegrations & back officeERP, inventory, payments and APIs
Start hereMobile app code auditBefore the first release or when a live app needs repair
Complementary services
App maintenanceSLA, monitoring, stability and continuous improvementE-commerce mobile analyticsFunnel measurement and data-led decisionsAI & automationFrom workflow and business case to productionProduct Discovery & DesignScope, prototype and delivery planWorkshops & estimationRisks, decisions and fixed-price scope
Not sure where to start?Book a short consultation
Projects

Explore products shaped by clear decisions and measurable outcomes.

All case studies
Delivered products

Case studies

Interfaces, scale and delivery outcomes
Świat KsiążkiMobile loyalty programme and product catalogueSFDCommerce, loyalty and everyday motivationSTS / Solarts3D solar installation configurator
Looking for inspiration? Explore the app ideas library
Technologies

We choose the stack around the product, scale and risk.

Explore the full technology stack
Featured
MobileReact NativeScalable iOS and Android productsMobileExpoFaster releases and updates for React Native apps
Web & commerce
Next.jsReactTypeScriptMedusaJS3D configurators
Backend & cloud
Node.jsNestJSPostgreSQLDockerAWS
Quality
PlaywrightMaestro
Tools

Estimate costs and organise decisions before a call.

3 free tools
App cost estimateEstimate scope and budgetOpen toolE-commerce AI adviserMap decisions, risks and optionsOpen toolE-commerce TCO calculatorCompare SaaS and custom over 5 yearsOpen tool
Already have a result or brief?Discuss your outcome
Company

Meet the people, working model and principles behind GMI.

About usAccountability, history and proofCareersHow we work and open applicationsContactNew projects, support or partnershipsBlogNotes on app and commerce development
ENGet in touch
Services
Mobile appsOnline stores & B2B platformsIntegrations & back officeStart hereMobile app code auditApp maintenanceAI & automationAll services
Projects
Technologies
React NativeExpoNext.jsNode.jsFull technology stack
Tools
App cost estimateEstimate scope and budgetE-commerce AI adviserMap decisions, risks and optionsE-commerce TCO calculatorCompare SaaS and custom over 5 years
Company
About usCareersContactBlog
Get in touch
Back to blog
E-commerce
Published: November 10, 2026
10 min read

How do you design a MedusaJS marketplace where each vendor runs its own catalogue and orders?

Vendor model, data and permission isolation, offer publishing, per-vendor orders and the limits of the Medusa v2 core. Ends with the criteria for building the module yourself or adopting a ready-made one.

Mikołaj Lehman, CEO & Founder, GMI Software
Mikołaj Lehman
CEO & Founder, GMI Software

In brief

Medusa v2 has no built-in vendor concept. The documentation describes a marketplace as a custom module with vendor and vendor admin models, connected to products and orders through module links. That leaves four things to design: who the vendor is and who acts on its behalf, how every API request is limited to one vendor's data, how an offer reaches the catalogue, and how a customer order is split into vendor orders. Only with that list can you fairly compare a custom module with a ready-made one.

Medusa v2 has no built-in vendor concept. The documentation describes a marketplace as a custom module with vendor and vendor admin models, connected to products and orders through module links. That leaves four things to design: who the vendor is and who acts on its behalf, how every API request is limited to one vendor's data, how an offer reaches the catalogue, and how a customer order is split into vendor orders. Only with that list can you fairly compare a custom module with a ready-made one.

The short answer

Sources checked on 10 November 2026 against the Medusa v2 documentation; the latest release on that day was v2.22.6.

This guide is for a CTO, product owner or platform operator who wants many vendors to run separate catalogues in one store and handle their own orders. It covers what you need to design in the data model, permissions and processes before the first screen of a vendor panel is built.

The short version: the Medusa core gives you products, carts, orders, authentication and extension mechanisms, but it does not give you a vendor. The vendor, its users, product ownership and order splitting are built as a custom module. The biggest risk is not the module code but data isolation: every vendor endpoint must return and change that vendor's data only.

1. What the Medusa v2 core gives you and what you build

Medusa's marketplace guide says plainly that marketplace features live in a module that defines its own data models, such as vendors. See the Medusa marketplace recipe.

The example in the documentation builds a module with two models, Vendor and VendorAdmin, and connects the vendor to products and orders through module links. A link is a separate join table, similar to a pivot table, so the core product and order tables stay untouched. See the vendors module example.

The table below separates what comes from the core and what is your design decision. It reflects the documentation on 10 November 2026; for another Medusa version, check again.

1. What the Medusa v2 core gives you and what you build
AreaFrom the Medusa v2 coreTo design
VendorNo built-in modelCustom module with vendor and vendor admin models
Products and ordersProduct and Order modulesOwnership via module links to the vendor
Sign-inAuth module with actor types, including custom onesVendor actor type, registration and invitations
PermissionsRoute protection with the authenticate middlewareFiltering every query by vendor
ProcessesWorkflows with steps and roll-back logicOffer publishing, order splitting, vendor suspension
PanelsMedusa Admin for the operatorA separate vendor panel

2. Vendor model: who the vendor is and who acts for it

In the documentation example a vendor has a name, a unique handle and a logo, and its admins have a first name, last name and unique email. That is the technical minimum. The business model almost always needs more, and it is worth settling before the first migration.

The most common mistake is treating the vendor as a single user account. A selling company usually has several people: the owner, someone for the catalogue, the warehouse and accounting. If the vendor and its users are separate entities from the start, adding roles later does not require a rebuild.

  1. Vendor states: applied, under review, active, suspended, closed. Each state decides whether offers are visible and whether orders can be placed.
  2. Roles within a vendor: who can publish offers, who fulfils orders, who sees settlements.
  3. Company data and documents: what the operator verifies before activation and who can change it afterwards.
  4. Invitations and leavers: how to add a new vendor user and how to remove access for someone who leaves.
  5. Suspension: what happens to live offers and open orders when the operator suspends a vendor.

3. Data and permission isolation

Medusa's Auth module distinguishes actor types: the built-in admin user and store customer, plus custom types. In the documentation example a vendor admin signs in as an actor of type vendor, and the ID of their account is stored in the identity's metadata. See actor types in the Auth module.

Vendor routes are protected by the authenticate middleware with the vendor actor type. That answers the question of who is signed in. It does not answer which vendor owns the product with a given ID. You write that second check yourself, in every endpoint and every workflow that reads or changes data. See protected API routes.

A practical rule: the vendor ID always comes from the signed-in actor's context, never from a request parameter. If an endpoint accepts a product or order ID, it first checks that record's link to the actor's vendor and only then returns anything.

According to the example, Medusa Admin is meant for the platform operator, not for vendor admins. The vendor panel is a separate application using vendor routes, so its security depends entirely on those routes.

  • Two-vendor test: check every endpoint with vendor A's account against vendor B's data. The expected result is denied access, not an empty list with a success code.
  • Lists and search: the vendor filter also covers exports, reports and search suggestions.
  • Events and notifications: a new-order email goes only to the vendor whose items are in it.
  • Operator logs: record operator actions taken on behalf of a vendor, including who performed them.

4. Publishing offers

In the documentation example a vendor product is created by a workflow that creates the product in the Product module, assigns it to the default sales channel and stores the link to the vendor. A Medusa workflow is a series of steps, and a step can have a compensation function that undoes its changes when the workflow fails. See workflows in Medusa.

Make sure the steps that write data have compensation. Test a link failure after the product is created and check whether the workflow deletes the product or leaves it unavailable until it is fixed. See the Medusa compensation function.

The most important product decision is whether two vendors can offer the same item. If they can, you need to separate a shared product page from the vendor's offer with its own price, stock and shipping time. If not, each vendor has its own products and you accept or moderate duplicates.

4. Publishing offers
Catalogue modelWhen it fitsWhat you add
A product belongs to one vendorUnique goods, handmade items, services, few shared item codesDuplicate moderation
Shared page, many offersThe same item from many distributors, price comparisonOffer model, default offer selection, visibility rules

The second decision is moderation. The operator can publish offers immediately or after approval. Approval gives quality control at the cost of the vendor's time, so it is often applied only to new vendors or selected categories.

5. Vendor orders

The Medusa recipe describes replicating the cart completion route and a custom workflow that splits the order into separate orders, one for each vendor. The customer places one order, and each vendor sees and fulfils only its part.

From the vendor's point of view, what matters is what it can do with its order: confirm, pack, ship, partially cancel. Design each of those actions so it changes only the vendor's part, and the state of the customer's whole order follows from the states of its parts.

Payments, vendor payouts, commissions, invoices and refunds are a separate, large topic. We cover it in the guide on how to split the cart, payments and invoices in a B2B marketplace, so we do not repeat it here.

6. Core limits and upgrades

It is worth building a Medusa marketplace the way the documentation shows: a new module, links, your own routes and workflows, with no changes to core code. Then a Medusa upgrade affects your module only where the interfaces it uses change.

Those interfaces do change. The documentation pages this guide links to carry notes about changes, for example as of v2.13.0 and v2.20.0. So record the Medusa version you design the module on, and on every upgrade run the vendor isolation and order splitting tests.

  • Do not change core tables: keep product and order ownership in links, not in extra columns on core tables.
  • Do not fork the core: every patch to Medusa code is a cost on every upgrade.
  • Pin the version: record the Medusa version and the documentation state your decisions rely on.
  • Tests on upgrade: vendor isolation, offer publishing and order splitting on a test environment before production.

7. Build the module yourself or adopt a ready-made one

The Medusa documentation pages checked on 10 November 2026 do not point to a ready-made marketplace module. They refer to example code and guides. Open source projects and third-party solutions built on Medusa exist, but you need to check their scope, licence and compatibility with your Medusa version yourself.

A ready-made module shortens the start if its vendor, catalogue and order model matches yours. A custom module makes more sense when the marketplace is the company's main product and its rules differ from what a ready-made solution expects. The questions below help settle this on facts.

7. Build the module yourself or adopt a ready-made one
QuestionPoints to a ready-made modulePoints to a custom module
Catalogue modelFits as isShared pages with many offers or unusual rules
Medusa versionSupports your version and has an upgrade historyLags behind Medusa releases
PermissionsRoles and isolation match your processesYou need different roles or operator actions
MaintenanceActive maintainer, licence fits your modelNo maintainer, or the licence limits changes
ExitData can be moved to a custom moduleData is locked in a structure that is hard to migrate

8. What to prepare before a scoping conversation

These materials let the scope be assessed without guessing. A missing answer to any question is useful information too.

  1. Your Medusa version, if the project is already live, and the list of custom modules and changes.
  2. Catalogue model: whether two vendors can offer the same item.
  3. The list of roles for vendors and for the operator.
  4. Vendor states and the offer publishing rule.
  5. The path of one order with items from two vendors, from cart to shipment.

Frequently asked questions

Does Medusa have built-in multi-vendor support?
Not in the core. The Medusa v2 documentation checked on 10 November 2026 describes a marketplace as a custom module with vendor models, connected to products and orders through module links.
Can vendors use Medusa Admin?
In the documentation example Medusa Admin is for the platform operator, while vendors use separate API routes and a separate panel. That separation also makes permission control simpler.
What is the biggest risk in a multi-vendor marketplace?
Data leaking between vendors. Authentication tells you who is signed in, but every endpoint must also check that the record belongs to that user's vendor.
Where are vendor payments and payouts covered?
In a separate guide on splitting the cart, payments, payouts and invoices in a B2B marketplace. This article covers the vendor model, permissions, catalogue and order splitting.

Describe the vendor model of your marketplace

Describe the vendor model of your marketplace on Medusa.

Content updated: November 10, 2026

Mikołaj Lehman, CEO & Founder, GMI Software
Mikołaj Lehman
CEO & Founder, GMI Software

Mikołaj Lehman is the CEO and founder of GMI Software. On the blog, he covers decisions around mobile apps, ecommerce and digital product delivery.

  • Mobile apps and React Native
  • Headless and B2B ecommerce
  • MedusaJS
  • Digital product delivery

Google Preferred Sources

See GMI more often in Google

Add gmi.software as a preferred source. Google may highlight our new articles more often in Top Stories and supported AI experiences.

Share article:

Related articles

E-commerce

Playwright E2E testing for ecommerce: a cart and payment regression plan

An E2E test plan for the purchase path of an online store: cart, session, payment on simulated provider responses, return from the payment gateway and order status after a failure, with Playwright settings for CI.

→
E-commerce

Medusa vs Shopify Plus: headless e-commerce TCO in 2026

Compare implementation, platform fees, integrations, operations and change costs. Assess three options: stay, extend or replatform.

→

Let’s discuss your project.

Tell us what you need. We’ll suggest the next step.

[email protected]
gmi.software Sp. z o.o.ul. Jana Heweliusza 11 / 819
80-890 Gdansk, Poland
Rated 5.0 out of 5 on Google5.017 client reviews on Google
© 2026 gmi.software Sp. z o.o.
Privacy PolicyTerms