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

Delivery Order — entity reference

The outbound dispatch document for a customer or dealer account: what is leaving a branch, to which ship-to address, under which transporter and e-way-bill references. It is normally generated rather than keyed - from a sales Order, from an InventoryFulfilment's allocation or picking lines (one delivery per fulfilment), from an Invoice, or from claim approval and rejection (ApprovedPart and RejectedPart discriminate the two documents a single Claim produces). Every header total is a calculated roll-up over DeliveryOrderLines, and no stock moves when the document or its lines are created: the Outward movement is written only when the PerformInventoryPosting action runs. Downstream it raises the Invoice (PerformCreateInvoice), the counterparty's inbound Shipment (PerformReleaseShipment) and the GL accrual (PerformGLPosting), and visit planning turns unplanned deliveries into 'Order Delivery' visits.

Fields

FieldLabelTypeRequiredWhat it does
AccountIdAccountLookup → AccountThe ship-to customer or dealer account receiving the goods. It is source-populated from the originating order, fulfilment, invoice or claim and cannot be edited afterwards, and releasing a shipment requires a Branch whose PartnerAccountId equals this account.
AccountNameAccount NameText
ApprovedPartApproved PartBooleanTrue on the delivery order built from the approved lines of a Claim, whose line quantities come from ClaimLine.ApproveQuantity. It is the discriminator that keeps the approved and rejected documents for the same claim apart.
ApproximateDistanceApproximate DistanceDecimal
BillingAddressBilling AddressText
BillingCityBilling CityPickListValues: Pune, Mumbai, Chandigarh.
BillingCityPlaceIdBilling CityLookup → PlaceValues: Pune, Chandigarh, Mumbai.
BillingContactAddressIdBilling AddressLookup → ContactAddress
BillingCountryBilling CountryPickListValues: India.
BillingPostalCodeBilling Postal CodeText
BillingRegionBilling RegionText
BillingStateBilling StatePickListValues: Haryana, Maharashtra, New Delhi, Punjab.
BillingStreetBilling StreetText
BillReturnIdBill ReturnLookup → BillReturn
BranchIdBranchLookup → BranchThe dispatching branch, validated to belong to PartnerAccountId and locked after creation. It is also the branch whose InventoryStock buckets the Outward posting relieves and the branch the cost journal is booked at.
ClaimIdClaimLookup → ClaimPresent only on the deliveries generated from a Claim's lines. A claim produces at most two such documents - one with ApprovedPart true and one with RejectedPart true - and the service reuses the existing one for the claim rather than creating a second.
CreatedByIdCreated ByLookup → UserAccountYes
CreatedDateTimeCreated DateDateAndTimeYes
DeliveredDateTimeDelivered Date TimeDateAndTimeActual proof of delivery in the running system comes from the generated Visit and its checklist lines rather than from this timestamp.
DeliveryCityDelivery CityPickList
DeliveryContactAddressIdDelivery AddressLookup → ContactAddress
DeliveryCountryDelivery CountryPickListValues: India.
DeliveryDateDelivery DateDate
DeliveryDoneByResourceIdDelivery ByLookup → ResourceThe resource (driver or field person) credited with performing the delivery. It is validated against the resource master on both insert and update, but nothing else in the platform reads it - it does not drive visit assignment.
DeliveryLocationDelivery LocationTextA free-text description of where to deliver, not coordinates. Route and distance calculations deliberately ignore it and take the planned position from the ship-to account's stored geolocation instead.
DeliveryPostalCodeDelivery Postal CodeText
DeliveryRegionDelivery RegionText
DeliveryStateDelivery StatePickListThe state or province of the ship-to address, held as free text. No code writes it; it is read once, when visit planning copies it onto the generated Visit as VisitState.
DeliveryStreetDelivery StreetText
DiscountDiscountCurrencyA header discount that cascades: modifying it re-runs discount distribution across all delivery order lines.
DiscountGroupIdDiscount GroupLookup → DiscountGroup
DocumentDateDocument DateDateDefaulted to the current date when the delivery is created and non-editable thereafter. It is the date the GL journal from PerformGLPosting carries, so it is the accounting date of the dispatch rather than a planning date.
EWayBillDateE-Way Bill DateDateAndTime
EWayBillNumberE-Way Bill NumberTextThe e-way bill reference for this consignment.
ExternalIdExternalText
FailedItemTreatmentFailed Item TreatmentPickList
GeneralLedgerIdGeneral LedgerLookup → GeneralLedger
GLAccountIdGL AccountLookup → GLAccount
GSTINGSTINTextThe customer's GST registration number for this dispatch, auto-filled from the billing contact address and, failing that, from the customer account, and format-validated on both insert and update.
IdIdGuidYes
InventoryFulfilmentIdInventory FulfillmentLookup → InventoryFulfilment
InvoiceIdInvoiceLookup → InvoiceSet when the delivery was generated from an Invoice rather than an Order, in the invoice-first flow. Its lines then carry InvoiceLineId, which selects the ledger rule that decrements the PendingDeliveries bucket using InvoicedQuantity instead of posting a plain Outward movement.
IsCancelledCancelledBoolean
IsConfirmedConfirmedBoolean
IsDeliveredDeliveredBooleanIts only consumer is visit planning, which selects delivery orders where it is not true, so in practice every delivery stays eligible for visit generation indefinitely.
IsGLPostedIs GL PostedBooleanIntended to record that the delivery's journals were posted, but nothing in the platform writes it - PerformGLPosting sets only IsGLPostingApproved. Look for Journal rows sourced from the document instead.
IsGLPostingApprovedIs GL Posting ApprovedBooleanStamped true by PerformGLPosting immediately before the document's journals are posted through the document journal posting service.
IsILPostedIL PostedBooleanA header-level inventory-posted flag that no code writes. Inventory posted state is tracked per line by DeliveryOrderLine.InventoryLedgerId, which is also what the posting action filters on.
IsILPostingApprovedIL Posting ApprovedCalculated (calculated)An approval gate for inventory posting that is never enforced: the handler collects the approved records on update but discards the result without acting on it, and PerformInventoryPosting does not consult it. Setting it true does not authorise anything on its own.
IsInJobQueueIn Job QueueBoolean
IsShipmentReleasedShipment ReleasedBooleanTo tell whether a delivery has been shipped, look for Shipment rows built from it rather than at this flag.
JobInterfaceQueueIdJob QueueLookup → InterfaceQueue
JobQueueIdJob QueueLookup
LRDateLR DateDateAndTime
LRNumberLR NumberTextThe carrier's lorry receipt or consignment note number.
ModifiedByIdModified ByLookup → UserAccountYes
NameDocument NumberText
OrderIdOrderLookup → OrderThe sales Order being delivered. It is locked after creation, and partner account, branch and account are source-populated from it and equally non-editable.
OwnerIdOwnerLookup → UserAccountYes
PartnerAccountIdPartner AccountLookup → AccountThe selling company that owns the document; it is validated against BranchId on insert, locked after creation, and becomes the SupplierAccountId of any Shipment released from this delivery.
PerformPopulateChecklistPerform Populate ChecklistBooleanNo code writes or reads the column.
PerformReleaseShipmentPerform Release ShipmentBoolean
PlaceOfSupplyPlace of SupplyPickListThe destination state for GST purposes. It is auto-filled from the billing contact address and, failing that, from the customer account, and comparing it with SourceOfSupply is what decides between a within-state and an outside-state supply. Values: Haryana, Maharashtra, Gujarat, Rajasthan.
PorterContactNumberPorter Contact NumberText
PriceAsOnDatePrice As On DateDate
PriceListIdPrice ListLookup → PriceList
RecordTypeIdRecord TypeGuid, hidden
RejectedPartRejected PartBooleanTrue on the delivery order built from the rejected lines of a Claim, whose line quantities come from ClaimLine.RejectQuantity. It is the mirror of ApprovedPart and only one of the two is ever set on a given document.
RemarksRemarksText
RequestedDeliveryBranchTimeSlotBookingIdRequested Delivery Time Slot BookingLookup → BranchTimeSlotBooking
RequestedDeliveryBranchTimeSlotIdRequested Delivery Time SlotLookup → BranchTimeSlot
RequestedDeliveryDateRequested Delivery DateDate
RequestedDeliveryDateTimeRequested Delivery Date TimeDateAndTime
RequestedDeliveryTimeRequested Delivery TimeTimeOnly
RoundOffRound OffCurrencyTotalAmount is computed purely from the line roll-ups.
ScheduledDeliveryDateScheduled Delivery DateDate
ScheduledDeliveryDateTimeScheduled Delivery Date TimeDateAndTimeThe planned delivery slot that visit planning matches against a VisitPlan's start and end dates; it also becomes the generated Visit's planned start time, with the planned end one hour later. No code writes it, so it must be set by the user or an integration for planning to slot the delivery precisely - deliveries with it empty are picked up by any plan window for the same branch and partner.
ServiceOrderIdService OrderLookup → ServiceOrderAlternative source document: a delivery raised for a ServiceOrder instead of a sales Order.
ShippingAddressShipping AddressText
ShippingCityShipping CityPickListValues: Pune, Mumbai, Chandigarh.
ShippingCityPlaceIdShipping CityLookup → PlaceValues: Pune, Chandigarh, Mumbai.
ShippingContactAddressIdShipping AddressLookup → ContactAddress
ShippingCountryShipping CountryPickListValues: India.
ShippingPostalCodeShipping Postal CodeText
ShippingRegionShipping RegionText
ShippingStateShipping StatePickListValues: Haryana, Maharashtra, New Delhi, Punjab.
ShippingStreetShipping StreetText
SourceOfSupplySource of SupplyPickListThe origin state for GST purposes, auto-filled from the dispatching branch. It is only ever compared with PlaceOfSupply to derive TaxSupplyType. Values: Rajasthan, Haryana, Maharashtra, Gujarat.
StatusStatusPickListAll four seeded values (Draft, Registration, Delivery Checklist, Delivered) are inactive and no code writes this column, so it stays at its 'Draft' default default forever. Do not filter or report deliveries by Status; use the line-level InventoryLedgerId and the quantity roll-ups instead. Values: Insurance Issued.
Tax1Tax1Currency
Tax1NameTax Name 1Text
Tax1RateTax Rate 1Currency
Tax1TypeTax Type 1Text
TaxSupplyTypeTax Supply TypePickListThe GST supply classification, derived automatically by the India handler from the billing address or customer GST registration type: 'Exempt' for out-of-scope and non-GST supply, 'Export' for overseas and deemed exports, 'SEZ' for special economic zone, otherwise 'Outside State' when PlaceOfSupply differs from SourceOfSupply and 'Within State' when they match. Only the last two exist as seeded pick-list values, so the engine can legitimately store Export, SEZ or Exempt values that a picker will not offer. Values: Within State, Outside State.
TotalAmountTotal AmountCalculated (calculated)Calculated as TotalLineAmount plus line tax, falling back to TotalTaxAmount2 when TotalLineTaxAmount is zero. It ignores the header Discount and RoundOff fields, so it is not necessarily the amount invoiced.
TotalDiscountAmountTotal Discount AmountCalculated (calculated)
TotalLineAmountTotal Line AmountCalculated (calculated)
TotalLineBaseAmountTotal Line Base AmountCalculated (calculated)
TotalLineGrossAmountTotal Line Gross AmountCalculated (calculated)The sum of the lines' GrossAmount (line amount plus tax, less post-tax discounts). This is the figure PerformGLPosting books, as Dr Unbilled Dispatch / Cr Inventory Asset.
TotalLineTaxAmountTotal Line Tax AmountCalculated (calculated)
TotalTaxAmountTotal Tax Posting AmountCalculated (calculated)Calculated as the line tax total plus the header Tax1, and labelled Total Tax Posting Amount. It pairs with TotalTaxAmount2, which is the same line total minus Tax1 - the two are a plus and minus pair, not two independent tax totals.
TotalTaxAmount2Total Tax AmountCalculated (calculated)
TransportDocumentDateTransport Document DateDateAndTime
TransportDocumentNumberTransport Document No.Text
TransporterGSTINTransporter GSTINTextThe carrier's own GST registration number, captured for the e-way bill. It is format-validated by the India handler on insert and update, so an incorrectly shaped value is rejected at save time.
TransporterNameTransporter NameText
TransportModeTransport ModeTextHow the consignment travels, for the e-way bill; the domain model documents the intended values as Air, Road, Railway and Ship, but no pick-list values are seeded for it and no code validates or reads it.
UIPropsUI PropsText
UpdatedDateTimeModified DateDateAndTimeYes
VehicleNumberVehicle NumberTextThe vehicle registration carrying the consignment, format-validated by the India handler on insert and update. It is captured for the e-way bill and is not linked to any Asset or fleet record.
VisitIdVisitLookup → VisitMeant to mark a delivery that has already been turned into a field visit, and visit planning skips deliveries where it is set.

