Odoo 19.0 Community · Persistent

stock.move: fields, relations and API

The stock.move model ("Stock Move") is a persistent model declared by the Inventory module, then extended by 26 other modules. It exposes 123 fields, 117 of them declared directly on the model; 12 fields from other models point to it. Below you will find every field with its technical name, type, label and relations, followed by an Odoo 19 JSON-2 API call.

Model identity

Technical name
stock.move
Label
Stock Move
Type
Persistent (models.Model)
SQL table
stock_move
Origin module
Inventory (stock)
Extended by
stock_account, sale_stock, stock_delivery, stock_picking_batch, point_of_sale, mrp, mrp_account, purchase_stock, stock_landed_costs, product_expiry, repair, mrp_repair, mrp_subcontracting, mrp_subcontracting_account, sale_purchase_stock, mrp_subcontracting_dropshipping, purchase_mrp, mrp_subcontracting_purchase, pos_mrp, project_mrp, project_mrp_account, sale_mrp, project_stock_account, purchase_requisition_stock, sale_project_stock, sale_project_stock_account
Default order (_order)
sequence, id
Display field (_rec_name)
reference

Model fields

117 own fields, 0 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.

123 of 123 fields shown

Technical nameLabelTypeDetails
account_move_idstock_move_idmany2one

added by WMS Accounting (stock_account)

additionalWhether the move was added after the picking's confirmationboolean
allowed_operation_idsAllowed Operationone2many

related: raw_material_production_id.bom_id.operation_ids

added by Manufacturing (mrp)

allowed_uom_idsAllowed Uommany2many
computed
analytic_account_line_idsAnalytic Account Linemany2many

added by WMS Accounting (stock_account)

availabilityForecasted Quantity

Quantity in stock that can still be reserved for this move

float
read-onlycomputed
bom_line_idBoM Linemany2one

added by Manufacturing (mrp)

byproduct_idBy-products

By-product line that generated the move in a manufacturing order

many2one

added by Manufacturing (mrp)

company_currency_idCompany Currencymany2one
read-only

related: company_id.currency_id

added by WMS Accounting (stock_account)

company_idCompanymany2one
required
consume_unbuild_idConsumed Disassembly Ordermany2one

added by Manufacturing (mrp)

cost_shareCost Share (%)

The percentage of the final production cost for this by-product. The total of all by-products' cost share must be smaller or equal to 100.

float

added by Manufacturing (mrp)

created_production_idCreated Production Ordermany2one

added by Manufacturing (mrp)

created_purchase_line_idsCreated Purchase Order Linesmany2many

added by Purchase Stock (purchase_stock)

dateDate Scheduled

Scheduled date until move is done, then date of actual move processing

datetime
required
date_deadlineDeadline

In case of outgoing flow, validate the transfer before this date to allow to deliver at promised date to the customer. In case of incoming flow, validate the transfer before this date in order to have these products in stock at the date promised by the supplier

datetime
read-only
delay_alert_dateDelay Alert Date

Process at this date to be on time

datetime
computed, stored
description_pickingDescription Of Pickingtext
computed
description_picking_manualDescription Picking Manualtext
read-only
display_assign_serialDisplay Assign Serialboolean
computed
display_import_lotDisplay Import Lotboolean
computed
forecast_availabilityForecast Availabilityfloat
computed
forecast_expected_dateForecasted Expected datedatetime
computed
has_lines_without_result_packageHas Lines Without Result Packageboolean
computed
has_trackingProduct with Trackingselection

related: product_id.tracking

inventory_nameInventory Namechar
read-only
is_date_editableIs Date Editableboolean
computed
is_dropshipIs Dropshipboolean
computed, stored

added by WMS Accounting (stock_account)

is_inIs Incoming (valued)boolean
computed, stored

added by WMS Accounting (stock_account)

is_initial_demand_editableIs initial demand editableboolean
computed
is_inventoryInventoryboolean
is_lockedIs Lockedboolean
read-onlycomputed
is_outIs Outgoing (valued)boolean
computed, stored

added by WMS Accounting (stock_account)

is_quantity_done_editableIs quantity done editableboolean
computed
is_storableIs Storableboolean

related: product_id.is_storable

is_subcontractThe move is a subcontract receiptboolean

added by MRP Subcontracting (mrp_subcontracting)

is_valuedIs Valuedboolean
computed

added by WMS Accounting (stock_account)

location_dest_idIntermediate Location

The operations brings product to this location

many2one
requiredcomputed, stored
location_dest_usageDestination Location Typeselection

