Odoo 19.0 Community · Persistent

sale.order.line: fields, relations and API

The sale.order.line model ("Sales Order Line") is a persistent model declared by the Sales module, then extended by 35 other modules. It exposes 129 fields, 120 of them declared directly on the model; 25 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
sale.order.line
Label
Sales Order Line
Type
Persistent (models.Model)
SQL table
sale_order_line
Origin module
Sales (sale)
Extended by
delivery, sale_stock, stock_delivery, sale_management, event_sale, event_booth_sale, repair, sale_purchase, stock_dropshipping, pos_sale, pos_repair, pos_sale_loyalty, sale_margin, sale_mrp, sale_service, sale_project, sale_expense, sale_expense_margin, sale_gelato, sale_gelato_stock, sale_loyalty, sale_stock_margin, sale_pdf_quote_builder, sale_product_matrix, sale_project_stock, sale_purchase_project, sale_stock_product_expiry, sale_timesheet, sale_timesheet_margin, website_sale, website_sale_slides, website_event_booth_sale, website_event_sale, website_sale_stock, website_sale_loyalty
Default order (_order)
order_id, sequence, id
Inherits from (mixins)
analytic.mixinpos.load.mixin

Model fields

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

129 of 129 fields shown

Technical nameLabelTypeDetails
allowed_uom_idsAllowed Uommany2many
computed
amount_invoicedInvoiced Amountmonetary
computed
amount_to_invoiceUn-invoiced Balancemonetary
computed
amount_to_invoice_at_dateAmountfloat
computed
analytic_line_idsAnalytic linesone2many

inverse: so_line

available_product_document_idsAvailable Product Documentsmany2many
computed

added by Sales PDF Quotation Builder (sale_pdf_quote_builder)

categ_idCategmany2one

related: product_id.categ_id

collapse_compositionCollapse Compositionboolean
collapse_pricesCollapse Pricesboolean
combo_item_idCombo Itemmany2one
company_idCompanymany2one

related: order_id.company_id

company_price_includeCompany Price Includeselection

related: company_id.account_price_include

coupon_idCouponmany2one
read-only

added by Sale Loyalty (sale_loyalty)

currency_idCurrencymany2one

related: order_id.currency_id

customer_leadLead Time

Number of days between the order confirmation and the shipping of the products to the customer

float
requiredcomputed, stored
discountDiscount (%)float
computed, stored
display_qty_widgetDisplay Qty Widgetboolean
computed

added by Sales and Warehouse Management (sale_stock)

display_typeDisplay Typeselection

Values: line_section (Section), line_subsection (Subsection), line_note (Note)

event_booth_category_idBooths Categorymany2one

added by Events Booths Sales (event_booth_sale)

event_booth_idsConfirmed Boothsone2many

inverse: sale_order_line_id

added by Events Booths Sales (event_booth_sale)

event_booth_pending_idsPending Booths

Used to create registration when providing the desired event booth.

many2many
computed

added by Events Booths Sales (event_booth_sale)

event_booth_registration_idsConfirmed Registrationone2many

inverse: sale_order_line_id

added by Events Booths Sales (event_booth_sale)

event_idEvent

Choose an event and it will automatically create a registration for this event.

many2one
computed, stored

added by Events Sales (event_sale)

event_slot_idSlot

Choose an event slot and it will automatically create a registration for this event slot.

many2one
computed, stored

added by Events Sales (event_sale)

event_ticket_idTicket Type

Choose an event ticket and it will automatically create a registration for this event ticket.

many2one
computed, stored

added by Events Sales (event_sale)

expense_idExpensemany2one

added by Sales Expense Margin (sale_expense_margin)

expense_idsExpensesone2many
read-only

inverse: sale_order_line_id

added by Sales Expense (sale_expense)

extra_tax_dataExtra Tax Datajson
forecast_expected_dateForecast Expected Datedatetime
computed

added by Sales and Warehouse Management (sale_stock)

free_qty_todayFree Qty Todayfloat
computed

added by Sales and Warehouse Management (sale_stock)

has_displayed_warning_upsellHas Displayed Warning Upsellboolean

added by Sales Timesheet (sale_timesheet)

invoice_linesInvoice Linesmany2many
invoice_statusInvoice Statusselection
computed, stored

