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 name | Label | Type | Details |
|---|---|---|---|
| account_move_id | stock_move_id | many2one | added by WMS Accounting ( |
| additional | Whether the move was added after the picking's confirmation | boolean | |
| allowed_operation_ids | Allowed Operation | one2many | related: added by Manufacturing ( |
| allowed_uom_ids | Allowed Uom | many2many→ uom.uom | computed |
| analytic_account_line_ids | Analytic Account Line | many2many | added by WMS Accounting ( |
| availability | Forecasted Quantity Quantity in stock that can still be reserved for this move | float | read-onlycomputed |
| bom_line_id | BoM Line | many2one | added by Manufacturing ( |
| byproduct_id | By-products By-product line that generated the move in a manufacturing order | many2one | added by Manufacturing ( |
| company_currency_id | Company Currency | many2one | read-only related: added by WMS Accounting ( |
| company_id | Company | many2one | required |
| consume_unbuild_id | Consumed Disassembly Order | many2one | added by Manufacturing ( |
| cost_share | Cost 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 ( |
| created_production_id | Created Production Order | many2one | added by Manufacturing ( |
| created_purchase_line_ids | Created Purchase Order Lines | many2many | added by Purchase Stock ( |
| date | Date Scheduled Scheduled date until move is done, then date of actual move processing | datetime | required |
| date_deadline | Deadline 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_date | Delay Alert Date Process at this date to be on time | datetime | computed, stored |
| description_picking | Description Of Picking | text | computed |
| description_picking_manual | Description Picking Manual | text | read-only |
| display_assign_serial | Display Assign Serial | boolean | computed |
| display_import_lot | Display Import Lot | boolean | computed |
| forecast_availability | Forecast Availability | float | computed |
| forecast_expected_date | Forecasted Expected date | datetime | computed |
| has_lines_without_result_package | Has Lines Without Result Package | boolean | computed |
| has_tracking | Product with Tracking | selection | related: |
| inventory_name | Inventory Name | char | read-only |
| is_date_editable | Is Date Editable | boolean | computed |
| is_dropship | Is Dropship | boolean | computed, stored added by WMS Accounting ( |
| is_in | Is Incoming (valued) | boolean | computed, stored added by WMS Accounting ( |
| is_initial_demand_editable | Is initial demand editable | boolean | computed |
| is_inventory | Inventory | boolean | |
| is_locked | Is Locked | boolean | read-onlycomputed |
| is_out | Is Outgoing (valued) | boolean | computed, stored added by WMS Accounting ( |
| is_quantity_done_editable | Is quantity done editable | boolean | computed |
| is_storable | Is Storable | boolean | related: |
| is_subcontract | The move is a subcontract receipt | boolean | added by MRP Subcontracting ( |
| is_valued | Is Valued | boolean | computed added by WMS Accounting ( |
| location_dest_id | Intermediate Location The operations brings product to this location | many2one | requiredcomputed, stored |
| location_dest_usage | Destination Location Type | selection | related: |
| location_final_id | Final 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_id | Source Location The operation takes and suggests products from this location. | many2one | requiredcomputed, stored |
| location_usage | Source Location Type | selection | related: |
| lot_ids | Serial Numbers | many2many | computed |
| manual_consumption | Manual 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 ( |
| move_dest_ids | Destination Moves Optional: next stock move when chaining them | many2many | |
| move_line_ids | Move Line | one2many | inverse: |
| move_lines_count | Move Lines Count | integer | computed |
| move_orig_ids | Original Move Optional: previous stock move when chaining them | many2many | |
| never_product_template_attribute_value_ids | Never attribute Values | many2many | |
| next_serial | First SN/Lot | char | |
| next_serial_count | Number of SN/Lots | integer | |
| operation_id | Operation To Consume | many2one | added by Manufacturing ( |
| order_finished_lot_ids | Finished Lot/Serial Number | many2many | related: added by Manufacturing ( |
| orderpoint_id | Original Reordering Rule | many2one | |
| origin | Source Document | char | |
| origin_returned_move_id | Origin return move Move that created the return move | many2one | |
| package_ids | Packages | one2many | computed |
| packaging_uom_id | Packaging Packaging unit from sale or purchase orders | many2one→ uom.uom | computed, stored |
| packaging_uom_qty | Packaging Quantity Quantity in the packaging unit | float | computed, stored |
| partner_id | Destination Address Optional address where goods are to be delivered, specifically used for allotment | many2one | computed, stored |
| picked | Picked This checkbox is just indicative, it doesn't validate or generate any product moves. | boolean | computed, stored |
| picking_code | Picking Code | selection | read-only related: |
| picking_id | Transfer | many2one | |
| picking_type_id | Operation Type | many2one | computed, stored |
| price_unit | Price Unit | float | |
| priority | Priority | selection | computed, stored Values: |
| procure_method | Supply 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: |
| procurement_values | Procurement Values Dummy field to store procurement values to propagate them to later steps | json | |
| product_category_id | Product Category | many2one | related: |
| product_id | Product | many2one | required |
| product_qty | Real Quantity Quantity in the default UoM of the product | float | computed, stored |
| product_qty_available | Product On Hand Quantity | float | related: added by Manufacturing ( |
| product_tmpl_id | Product Template | many2one | related: |
| product_uom | Unit | many2one→ uom.uom | requiredcomputed, stored |
| product_uom_qty | Demand 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_available | Product Forecasted Quantity | float | related: added by Manufacturing ( |
| production_group_id | Used for Productions | many2one | added by Manufacturing ( |
| production_id | Production Order for finished products | many2one | added by Manufacturing ( |
| propagate_cancel | Propagate cancel and split If checked, when this move is cancelled, cancel the linked move too | boolean | |
| purchase_line_id | Purchase Order Line | many2one | read-only added by Purchase Stock ( |
| quantity | Quantity | float | computed, stored |
| raw_material_production_id | Production Order for components | many2one | added by Manufacturing ( |
| reference | Reference | char | computed, stored |
| reference_ids | References | many2many | |
| remaining_qty | Remaining Quantity | float | computed added by WMS Accounting ( |
| remaining_value | Remaining Value | monetary | computed added by WMS Accounting ( |
| repair_id | Repair | many2one | added by Repairs ( |
| repair_line_type | Type | selection | Values: added by Repairs ( |
| requisition_line_ids | Requisition Line | one2many | inverse: added by Purchase Requisition Stock ( |
| reservation_date | Date to Reserve Computes when a move should be reserved | date | computed, stored |
| restrict_partner_id | Owner | many2one | |
| returned_move_ids | All returned moves Optional: all returned moves created from this move | one2many | inverse: |
| route_ids | Destination route Preferred route | many2many | |
| rule_id | Stock Rule The stock rule that created this stock move | many2one | |
| sale_line_id | Sale Line | many2one | added by Sales and Warehouse Management ( |
| scrap_id | Scrap operation | many2one | read-only |
| sequence | Sequence | integer | |
| should_consume_qty | Quantity To Consume | float | computed added by Manufacturing ( |
| show_details_visible | Details Visible | boolean | computed |
| show_lots_m2o | Show lot_id | boolean | computed |
| show_lots_text | Show lot_name | boolean | computed |
| show_operations | Show Operations | boolean | related: |
| show_quant | Show Quant | boolean | computed |
| show_subcontracting_details_visible | Show Subcontracting Details Visible | boolean | computed added by MRP Subcontracting ( |
| standard_price | Standard Price | float | computed added by WMS Accounting ( |
| state | Status * 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: |
| to_refund | Update quantities on SO/PO Trigger a decrease of the delivered/received quantity in the associated Sale Order/Purchase Order | boolean | added by WMS Accounting ( |
| unbuild_id | Disassembly Order | many2one | added by Manufacturing ( |
| unit_factor | Unit Factor | float | computed, stored added by Manufacturing ( |
| use_expiration_date | Use Expiration Date | boolean | related: added by Products Expiration Date ( |
| value | Value The current value of the move. It's zero if the move is not valued. | monetary | added by WMS Accounting ( |
| value_computed_justification | Computed Value Description | text | computed added by WMS Accounting ( |
| value_justification | Value Description | text | computed added by WMS Accounting ( |
| value_manual | Manual Value | monetary | computed added by WMS Accounting ( |
| warehouse_id | Warehouse the warehouse to consider for the route selection on the next procurement (if any). | many2one | |
| weight | Weight | float | computed, stored added by Delivery - Stock ( |
| workorder_id | Work Order To Consume | many2one | added by Manufacturing ( |
| create_date | Created on | datetime | read-onlyautomatic |
| create_uid | Created by | many2one | read-onlyautomatic |
| display_name | Display Name | char | read-onlycomputedautomatic |
| id | ID | integer | read-onlyautomatic |
| write_date | Last Updated on | datetime | read-onlyautomatic |
| write_uid | Last Updated by | many2one | read-onlyautomatic |
Relations
Models linked from this model
- account.analytic.line: analytic_account_line_ids
- account.move: account_move_id
- mrp.bom.byproduct: byproduct_id
- mrp.bom.line: bom_line_id
- mrp.production: created_production_id, production_id, raw_material_production_id
- mrp.production.group: production_group_id
- mrp.routing.workcenter: allowed_operation_ids, operation_id
- mrp.unbuild: consume_unbuild_id, unbuild_id
- mrp.workorder: workorder_id
- product.category: product_category_id
- product.product: product_id
- product.template: product_tmpl_id
- product.template.attribute.value: never_product_template_attribute_value_ids
- purchase.order.line: created_purchase_line_ids, purchase_line_id
- purchase.requisition.line: requisition_line_ids
- repair.order: repair_id
- res.company: company_id
- res.currency: company_currency_id
- res.partner: partner_id, restrict_partner_id
- sale.order.line: sale_line_id
- stock.location: location_dest_id, location_final_id, location_id
- stock.lot: lot_ids, order_finished_lot_ids
- stock.move: move_dest_ids, move_orig_ids, origin_returned_move_id, returned_move_ids
- stock.move.line: move_line_ids
- stock.package: package_ids
- stock.picking: picking_id
- stock.picking.type: picking_type_id
- stock.reference: reference_ids
- stock.route: route_ids
- stock.rule: rule_id
- stock.scrap: scrap_id
- stock.warehouse: warehouse_id
- stock.warehouse.orderpoint: orderpoint_id
- uom.uom: allowed_uom_ids, packaging_uom_id, product_uom
Fields of other models pointing here
- product.label.layout: move_ids
- product.value: move_id
- purchase.order.line: move_dest_ids
- purchase.requisition.line: move_dest_id
- repair.order: move_id
- stock.move: move_dest_ids, move_orig_ids, origin_returned_move_id
- stock.move.line: move_id
- stock.reference: move_ids
- stock.return.picking.line: move_id
- stock.valuation.adjustment.lines: move_id
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 -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}'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.