xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField SalesCRMRewardsClaimsInventoryProcurementWarehouse ManagementField ServiceServiceSupportTelephony & MessagingFinance & AccountingPayrollExpense ManagementCommercePortalsAnalytics & ReportingData StudioMobile AppSee all products →
PLATFORM
Platform overviewApp BuilderAutomationIntegrationsSecurity & GovernanceChange ManagementDevelopers
SENSE AI
Sense AI overviewSense AssistSense ControlSense VisionAI StudioTrust & governanceIn Claude & ChatGPTUse cases
SOLUTIONS
FMCG & DistributionManufacturing & Dealer NetworksAutomotive & DealershipsPharma & HealthcareConsumer DurablesAgri-InputsBuilding MaterialsService NetworksWarehousing & 3PLFinancial AccountingERP SoftwareIndia GST ComplianceUAE VAT & e-InvoicingSaudi ZATCA & VATAll solutions →
RESOURCES
Knowledge CenterDeveloper & CLIBlogGuidesWhat is xMatix?Company facts
COMPANY
AboutCareersPartnersEventsContactAuthorsLegal
Sign in Request demo
Home/Docs/Entity Reference/Service Order Line — entity reference
REFERENCE · Last reviewed

Service Order Line — entity reference

A single billable or workable item on a service order. Its behaviour is decided by the linked Item's ItemType rather than by a field on the line itself: a Work Item line is labour (it carries StandardDurationHours/ActualDurationHours, WorkStatus, TechnicianId and is what a time sheet is built from), while a Part line is stock (it drives fulfilment, allocation, picking and inventory-ledger posting). PostingType then decides where the money goes — Generate Invoices (or blank) raises a customer invoice line, Generate Claims/Auto Generate Claims raises a warranty claim line. The line also carries the full pricing stack (UnitPrice/UnitPrice2, discounts, six tax slots) and the quantity ladder that every downstream action is gated on.

Fields

