Odoo 19.0 Community · Persistent

stock.move.line: fields, relations and API

The stock.move.line model ("Product Moves (Stock Move Line)") is a persistent model declared by the Inventory module, then extended by 9 other modules. It exposes 60 fields, 54 of them declared directly on the model; 6 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.line
Label
Product Moves (Stock Move Line)
Type
Persistent (models.Model)
SQL table
stock_move_line
Origin module
Inventory (stock)
Extended by
stock_account, sale_stock, stock_delivery, stock_picking_batch, mrp, product_expiry, repair, mrp_subcontracting, sale_mrp
Default order (_order)
result_package_id desc, id
Display field (_rec_name)
product_id

Model fields

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

60 of 60 fields shown

Technical nameLabelTypeDetails
allowed_uom_idsAllowed Uommany2many
computed
batch_idBatchmany2one

related: picking_id.batch_id

added by Warehouse Management: Batch Transfer (stock_picking_batch)

carrier_idCarriermany2one

related: picking_id.carrier_id

added by Delivery - Stock (stock_delivery)

company_idCompanymany2one
requiredread-only
consume_line_idsConsume Linemany2many
dateDate

Creation date of this move line until updated due to: quantity being increased, 'picked' status has updated, or move line is done.

datetime
required
description_pickingDescription Pickingtext

related: move_id.description_picking

destination_country_codeDestination Country Codechar

related: picking_id.destination_country_code

added by Delivery - Stock (stock_delivery)

expiration_dateExpiration Date

This is the date on which the goods with this Serial Number may become dangerous and must not be consumed.

datetime
computed, stored

added by Products Expiration Date (product_expiry)

is_entire_packIs added through entire packageboolean
is_expiredIs Expiredboolean

related: lot_id.product_expiry_alert

added by Products Expiration Date (product_expiry)

is_inventoryIs Inventoryboolean

related: move_id.is_inventory

is_lockedIs Lockedboolean
read-only

related: move_id.is_locked

location_dest_idTomany2one
requiredcomputed, stored
location_dest_usageDestination Location Typeselection

related: location_dest_id.usage

location_idFrommany2one
requiredcomputed, stored
location_usageSource Location Typeselection

related: location_id.usage

lot_idLot/Serial Numbermany2one
lot_nameLot/Serial Number Namechar
lots_visibleLots Visibleboolean
computed
move_idStock Operationmany2one
move_partner_idMove Partnermany2one
read-only

related: move_id.partner_id

originSourcechar

related: move_id.origin

owner_idFrom Owner

When validating the transfer, the products will be taken from this owner.

many2one
package_history_idPackage Historymany2one
package_idSource Packagemany2one
pickedPickedboolean
computed, stored
picking_codePicking Codeselection
read-only

related: picking_type_id.code

picking_idTransfer

The stock operation where the packing has been made

many2one
picking_location_dest_idPicking Location Destmany2one

related: picking_id.location_dest_id

picking_location_idPicking Locationmany2one

related: picking_id.location_id

picking_partner_idPicking Partnermany2one
read-only

related: picking_id.partner_id

picking_type_idOperation typemany2one
computed
picking_type_use_create_lotsPicking Type Use Create Lotsboolean
read-only

related: picking_type_id.use_create_lots

picking_type_use_existing_lotsPicking Type Use Existing Lotsboolean
read-only

related: picking_type_id.use_existing_lots

produce_line_idsProduce Linemany2many
product_category_nameProduct Categorychar

related: product_id.categ_id.complete_name

product_idProductmany2one
product_uom_idUnitmany2one
requiredcomputed, stored
production_idProduction Ordermany2one

added by Manufacturing (mrp)

quant_idPick Frommany2one
quantityQuantityfloat
computed, stored
quantity_product_uomQuantity in Product UoMfloat
computed, stored
referenceReferencechar

related: move_id.reference

removal_dateRemoval Datedatetime
computed, stored

added by Products Expiration Date (product_expiry)

result_package_dest_nameDestination Package Namechar

related: result_package_id.dest_complete_name

result_package_idDestination Package

If set, the operations are packed into this package

many2one
sale_priceSale Pricefloat
computed

added by Delivery - Stock (stock_delivery)

scheduled_dateScheduled Datedatetime

related: move_id.date

scrap_idScrapmany2one

related: move_id.scrap_id

stateStateselection

related: move_id.state

trackingTrackingselection
read-only

related: product_id.tracking

use_expiration_dateUse Expiration Dateboolean

related: product_id.use_expiration_date

added by Products Expiration Date (product_expiry)

workorder_idWork Ordermany2one

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.line/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["product_id","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.line/search_read",
    headers=headers,
    json={"domain": [], "fields": ["product_id","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-line">stock.move.line (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.