Stock errors are easiest to fix before they spread to sales and accounting. Each task below changes one thing and tells you exactly which quantity or document should change as a result.
1. How to sell an Odoo product with variants
Variants are choices of one product, such as size. They are not a second unrelated product.
Add an attribute
Go to Sales → Configuration → Settings, enable Variants under Product Catalog, and save. Open a storable or consumable product. On the Attributes & Variants tab, add one attribute such as Size with two values. Save. When variant creation is Instantly, Odoo creates the variants then.
Keep the test simple
Leave both variants at the same price for this test. You can add an extra price later, after the choice itself works.
Pick one on a quotation
Create a quotation and add the product. Choose one size. The line should name that variant, not only the template.
Do not assume they share a quantity
If the product is stocked, each variant has its own quantity. Selling the small size must not reduce the large size.
Common questions
Should I create two products instead?
Use variants when they are the same item with a choice. Use two products when the items are sold and stocked differently.
Can I delete a variant that has orders?
Do not delete it. Archive it if you no longer sell it.
Why do I see only the template?
The attribute was not saved, or variants are not enabled in Sales settings.
Odoo documents attributes and variant creation in the Odoo 19 product variants page.
2. How to buy and sell an Odoo product in different units
If you buy a box and sell a piece, the receipt must convert the box into pieces. Otherwise on-hand stock is wrong.
Enable units
Go to Inventory → Configuration → Settings. Under Products, turn on Units of Measure & Packagings and save. The unit beside the sales price and the unit beside the cost stay the same. Odoo 19 does not let those two differ.
Set the conversion
Go to Inventory → Configuration → Units & Packagings. Open the purchase unit, such as a box, and set how many of its reference unit it contains. Use the real count. Do not guess.
Set the purchase unit
On the product, leave the inventory unit as the piece. On the Purchase tab, set the vendor’s unit to the box and enter the price you pay for that unit.
Receive one box
Confirm a purchase of one box and validate the receipt. On-hand stock should rise by the number of pieces in the box, not by one.
Common questions
What if the conversion is wrong?
Fix the unit before you receive more. Correct the quantity already received with a counted adjustment, and link the reason.
Can I sell the box as well?
Yes. Add the box as a packaging on the Sales tab, or choose a unit in the same category on the quotation. The delivery still records the inventory unit.
Does the vendor price follow the purchase unit?
Put the vendor price on the purchase unit you actually buy. Check the purchase order before you send it.
Odoo documents this in the Odoo 19 units of measure page. The sales-price unit and the cost unit stay linked.
3. How to move Odoo stock between locations
An internal move changes where stock sits. It should not create or destroy quantity.
Know the source
Check the product’s on-hand quantity in the source location. Pick a quantity that is actually there.
Create the transfer
In Inventory, open Operations and then Transfers. Create an internal transfer from the source location to the destination, for that product and quantity. If you cannot pick locations, turn on Storage Locations under Inventory → Configuration → Settings and save.
Validate it
Validate the transfer. Until you do, the locations have not changed.
Read both locations
The source should be lower by that quantity and the destination higher by the same quantity. The total across both should match the total you started with.
Common questions
Does this buy or sell anything?
No. It only moves stock you already have.
What if the source does not have enough?
Reduce the quantity or receive stock first. Do not force a negative location without a reason.
Can I move a specific lot?
Yes. Select the lot on the move when the product is tracked, and check that lot at the destination.
Menu labels vary with your Odoo version, installed apps, and permissions. Compare them with the Odoo 19 applications documentation when a label differs.
4. How to scrap damaged stock in Odoo
Scrap is for quantity you cannot sell. It is a different document from a count.
Open Scrap
In Inventory, open Operations and then Scrap. If Inventory is not installed, install it first.
Enter the quantity
Choose the product, the damaged quantity, and the location that currently holds it. Use a quantity you can check, such as one unit on a test product.
Validate
Validate the scrap. A draft scrap has not changed stock yet.
Check on-hand
The on-hand quantity in that location should be lower by the scrapped quantity. The scrap document should still be available to explain the drop.
Common questions
Is this the same as a stock count?
No. A count sets what you found. Scrap records quantity you removed as waste. Use a count when the quantity was never there.
Can I scrap from the wrong location?
Odoo will not take stock from an empty location. Pick the location that holds the goods.
Should I delete the product?
No. Scrap the quantity. Keep the product for the next receipt.
Odoo documents scrap orders in the Odoo 19 scrap inventory page.
5. How to confirm an Odoo dropship order
Dropship means the vendor sends the goods. Your warehouse should not receive them.
Turn the route on
Go to Purchase → Configuration → Settings. Under Logistics, enable Dropshipping and save. If you cannot select the route on a product, the setting is still off.
Mark one product
On that product, keep Can be Sold and Can be Purchased on. Set the vendor on the Purchase tab, then enable Dropship under Routes on the Inventory tab. Leave ordinary stock products unchanged.
Confirm a sales order
Sell one unit to a customer with a delivery address. Confirm the order.
Read the purchase
A request for quotation or purchase order to that vendor should exist. Your own on-hand quantity should not increase. If you received the goods into your stock, the route was not dropship.
Common questions
Does dropship create a receipt in my warehouse?
It should not. The vendor delivers to the customer. If you get an internal receipt, change the route before the next order.
What if there is no vendor?
Set the vendor on the product. Odoo cannot buy from a blank vendor.
Can I keep some stock as well?
Yes, but not on this test product. Prove dropship on one product before you mix routes.
Odoo documents the route in the Odoo 19 dropshipping page.
6. Related guides and next steps
Sample names and amounts are illustrative. They are not a client result, a price, or legal or tax advice. Menus can differ between versions and installed apps.
Continue learning
Describe your business, the system you use now, and what has to change. See our Odoo implementation service or contact OdooMatrix.