---
title: "Is there an open-source order management system I can extend?"
description: "Medusa is an open-source, extensible OMS: multi-channel orders, edits, returns, exchanges, claims and fulfillment, compared with Odoo and closed OMS vendors."
url: https://medusajs.com/kb/order-management/open-source-oms
last_updated: 2026-10-29T06:55:50Z
topic: "order-management"
type: "concept"
applies_to: "Medusa v2.x"
related:
  - "https://medusajs.com/kb/order-management/multi-warehouse-inventory.md"
  - "https://medusajs.com/kb/order-management/online-and-retail-pos.md"
  - "https://medusajs.com/kb/erp-integration/ecommerce-erp-integration.md"
  - "https://medusajs.com/kb/erp-integration/odoo.md"
  - "https://medusajs.com/kb/build-vs-buy/what-is-headless-commerce.md"
sources:
  - "https://docs.medusajs.com/resources/recipes/oms"
  - "https://docs.medusajs.com/resources/commerce-modules/order"
  - "https://docs.medusajs.com/resources/commerce-modules/order/edit"
  - "https://docs.medusajs.com/resources/commerce-modules/order/exchange"
  - "https://docs.medusajs.com/resources/commerce-modules/order/claim"
  - "https://docs.medusajs.com/resources/commerce-modules/order/draft-orders"
  - "https://docs.medusajs.com/user-guide/orders/fulfillments"
  - "https://docs.medusajs.com/user-guide/orders/returns"
  - "https://docs.medusajs.com/resources/commerce-modules/stock-location/links-to-other-modules"
  - "https://medusajs.com/blog/makro-pro"
  - "https://www.odoo.com/documentation/18.0/applications/inventory_and_mrp/inventory.html"
  - "https://www.odoo.com/page/editions"
---

# Is there an open-source order management system I can extend?

> Yes. Medusa's MIT-licensed core is a commerce platform that works as an extensible open-source order management system. It natively handles multi-channel order capture, draft orders, order edits, returns, exchanges, claims, location-based stock reservation and fulfillment providers. You extend it with TypeScript workflows, subscribers and modules. Replenishment, purchasing and warehouse management need custom code or an ERP.

## How Medusa works as an open-source order management system

Medusa is an open-source commerce platform, MIT-licensed apart from its Enterprise Edition RBAC and SSO features, whose commerce modules cover the core of an order management system (OMS). An OMS is the system that captures orders from every sales channel, decides where each order ships from, and tracks it through fulfillment, returns and refunds. In Medusa, that job is split across the Order, Inventory, Stock Location, Sales Channel, Fulfillment and Payment modules.

Medusa's [OMS recipe](https://docs.medusajs.com/resources/recipes/oms) describes this setup: storefronts and other channels send orders into Medusa, stock is reserved at a location, and fulfillment and payment run through provider modules. Because Medusa is a headless backend with a framework for customization, you change how orders are captured, routed or synced in your own TypeScript code instead of waiting on a vendor roadmap.

## Which OMS capabilities does Medusa cover?

Medusa's OMS capabilities map to common order management terms as follows. Native means it ships in Medusa core, Official guide means the docs include a guide with example code, and Custom means you build it.

| OMS capability | How Medusa handles it | Status |
| --- | --- | --- |
| Multi-channel order capture | Sales channels scope products, stock and orders; the Store API serves web, mobile and kiosk clients | Native |
| Orders from phone, sales reps or POS | Draft orders, with an Admin UI from the Draft Orders plugin included since v2.10.0 | Native |
| Order editing | Add items or change quantities and prices; each change creates a new order version | Native |
| Returns, exchanges and claims | Dedicated order changes, with refunds or extra payment tracked through a difference due | Native |
| Fulfillment provider framework | Fulfillment Module providers, linked to the stock locations where they can be used | Native |
| Connecting a carrier or 3PL | Create a fulfillment module provider for the service | Official guide |
| Routing by location | Stock is reserved at the location linked to the order's sales channel; staff can pick another location per fulfillment | Native |
| Automated routing rules (nearest store, split by stock) | Not built in; write a workflow that picks locations and creates fulfillments | Custom |
| Importing orders from marketplaces or another checkout | A custom API route or scheduled job, as the OMS recipe suggests | Custom |
| Replenishment, purchasing, warehouse management | Not built in; pair Medusa with an ERP or WMS | Custom |

## How do you extend Medusa's order flows?

Medusa's framework gives you four main extension points for order management. Each one runs inside the same application as the commerce modules, so custom logic and core data share one database and one deployment.