FieldLabelTypeRequiredWhat it does
ActionTakenAction TakenPickListValues: Replace, Repair.
ActualDurationHoursActual Duration (Hours)NumberHours actually worked on the line. Nothing computes it from the time-sheet start and end stamps — it is captured — and it is read by resource-wise profitability reporting rather than by any billing path.
AllocatedInvoicedQuantityAllocated Invoiced QuantityNumber
AllocatedQuantityAllocated QuantityNumberStock committed to this line by an allocation. It is also the transaction marker for the line: once it is non-zero the Item can no longer be changed and the line can no longer be deleted.
AlternateItemIdAlternateItemLookup → ItemAlternate
AmountAmountCalculated (calculated)Calculated line value: the base amount, less the net discount and net scheme discount when discounts are applied before tax, or the untouched base amount when ApplyPostTaxDiscount is set (in which case the discounts are taken off in the gross amount instead).
ApplyPostTaxDiscountApply Post Tax DiscountBooleanSwitches the point at which discounts are taken: off, they reduce the line amount before tax; on, the amount stays at base and the discounts are deducted from the gross amount after tax, and percentage discounts are computed on base plus tax rather than on base alone.
AssetIdAssetLookup → Asset
AssetMaintenanceIdAsset MaintenanceLookup → AssetMaintenanceThe scheduled asset-maintenance item this line discharges. It is also the de-duplication key when maintenance lines are pulled in: an item already present on the order is not added twice.
AssetServiceContractIdAsset Service ContractLookup → AssetServiceContract
AssetServiceContractLineIdAsset Service Contract LineLookup → AssetServiceContractLine
BaseAmountBaseAmountCalculated (calculated)Calculated as the net quantity (ordered less cancelled) times the effective unit price, which is UnitPrice2 when positive and UnitPrice otherwise. It is the pre-discount, pre-tax value of the line.
BranchIdBranchLookup
CancelledQuantityCancelled QuantityNumberQuantity struck off the line without being supplied. It is subtracted in every pending-quantity calculation, and cancelling a part line in full is one of the two ways to satisfy the Work Completed gate on the order.
ClaimableQuantityClaimable QuantityCalculated (calculated)Calculated quantity eligible for a warranty claim: it is quantity less cancelled less already claimed, but only when PostingType is Generate Claims or Auto Generate Claims — for any other posting type it evaluates to zero, which is what keeps billable work out of the claim run.
ClaimedQuantityClaimed QuantityNumber
ComplaintCodeIdComplaintCodeLookup → Complaint
ComplaintFaultCodeIdComplaintFaultCodeLookup → ComplaintFault
ContractDiscountContract DiscountPercent
ContractDiscountAmountContract Discount AmountCurrency
CreatedByIdCreated ByLookup → UserAccountYes
CreatedDateTimeCreated DateDateAndTime
DeliveryQuantityDelivery QuantityNumber
DiscountAmountDiscount AmountCurrency
DiscountAmount2Cash Discount AmountCurrency
ExternalIdExternalText
FailedItemDeliveredQuantityFailed Item Delivered QuantityNumber
FailedItemTreatmentFailed Item TreatmentPickListValues: Replaced, Repaired, Inspected.
FailedPartInfoFailed Part InfoText
FulfilmentOrderQuantityFulfilment Order QuantityNumber
GrossAmountGross AmountCalculated (calculated)Calculated as the line amount plus tax, minus the discounts again when ApplyPostTaxDiscount is set — the post-tax discount branch is where those discounts actually bite.
HeaderItemHeader ItemText
IdIdGuid
IncludedInPackageIncluded In PackageBoolean
InventoryLedgerIdInventory LedgerLookup → InventoryLedgerThe inventory ledger entry raised for this line's stock movement. Its presence is what marks the line as already posted: the inventory-posting action only considers lines where it is empty, and refuses to run when every line has one.
InventoryStockIdInventory StockLookup → InventoryStock
InvoiceGroupInvoice GroupPickListSplits the order's lines into separate invoice documents — the seeded values are Parts and Service — so one job can bill parts and labour on different invoices. Claims are grouped the same way. Values: Parts, Service.
InvoiceQuantityInvoice QuantityNumber
IsBillableBillableBooleanRead-only derived flag: it is true when PostingType is Generate Invoices or is blank, and its setter deliberately discards writes, so storing a value in the column has no effect. Change PostingType to change billability.
IsClaimedClaimedBoolean
IsILPostedIL PostedBooleanProtected inventory-ledger posting flag — the handler rejects client attempts to set or change it, so it can only be maintained by the posting engine.
IsILPostingApprovedIL Posting ApprovedBoolean
IsInvoicedInvoicedBooleanSet by the invoice run on each line it actually posted. It marks that an invoice line was produced, not that the line is fully billed — check the pending invoice quantity for that.
IsPackageServicePackage ServiceBoolean
IsSchemeGeneratedScheme GeneratedBoolean
IsServiceCampaignMandatoryService Campaign MandatoryBooleanMarks the line as required by a service campaign or recall. While set, the handler blocks changes to the item, quantity, cancelled quantity and contract on the line and blocks deleting it altogether.
ItemIdItemLookup → ItemYesThe item or operation on the line, and the thing that decides how the line behaves: an Item of type Work Item is labour and can appear on a time sheet, an Item of type Part drives allocation, picking and inventory posting. The item must be one of the Related Items configured for the header Asset's Item, and it is locked once anything has been allocated against the line.
ItemLotIdItem LotLookup → ItemLot
ItemLotTypeIdItem Lot TypeLookup → ItemLotType
ItemNameItem NameText
ItemServiceContractIdItem Service ContractLookup → ItemServiceContractThe service contract this line is executed and settled under. It drives how the line is posted — invoices are split per contract and claims are raised against it — and it is validated against the asset's contracts when set.
ItemServiceContractId2Item Service Contract2Lookup → ItemServiceContractA second service contract sharing the cost of the line, used where liability is split. It only produces anything when its weightage is positive, that contract's posting treatment is Generate Invoices and it names a weightage charge item — then a proportional extra invoice line is raised against it.
ItemServiceContractId3Item Service Contract3Lookup → ItemServiceContract
MaintenanceSubTypeMaintenance Sub-TypePickList
MaintenanceTypeMaintenance TypePickListValues: Breakdown, Predictive, Preventive.
ModifiedByIdModified ByLookup → UserAccount
NameNameText
NetDiscountNet DiscountCalculated (calculated)Calculated total of the line's three discount channels — cash, secondary and contract — preferring the explicit amount for each where one is entered. The percentage branches of the formula refer to Discount, Discount2 and ContractDiscount rate fields that are not first-party fields on this entity, so in a stock configuration only the entered amounts contribute.
NetSchemeDiscountNet Scheme DiscountCalculated (calculated)
OpportunityLineIdOpportunity LineLookup → OpportunityLine
OriginalItemIdOriginal ItemLookup
OTCInvoicedQuantityOTC Invoiced QuantityNumberQuantity billed over the counter, that is sold directly without going through the fulfilment chain. It is deducted when working out what is still releasable to fulfilment.
OwnerIdOwnerLookup → UserAccountYes
PackageClassificationPackage ClassificationPickListMarks how the line sits inside a service package. Lines classified as "Packaged Item" are skipped by both the invoice run and the claim run, because their value is billed through the package parent rather than in their own right.
PartnerAccountIdPartner AccountLookup → Account
PendiFulfilmentOrderQuantityPending Fulfilment Order QuantityCalculated (calculated)Calculated as quantity less fulfilment-order quantity, less over-the-counter invoiced quantity, less cancelled quantity — what is still releasable to inventory fulfilment. The release actions are refused outright when no line has a positive value here, and the field name carries a long-standing spelling error ("Pendi") that is part of the API contract.
PendingAllocatedInvoicedQuantityPending Allocated Invoiced QuantityCalculated (calculated)Calculated as allocated quantity less allocated-invoiced quantity — stock committed to the job that has not yet been billed.
PendingDeliveryOrderPending Delivery OrderCalculated (calculated)
PendingFulfilmentAllocationQuantityPending Fulfilment Allocation QuantityCalculated (calculated)Calculated as quantity less allocated less cancelled — stock still to be committed. Allocation actions are gated on it, and the order cannot move to Work Completed while any Part line still has a non-zero value here that has not been cancelled instead.
PendingInvoiceQuantityPending Invoice QuantityCalculated (calculated)Calculated as quantity less cancelled less invoiced — what is still billable. Both invoice actions are refused when no line has a positive value here, and it is the quantity used when a selective invoice omits an explicit request.
PendingPickingQuantityPending Picking QuantityCalculated (calculated)
PickedQuantityPicked QuantityDecimal
PostingTypePosting TypePickListDecides where the line's value is posted when the order is invoiced. Blank or Generate Invoices produces a customer invoice line; Generate Claims and Auto Generate Claims send it to warranty claims instead. Values: Auto Generate Claims, Generate Invoices, Generate Claims, Expense.
PriceAsOnDatePrice As On DateDateAndTime
PriceListIdPrice ListLookup → PriceList
PriceListRuleIdPrice List RuleLookup → PriceListRule
PriceListRulesIdPrice List RulesLookup
PurchaseOrderLineIdPurchase Order LineLookup → PurchaseOrderLineThe purchase order line raised to buy this part in when it was not in stock. Its presence excludes the line from a further vehicle-offroad purchase order, so it doubles as the already-ordered marker.
QuantityQuantityNumberThe quantity ordered on the line, and the base of every pending calculation — fulfilment, allocation, picking, invoicing and claiming all subtract what has already happened from this figure less the cancelled quantity. Negative values are rejected, and it cannot be changed on a line flagged as campaign-mandatory.
QuoteLineIdQuote LineLookup → QuoteLine
RecommendationAmountRecommendation AmountCalculated (calculated)Intended to expose the value of recommendation-driven work, but its calculation tests a health-check recommendation field that exists on quote lines and not on this entity, so on a service order line it evaluates to zero.
RecommendationIdRecommendationLookup
RecommendationTypeRecommendation TypePickList
RecordTypeIdRecord TypeGuid, hidden
RequestedQuantityRequested QuantityNumberA virtual, non-persisted field: it exists so a selective action (selective fulfilment, invoice, allocation, picking or cancellation) can carry a per-line quantity in its payload. It is validated against the relevant pending quantity, and when omitted or zero the action falls back to the whole pending amount.
ResourceIdResourceLookup → Resource
RNAExternalIdRNAExternalText
RNAServiceOrderExternalIdRNA Service Order ExternalText
SchemeBenefitIdScheme BenefitLookup → SchemeBenefit
SchemeDiscountAmountScheme Discount AmountCurrency
SchemeLineIdScheme SlabLookup → SchemeLine
SchemeRewardPointsScheme Reward PointsNumber
ServiceCampaignIdService CampaignLookup → ServiceCampaign
ServiceCampaignItemIdService Campaign ItemLookup
ServiceContractItemIdService Contract ItemLookup → Item
ServiceContractWeightageService Contract WeightageCalculated (calculated)Calculated as one minus the second and third contract weightages — the share of the line's value that stays with the primary contract. It is derived, so adjust the second and third shares rather than this.
ServiceContractWeightage2Service Contract Weightage 2DecimalThe fraction of the line's value borne by the second service contract, entered as a proportion. It both drives the extra invoice charge to that contract and reduces the primary contract's derived share.
ServiceContractWeightage3Service Contract Weightage 3Decimal
ServiceOrderDiscountService Order DiscountCalculated (calculated)Intended to carry the header discount down to the line, but its calculation refers to a Discount field on the service order that does not exist in first-party metadata, so it resolves to nothing on a stock configuration.
ServiceOrderIdService OrderLookup → ServiceOrder
ServiceOrderTimeSheetIdService Order Time SheetLookup → ServiceOrderTimeSheet
ServiceRecommendationIdService RecommendationLookup → ServiceRecommendationThe service recommendation this line was created from when the customer accepted it. When the order is invoiced, that recommendation is marked utilised and pointed back at this line, which is what stops it being offered or deleted again.
SkipSchemeSkip SchemeBoolean
SKUIdSKULookup → SKU
StandardDurationHoursStandard Duration (Hours)NumberThe book time for the operation, copied from the source quote or opportunity line when the order is populated. It is the benchmark against which actual hours are compared; it does not price the line.
StockAvailableStock AvailableCalculated (calculated)Live read-through of the linked inventory stock record's available quantity — free stock at the line's branch, lot and location. It is a display aid for the parts counter and is not a stored balance for the line.
StockInHandStock In HandCalculated (calculated)
StorageLocationIdStorage LocationLookup → StorageLocation
Tax1Tax1Currency
Tax1NameTaxName1Text
Tax1RateTaxRate1Currency
Tax1TypeTaxType1Text
Tax2Tax2Currency
Tax2NameTaxName2Text
Tax2RateTaxRate2Currency
Tax2TypeTaxType2Text
Tax3Tax3Currency
Tax3NameTaxName3Text
Tax3RateTaxRate3Currency
Tax3TypeTaxType3Text
Tax4Tax4Currency
Tax4NameTaxName4Text
Tax4RateTaxRate4Currency
Tax4TypeTaxType4Text
Tax5Tax5Currency
Tax5NameTaxName5Text
Tax5RateTaxRate5Currency
Tax5TypeTaxType5Text
Tax6Tax6Currency
Tax6NameTaxName6Text
Tax6RateTaxRate6Currency
Tax6TypeTaxType6Text
TaxAmountTax AmountCurrency
TaxGroupIdTax GroupLookup → TaxGroup
TechnicianIdTechnicianLookup → ResourceThe Resource who works this line. It is copied onto the time-sheet line created for the line, and profitability attributes the line's revenue and hours to this person, falling back to the order header's technician only when the line names nobody.
TimeLostTime LostNumber
UIPropsUI PropsText
UnitPriceUnit PriceDecimalThe line's list price per unit, set from the applicable price list rule when the item, price list or price-as-on date changes. It is only used in the amount calculation when the override price UnitPrice2 is zero.
UnitPrice2Unit Price 2NumberAn override price per unit that wins over UnitPrice whenever it is greater than zero — the base amount is computed from it in preference. Use it for negotiated or contract-specific pricing on the line.
UpdatedDateTimeModified DateDateAndTime
WorkEndedAtWork Ended AtDateAndTimeWhen work on this line finished. It is one of the two ways a Work Item line satisfies the order's Work Completed gate — the other being a work status of "Work Ended".
WorkStartedByWork Started ByDateAndTimeDespite the name this is a date-and-time field, not a user reference: it holds when work on the line started. It is what the Create Time Sheet action reads from its payload to seed the sheet's work start date, and what the sheet writes back onto the line.
WorkStatusWork StatusPickListThe line's work stage. The Work Completed gate on the order compares it against the literal "Work Ended", but the seeded picklist for this field offers only the two paused reasons (non-availability of stock, non-availability of technician), so in practice the gate is satisfied by the work-ended timestamp rather than by this value; time sheets write Started/Paused/Completed into it, which are also outside the seeded list. Values: Paused- Non-Availability Of Stock, Paused- Non-Availability Of Technician, Work Ended.

Actions

ActionLabelTypeWhat it does
BulkDeleteDeleteDeleteDelete
CloneCloneServerAction (Clone)Create a copy of this record
DeleteDeleteDeleteDelete
Delete2DeleteDeleteDelete
DeleteInListDeleteDeleteDelete
DemoQAPQuick AddUIActionDemo QAP
EditEditEditEdit
Edit2EditEditInlineEdit In Line
EditEntityEditEditEdit Entity
EditInLineEditEditEdit
EditInLinePageEditEditInlineEdit
NewNewNewNew
NewInLineNewNewInlineNewInLine
ProductCatalogueProduct CatalogueUIActionDemo Product Catalogue

Validations

ValidationApplies toError messageNotes
Quantity Rule ValidationQuantity, ErrorQuantity should not be less than 0Quantity should not be less than 0
Unit Price Rule ValidationUnitPrice, ErrorUnit Price can not be less than 0Unit Price can not be less than 0

Lookup filters

FilterLookup fieldNotes
Item For Type Work Item Or PartItemId