Managing Consignment Inventory with Odoo: A Guide for D2C Brands
Published on January 1, 2026
Consignment Inventory in Odoo
The Capital Trap Every D2C Brand Hits
If you're a D2C brand, you've hit a wall. You want to expand your product line to compete with larger retailers, but buying 500 units of a new seasonal item ties up $8,000–$15,000 in capital. What if it doesn't sell? You're stuck with dead stock, carrying costs, and margin loss.
Enter consignment.
A vendor holds inventory in your warehouse. You pay only when you sell. The vendor keeps ownership until the customer buys. You expand your catalog risk-free.
But here's the catch: Most D2C brands manage consignment through spreadsheets, email threads, and manual reconciliation. This creates disputes over ownership, missed revenue recognition, and broken supplier relationships.
Odoo changes this. Its consignment module is purpose-built for D2C brands managing vendor inventory alongside your owned stock. It tracks ownership, prevents overselling across channels, and automates revenue recognition for ASC 606 compliance.
Why D2C Brands Are Drowning in Inventory Capital
Here's the brutal truth about D2C inventory:
Scenario: Fashion Brand, $3M Revenue
You've identified a trend—oversized blazers in linen. You want 400 units: 100 black, 100 navy, 100 sand, 100 cream.
Manufacturing cost: $25/unit. Total investment: $10,000.
You launch. Sales are okay: 60 units in the first month, mostly black and navy. By month 3, you've moved 180 units.
You've got 220 sitting in your warehouse. The sand and cream versions have moved 15 units combined.
The Damage:
→ Carrying costs (storage, insurance, handling) are eating 20–30% of inventory value annually
→ You're holding $5,500 in dead/slow-moving linen blazer inventory
→ Carrying costs are eating $1,100+/year
→ To clear it, you'll need to markdown 40–60%, destroying margins
Meanwhile, another trend emerges—linen shorts. You'd love to make 400 units, but you're out of cash. You either debt-finance (expensive) or skip the trend. A competitor launches shorts, captures the trend, and gains share.
This is the consignment problem: You have to pick—either expand your catalog (and tie up capital), or stay focused (and lose share to competitors).
Consignment solves this.
→ Instead of buying 400 blazers, you consign 400 from a supplier
→ They own it until you sell it. Your cash stays in the bank. You risk nothing.
→ If the blazer bombs, you return the 220 unsold units and pay for only the 180 sold.
→ Now you have $10,000 to launch shorts, test another category, or scale your winning products.
Consignment unlocks working capital without debt.
The Consignment Economics: Why This Matters for D2C
Let's put numbers on working capital recovery.
D2C Brand: $5M Revenue, $1.5M Average Inventory Balance
Without Odoo (Manual)
Cash tied up: $1.5M (100% owned)
If you consign 20% of SKUs: $300K should be freed
But manual management creates disputes → you don't actually free it
Capital turns: 3.3x annually
Cost of capital: 10% = $150K/year
With Odoo Consignment
Cash freed from consignment: $300K+ (actually realized)
Improved inventory accuracy (no disputes): +$50K recovered
Faster reconciliation (weekly vs. monthly): $25K working capital benefit
$375K Total Working Capital Freed
Annual benefit (cost of capital): $37,500
With $375K Unlocked, You Can:
→ Launch 5–10 new seasonal tests per year (consignment, no risk)
→ Scale winning products faster (more inventory budget for bestsellers)
→ Reduce markdown pressure (better assortment planning)
→ Improve margins 2–4% (less dead stock from misguided bets)
The Odoo tool costs $0 (it's built-in). The working capital recovery is massive.
Consignment vs. Dropship vs. Regular Inventory
Before diving into Odoo setup, understand the three models—Odoo handles all three differently.
| Model | You Own? | In Your Warehouse? | Payment Timing | Odoo Tracking |
|---|---|---|---|---|
| Consignment | No (until sold) | Yes | After sale | Consignment module |
| Dropship | Never | No (supplier warehouse) | On invoice | Dropship module |
| Regular Inventory | Yes | Yes | Upfront | Standard inventory |
For D2C brands testing demand:
Consignment is often best. You expand catalog, test trends, without capital risk. Dropship works if you never want to hold inventory, but margins are lower and customer experience is harder to control. Regular inventory is best for proven bestsellers where you want margin and control.
The Accounting Trap: Revenue Recognition in Consignment (ASC 606)
Here's where most D2C brands get it wrong.
In the U.S., ASC 606 (Accounting Standards Codification) is the revenue recognition standard. For consignment, it has one rule: You recognize revenue only when the consignee (retailer) sells the product to the final customer.
Not when you ship to them. Not when you invoice them. When they sell it.
Example Timeline:
Day 1: You send 400 linen blazers to a retailer (consignment). No revenue recognized. Still your inventory.
Day 15: Retailer sells 100 blazers to customers. Revenue recognized: $2,000 (or whatever your retail price is).
Day 20: Retailer sends you a sales report. You confirm: 100 units sold. You invoice them for $1,000.
Day 30: Retailer pays you. Cash arrives.
If you recognize revenue on Day 1 (when you shipped):
→ Your financial statements are fraudulent
→ Auditors will flag you
→ You'll need to restate earnings
This is why you need Odoo's consignment module. It forces the right accounting sequence: Revenue on customer invoice, deferred until vendor confirms sale.
How to Set Up Consignment in Odoo: Step-by-Step
Now, the mechanics. Here's how to implement consignment in Odoo (versions 16–18 all support this).
Step 1: Enable the Consignment Module (10 minutes)
1. Go to Inventory app
2. Click Configuration → Settings
3. Scroll to Traceability section
4. Check box: Consignment
5. Click Save
That's it. The system now allows you to mark products with an owner (vendor) and track ownership through receipt/sale.
Step 2: Create Consignment Warehouse Locations (20 minutes)
Consignment stock must live in a separate location from your owned inventory. Otherwise, Odoo can't distinguish whose product it is when you pick/pack.
1. Go to Inventory → Configuration → Locations
2. Create new location: Vendor Consignment (location type: Vendor)
3. Create new location: Customer Consignment (if you're consigning to customers; rare for D2C)
These locations are where consignment stock physically lives. Your owned inventory lives in your normal warehouse location.
Step 3: Receive Consignment Stock from Vendor (15 minutes per receipt)
When a consignment vendor sends you 400 linen blazers, you don't create a PO or invoice. You create a manual receipt.
1. Go to Inventory → Operations → Receipts
2. Click Create
3. Receive From: Select the vendor (e.g., "Linen Co")
4. Assign Owner: Select the same vendor
5. Add a line: Product (linen blazer), Quantity (400), Destination: Vendor Consignment location
6. Click Validate
Now the system shows:
→ 400 linen blazers in stock
→ Owned by: Linen Co (not you)
→ Location: Vendor Consignment
→ Stock Valuation Impact: None (because you don't own it)
Critical: Your balance sheet doesn't include this inventory. It's not your asset.
Step 4: Sell Consignment Stock Like Normal Inventory (5 minutes per order)
When a customer buys a linen blazer, you create a sales order as usual. Odoo automatically pulls from the Vendor Consignment location.
1. Go to Sales → Orders → Create
2. Customer (must be different from the vendor)
3. Add product: Linen blazer (qty 1)
4. Confirm and deliver
Odoo moves 1 unit from "Vendor Consignment" to "Customer Shipped." The vendor ownership is preserved in the system.
When you invoice the customer, the revenue is recognized on your sales order, not on the consignment receipt. The accounting is correct.
Step 5: Reconcile Monthly with Vendor Sales Reports (60 minutes/month)
Here's where discipline kicks in. Once a month, the vendor sends you a sales report: "We sold 156 blazers in April."
Reconcile in Odoo:
1. Go to Inventory → Reporting → Product Moves
2. Filter by: Owner = "Linen Co", Product = "Linen Blazer", Date range = April
3. Group by: From Owner (to see all Linen Co consignment moves)
4. Compare "Delivered to Customer" count to vendor's sales report
5. If numbers don't match, investigate (picking error? return not logged?)
Once reconciled, create a vendor bill:
1. Go to Purchases → Bills → Create
2. Vendor: Linen Co
3. Add line: Product (linen blazer), Qty (156), Cost per unit (your agreement)
4. Post the bill
Now Odoo shows the liability to Linen Co for the 156 blazers sold. The vendor can be paid.
Step 6: Return Unsold Stock (10 minutes per return)
If you decide to return unsold consignment inventory, Odoo has a simple process.
1. Go to Inventory → Operations → Transfers
2. Click Create Transfer
3. Source: Vendor Consignment, Destination: Vendor Pickup (or Linen Co's location)
4. Add product line: Linen blazer, Qty (244 unsold units)
5. Validate
The system now shows:
→ 244 blazers returned to vendor
→ No invoice issued (you don't pay for returns)
→ Ownership still with Linen Co
Clean. The vendor can easily see: "Sent 400, you sold 156, returned 244. We're even."
Real-World D2C Implementation: 4-Week Setup
Fashion Brand Scaling from $2M to $5M
Pre-Odoo Reality (Manual)
→ 6 vendors supplying consignment inventory
→ Spreadsheet tracking: "Stuff on hand" tab with quantities by vendor
→ Email every month: "Hi, we sold X units last month" (vague, inconsistent)
→ Manual reconciliation: Finance spends 3–4 hours matching emails to inventory
→ Revenue recognized when consignment received (wrong per ASC 606)
→ Payment delayed 30–45 days due to reconciliation delays
12% inventory discrepancy with vendors
2 vendor relationships broken in 2 years
Post-Odoo (4-Week Setup)
Week 1: Enable consignment feature, create locations, set up chart of accounts
Week 2: Import existing consignment inventory (6 vendors × 40 SKUs = 240 lines)
Week 3: Receive Q2 shipments in Odoo, sell via customer orders, manually reconcile
Week 4: All consignment flows through Odoo (receive, sell, reconcile, return, pay)
All 6 vendors rated process as "much better"
Auditor approved revenue recognition process
Results After 3 Months:
| Metric | Before | After |
|---|---|---|
| Inventory discrepancy | 12% | <1% |
| Reconciliation time | 3 hours | 30 minutes (20x faster) |
| Payment cycle | 45 days | 20 days |
| Working capital freed | — | $180K (actual, not theoretical) |
The upfront cost? Zero (Odoo built-in). The time investment? 4 weeks. The return? $180K working capital + operational efficiency + compliance.
Common Pitfalls That Break Consignment in Odoo
Pitfall #1: Not creating separate locations for consignment
You try to track ownership without separate locations. Odoo lets you, but your pick/pack team gets confused. Are they picking from owned stock or consignment? Errors compound.
Solution: Create dedicated "Vendor A Consignment," "Vendor B Consignment" locations. Your picking instructions automatically route to the right location. Zero ambiguity.
Pitfall #2: Recognizing revenue when you receive consignment
You ship 400 blazers to the warehouse. You create an invoice to the vendor immediately (wrong). Later, customer buys 156. You create another invoice (double-counting). ASC 606 nightmare.
Solution: Use Odoo's consignment receipt (no revenue). Sell via customer SO (revenue recognized here, correctly). Bill vendor only for units actually sold, once per month.
Pitfall #3: Not reconciling with vendors monthly
You assume the system is right. Vendor says they sold 200; Odoo shows 156. Dispute. Relationship erodes.
Solution: Block your calendar first Monday of each month, 1 hour: "Consignment Reconciliation." Pull the Product Moves report, compare to their sales report. If there's a delta, investigate immediately.
Pitfall #4: Commingling owned and consignment stock
You store owned blazers and consignment blazers in the same location. When pick/pack needs 50 units, which location do they pull from? They guess. Now you're overselling consignment or underselling owned.
Solution: Separate locations (own, vendor A consignment, vendor B consignment). Pick instructions are unambiguous. System pulls from the right location automatically.
Pitfall #5: Not communicating terms upfront
Vendor thinks you'll pay "within 30 days of their invoice." You think "30 days after you sell." Vendor sends invoice on the ship date. You think you owe $0 until month-end reconciliation. Dispute.
Solution: Create a consignment agreement (one-page doc) that says: Vendor sends X units, you maintain physical custody, vendor retains ownership, you pay on last day of month based on actual sales, returns accepted through [date].
FAQ
Can I use Odoo's consignment for both vendor-consigned and customer-consigned inventory?
Yes. Create separate locations for each direction. "Vendor Consignment" for when vendors send you inventory. "Customer Consignment" for when you send inventory to customers/resellers for them to sell. The principle is the same: Ownership tracking, separate location, revenue recognized on customer sale.
What if a vendor sends an invoice before I've sold their inventory?
Don't pay it. Your agreement should say "Payment due 30 days after month-end reconciliation of sales." If vendor bills you upfront, that's not consignment—that's wholesale. Clarify the terms. Odoo only tracks consignment; the agreement is your backstop.
Can Odoo track consignment across multiple warehouses?
Yes. Create a consignment location in each warehouse. Odoo tracks ownership across locations. If you have warehouse A and warehouse B, you can have "Warehouse A - Vendor X Consignment" and "Warehouse B - Vendor X Consignment." The Product Moves report shows consolidated ownership.
How does Odoo handle damaged/defective consignment stock?
You don't pay for it. When stock is damaged, create a "Waste" transfer: Move from Vendor Consignment → Waste. No invoice issued to vendor. Document the reason (QC failure, damage, theft, shrink) so vendor understands. Odoo records this in the Product Moves report.
If a vendor wants to see their consignment inventory in real-time, how do I show them?
Use Odoo Portal. Grant vendor access to a portal view that shows their consignment location and inventory count. They can log in anytime, see what's in stock, what's sold. Requires a few minutes to set up; no additional cost. Reduces manual reporting work.
You're Leaving $100K–$400K in Working Capital on the Table
Every month, a spreadsheet is creating disputes with vendors, slowing down payments, and inviting audit flags on revenue recognition. You're not scaling faster because you don't have capital to test new categories.
Consignment managed in Odoo fixes this. Working capital freed, vendor relationships repaired, revenue recognized correctly, reconciliation time cut 90%.
Ready to unlock working capital through consignment?
Book Your Free 30-Minute D2C Consignment Strategy Call
Braincuber's Odoo Consignment Setup unlocks $100K–$300K+ in working capital for D2C brands within 4 weeks. Most fashion, CPG, and seasonal brands discover they can consign 20–40% of their assortment, freeing cash to scale bestsellers and test new categories faster.
We'll audit your current vendor relationships, identify which SKUs should be consignment vs. owned, and show you the exact Odoo configuration that works for your brand. No pitch—just clarity on how much working capital is waiting to be freed.

