Complete guide · Stock

Odoo inventory and products: five everyday tasks

How to describe products correctly and move stock without losing track of it, from variants and units to transfers, scrap, and dropshipping.

By OdooMatrix Published 6 min read

How to use this guide

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.

Official reference

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.

Official reference

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.

Official reference

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.

Official reference

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.

Official reference

Odoo documents the route in the Odoo 19 dropshipping page.

6. Related guides and next steps

Scope

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

Want this set up for you?

Describe your business, the system you use now, and what has to change. See our Odoo implementation service or contact OdooMatrix.

← Back to all articles