related: location_dest_id.usage

location_final_idFinal Location

The operation brings the products to the intermediate location.But this operation is part of a chain of operations targeting the final location.

many2one
location_idSource Location

The operation takes and suggests products from this location.

many2one
requiredcomputed, stored
location_usageSource Location Typeselection

related: location_id.usage

lot_idsSerial Numbersmany2many
computed
manual_consumptionManual Consumption

When activated, then the registration of consumption for that component is recorded manually exclusively. If not activated, and any of the components consumption is edited manually on the manufacturing order, Odoo assumes manual consumption also.

boolean
computed, stored

added by Manufacturing (mrp)

move_dest_idsDestination Moves

Optional: next stock move when chaining them

many2many
move_line_idsMove Lineone2many

inverse: move_id

move_lines_countMove Lines Countinteger
computed
move_orig_idsOriginal Move

Optional: previous stock move when chaining them

many2many
never_product_template_attribute_value_idsNever attribute Valuesmany2many
next_serialFirst SN/Lotchar
next_serial_countNumber of SN/Lotsinteger
operation_idOperation To Consumemany2one

added by Manufacturing (mrp)

order_finished_lot_idsFinished Lot/Serial Numbermany2many

related: raw_material_production_id.lot_producing_ids

added by Manufacturing (mrp)

orderpoint_idOriginal Reordering Rulemany2one
originSource Documentchar
origin_returned_move_idOrigin return move

Move that created the return move

many2one
package_idsPackagesone2many
computed
packaging_uom_idPackaging

Packaging unit from sale or purchase orders

many2one
computed, stored
packaging_uom_qtyPackaging Quantity

Quantity in the packaging unit

float
computed, stored
partner_idDestination Address

Optional address where goods are to be delivered, specifically used for allotment

many2one
computed, stored
pickedPicked

This checkbox is just indicative, it doesn't validate or generate any product moves.

boolean
computed, stored
picking_codePicking Codeselection
read-only

related: picking_id.picking_type_id.code

picking_idTransfermany2one
picking_type_idOperation Typemany2one
computed, stored
price_unitPrice Unitfloat
priorityPriorityselection
computed, stored

Values: 0 (Normal), 1 (Urgent)

procure_methodSupply Method

By default, the system will take from the stock in the source location and passively wait for availability. The other possibility allows you to directly create a procurement on the source location (and thus ignore its current stock) to gather products. If we want to chain moves and have this one to wait for the previous, this second option should be chosen.

selection
required

Values: make_to_stock (Default: Take From Stock), make_to_order (Advanced: Apply Procurement Rules)

procurement_valuesProcurement Values

Dummy field to store procurement values to propagate them to later steps

json
product_category_idProduct Categorymany2one

related: product_id.categ_id

product_idProductmany2one
required
product_qtyReal Quantity

Quantity in the default UoM of the product

float
computed, stored
product_qty_availableProduct On Hand Quantityfloat

related: product_id.qty_available

added by Manufacturing (mrp)

product_tmpl_idProduct Templatemany2one

related: product_id.product_tmpl_id

product_uomUnitmany2one
requiredcomputed, stored
product_uom_qtyDemand

This is the quantity of product that is planned to be moved.Lowering this quantity does not generate a backorder.Changing this quantity on assigned moves affects the product reservation, and should be done with care.

float
required
product_virtual_availableProduct Forecasted Quantityfloat

related: product_id.virtual_available

added by Manufacturing (mrp)

production_group_idUsed for Productionsmany2one

added by Manufacturing (mrp)

production_idProduction Order for finished productsmany2one

added by Manufacturing (mrp)

propagate_cancelPropagate cancel and split

If checked, when this move is cancelled, cancel the linked move too

boolean
purchase_line_idPurchase Order Linemany2one
read-only

added by Purchase Stock (purchase_stock)

quantityQuantityfloat
computed, stored
raw_material_production_idProduction Order for componentsmany2one

added by Manufacturing (mrp)

referenceReferencechar
computed, stored
reference_idsReferencesmany2many
remaining_qtyRemaining Quantityfloat
computed

added by WMS Accounting (stock_account)

remaining_valueRemaining Valuemonetary
computed

added by WMS Accounting (stock_account)

repair_idRepairmany2one

added by Repairs (repair)

repair_line_typeTypeselection

Values: add (Add), remove (Remove), recycle (Recycle)

added by Repairs (repair)

requisition_line_idsRequisition Lineone2many

inverse: move_dest_id

added by Purchase Requisition Stock (purchase_requisition_stock)

