--- title: Transaction line-level system fields description: Reference for the system-provided fields at the transaction line level in CPQ ServiceNow Quote Experience, including variable names, descriptions, who can modify each field, and default values. locale: en-US canonical_url: https://www.servicenow.com/docs/r/australia/order-management/quote-tm-line-level-system-fields.html release: australia topic_type: reference last_updated: "2026-05-07" reading_time_minutes: 12 breadcrumb: [Fields, ServiceNow Quote Experience, Configure, price, quote apps, Configure, Sales Customer Relationship Management] --- # Transaction line-level system fields Reference for the system-provided fields at the transaction line level in CPQ ServiceNow Quote Experience, including variable names, descriptions, who can modify each field, and default values. ## Field naming conventions ServiceNow Quote Experience uses a consistent prefix convention for line-level field variable names. - System-generated line-level fields use the prefix `txn.line.` followed by the field name — for example, `txn.line.id`. - Custom line-level fields created by administrators use the prefix `txn.line.custom.` followed by the field name — for example, `txn.line.custom.agreementDiscount`. For header-level field naming conventions, see [Transaction-level system fields](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/order-management/quote-tm-header-level-system-fields.md). ## Modifiable by - **System** The field value is set only by the application. Users cannot edit system-modifiable fields, and administrators cannot set them using determination rules. - **User** Any user with the appropriate permissions can update the field value. Determination rule actions can also modify user-modifiable fields. ## Line identity and audit fields |Variable name|Description|Default value| |-------------|-----------|-------------| |`txn.line.id`|UUID of the transaction line. Must be unique across sectors and regions for one tenant; may not be unique across tenants.|Auto-generated by the system. Modifiable by: System| |`txn.line.parent.id`|ID of the parent line. Used to establish parent-child relationships between lines in the quote lines grid.|Empty. The user passes this value. Modifiable by: System| |`txn.line.created`|Timestamp when the transaction line was added.|Auto-generated by the system. Modifiable by: System| |`txn.line.createdBy`|Name of the user who added the transaction line.|Auto-generated by the system. Modifiable by: System| |`txn.line.modified`|Timestamp when the transaction line was last modified.|Auto-generated by the system. Modifiable by: System| |`txn.line.modifiedBy`|Name of the user who last modified the transaction line.|Auto-generated by the system. Modifiable by: System| |`txn.line.isNew`|Indicates whether a line is new \(`true`\) or existing \(`false`\). The value is `true` only during the event that creates the line.|Empty. Generated when the line is added. Modifiable by: System| ## Product fields Product fields are populated automatically when a product is added to the quote. Fields marked with a refresh note are also updated when the **Refresh Product Data** stage setting is enabled. |Variable name|Description|Default value| |-------------|-----------|-------------| |`txn.line.isProduct`|Boolean indicating whether the product to be added is available in the catalog.|`false` Modifiable by: System| |`txn.line.product.id`|Product ID of the product added to the line. Refreshed if **Refresh Product Data** is enabled.|Auto-generated by the system. Modifiable by: System| |`txn.line.product.name`|Name of the product added to the line. Refreshed if **Refresh Product Data** is enabled.|Auto-generated by the system. Modifiable by: System| |`txn.line.product.externalId`|External ID of the product, as defined in CPQ Admin utilities. Refreshed if **Refresh Product Data** is enabled.|Auto-generated by the system. Modifiable by: System| |`txn.line.product.partnerId`|Partner ID of the product, as defined in CPQ Admin utilities. Refreshed if **Refresh Product Data** is enabled.|Auto-generated by the system. Modifiable by: System| |`txn.line.product.productCode`|Product code of the product, as defined in CPQ Admin utilities. Refreshed if **Refresh Product Data** is enabled.|Auto-generated by the system. Modifiable by: System| |`txn.line.product.description`|Description of the product added to the line. Refreshed if **Refresh Product Data** is enabled.|Auto-generated by the system. Modifiable by: System| ## Line behavior fields |Variable name|Description|Default value| |-------------|-----------|-------------| |`txn.line.isVisible`|Controls whether the line appears in the quote lines grid. Set to `false` to hide a line from the user without deleting it.|`true` Modifiable by: System| |`txn.line.isReorderable`|Indicates whether the line can be reordered within the quote lines grid.|`true` Modifiable by: System| |`txn.line.selected`|Used in rule conditions to perform actions on selected lines. Set to `true` when a line-level event runs on the line. Reset to `false` after all event actions complete.|`false` Modifiable by: System| ## Configuration fields Configuration fields are populated when a configurable product is added to the quote. Fields in the `txn.line.configuration.item.*` group relate to items in the bill of materials \(BOM\). These fields are empty if the line has no configuration. |Variable name|Description|Default value| |-------------|-----------|-------------| |`txn.line.isConfigured`|Boolean indicating whether the line is a configured product or the top-level line of a parent-child configuration. Set to `true` automatically when a configuration is added.|`false` Modifiable by: System| |`txn.line.configuration.id`|UUID of the configuration.|Empty if no configuration. Modifiable by: System| |`txn.line.configuration.solutionId`|UUID of the solution the configuration belongs to.|Empty if no configuration. Modifiable by: System| |`txn.line.configuration.status`|Configuration validation status. Supports the **Validate configured items** event setting.|Empty. Generated when lines are added. Modifiable by: System| |`txn.line.configuration.validatedAt`|Date of the last configuration validation. Supports the **Validate configured items** event setting.|Empty. Generated when lines are added. Modifiable by: System| |`txn.line.configuration.item.id`|Configuration item ID in the BOM once a configuration is added.|Empty if no configuration. Modifiable by: System| |`txn.line.configuration.item.price`|Price of a BOM item once a configuration is added.|0. Does not exist if there is no configuration. Modifiable by: System| |`txn.line.configuration.item.quantity`|Quantity of a BOM item once a configuration is added.|0. Does not exist if there is no configuration. Modifiable by: System| |`txn.line.configuration.item.type`|Type of a BOM item once a configuration is added.|Empty if no configuration. Modifiable by: System| |`txn.line.configuration.item.notes`|Notes for a BOM item once a configuration is added.|Empty if no configuration. Modifiable by: System| |`txn.line.configuration.item.description`|Description of the BOM item as defined when the configuration item was created.|Empty if no configuration. Modifiable by: System| |`txn.line.configuration.item.parentProduct`|Configuration item ID of the parent product for a BOM item in a parent-child configuration.|Empty if no configuration. Modifiable by: System| |`txn.line.configuration.item.uom`|Unit of measure for the BOM item, as defined when the item was created.|Empty if no configuration. Modifiable by: System| |`txn.line.configuration.item.bomType`|BOM type of the configuration item, as defined when the item was created.|Empty if no configuration. Modifiable by: System| |`txn.line.configuration.item.extPrice`|Extended price of the BOM item, as defined in the `extPrice` column of the configuration item.|0. Does not exist if there is no configuration. Modifiable by: System| |`txn.line.configuration.item.orderNumber`|Order number of the BOM item when it was added.|Empty if no configuration. Modifiable by: System| |`txn.line.configuration.item.rollUpPrice`|Rollup price of the BOM item, as defined in the `rollupPrice` column when the item was created.|0. Does not exist if there is no configuration. Modifiable by: System| |`txn.line.configuration.item.uniqueIdentifier`|Unique identifier for a BOM item, used to match configuration items on reconfiguration. Cannot be changed after creation.|Empty if no configuration. Modifiable by: System| |`txn.line.configuration.item.key`|Fallback key used to match BOM items on reconfiguration when the unique identifier cannot be used.|Empty. Generated when lines are added. Modifiable by: System| ## Fields installed with the quoting experience The following fields are installed when the CPQ quoting experience is enabled and are available to all tenants. |Variable name|Description|Default value| |-------------|-----------|-------------| |`txn.line.account`|Account associated with the line. Set from the transaction header.|Empty. Set from header. Modifiable by: System| |`txn.line.contact`|Contact name associated with the line.|Empty. Modifiable by: System| |`txn.line.displayNumber`|User-facing display number of the line.|Empty. Modifiable by: System| |`txn.line.sysId`|ServiceNow system ID of the line.|Empty. Modifiable by: System| |`txn.line.parentBomLineId`|ID of the line's parent BOM line.|Empty. Modifiable by: System| |`txn.line.product.uom`|Product unit of measurement of the line.|Empty. Modifiable by: System| |`txn.line.product.model`|Product model associated with the line.|Empty. Modifiable by: System| |`txn.line.product.specification`|Product specification associated with the line.|Empty. Modifiable by: System| |`txn.line.product.characteristics`|Product characteristics of the line.|Empty. Modifiable by: System| |`txn.line.serviceLocation`|Service location associated with the line.|Empty. Modifiable by: System| |`txn.line.startDate`|Start date of the line.|Empty. Modifiable by: System| |`txn.line.endDate`|End date of the line.|Empty. Modifiable by: System| |`txn.line.term`|Difference in months between the start date and end date for the recurring product on this line. Calculated automatically from the contract start date and contract end date.|Empty. Modifiable by: System| |`txn.line.lineType`|Describes the change being made to the transaction line. Values: New, Renew, Upsell, Amend, Cancel, No Change.|Empty. Modifiable by: System| |`txn.line.lineAction`|Indicates the action applied to the sold product. Values: Add, Change, Disconnect, No Change.|Empty. Modifiable by: System| |`txn.line.isAutoGeneratedForRenewal`|Indicates whether this line was automatically generated from a renewal workflow.|Empty. Modifiable by: System| |`txn.line.isAutoRenewContract`|Indicates whether the contract line is eligible for automatic renewal based on its expiration end date.|Empty. Modifiable by: System| |`txn.line.source.entitlement`|References the entitlement from which this line was renewed.|Empty. Modifiable by: System| |`txn.line.source.soldProduct`|Reference to the underlying sold product record from which this line was created.|Empty. Modifiable by: System| |`txn.line.source.splitFromSoldProduct`|When a line is split due to an amendment, this field contains a reference to the underlying sold product record from the original line. Used for delta pricing calculations.|Empty. Modifiable by: System| |`txn.line.source.contract`|References the existing contract from which this line was derived.|Empty. Modifiable by: System| |`txn.line.source.contract.line`|Reference to the contract line from which this line was renewed.|Empty. Modifiable by: System| |`txn.line.source.line`|Reference to the parent line item when a line was split due to an amendment. Used in the pricing payload as `split_from`.|Empty. Modifiable by: System| |`txn.line.source.rootLine`|Reference to the root \(original\) line in a split or amendment chain.|Empty. Modifiable by: System| ## Pricing fields The following fields are installed when the Pricing tenant setting is enabled. |Variable name|Description|Default value| |-------------|-----------|-------------| |`txn.line.pricebook`|Reference to the price list from which this line's list price is read.|Empty. Modifiable by: System| |`txn.line.pricing.extendedPrice`|Extended Price. Calculated as Unit Net Price × Quantity.|Empty. Modifiable by: System| |`txn.line.pricing.cost`|One-Time Cost. Cost for a product that is not recurring.|Empty. Modifiable by: System| |`txn.line.pricing.unitCost`|Unit Cost. List cost as read from the cost book.|0 Modifiable by: System| |`txn.line.pricing.margin.amount`|Unit Margin Amount. Calculated as Unit Net Price minus Unit Net Cost.|0 Modifiable by: System| |`txn.line.pricing.margin.percentage`|Unit Margin %. Calculated as Unit Margin Amount divided by Unit Net Price × 100.|Empty. Modifiable by: System| |`txn.line.pricing.rollupPrice`|Cumulative One-Time Price. An aggregate of the one-time price of itself and its child lines.|Empty. Modifiable by: System| |`txn.line.pricing.rollupCost`|Cumulative One-Time Cost. An aggregate of the one-time cost of itself and its child lines.|Empty. Modifiable by: System| |`txn.line.pricing.rollupNetCost`|Cumulative Net Cost. An aggregate of the one-time cost and monthly recurring cost over the term.|0 Modifiable by: System| |`txn.line.pricing.rollupNetPrice`|Cumulative Net Price. An aggregate of the unit net price of itself and its child lines.|0 Modifiable by: System| |`txn.line.pricing.rollupMargin.percentage`|Cumulative Margin %. An aggregate of the margin of itself and its child lines. Calculated as the rollup of Unit Margin Amount divided by Unit Net Price × 100.|Empty. Modifiable by: System| |`txn.line.pricing.netPriceRecurring`|Monthly Recurring Price. For a recurring product, the monthly unit price.|Empty. Modifiable by: System| |`txn.line.pricing.costRecurring`|Monthly Recurring Cost. The monthly cost of the product. Typically used in margin calculations.|Empty. Modifiable by: System| |`txn.line.pricing.annualPriceRecurring`|Annual Recurring Price. Calculated as Monthly Recurring Price × 12 months.|0 Modifiable by: System| |`txn.line.pricing.rollupExtendedPriceRecurring`|Cumulative Monthly Price. Calculated as Net Unit Price per month × Quantity.|Empty. Modifiable by: System| |`txn.line.pricing.rollupCostRecurring`|Cumulative Monthly Cost. An aggregate of the monthly recurring cost of itself and its child lines.|Empty. Modifiable by: System| |`txn.line.pricing.rollupAnnualPriceRecurring`|Cumulative Annual Price. An aggregate of the annual recurring price of itself and its child lines.|Empty. Modifiable by: System| |`txn.line.pricing.adjustment.manual`|Manual Adjustment. Stores the calculated adjustment amount derived from manual adjustments on the line.|0 Modifiable by: System| |`txn.line.pricing.adjustment.net`|Net Adjustment. Total adjustment amount for the line. Includes manual adjustments and any auto-applied adjustments per pricing rules.|0 Modifiable by: System| |`txn.line.pricing.adjustment.unit`|Unit Adjustment. Calculated as Total Adjustment divided by Quantity.|0 Modifiable by: System| |`txn.line.pricing.priceAdjustments`|JSON store for price adjustments, consumed by the adjustments UI.|Empty. Modifiable by: System| |`txn.line.pricing.isDerived`|Flag indicating whether this product's price is derived from other products on the transaction.|0 Modifiable by: System| |`txn.line.pricing.adjustment.renewalBasis`|Renewal Adjustment Basis. Specifies the starting renewal price to use. List Price or Net Price of last ramp segment. Overrides the header-level setting if specified.|`list_price` Modifiable by: System| |`txn.line.pricing.adjustment.renewalType`|Renewal Adjustment Type. Indicates whether the renewal adjustment value is a percentage or absolute amount.|Empty. Modifiable by: System| |`txn.line.pricing.adjustment.renewalValue`|Renewal Adjustment Value. The percentage or amount to adjust the renewal price by, according to the Renewal Adjustment Type.|Empty. Modifiable by: System| |`txn.line.source.rollupPrice`|Renewal Amount. Reference to the original cumulative net price prior to renewal.|0 Modifiable by: System| |`txn.line.pricing.delta.priceTreatment`|Delta Price Treatment. Determines the pricing treatment applied to the line based on line type, action, and whether product offer characteristics have changed.|`list_price` Modifiable by: System| |`txn.line.pricing.delta.netPrice`|Delta Unit Net Price. Calculated as Current Unit Net Price minus Original Unit Net Price.|Empty. Modifiable by: System| |`txn.line.pricing.delta.price`|Delta One-Time Price. Calculated as Current One-Time Price minus Original One-Time Price.|Empty. Modifiable by: System| |`txn.line.pricing.delta.rollupNetPrice`|Delta Cumulative Net Price. Calculated as Current Cumulative Net Price minus Original Cumulative Net Price.|Empty. Modifiable by: System| |`txn.line.pricing.delta.rollupPriceRecurring`|Delta Monthly Recurring Price. Calculated as Current Monthly Recurring Price minus Original Monthly Recurring Price.|Empty. Modifiable by: System| |`txn.line.delta.upsellDownsellAmount`|Upsell or Downsell Amount. Calculated as the Current Cumulative Net Price minus Original Cumulative Net Price.|Empty. Modifiable by: System| |`txn.line.pricing.state`|Pricing State. Indicates whether the line's pricing is current. Changing a pricing-affecting field marks the line as needing a reprice, and the state persists across rules-engine calls until a successful pricing call clears it. Drives the per-line stale-pricing indicator in the quote lines grid.|Empty. Modifiable by: System| |`txn.line.pricing.pricedAt`|Last Priced. Timestamp of the last successful pricing calculation for the line.|Empty. Modifiable by: System| |`txn.line.pricing.priceOverride`|Price Override. A user-supplied net price that replaces the calculated price for the line. Preserved as a rep-supplied override and not overwritten by the next pricing call.|Empty. Modifiable by: User| |`txn.line.pricing.adjustment.type`|Discount Adjustment Type. The type of manual adjustment applied to the line. Options: Markdown Amount, Markdown %, Price Override.|Empty. Modifiable by: User| |`txn.line.pricing.adjustment.value`|Discount Adjustment Value. The amount or percentage of the manual adjustment, interpreted according to the Discount Adjustment Type.|Empty. Modifiable by: User| |`txn.line.pricing.discountReason`|Discount Reason. The reason a manual discount or adjustment was applied to the line. Captured for auditing.|Empty. Modifiable by: User| ## Opportunity sync fields The following field is seeded when the Opportunity Sync tenant setting is enabled. |Variable name|Description|Default value| |-------------|-----------|-------------| |`txn.line.opportunity.lineItem`|Reference to the opportunity line item this line is synced to.|Empty. Modifiable by: System| **Parent Topic:**[Quote transaction fields](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/order-management/quote-tm-fields.md) **Related topics** [Quote transaction fields](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/order-management/quote-tm-fields.md) [Transaction-level system fields](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/order-management/quote-tm-header-level-system-fields.md) [Date and time field fields](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/order-management/quote-tm-date-time-field-behavior.md)