Actions

ActionLabelTypeWhat it does
BulkDeleteDeleteDeleteDelete the selected records.
CloneCloneServerAction (Clone)Create a copy of this record
DeleteDeleteDeleteDelete
DeleteInListDeleteDeleteDelete in a list page
EditEditEditEdit
EditInLineEditEditInlineEdit in page.
EditInListEditEditEdit
EditListHeaderEditEditInlineEditListHeader
EWayBillE Way BillServerActionSeeded as a server action but dead: the row carries no ServerActionName, so dispatch falls back to the action name 'EWayBill', which the delivery order handler does not list among its supported actions. The e-way-bill fields on the document (EWayBillNumber, EWayBillDate and the transport details) are manual capture only.
NewNewNewNew
PerformCreateInvoiceCreate InvoiceServerAction (PerformCreateInvoice)Creates an Invoice from the delivery order's lines that still have PendingInvoiceQuantity above zero, and refuses with 'No pending invoice quantities found in delivery order lines to create invoice' when none do. A second, stricter gate lives inside the invoice service, which re-queries the underlying order lines and can still refuse when the order side is fully invoiced even though a delivery line looks pending.
PerformGLPostingPost General LedgerServerAction (PerformGLPosting)Force-sets IsGLPostingApproved to true on the document and then posts it through the document journal posting service with the DeliveryOrder purpose: Dr Unbilled Dispatch / Cr Inventory Asset for TotalLineGrossAmount, dated DocumentDate and keyed on AccountId. It has no validation gate of its own, and it does not set IsGLPosted or GeneralLedgerId - neither field is written anywhere in the platform.
PerformInventoryPostingPost InventoryServerAction (PerformInventoryPosting)The action that actually moves stock for a delivery: it collects the lines whose InventoryLedgerId is still empty and runs the inventory posting engine over them. Four mutually exclusive seeded rules pick the movement by provenance - picking-sourced lines post Outward and decrement Picked, allocation-only lines post Outward and decrement Allocation, plain lines post Outward only, and invoice-sourced lines decrement PendingDeliveries using InvoicedQuantity. Each posted row also updates the branch's InventoryStock buckets and the ItemLot counters, and hands the row to the finance cost engine, which rebuilds the perpetual cost layers for that item and branch and books an Outward movement as Dr Cost Of Goods Sold / Cr Inventory at the engine cost. Nothing posts when the lines are first created: all four ledger settings have OnCreate false.
PerformPopulateChecklistPopulate ChecklistServerAction (PerformPopulateChecklist)Materialises checklist lines for the delivery from the CheckListTemplate whose Type is 'Delivery' (the mapping the checklist service holds for the DeliveryOrder entity), stamping each created line with RelatedEntityType DeliveryOrder and the delivery's id.
PerformReleaseShipmentRelease ShipmentServerAction (PerformReleaseShipment)Creates the counterparty's inbound Shipment from this delivery's lines with quantity above zero, swapping the party roles: the delivery's PartnerAccountId becomes the shipment's SupplierAccountId, the delivery's AccountId becomes the shipment's PartnerAccountId, and the shipment's branch is the Branch whose PartnerAccountId equals that account - so it fails with 'No branch found for account ... to create shipment' when the customer is not a partner account with a branch in the same system. Each shipment line copies the item, SKU, quantity and PurchaseOrderLineId, but not DeliveryOrderLineId, so the delivery line's ShippedQuantity roll-up has nothing to sum. It does not set IsShipmentReleased, which no code path ever writes.
PrintDOPrint DOPrintA Print-type action rather than a server action, so it renders the delivery note through the platform's print pipeline and changes no data.
SelectiveReleaseShipmentSelective Release ShipmentServerAction (SelectiveReleaseShipment)Creates a Shipment for chosen lines and quantities instead of the whole delivery order. Args carry DeliveryOrderLines with id and requestedQuantity; each requested quantity is validated against the line quantity, and the action refuses when no selected line has quantity above zero.

Lookup filters

FilterLookup fieldNotes
Branch For Partner AccountBranchIdPartnerAccountId = __target.PartnerAccountId
Customer Account FilterAccountId
Executive FilterDeliveryDoneByResourceId
Partner Account FilterPartnerAccountId