reservation_dateDate to Reserve

Computes when a move should be reserved

date
computed, stored
restrict_partner_idOwner many2one
returned_move_idsAll returned moves

Optional: all returned moves created from this move

one2many

inverse: origin_returned_move_id

route_idsDestination route

Preferred route

many2many
rule_idStock Rule

The stock rule that created this stock move

many2one
sale_line_idSale Linemany2one

added by Sales and Warehouse Management (sale_stock)

scrap_idScrap operationmany2one
read-only
sequenceSequenceinteger
should_consume_qtyQuantity To Consumefloat
computed

added by Manufacturing (mrp)

show_details_visibleDetails Visibleboolean
computed
show_lots_m2oShow lot_idboolean
computed
show_lots_textShow lot_nameboolean
computed
show_operationsShow Operationsboolean

related: picking_id.picking_type_id.show_operations

show_quantShow Quantboolean
computed
show_subcontracting_details_visibleShow Subcontracting Details Visibleboolean
computed

added by MRP Subcontracting (mrp_subcontracting)

standard_priceStandard Pricefloat
computed

added by WMS Accounting (stock_account)

stateStatus

* New: The stock move is created but not confirmed. * Waiting Another Move: A linked stock move should be done before this one. * Waiting: The stock move is confirmed but the product can't be reserved. * Available: The product of the stock move is reserved. * Done: The product has been transferred and the transfer has been confirmed.

selection
read-only

Values: draft (New), waiting (Waiting Another Move), confirmed (Waiting), partially_available (Partially Available), assigned (Available), done (Done), cancel (Cancelled)

to_refundUpdate quantities on SO/PO

Trigger a decrease of the delivered/received quantity in the associated Sale Order/Purchase Order

boolean

added by WMS Accounting (stock_account)

unbuild_idDisassembly Ordermany2one

added by Manufacturing (mrp)

unit_factorUnit Factorfloat
computed, stored

added by Manufacturing (mrp)

use_expiration_dateUse Expiration Dateboolean

related: product_id.use_expiration_date

added by Products Expiration Date (product_expiry)

valueValue

The current value of the move. It's zero if the move is not valued.

monetary

added by WMS Accounting (stock_account)

value_computed_justificationComputed Value Descriptiontext
computed

added by WMS Accounting (stock_account)

value_justificationValue Descriptiontext
computed

added by WMS Accounting (stock_account)

value_manualManual Valuemonetary
computed

added by WMS Accounting (stock_account)

warehouse_idWarehouse

the warehouse to consider for the route selection on the next procurement (if any).

many2one
weightWeightfloat
computed, stored

added by Delivery - Stock (stock_delivery)

workorder_idWork Order To Consumemany2one

added by Manufacturing (mrp)

create_dateCreated ondatetime
read-onlyautomatic
create_uidCreated bymany2one
read-onlyautomatic
display_nameDisplay Namechar
read-onlycomputedautomatic
idIDinteger
read-onlyautomatic
write_dateLast Updated ondatetime
read-onlyautomatic
write_uidLast Updated bymany2one
read-onlyautomatic

Relations

Models linked from this model

Fields of other models pointing here

Reading this model through the API

Odoo 19 JSON-2 API call reading the first five records with real fields of the model. Replace the instance, database and API key with your own.

curl
curl -X POST "https://your-instance.odoo.com/json/2/stock.move/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["reference","company_id","date","location_dest_id","location_id"],"limit":5}'
Python (requests)
import requests

BASE_URL = "https://your-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "your-db"}

res = requests.post(
    f"{BASE_URL}/stock.move/search_read",
    headers=headers,
    json={"domain": [], "fields": ["reference","company_id","date","location_dest_id","location_id"], "limit": 5},
)
res.raise_for_status()
print(res.json())
  • External API access requires Odoo's Custom plan.
  • XML-RPC and JSON-RPC will be removed in Odoo 22 (fall 2028): use JSON-2.
  • The access rights and record rules of the key's user apply.

Cite this tool

Writing a tutorial, internal documentation or a forum answer? Copy this link to send your readers to the up-to-date reference.

<a href="https://aidoo.ai/en/outils/explorateur-modeles-odoo/stock-move">stock.move (Odoo 19.0)</a>

Sources

Data verified on September 23, 2026 · Odoo 19.0 Community

Have an Odoo project, or want to put your ERP to work with AI? Let's talk

Implementation, custom module development, connecting Claude or ChatGPT to your data: tell us about your context and we will reply within 24 business hours.