Purchase line
Job-linked purchase order and invoice lines.
Part of Financials in the register catalog.
- Register ID
purchase_lineUse this name to ask for the register. The API calls it a shelf ID.- Each record is
- An eventSomething that happened at a point in time.
- Status
- AvailableFilled today from connected systems, uploads or public data.
- Data
- OrganisationPrivate to each organisation's own workspace.
- Version
- v1Current version.
Connectors
On the roadmap
Systems in the planned connector rollout that can fill this register. Partial means the system holds only some of its fields.
- MYOB Acumatica
- Xero AccountingPartial
Fields
23 fields: 11 required, 6 optional, 6 defined by each organisation.
Required
Every record carries these fields.
- projectText
The job the line commits cost against. Raw
jobNumber; the bound filter already excludes rows without one (jobNumber ne '',baseline_squash_02_seed.sql:1198).Example:
BWG-2025-001- financial_periodText
The period the commitment is attributed to. Derived from
orderDateby the period resolver, not a raw field.Example:
2026-07- currencyText
Denomination of
amountandunit_cost. RawcurrencyCode, falling back to company base currency when the field is empty.Example:
AUD- amountDecimal number
Line value. Raw
lineAmount. ADDITIVE.Example:
48600- quantityNumber
Line quantity. Raw
quantity. ADDITIVE,missing=ZERO.Example:
540- unit_costDecimal number
Rate per unit. Raw
directUnitCost. INSTANTANEOUS.Example:
90- document_numberText
Purchase document identity. Raw
documentNumber. Half of the composite external id; without it no line can be deduplicated or superseded.Example:
PO-100221- line_numberWhole number
Line identity within the document. Raw
lineNumber. Second half of the composite id.Example:
1- document_typeText
Which purchase-document kind the line belongs to (order / invoice / credit memo). Raw
documentType. Mandatory because the bound endpoint is not type-filtered while the sibling commitments query is, so without this field an invoice line is indistinguishable from a PO line.Example:
order- order_dateDate
When the line was ordered. Raw
orderDate; already the producer'soccurred_at_field, so no new source is needed — this row records it in the payload too.Example:
2026-07-08- unit_of_measureText
The unit
quantityis counted in. RawunitOfMeasureCode.quantityis declareddimensionless, so the unit has to be carried as an attribute or the quantity is uninterpretable. Which ofunitOfMeasureCode/unitOfMeasureis canonical is unverified; both are in the corpus.Example:
TONNE
Optional
Present when the source system records them.
- vendorText
The supplier the line is placed with. Raw
buyFromVendorNumber. Optional because the declaration says so and the axis name is not portable.Example:
Statewide Concrete Supplies- cost_codeText
The job task / cost code the line is coded to. Raw
jobTaskNumber.Example:
T20- legal_entityText
The company/legal entity that placed the order; supplied by company context rather than a per-row field.
Example:
Bridgeworks Group Pty Ltd- descriptionText
Line description. Raw
description. Optional: no lens mandates it, but names it as what makes this shelf richer thancost_element.Example:
20mm road base aggregate- item_referenceText
The vendor's or tenant's item identifier. Raw
itemReferenceNumber/vendorItemNumber.Example:
AGG-20MM- receipt_expected_onDate
Expected / promised / requested receipt date. Raw
expectedReceiptDate,promisedReceiptDate,requestedReceiptDate. Optional: no lens requires a commitment to carry a delivery date, and the three raw fields disagree in meaning.Example:
2026-07-15
Defined by each organisation
Their contents come from the organisation's own forms or systems, so they differ between organisations.
- received_completeTrue or false
Whether the line is fully received. Raw
completelyReceived/finished. Tenant-specific because "received" is a workflow state of the tenant's procurement process, not a fact about the commitment.Example:
true- amount_including_taxDecimal number
Line value incl. tax. Raw
amountIncludingVat. Tenant-specific: the R3 file is explicit that verified tax content rules attach to the invoice, not the order line (payroll-and-invoicing.md:563-568), and the tax rate/jurisdiction/rounding basis needed to reconcile it is not on this record (:545-552).- tax_group_codeText
Tenant tax group coding. Raw
taxGroupCode. Same reason asamount_including_tax: tenant configuration vocabulary, no jurisdictional mandate on the order line.- tax_area_codeText
Tenant tax area coding. Raw
taxAreaCode. Same reason.- cost_dimension_1Text
Tenant dimension code 1. Raw
shortcutDimension1Code. Tenant-specific: BC dimension semantics are configured per tenant, and the shelf's portable cost axis iscost_code.- cost_dimension_2Text
Tenant dimension code 2. Raw
shortcutDimension2Code. Same reason.
Example record
A sample from Bridgeworks Group, Demiton's demonstration company. The values are illustrative; the shape is exactly what the contract describes.
{ "amount": 48600, "cost_code": "T20", "currency": "AUD", "description": "20mm road base aggregate", "document_number": "PO-100221", "document_type": "order", "financial_period": "2026-07", "item_reference": "AGG-20MM", "legal_entity": "Bridgeworks Group Pty Ltd", "line_number": 1, "order_date": "2026-07-08", "project": "BWG-2025-001", "quantity": 540, "receipt_expected_on": "2026-07-15", "received_complete": true, "unit_cost": 90, "unit_of_measure": "TONNE", "vendor": "Statewide Concrete Supplies"}Use this contract
The contract is a standard JSON Schema (draft 2020-12) document, so any JSON Schema validator can check a record against it. Keywords starting with x-demiton- add Demiton's own meaning, such as units and requiredness, and validators ignore them.
https://docs.demiton.io/registers/purchase_line/v1.jsonShow the full JSON Schema
Loading the schema…
Talk to the team
Tell us what you run - your ERP, field, payroll and document systems - and we will show you the registers Demiton would keep current from them, on your data, in a 30-minute call.