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/Asset — entity reference
REFERENCE · Last reviewed

Asset — entity reference

A tracked physical unit in the install base — the record the service module hangs warranty, maintenance, servicing history and depreciation off. Assets are normally created automatically rather than by hand: AssetService.CreateAssetsAsync runs off a sales Invoice and creates one Asset per InvoiceLine whose Item has TrackAsset set, which requires an ItemLot on the line (it raises 'Item lot is required to create tracked assets' otherwise) and names the asset from the lot's serial number. Lines that belong to a package line become child assets under the package's asset. Service execution writes back here — completing a ServiceOrder updates LastServiceDate, LastServiceBranchId and the last usage readings. The main children are AssetServiceContract (per-asset entitlements), AssetMaintenance (planned and executed jobs), AssetDisposal (retirement) and DepreciationPolicy.

Fields

FieldLabelTypeRequiredWhat it does
AccountIdAccountLookup → AccountThe customer account that owns the asset. Keep it apart from the other three account lookups on this entity: AssetProvidedAccountId is who supplied it, AssetServicedByAccountId is who is contracted to service it, and SellingPartnerAccountId is the partner who sold it.
AssetCategoryAsset CategoryPickListValues: IT, Furniture, Office Equipment, Machinary.
AssetCodeAsset CodeTextThe business code identifying the unit. When an asset is created automatically from an invoice, AssetService fills it from the item lot's serial number, falling back to the lot's supplier invoice number — so it is often but not always the serial number, and SerialNumber remains the reliable field for that.
AssetConditionAsset ConditionText
AssetIdRoot AssetLookup → AssetA self-referencing lookup to the top of the asset hierarchy, labelled 'Root Asset'. Despite the name this is not the record's own identifier — that is Id — and confusing the two is an easy mistake on this entity. Use it together with ParentAssetId, which points only one level up, and AssetLevel, which records the depth.
AssetLevelAsset LevelNumberThe depth of this asset within its parent/child hierarchy, used with ParentAssetId and AssetId to distinguish a top-level unit from its sub-components.
AssetProvidedAccountIdAssetProvedByLookup → AccountThe account that provided or supplied the asset, which need not be the owner in AccountId nor the seller in SellingPartnerAccountId. Its label is the abbreviated 'AssetProvedBy'.
AssetServicedByAccountIdAsset Serviced ByLookup → AccountThe account contracted to service the asset on an ongoing basis. This is the standing servicing relationship and is distinct from LastServicePartnerAccountId, which is meant to record whoever actually performed the most recent job.
AssetSubCategoryAsset Sub CategoryPickListValues: LED TV, Tablet, Biometric Machine, Mobile Phone, CCTV Camera, Air Conditioner, Conference Table, Laptop, Desktop, Server, Printer, Scanner, Router, CNC Machines.
AverageUsageAverage UsageDecimal
AverageUsageHoursAverage Usage (Hours)Decimal
BatchNoBatch NoText, unique
BranchIdLast Service BranchLookup → BranchThe branch that owns or holds the asset. Warning: this field's label reads 'Last Service Branch', but it is not the branch of the most recent service — that is the separate LastServiceBranchId field, whose label confusingly reads 'Branch'. The two labels are transposed relative to the underlying model, and the service-order write-back in AssetService updates LastServiceBranchId, never this field. Select by field name, not by label.
CompetitorAssetIs Competitor ProductBoolean
ComponentNumberComponent NumberText
ConsequenceOfFailureConsequence Of FailurePickListA criticality rating used to prioritise maintenance, seeded with Insignificant, Minor, Moderate, Major and Critical. It describes the impact if the asset fails, not its current condition — that is AssetCondition. Values: Insignificant, Minor, Moderate, Major, Critical.
ContactIdContactLookup → Contact
CreatedByIdCreated ByLookup → UserAccountYes
CreatedDateTimeCreated DateDateAndTimeYes
CurrentAmountCurrent AmountCurrency
CurrentLifecycleEndDateCurrent Lifecycle End DateDate
CurrentMrrCurrent Monthly Recurring RevenueCurrency
CurrentQuantityCurrent QuantityNumber
CurrentUsageReadingCurrent Usage ReadingDecimalThe asset's usage reading as currently known, distinct from LastUsageReading which is specifically the value captured at the last service. Contract-lapse checks in AssetServiceContractService are evaluated against the reading supplied on the service order or opportunity, not against this field.
CurrentUsageReadingHoursCurrent Usage Reading (Hours)Decimal
DepreciationMethodDepreciation MethodPickListThe depreciation basis for this asset. The seeded picklist values are the display strings 'Straight Line' and 'WDV' (written-down value). Note the fixed-assets manuals and the finance engine's own constants use the different tokens StraightLine and WrittenDownValue, so a filter written from the manual will not match the values stored here. Values: Straight Line, WDV.
DepreciationPolicyIdDepreciation PolicyLookup → DepreciationPolicyThe category-level DepreciationPolicy template this asset follows.
DescriptionDescriptionLongMultiLineText
DigitalAssetStatusDigital Asset StatusPickListThe health signal reported by a connected or telemetry-enabled asset, seeded with On, Warning and Error. It reflects device telemetry and is independent of the commercial lifecycle held in Status. Values: On, Warning, Error.
DisposalDateDisposal DateDate
DisposalValueDisposal ValueCurrency
GoodsReceiptIdGoods ReceiptLookup → GoodsReceipt
IdIdGuidYes
InstallationAddressContactAddressIdInstallation AddressLookup → ContactAddress
InstallDateInstall DateDate
InternalAssetIs InternalBooleanMarks a unit the company owns and uses itself rather than one sold to a customer. This is the distinction that separates own-use fixed assets from customer install-base records held in the same table.
InUseIn UseBoolean
InvoiceIdInvoiceLookup → InvoiceThe sales invoice the asset was created from, set by AssetService on the automatic creation path. It is the audit trail back to the sale, and it is also how the originating invoice line gets its AssetId stamped in return.
InvoiceNumberInvoice NumberText
IsPDIDoneIs PDI DoneBooleanMarks that pre-delivery inspection has been completed. It is set to false when the asset is auto-created from an invoice, and flipped to true in bulk by AssetService.MarkPdiDoneAsync, which is driven from the service orders that carry out the inspection.
ItemIdItemLookup → Item
ItemLotIdItem LotLookup → ItemLotThe inventory lot or serialised unit this asset was created from. It is mandatory on the automatic creation path: AssetService rejects asset creation for a tracked item whose invoice line has no item lot, and the lot supplies the asset's name, label and code.
LabelLabelText
LastServiceBranchIdBranchLookup → BranchThe branch that performed the most recent service on the asset; AssetService.UpdateAssetFromServiceOrderAsync writes the service order's BranchId here on completion, and asset creation from an invoice seeds it with the invoice's branch. Its label reads 'Branch' while the unrelated BranchId field is labelled 'Last Service Branch' — the two labels are transposed, so match on field name.
LastServiceDateLast Service DateDateThe document date of the most recent completed service order for this asset, written back by AssetService when a service order is saved. On assets created from an invoice it is initially seeded with the invoice's document date rather than an actual service.
LastServicePartnerAccountIdLast Service PartnerLookup → AccountIntended to hold the partner account that last serviced the asset. Treat it as unreliable: the service-order write-back in AssetService writes to the name 'LastServicePartnerId', which is not a property of Asset, so the value lands in a custom field of that name rather than in this column. Only the asset-creation path from an invoice populates this field. If you need the last servicing partner, prefer the most recent related ServiceOrder over reading this.
LastUsageReadingLast Usage ReadingDecimalThe odometer-style usage counter captured at the last service, in the asset's distance or count unit. AssetService validates that a new service order's reading is not lower than this value and rejects the save with 'Usage Reading for the Asset seems incorrect' if it is. When a service order sets ResetUsageReading this field is zeroed and the pre-reset value is kept in UsageReadingResetAt, so it is a since-last-reset counter, not a lifetime total.
LastUsageReadingHoursLast Usage Reading (Hours)DecimalThe hour-meter equivalent of LastUsageReading, captured at the last service. It is validated against decreases the same way, and is zeroed with the prior value moved to UsageHoursResetAt when a service order sets ResetUsageHours.
LifecycleEndDateLifecycle End DateDateAndTime
LifecycleManagedAssetHas Lifecycle ManagementBooleanMarks an asset that is managed on a defined replacement lifecycle, which is what makes the LifecycleStartDate, LifecycleEndDate, CurrentLifecycleEndDate and TotalLifecycleAmount fields meaningful. Those lifecycle fields should be ignored when this flag is false.
LifecycleStartDateLifecycle Start DateDate
LotNumberLot NumberText
ManufactureDateManufacture DateDate
ModifiedByIdModified ByLookup → UserAccountYes
NameNameText
NetBookValueNet Book ValueCalculatedThe asset's carrying value. Unlike PurchaseCost and SalvageValue, which are stored currency amounts, this is declared as a calculated field — but the first-party seed ships no formula for it, so it holds nothing unless a tenant supplies one or a process writes it. AssetDisposalService does set it to zero when a disposal is posted. Do not rely on it as an authoritative book value.
OwnerIdOwnerLookup → UserAccountYes
ParentAssetIdParent AssetLookup → AssetThe immediate parent in the asset hierarchy, one level up, as distinct from AssetId which points at the root of the whole tree. AssetService sets it when an invoice line belongs to a package line, so the components of a sold package become children of the package's asset.
PhonePhoneText
PricePriceCurrency
ProductCodeProduct CodeText
ProductDescriptionProduct DescriptionText
ProductFamilyProduct FamilyPickList
ProductSKUStock Keeping UnitTextA free-text stock-keeping-unit code carried on the asset. It is not a reference to the SKU entity — that is the separate SKUId lookup — so joining on this text will not resolve a SKU record.
PurchaseCostPurchase CostCurrency
PurchaseDatePurchase DateDateAndTime
PutToUseDatePut To Use DateDateThe date the asset was placed into service, which is the date depreciation is meant to run from. It is deliberately separate from PurchaseDate (when it was bought) and InstallDate (when it was physically installed), and the three can legitimately differ.
QuantityQuantityNumber
RecordTypeIdRecord TypeGuid, hidden
RegistrationDateRegistration DateDateAndTime
RegistrationNumberRegistration NumberText
SaleDateSale DateDate
SaleInvoiceNumberSaleInvoiceNumberLongMultiLineText
SalvageValueSalvage ValueCurrencyThe residual value the asset is expected to retain at the end of its useful life — the floor that depreciation writes down to, not a disposal proceeds figure. Actual proceeds are recorded in DisposalValue and on the AssetDisposal record.
SellingBranchIdSelling BranchLookup → Branch
SellingPartnerAccountIdSelling Partner AccountLookup → Account
SerialNumberSerial NumberText
SKUIdSKULookup → SKUThe lookup to the SKU record for this asset, populated from the originating invoice line when the asset is auto-created. Use this rather than the free-text ProductSKU field when you need the actual SKU.
StatusStatusPickListThe asset's lifecycle state. The seeded picklist offers Draft, Purchased, Installed and Obsolete. Be aware that AssetDisposalService writes the literal 'Disposed' here when a disposal is posted to the ledger, and that value is not in the picklist — so filtering on the picklist alone will miss retired assets. Values: Installed, Obsolete, Purchased, Draft.
StatusReasonStatus ReasonPickListA qualifier on the current Status, seeded with Paused, Not Ready and Off. It explains why an asset is not in service rather than restating the status itself. Values: Paused, Off.
StorageLocationIdStorage LocationLookup → StorageLocation
SupplierInvoiceDateSupplier Invoice DateDate
SupplierInvoiceNumberSupplierInvoiceNumberLongMultiLineText
TestFieldTestFieldLongMultiLineText
TotalLifecycleAmountTotal Lifecycle AmountCurrency
UIPropsUI PropsText
UniqueIdentifierUuTextA tenant-defined unique identifier for the unit, separate from SerialNumber and RegistrationNumber. Its label is the truncated placeholder 'Uu', which carries no meaning — go by the field name.
UpdatedDateTimeModified DateDateAndTime
UsageEndDateUsage End DateDate
UsageHoursResetAtUsage Hours Reset AtDecimalThe hour-meter value at the moment the hours counter was last reset, written when a service order sets ResetUsageHours and LastUsageReadingHours is zeroed. The hours counterpart of UsageReadingResetAt.
UsageReadingResetAtUsage Reading Reset AtDecimalThe usage reading at the moment the counter was last reset — written by AssetService when a service order sets ResetUsageReading, at which point LastUsageReading goes to zero. Add this to LastUsageReading to reason about cumulative usage across a reset.
UsefulLifeUseful LifeNumberThe expected life of the asset in years, used for depreciation. The platform ships indicative Companies Act Schedule II lives per asset class as reference data, but this field is the tenant's own override for the individual asset.

Actions

ActionLabelTypeWhat it does
CloneCloneServerAction (Clone)Create a copy of this record
DeleteDeleteDeleteDelete
Delete2DeleteDeleteDelete
DeleteListHeaderDeleteDeleteDeleteListHeader
EditEditEditEdit
EditInLineEditInLineEditInlineEditInLine
EditRowEditEditEditRow
NewNewNewNew

Validations

ValidationApplies toError messageNotes
XM_DateOfSaleRuleValidationSaleDate, ErrorDate Of Sale cannot be before Manufacturing DateDate Of Sale cannot be before Manufacturing Date
XM_LastServiceDateRuleValidationLastServiceDate, Error, inactiveLast Date cannot exceed Current DateLast Date cannot exceed Current Date
XM_LastUsageReadingValidationLastUsageReading, ErrorUsage Reading Cannot be NegativeUsage Reading Cannot be Negative