Odoo, tailored for apparel.
Apparel is its own animal — size runs, prebooks, routing guides, and a variant matrix that breaks generic ERP setups. We've spent years building the Odoo modules that handle exactly this, for real brands shipping real product.
(we're allowed one pun per page. that was it.)
We didn't have to look any of these up.
If your last consultant needed them explained, the project was already behind.
- prebook vs at-once
- ATS
- size runs
- style / color / size
- NRF color codes
- 850 · 855 · 856 · 810
- prepacks
- routing guides
- drop-ship vs DC
- MAP
- opening orders
- ship windows
- size scales
- SSCC cartons
- line plans
- colorways
Modules that are running in production at apparel brands right now.
Every one of these started the same way: an operator looking at a generic ERP screen and saying “that's not how it works in apparel.” Here's a sampling of what came out of those conversations.
Wholesale ordering & B2B
Prebook season, at-once reorders, and a rep force that lives in a B2B portal — all of it has to land in the ERP cleanly, without a CSR retyping orders.
A real Elastic ↔ Odoo connector. We built and maintain a native Odoo app for Elastic Suite — fourteen outbound feeds (products, tiered pricing, time-phased ATS, catalogs, reps, order history) and a staged order import that dedupes, retries, and resolves sold-to/ship-to accounts before anything becomes a sale order. Catalog governance means a variant never shows up in Elastic half-configured.
Opening orders without the paper chase. A portal where a rep submits the new-account application and the opening order as one document — resale certificates, payment terms, delivery addresses, and a catalog restricted to opening-order styles. Approval creates the customer, books the order, and splits merchandising displays into separate orders per fulfillment warehouse automatically.
Commissions for how reps actually work. Apparel reps are independent agents, not ERP users — so we rebuilt the rep model around employees instead of Odoo seats. Commission rates cascade from customer overrides to order-type rates to defaults, every resolved rate stores its source for audit, and month-end produces per-rep statements plus a draft vendor bill, ready to pay.
Product data at apparel scale
Style / color / size is a data model more than a naming convention, and if it's set up wrong every downstream document fights you for years.
SKUs that build themselves. Standard NRF color families, with the next free code assigned automatically inside each family's range. Variant references generate as style + color + size — 1450 + 401 + MD becomes 1450401MD — and regenerate when a style number changes. No spreadsheet of "next available codes" taped to a monitor.
Sizes that sort like garments. XXS before XS before S, numeric waists in order, 34x32 handled — never alphabetical. Order lines resequence into style/color/size order on quotes, POs, invoices, and delivery slips, each printing a size-breakdown grid: colors down, sizes across, totals both ways. The document a buyer actually expects to read.
UPCs under control. Company-prefix management, batch allocation, and immutability — an assigned UPC can't be quietly reused. SSCC sequences generate alongside for carton labeling, so the barcode story holds together from variant to shipped case.
Line development where a style isn't a product yet. Our apparel line management app keeps seasons, colorways, samples, milestones, and cost sheets out of your product catalog entirely. A product record is created only when a style is adopted — abandoned concepts never clutter inventory, sales, or your webstore. A line-plan view shows balance by category, price point, and delivery month while the season is still being built.
Allocation & the size run
When inventory is scarce, the real question is who gets a complete size run and who waits, and a generic ERP doesn't even know what a size run is.
Balanced size runs. Partial fills stay proportional across every size — an 80% fill means 80% of each size, with rounding that never zeroes out the smalls. A store that gets a partial shipment still gets a wall that looks stocked.
All-or-nothing fills. Allocation rules fill orders to a target percentage, measured per order or per style/color group — and skip groups that can't hit the target instead of dribbling scarce units across orders nobody can ship. What was skipped, and why, lands in the order's log.
Supply beyond the shelf. The allocation engine looks past on-hand stock to inbound PO lines and manufacturing orders, in date order, counting only supply that arrives before the order's commitment date. Order gating can require complete size runs and minimum fill rates before a confirmation goes through.
Reserve the stock you have, make only what you're short. Odoo's stock-or-manufacture rule is all-or-nothing out of the box. We rebuilt it to reserve available stock immediately and trigger manufacturing for just the shortage — with database-level locking so two orders confirming at once can't grab the same units.
Warehouse & retailer compliance
The routing guide is not a suggestion. Big-box compliance is won or lost in the details your warehouse system prints.
Travelers pickers can actually follow. Pick tickets sorted by bin location, with split-bin rows kept separate, unallocated demand called out, and the EDI PO number and ship window printed right on the page. Multi-order batches print in warehouse-walk order.
Cartons that pass the routing guide. GS1-compliant carton labels — store number, PO block, vendor number, color and size parsed from the SKU, SSCC barcode — generated and printed automatically when the shipment validates, built to a big-box retailer's actual compliance spec.
Putaway that names the bin. Finished goods come off the line with a putaway slip showing the exact destination bin and its barcode — evaluated from your putaway rules at transfer time — instead of a shrug toward "WH/Stock."
Credit holds that don't stall the building. Held orders still confirm, so demand planning, purchasing, and manufacturing keep flowing — but picking and shipping stay locked until accounting releases the hold. The warehouse keeps moving; the loading dock waits for the green light.
Returns that reconcile
Wholesale returns arrive as a box and a packing list with no RMA attached, DTC returns arrive through three systems at once, and both have to land in the books exactly once.
Returns without RMAs. Import the SKU-and-quantity list off the packing slip and the system matches it against actual delivery history — splitting across shipments when needed, requiring an explicit scrap-versus-restock call, valuing scrap at real inventory cost rather than sales price, and even recovering reusable components from scrapped goods. Every step links receipt to delivery to credit note for audit.
Loop Returns, minus the double refunds. Our Loop connector creates credit notes only when money actually moved — exchanges and store-credit closures never generate one. Refunds dedupe across four different identifiers so the same dollars can't post twice, even when Loop and Shopify report the same refund on different days.
Swap a discontinued style across fifty orders. Product replacement across confirmed orders without deleting lines — which matters, because deleting a line severs the e-commerce connector's fulfillment identity. Prices, discounts, and channel references carry over; the whole batch applies atomically or not at all.
EDI, tax & the books
The unglamorous plumbing that decides whether month-end takes two days or two weeks.
EDI the way big-box retail expects it. Seven document types in production through SPS Commerce — 850 orders in, 855 acknowledgments, 856 ASNs, 860 changes, 810 invoices, 846 inventory, 940 warehouse orders — with retailer-specific formatting handled at the template level, so a new trading partner is a mapping exercise, not a rewrite.
Use tax on giveaways. Give away a 100%-discounted product and you owe consumer use tax on it — a detail that surprises a lot of DTC brands at audit time. We built the module that untangles stacked Shopify and Odoo discounts, values the giveaway at actual cost, and files it to Avalara automatically, with returns handled as separate adjustments.
Statements and aging finance can trust. Customer statements with proper aging buckets, monthly sends that only fire when there's a balance, and bulk portal onboarding that provisions thousands of customer logins in background batches. Plus a detailed aged-receivables export that matches Odoo's on-screen report to the penny — because it uses Odoo's own engine rather than recomputing.
Migrating off a legacy apparel ERP? We've made that trip before.
Legacy apparel systems store a style's demand as size buckets strung across a row. Odoo wants one variant per size. Between those two sentences lives a migration most consultancies quote nervously — we've built the transformation tooling, run it in production, and kept refining it across engagements.
The full kit: open orders and POs rebuilt with only their remaining quantities, historical AR/AP preserved with the old system's original document keys so audits can trace every number, verified open-order prepayments carried across and applied to the right invoices, and month-end reporting that keeps running against both systems through the transition. Migrations rerun safely — every record is update-aware, so a dry run on Tuesday doesn't poison the cutover on Saturday.
The questions apparel operators actually ask us.
Can Odoo handle apparel style/color/size variants?
Yes — with the right setup. Out of the box, Odoo's variant system is generic. We add NRF color-code generation, automatic style+color+size SKUs, garment-order size sorting (XXS through 3XL, numeric waists, 34x32), and size-breakdown grids printed on every document. Configured this way, the variant matrix becomes a strength rather than a workaround.
Does Odoo support EDI with major retailers?
Yes. We run seven EDI document types in production through SPS Commerce — 850, 855, 856, 860, 810, 846, and 940 — with retailer-specific mappings and GS1/SSCC-compliant carton labels generated automatically at ship time.
Does Odoo integrate with Elastic Suite?
Yes. We built and maintain a native Odoo connector for Elastic — fourteen outbound feeds covering products, pricing, time-phased ATS, catalogs, and reps, plus staged order import with deduplication and account cross-referencing. It supports prebook and at-once catalogs separately, which is the distinction wholesale actually needs.
Can we migrate to Odoo from a legacy apparel ERP?
Yes — it's a well-trodden path for us. We've built tooling that unpivots legacy size-bucket rows into proper variants, preserves historical AR/AP with original document keys for audit, carries verified open-order prepayments across, and keeps month-end reporting running through the transition.
Can Odoo replace a standalone fashion PLM?
For many brands, yes. We built an Odoo-native apparel line management app — seasons, colorways, samples, milestones, cost sheets, and line plans — where a style only becomes a sellable product when it's adopted. One system from concept to cash, instead of a PLM bolted onto an ERP with a sync job between them.

