If you're scoping a NetSuite-to-Odoo RFP, Odoo warehouse management is usually where the questions start: putaway rules, batch picking, cycle counting, barcode workflows. Odoo's own marketing pages describe every one of those capabilities without marking which ship in the free Community edition and which require a paid Enterprise seat. That gap matters more than it looks: catching a wrong licensing assumption while you're still pricing the RFP is a one-line edit. Catching it three weeks into cutover is a change order, a delayed go-live, and a hard conversation with whoever signed off on the budget.
This article checks Odoo warehouse management module by module against its actual license, names the one real gap, and prices what closing that gap costs on both sides of the migration decision. We sell NetSuite-to-Odoo migrations, so we have a commercial interest in this comparison favoring Odoo; we sourced the module-level facts below so you can check them yourself.
Yes, almost entirely. Odoo Community ships the core of warehouse management free under its LGPL-3 license: putaway rules, storage categories, one, two and three-step routes, lot and serial tracking, cycle counting, packages and package types, vendor-owned consignment stock, batch and wave picking, landed costs, and drop-shipping all run without an Enterprise seat. These aren't stripped-down previews. They're the same modules a self-hosted Community database installs today, verified module by module rather than assumed from a product page. The licensing line sits somewhere specific in the warehouse stack, not spread across most of it: Odoo reads and parses barcodes for free, but the handheld scanning application itself, the screen a warehouse worker actually taps on a device, is Enterprise-only. That's the single named exception, and it's narrow enough to check against your own floor operations, especially if scan guns are already in use, before you assume either answer.
Source: Odoo S.A., "Odoo Enterprise Edition License," legal documentation, 2026. ↗
Odoo's product pages list warehouse capabilities as one feature set: putaway, cycle counts, batch picking, barcode scanning, cross-docking. Nothing on those pages marks which line requires Community and which requires an Enterprise subscription. That's not concealment so much as ordinary marketing convention: a homepage sells the full feature set, not the edition boundary.
The problem is what a Controller does with that page. An RFP module list gets built from what's listed as a capability, not from which license tier ships it. If "barcode scanning" sits on the same page as "putaway rules," a reasonable reader assumes they're priced the same way. They aren't, and the gap between listed and licensed only shows up once someone actually tries to install the module and finds it isn't there.
The cost of that gap depends entirely on when you find it. Before pricing, a wrong assumption is a line-item correction: swap a module in the module list, adjust the RFP by a sentence. After cutover has started, the same discovery is a change order: a scope conversation, a delay while someone sources the fix, and a harder conversation about why it wasn't caught during scoping. Same fact, a much higher cost, purely because of when it surfaced.
What follows is a module-by-module answer to the question Odoo's own site doesn't ask: what ships in Community, what requires Enterprise, and what it costs either way.
Nearly the entire Odoo warehouse feature set ships in Community, the free, LGPL-3-licensed edition, verified module by module against a live Odoo 18 instance. The table below lists each capability, the Odoo module behind it, its license, and whether it's part of Community.
| Warehouse capability | Odoo module | License | Community status |
|---|---|---|---|
| Putaway rules | stock (core) | LGPL-3 | Included |
| Storage categories and capacity | stock (core) | LGPL-3 | Included |
| One-, two- and three-step routes | stock (core) | LGPL-3 | Included |
| Lot and serial tracking | stock (core) | LGPL-3 | Included |
| Cycle counting | stock (core) | LGPL-3 | Included |
| Packages and package types | stock (core) | LGPL-3 | Included |
| Vendor-owned consignment stock | stock (core) | LGPL-3 | Included |
| Batch, wave and cluster picking | stock_picking_batch | LGPL-3 | Included |
| Landed costs | stock_landed_costs | LGPL-3 | Included |
| Drop-shipping | stock (core) | LGPL-3 | Included |
| Barcode reading (data layer) | barcodes, barcodes_gs1_nomenclature | LGPL-3 | Included |
| Handheld scanning application | stock_barcode, web_mobile | OEEL-1 (Enterprise) | Not included |
Every row above the last one is free, self-hosted, and yours to modify. That's the pattern worth noticing: the warehouse core, the part that actually runs putaway, routing, tracking and counting, ships in full. Exactly one thing in this entire family sits behind a paid seat, and it isn't any of the logic above. It's the scanning application, the interface a worker taps to move a box, not the rules that decide where the box goes. The next section covers it in full, because it's specific enough to matter for anyone whose floor already runs handheld scan guns, and irrelevant to anyone whose warehouse runs on a tablet browser or a paper pick list.
We verified every claim in the table above against del.ai's live Odoo 18 Community instance: each warehouse-family module, putaway, routing, bin management, cycle counting, and order fulfillment, checked against its actual license, then cross-checked against the OCA (Odoo Community Association) repositories to confirm whether a free alternative exists anywhere Odoo itself doesn't ship one. That pass ran in July 2026.
The distinction that matters is simpler than it sounds. A module either ships in the edition you're running, or it doesn't. There's no paywall screen, no partial trial, no half-installed state. It's either present in Community or it's Enterprise-only, and that boundary is what the table reports.
Worth stating plainly: we have no reason to round this boundary in either direction. We don't sell Odoo Enterprise seats, and we don't sell NetSuite renewals. Our revenue is the migration fee and the hosting fee, the same regardless of whether any given module happens to be free or gated. That's a different incentive than Odoo's own sales page, which lists every capability without needing to mark the edition line, or a NetSuite reseller, whose renewal doesn't depend on you knowing what Odoo includes for free.
Partially. Odoo Community reads and parses barcodes for free — the underlying data layer for barcode reading is LGPL-3 licensed and ships in every Community install, no separate purchase required. What's gated is the scanning application itself, the screen a warehouse worker taps on a handheld device to receive, pick and pack — that piece requires a paid Enterprise license. There is no free workaround for this specific gap on current Odoo versions. The community-maintained scanning module in the OCA repositories shipped through Odoo 16, then stopped, with nothing equivalent shipped for 17 or 18. This only matters if your floor already runs handheld scan guns. A warehouse working off a tablet browser, a desktop terminal, or a paper pick list isn't affected by this gap at all, because it was never using the application Odoo gates.
Source: OCA (Odoo Community Association), stock-logistics-barcode repository, GitHub, 2026. ↗
Odoo's product pages list "barcode scanning" as a single line, the same way they list putaway or cycle counting. It isn't one thing. Reading a barcode, looking up what it maps to, and writing that lookup to inventory is data-layer work, and it's free. Handing a worker a device that walks them through a receiving or picking task, screen by screen, is application-layer work, and that's the piece Odoo reserves for Enterprise.
There's no partial version to install here and no OCA branch to fall back on. The OCA's own scanning module stopped shipping after Odoo 16, so anyone on 17 or 18, which is where a NetSuite migration lands today, is choosing between an Enterprise seat and building the interface themselves.
Scope this against your own operation before treating it as a blocker. If receiving and picking already run on RF scan guns feeding a warehouse screen, this gap is real and worth pricing into the RFP. If the floor works off a tablet, a desktop terminal, or a printed pick list, and plenty of mid-market operations do, the gap doesn't touch you: you were never going to use the application Odoo gates in the first place.
Say the scanning gap above does apply, and the floor runs scan guns. The intuitive next move is to buy the Enterprise scanning app for the handful of warehouse staff who need it. Odoo's own licensing structure doesn't allow that move.
The Odoo Enterprise Edition license ties the subscription to "the correct number of users" running the software, not to an app or a feature. Odoo's own pricing page lists exactly two paid plans, Standard and Custom, and both grant every app, not a subset. There's no à-la-carte tier that sells the barcode scanning module on its own, and no seat-limited version that covers only the people on the warehouse floor.
Self-hosted deployment narrows the choice further: on-premise is available only on the Custom plan, the more expensive of the two. So the practical version of "we need the Enterprise scanning app" is that every backend user in that database, finance, sales, purchasing, everyone, moves to a paid Enterprise seat on the Custom plan, priced per user, whether or not they ever touch a scan gun.
Odoo has published two different per-user prices for these plans on two of its own pages, which is one more reason not to quote an exact number here. The structural fact, per-user, all-apps, self-hosted requires Custom, holds regardless of which figure is current on a given day. If you need the live number, pull it from Odoo's pricing page directly at the time you're building your RFP, not from anyone's article.
That's the structural fact worth knowing before an RFP gets priced, not after. Wanting one Enterprise capability isn't a small line-item add-on the way a SuiteApp is on NetSuite. It's a licensing decision for the whole database.
You license every user in the database, not just the feature you wanted. Odoo's Enterprise Edition license, per its own documentation, covers "the correct number of users" running the software as a whole; there's no mechanism to add Enterprise for one team, one app, or one warehouse role while leaving everyone else on Community. So a Community customer who later decides they need one Enterprise capability isn't buying a module. They're moving the entire user base in that database onto a paid Enterprise plan, priced per user, with self-hosted deployment available only on the more expensive Custom tier. The relief sits underneath that constraint: Odoo's license explicitly permits building proprietary modules on top of either edition, so nothing built on Community during the Community period is lost or has to be rebuilt when the database moves to Enterprise. The cost is seat pricing, not code forfeiture.
Source: Odoo S.A., "Odoo Enterprise Edition License," legal documentation, 2026. ↗
The fear behind this question usually isn't "can we ever add the capability." It's "does adding it repeat the NetSuite pattern, where every new thing is a costly SuiteApp or a consultant engagement." The honest answer for Odoo is no, but the pricing model is still whole-database, not per-feature, and that's worth knowing while you're still scoping the RFP rather than discovering it the day someone asks for Enterprise.
This section deliberately doesn't restate the licensing clause from the section above. What's new here is the forward-looking read: nothing built on Community during that period gets left behind if the database later moves to Enterprise. The constraint is what a seat costs going forward, not whether your customizations survive.
NetSuite lists Warehouse Management and Advanced Inventory as two separate product pages, and neither publishes a list price. That's not unusual for enterprise software, but it does mean anyone pricing a NetSuite warehouse module is negotiating from zero public information, a different starting position than pricing Odoo's warehouse core against a license text you can read yourself.
The one defensible number that does exist sits one layer up. NetSuite's SuiteApps category, the connectors and add-on modules that typically include warehouse and 3PL integrations, runs $20,000 to $50,000 a year, one layer of the full NetSuite cost stack, per del.ai's canonical cost model. That's a category figure, not a price tag on the Warehouse Management module specifically, and it's worth holding that distinction: a specific WMS-adjacent SuiteApp could sit anywhere inside that range, or outside it, depending on the vendor and the contract.
| Cost layer | Range | What's in it |
|---|---|---|
| NetSuite Warehouse Management (product page) | Not published | No public price listed on NetSuite's own page |
| NetSuite Advanced Inventory (product page) | Not published | Same, separate product page, same absence |
| SuiteApps category (where WMS/3PL connectors typically sit) | $20,000-$50,000/yr | Avalara, Celigo, FloQast, 3PL connectors, per del.ai's canonical cost model |
There's an asymmetry buried in how these modules get added and removed. A SuiteApp is usually added mid-contract, when a specific gap becomes urgent enough to fix immediately. It's removed, if it's removed at all, at renewal, a once-a-year event. That means a module frequently outlives the specific problem it was bought to solve, sitting on the bill for months after the reason for buying it stopped mattering.
del.ai has completed zero migrations as of this writing. What follows is a model built from the canonical figures above, sized against a hypothetical $55M distributor, not a case study or a customer result.
Start with the NetSuite side. A distributor that size typically carries SuiteApps in the $20,000-$50,000/yr range from the section above, some share of which is warehouse and 3PL connector spend. On the Odoo side, the routing, tracking, putaway and picking core named earlier already ships free in Community; nothing in that list requires a new subscription. The one line that survives the move, if the floor already runs handheld scan guns, is the Enterprise or unbuilt barcode gap named above: either an Enterprise seat for the affected users, or a scoped internal build.
| Line item | NetSuite (today) | Odoo Community (after migration) |
|---|---|---|
| Warehouse routing, putaway, tracking, cycle counting | Part of core license and modules | Free, ships in Community |
| SuiteApps / connector layer | $20,000-$50,000/yr | Same connectors, rebuilt as owned code, not rented |
| Barcode scanning (if scan guns are in use) | Included in core NetSuite license | Enterprise seat, or a scoped build |
| Migration | Not applicable | ~$50k one-time, for qualifying migrations within the signed scope document |
| Hosting | Not applicable | ~$2,000/mo |
Net the numbers. del.ai's roughly $2,000-a-month hosting fee against the SuiteApp line removed funds a meaningful share of the ongoing run rate, but it doesn't fund the whole migration on module savings alone. The larger dollars in a NetSuite bill sit in the base license and the Alliance Partner retainer, a separate, larger line this model deliberately keeps out of frame; that comparison lives elsewhere. What this model isolates is narrower and checkable on its own terms: the warehouse module list specifically, verified line by line, priced against what's actually free.
Five items, all commonly bundled into a warehouse RFP: cross-docking as a named feature, labor and productivity tracking, warehouse slotting optimization, per-carrier shipping connector coverage, and EDI transaction formats such as 850, 855, 856 and 810. These weren't checked against del.ai's live Odoo 18 Community instance in the same July 2026 module-by-module review this article reports on elsewhere; they simply sit outside that pass's scope, not disproven by it. That's a meaningful difference: absence of verification isn't evidence of absence, and it isn't evidence of presence either. If cross-docking, labor tracking, slotting, or EDI coverage matters for your specific warehouse, the honest move is to check each one against your own module list, or your own Odoo instance, before assuming either answer, the same way this article did above for the features it did check.
Source: Odoo S.A., Odoo Community Association repositories, technical documentation, 2026.
This list exists because a verification pass with a defined scope is more trustworthy than one that quietly assumes coverage past its edges. The five items above are common enough warehouse requirements that leaving them unstated would read as an implicit yes or an implicit no, and what was actually checked in July 2026 supports neither.
If any of these five matter for your operation, the same test applies as everywhere else in this article: check it against your own module list, or ask for it to be checked against a live instance, before pricing an RFP around an assumption either way.
This article is built for Controllers scoping a NetSuite-to-Odoo RFP who need their own warehouse module list checked against the verified Community/Enterprise boundary above before it gets priced. It's not built for someone shopping Odoo Enterprise on its own, outside a NetSuite migration decision; that's a different question with a different vendor relationship.
If you're in the first group, the next step is straightforward: bring your current NetSuite module list and walk it against what's verified here.
Model your warehouse module gap.
30 minutes. We walk your current NetSuite warehouse module list against the boundary verified in this article and tell you what carries over free, what's flagged as Enterprise-only, and what's still unverified. No pitch. You leave with a module-level answer, not a sales deck.
Sources
1. Odoo S.A., "Odoo Enterprise Edition License," legal documentation, 2026. ↗
2. Odoo S.A., "Odoo Pricing," commercial pricing page, 2026. ↗
3. Oracle NetSuite, "Warehouse Management," product page, 2026. ↗
4. Oracle NetSuite, "Inventory Management," product page, 2026. ↗
5. OCA (Odoo Community Association), stock-logistics-barcode repository, GitHub, 2026. ↗
See how this works in the product