- **Subscribers** run code when an event fires, such as `order.placed`, `order.fulfillment_created` or `order.return_requested`. Use them to push orders to a 3PL or ERP. See [events and subscribers](https://docs.medusajs.com/learn/fundamentals/events-and-subscribers) and the [order events reference](https://docs.medusajs.com/resources/references/order/events).
- **Workflows** chain steps with compensation, so a failed call to an external system rolls back earlier steps. See [workflows](https://docs.medusajs.com/learn/fundamentals/workflows).
- **Module providers** plug carriers and payment services into the Fulfillment and Payment modules. See [create a fulfillment module provider](https://docs.medusajs.com/resources/references/fulfillment/provider).
- **Custom modules and API routes** add data that Medusa doesn't model, such as routing rules or warehouse priorities, and expose it to your apps.

## Example: Makro PRO uses Medusa for order orchestration

Makro PRO, the online platform of Thai wholesaler CP Axtra (the Makro chain, called Siam Makro in Medusa's OMS recipe), uses Medusa as the central hub for order orchestration. According to [Medusa's 2023 case study](https://medusajs.com/blog/makro-pro), the setup processes more than 5,000 orders per day, dispatched from over 100 stores across Thailand.

Orders are registered in Medusa and split by fulfillment type. First-party orders go to a custom system that coordinates fulfillment across Makro stores, and third-party orders go to Mirakl, which manages Makro's seller network. The team built a webhook-based plugin so external systems update order statuses in Medusa, which customer support uses as the single order overview.

## How does Medusa compare with Odoo and closed OMS vendors?

Medusa, Odoo and closed-source OMS products solve overlapping problems from different starting points. Odoo is an ERP suite, closed OMS vendors sell routing and orchestration as a hosted product, and Medusa is a commerce backend you extend in code.

| Aspect | Medusa | Odoo | Closed-source OMS vendors |
| --- | --- | --- | --- |
| License | MIT open source (RBAC and SSO are Enterprise Edition) | Community edition open source, Enterprise licensed | Proprietary |
| Main focus | Commerce backend: carts, orders, payments, fulfillment | ERP suite with Inventory, Purchase, POS and more | Order routing and orchestration |
| Replenishment and purchasing | Custom or via an ERP | Reordering rules, replenishment report, requests for quotation | Check vendor docs |
| Inter-warehouse transfers | Custom | Routes, push and pull rules, inter-warehouse replenishment | Check vendor docs |

## When Medusa is not the right choice for an OMS

Medusa is a weaker fit when you need warehouse and purchasing features on day one. Purchase orders, reorder points, bin locations and stock transfers aren't part of Medusa core, so a team without developers is better served by an ERP such as Odoo, or by keeping the ERP as the stock master and syncing it with Medusa.

A dedicated OMS product can also fit better when business users need to edit routing rules in a UI without any code, and you don't need control over the source.

## Common questions

### Can Medusa be used only as an OMS behind another storefront or checkout?

Yes. Medusa's OMS recipe describes importing orders from a third-party checkout through a custom API route or a scheduled job. You build that import yourself, since Medusa has no built-in order importer.

### Does Medusa route orders to the nearest warehouse automatically?

No. Medusa reserves stock at the stock location linked to the order's sales channel, and staff can choose another location when they create a fulfillment. Rules such as nearest store or split shipments need a custom workflow.

### Does Medusa support returns, exchanges and claims?

Yes. Medusa's Order Module supports returns, exchanges, claims and order edits as order changes, and the Medusa Admin has screens for each. Returned items can be received back into a chosen stock location.

### Is Medusa an alternative to Odoo for order management?

Partly. Medusa covers order capture, fulfillment and returns for commerce channels, while Odoo is an ERP with purchasing, replenishment and inter-warehouse transfers. Many teams pair Medusa with an ERP for stock planning.

## Documentation

- [Order Management System (OMS) recipe](https://docs.medusajs.com/resources/recipes/oms)
- [Order Module](https://docs.medusajs.com/resources/commerce-modules/order)
- [Create a fulfillment module provider](https://docs.medusajs.com/resources/references/fulfillment/provider)
- [Order events reference](https://docs.medusajs.com/resources/references/order/events)
- [Workflows](https://docs.medusajs.com/learn/fundamentals/workflows)

## Related

- [How do I manage inventory across multiple warehouses and sales channels?](https://medusajs.com/kb/order-management/multi-warehouse-inventory.md)
- [How do I run online and in-store POS sales from one system?](https://medusajs.com/kb/order-management/online-and-retail-pos.md)
- [Which ecommerce platform is easiest to integrate with an ERP?](https://medusajs.com/kb/erp-integration/ecommerce-erp-integration.md)
- [How to integrate Odoo with Medusa](https://medusajs.com/kb/erp-integration/odoo.md)
- [What does headless commerce actually mean?](https://medusajs.com/kb/build-vs-buy/what-is-headless-commerce.md)