Values: upselling (Upselling Opportunity), invoiced (Fully Invoiced), to invoice (To Invoice), no (Nothing to Invoice)

is_configurable_productIs the product configurable?boolean

related: product_template_id.has_configurable_attributes

is_deliveryIs a Deliveryboolean

added by Delivery Costs (delivery)

is_downpaymentIs a down payment

Down payments are made when creating invoices from a sales order. They are not copied when duplicating a sales order.

boolean
is_expenseIs expense

Is true if the sales order line comes from an expense or a vendor bills

boolean
is_mtoIs Mtoboolean
computed

added by Sales and Warehouse Management (sale_stock)

is_multi_slotsIs Multi Slotsboolean

related: event_id.is_multi_slots

added by Events Sales (event_sale)

is_optionalOptional Lineboolean

added by Sales (sale_management)

is_product_archivedIs Product Archivedboolean
computed
is_repair_lineIs linked to repairboolean
computed

added by POS - Repair (pos_repair)

is_reward_lineIs a program reward lineboolean
computed

added by Sale Loyalty (sale_loyalty)

is_serviceIs a Serviceboolean
computed, stored

added by Sales - Service (sale_service)

is_storableIs Storableboolean

related: product_id.is_storable

added by Sales and Warehouse Management (sale_stock)

linked_line_idLinked Order Linemany2one
linked_line_idsLinked Order Linesone2many

inverse: linked_line_id

linked_virtual_idLinked Virtualchar
marginMarginfloat
computed, stored

added by Margins in Sales Orders (sale_margin)

margin_percentMargin (%)float
computed, stored

added by Margins in Sales Orders (sale_margin)

move_idsStock Movesone2many

inverse: sale_line_id

added by Sales and Warehouse Management (sale_stock)

nameDescriptiontext
requiredcomputed, stored
name_shortName Shortchar
computed

added by eCommerce (website_sale)

order_idOrder Referencemany2one
required
order_partner_idCustomermany2one

related: order_id.partner_id

parent_idParent Section Linemany2one
computed
points_costPoints Cost

How much point this reward costs on the loyalty card.

float

added by Sale Loyalty (sale_loyalty)

pos_order_line_idsOrder lines Transfered to Point of Saleone2many
read-only

inverse: sale_order_line_id

added by POS - Sales (pos_sale)

price_reduce_taxexclPrice Reduce Tax exclmonetary
computed, stored
price_reduce_taxincPrice Reduce Tax inclmonetary
computed, stored
price_subtotalSubtotalmonetary
computed, stored
price_taxTotal Taxfloat
computed, stored
price_totalTotalmonetary
computed, stored
price_unitUnit Pricefloat
requiredcomputed, stored
pricelist_item_idPricelist Itemmany2one
computed
product_add_modeProduct Add Modeselection

related: product_template_id.product_add_mode

added by Sale Matrix (sale_product_matrix)

product_custom_attribute_value_idsCustom Valuesone2many
computed, stored

inverse: sale_order_line_id

product_document_idsProduct Documents

The product documents for this order line that will be merged in the PDF quote.

many2many

added by Sales PDF Quotation Builder (sale_pdf_quote_builder)

product_idProductmany2one
product_no_variant_attribute_value_idsExtra Valuesmany2many
computed, stored
product_qtyProduct Qtyfloat
computed

added by Delivery Costs (delivery)

product_template_attribute_value_idsProduct Template Attribute Valuemany2many

related: product_id.product_template_attribute_value_ids

product_template_idProduct Templatemany2one
computed
product_typeProduct Typeselection

related: product_id.type

product_uom_idUnitmany2one
computed, stored
product_uom_qtyQuantityfloat
requiredcomputed, stored
product_uom_readonlyProduct Uom Readonlyboolean
computed
product_updatableCan Edit Productboolean
computed
project_idGenerated Projectmany2one

added by Sales - Project (sale_project)

purchase_line_countNumber of generated purchase itemsinteger
computed

added by Sale Purchase (sale_purchase)

purchase_line_idsGenerated Purchase Lines

Purchase line generated by this Sales item on order confirmation, or when the quantity was increased.

one2many
read-only

inverse: sale_line_id

added by Sale Purchase (sale_purchase)

purchase_priceCostfloat
computed, stored

