Purchase line (v1)
Purchase line is one of Demiton's published registers for Australian civil construction. Job-linked purchase order and invoice lines. Demiton keeps it current from the systems a contractor already runs and publishes the record's shape as a versioned JSON Schema, so the same question works whichever system produced the record.
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
- v1 (1.0.1)Superseded by v2.
Standards
This register's contract was designed against these standards and laws. Holding these records does not by itself certify compliance.
- ABN Act 1999 (Cth)A New Tax System (Australian Business Number) Act 1999 - ABN register
- GST Act 1999 (Cth)A New Tax System (Goods and Services Tax) Act 1999 (Cth)
- PINT A-NZ Billing BISPeppol PINT A-NZ Billing BIS (joint Australia-New Zealand specification)
- Directive 2006/112/ECCouncil Directive 2006/112/EC on the common system of VAT
- EN 16931-1:2017CEN EN 16931-1 Electronic invoicing - semantic data model
- OC4IDSOpen Contracting for Infrastructure Data Standard
- OCDSOpen Contracting Data Standard
- Peppol BIS Billing 3.0Peppol BIS Billing 3.0 (CIUS of EN 16931)
- GST Act 1985 (NZ)Goods and Services Tax Act 1985 (NZ)
- NZBNNew Zealand Business Number Act 2016 - NZBN register
- PINT A-NZ Billing BISPeppol PINT A-NZ Billing BIS (joint Australia-New Zealand specification)
- AIA G702/G703AIA G702-1992 / G703-1992
- FAR 52.204-7FAR 52.204-7 System for Award Management (unique entity identifier) (Unique Entity ID, UEI)
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.
- amountDecimal number
Line value. Raw
lineAmount. ADDITIVE.Example:
48600- 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- currencyText
Denomination of
amountandunit_cost. RawcurrencyCode, falling back to company base currency when the field is empty.Example:
AUD- quantityNumber
Line quantity. Raw
quantity. ADDITIVE,missing=ZERO.Example:
540- unit_costDecimal number
Rate per unit. Raw
directUnitCost. INSTANTANEOUS.Example:
90- 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- 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- 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- 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- financial_periodText
The period the commitment is attributed to. Derived from
orderDateby the period resolver, not a raw field.Example:
2026-07
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- 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- 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- 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.
- tax_area_codeText
Tenant tax area coding. Raw
taxAreaCode. Same reason.- tax_group_codeText
Tenant tax group coding. Raw
taxGroupCode. Same reason asamount_including_tax: tenant configuration vocabulary, no jurisdictional mandate on the order line.- 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.- 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).
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"}Version history
- v2 (current)
- v1
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 fill from them, on your data, in a 30-minute call.