All posts
Integrator6 min read

Odoo Stock Scrap Orders: Removing Defective or Expired Inventory

Scrap orders in Odoo write off defective or expired stock while maintaining inventory accuracy and generating the correct accounting entries. This guide covers scrap from manufacturing orders, receipts, valuation, and reporting.

Scrapping removes stock from usable inventory without a customer delivery or internal transfer. Odoo handles scrapping through stock.scrap, which generates a stock move to a dedicated scrap location, creates the accounting journal entry, and updates inventory valuation.

Creating a Scrap Order#

Inventory → Operations → Scrap

FieldDescription
ProductProduct being scrapped
Lot/Serial NumberRequired if the product is tracked by lot or serial
QuantityAmount to scrap
Source LocationWhere the stock currently sits (usually WH/Stock)
Scrap LocationDestination (default: Virtual Locations/Scrap)

Click Validate to complete the scrap. The stock move is created immediately.

Scrap from a Manufacturing Order#

The Scrap button on a manufacturing order toolbar opens a wizard pre-filled with component products and source location set to WH/Production. Scrapping a component does not auto-trigger replenishment - add the component back manually if still needed for the MO.

Scrap from a Receipt#

Use the Scrap toolbar button on a validated receipt to scrap defective goods received. Odoo moves the stock from the receipt's destination location to the scrap location, bypassing put-away rules.

Scrap Location#

The default scrap location is a virtual location with Is a Scrap Location? checked. Stock here is excluded from on-hand quantities and forecasts.

Multiple scrap locations let you distinguish reasons: "Quality Scrap", "Expiry Scrap", "Damage in Transit". Create custom locations at Inventory → Configuration → Locations → New with Is a Scrap Location? checked.

Accounting Entry#

For FIFO or AVCO products:

AccountDebitCredit
Inventory Valuation-Cost of scrapped stock
Scrap Expense AccountCost of scrapped stock-

The scrap expense account comes from the product category's Expense Account. A missing account creates a zero-value entry and understates scrap costs.

Undoing a Scrap#

Validated scrap orders cannot be reversed via the UI. To undo:

  1. Create an Inventory Adjustment to restore stock to the source location
  2. Manually reverse the accounting journal entry

Common Mistakes#

  • Scrapping without a lot number on tracked products - always specify the lot; inconsistent state can cause downstream picking errors
  • Wrong source location - if stock is at WH/Stock/Shelf A but you scrap from WH/Stock, the move fails with a negative quant warning
  • Using inventory adjustments for defective goods - negative adjustments do not create a scrap expense entry; always use a scrap order for financial accuracy

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free