added by Margins in Sales Orders (sale_margin)

qty_available_todayQty Available Todayfloat
computed

added by Sales and Warehouse Management (sale_stock)

qty_deliveredDelivery Quantityfloat
computed, stored
qty_delivered_at_dateDeliveredfloat
computed
qty_delivered_methodMethod to update delivered qty

According to product configuration, the delivered quantity can be automatically computed by mechanism: - Manual: the quantity is set manually on the line - Analytic From expenses: the quantity is the quantity sum from posted expenses - Timesheet: the quantity is the sum of hours recorded on tasks linked to this sale line - Stock Moves: the quantity comes from confirmed pickings

selection
computed, stored

Values: manual (Manual), analytic (Analytic From Expenses)

qty_invoicedInvoiced Quantityfloat
computed, stored
qty_invoiced_at_dateInvoicedfloat
computed
qty_invoiced_postedInvoiced Quantity (posted)float
computed
qty_to_deliverQty To Deliverfloat
computed

added by Sales and Warehouse Management (sale_stock)

qty_to_invoiceQuantity To Invoicefloat
computed, stored
reached_milestones_idsReached Milestonesone2many

inverse: sale_line_id

added by Sales - Project (sale_project)

recompute_delivery_priceRecompute Delivery Priceboolean

related: order_id.recompute_delivery_price

added by Delivery Costs (delivery)

registration_idsRegistrationsone2many

inverse: sale_order_line_id

added by Events Sales (event_sale)

remaining_hoursTime Remaining on SOfloat
computed, stored

added by Sales Timesheet (sale_timesheet)

remaining_hours_availableRemaining Hours Availableboolean
computed

added by Sales Timesheet (sale_timesheet)

reward_idRewardmany2one
read-only

added by Sale Loyalty (sale_loyalty)

reward_identifier_codeReward Identifier Code

Technical field used to link multiple reward lines from the same reward together.

char

added by Sale Loyalty (sale_loyalty)

route_idsRoutesmany2many

added by Sales and Warehouse Management (sale_stock)

sale_line_warn_msgSale Line Warn Msgtext
computed
salesman_idSalespersonmany2one

related: order_id.user_id

scheduled_dateScheduled Datedatetime
computed

added by Sales and Warehouse Management (sale_stock)

selected_combo_itemsSelected Combo Itemschar
sequenceSequenceinteger
service_trackingService Trackingselection

related: product_id.service_tracking

shop_warningWarningchar

added by eCommerce (website_sale)

stateOrder Statusselection

related: order_id.state

task_idGenerated Taskmany2one

added by Sales - Project (sale_project)

tax_calculation_rounding_methodTax calculation rounding methodselection
read-only

related: company_id.tax_calculation_rounding_method

tax_country_idTax Countrymany2one

related: order_id.tax_country_id

tax_idsTaxesmany2many
computed, stored
technical_price_unitTechnical Price Unitfloat
timesheet_idsTimesheetsone2many

inverse: so_line

added by Sales Timesheet (sale_timesheet)

translated_product_nameTranslated Product Nametext
computed
untaxed_amount_invoicedUntaxed Invoiced Amountmonetary
computed, stored
untaxed_amount_to_invoiceUntaxed Amount To Invoicemonetary
computed, stored
use_expiration_dateUse Expiration Dateboolean

related: product_id.use_expiration_date

added by Sale Stock Product Expiry (sale_stock_product_expiry)

virtual_available_at_dateVirtual Available At Datefloat
computed

added by Sales and Warehouse Management (sale_stock)

virtual_idVirtualchar
warehouse_idWarehousemany2one
computed, stored

added by Sales and Warehouse Management (sale_stock)

analytic_distributionAnalytic Distributionjson
computed, stored

inherited from analytic.mixin

analytic_precisionAnalytic Precisioninteger

inherited from analytic.mixin

distribution_analytic_account_idsDistribution Analytic Accountmany2many
computed

inherited from analytic.mixin

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/sale.order.line/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["name","customer_lead","order_id","price_unit","product_uom_qty"],"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}/sale.order.line/search_read",
    headers=headers,
    json={"domain": [], "fields": ["name","customer_lead","order_id","price_unit","product_uom_qty"], "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/sale-order-line">sale.order.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.