ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

ORDERS — Purchase Order Message (D.96A)

The ORDERS message tells the seller that the buyer intends to place an order for goods or services, on terms agreed upstream.

Purpose

Per the official UN/CEFACT definition, ORDERS is "intended to specify details for goods or services ordered on conditions agreed between the seller and the buyer". In practice, ORDERS handles spot orders (a one-off cart) as well as call-offs against a blanket contract, JIT replenishment in automotive, and service orders. It is not the right vehicle for post-acceptance changes — those go through the ORDCHG message.

Segment structure

A D.96A ORDERS message has three sections: a Header, a Detail (repeatable LIN group, up to 200,000 lines per interchange), and a Summary. The table below summarises the segments allowed at the outermost level, in canonical order.

Mandatory header segments: UNH M , BGM M , and DTM M . Other header segments are conditional: PAI C , ALI C , IMD C , FTX C .

Then come segment groups SG1 through SG24, in this exact order: SG1 RFF, SG2 NAD+LOC+FII (parties — buyer, seller, ship-to…), SG3 DOC, SG4 CTA+COM, SG5 TAX+MOA+LOC, SG6 CUX (currencies), SG7 PAT (payment terms), SG8 TDT (transport), SG9 PAC+MEA (packaging), SG10 EQD+HAN+MEA+FTX, SG11 SCC+FTX+RFF, SG12 APR, SG13 ALC (allowance/charge), SG14 RCS+RFF+DTM+FTX.

Detail (line item)

The Detail section sits entirely inside SG25, a loop built around the LIN M segment. Each line can carry PIA , IMD , MEA , QTY , PCD , ALI , DTM , MOA , GIN , GIR , QVR , DOC , PAI , and FTX .

Beyond LIN itself, 28 nested groups describe line-level concerns: classifications (SG26 CCI+CAV+MEA), line-specific payment terms (SG27 PAT), pricing (SG28 PRI+CUX+APR+RNG+DTM), references (SG29 RFF), packaging (SG30 PAC+MEA+PCI+GIN), location/quantity per site (SG31 LOC+QTY+DTM), line taxes (SG32 TAX+MOA+LOC), line-specific parties (SG33 NAD+LOC+RFF+DOC+CTA), allowances/charges (ALC groups), line transport, equipment, etc.

The spec permits up to 200,000 repetitions of the SG25 loop per interchange — a ceiling rarely reached for retail orders, but common for manufacturing or spare-parts orders.

Summary

The Summary section contains: UNS M , MOA , CNT , then group SG54 ( ALC + ALI + MOA ) for global allowances/charges, and finally UNT M .

Mandatory / conditional

Four segments are strictly mandatory in every D.96A ORDERS:

  • UNH — opens the message, carries the reference and the version.
  • BGM — gives the function code (220 = order), the order number, and the document status.
  • UNS+S — separates Detail from Summary.
  • UNT — closes the message, declares the segment count and the reference (which must match UNH).

On top of those, at least one header DTM (typically DTM+137 — Document Date) and at least one LIN in the Detail. Any "business" payload (NAD parties, PRI prices, CUX currencies) is technically conditional at the standard level — it's the sector subsets (EANCOM, Odette…) and the trading agreement that make it mandatory in practice.

Real-world example

A typical retail order between a buying group (buyer) and a manufacturer (supplier), for two products identified by their GTIN-13:

edifact orders-d96a-example.edi
UNB+UNOC:3+5410000000123:14+5410000000456:14+260513:1430+CTRL000001'
UNH+1+ORDERS:D:96A:UN:EAN008'
BGM+220+ORDER789+9'
DTM+137:20260513:102'
DTM+2:20260520:102'
NAD+BY+5410000000123::9'
NAD+SU+5410000000456::9'
LIN+1++3520000001234:EN'
IMD+F++:::Acoustic guitar, mahogany finish'
QTY+21:2'
PRI+AAA:849.00'
LIN+2++3520000005678:EN'
IMD+F++:::Capo, spring loaded'
QTY+21:5'
PRI+AAA:19.50'
UNS+S'
CNT+2:2'
UNT+15+1'
UNZ+1+CTRL000001'
  • UNB — interchange between two GLNs (qualifier :14) on 13 May 2026, 14:30.
  • BGM+220+ORDER789+9 — type 220 (order), number ORDER789, status 9 (Original).
  • DTM+137 — document date. DTM+2 — requested delivery date.
  • NAD+BY / NAD+SU — Buyer and Supplier, identified by GLN.
  • Two LIN with their IMD, QTY (qualifier 21 = ordered quantity), and PRI (AAA = net calculation).
  • UNT+15+1 — 15 segments in the message (UNH and UNT included), reference "1" matching UNH.

Common errors

  • Wrong UNT segment count — the value after UNT+ must include UNH and UNT themselves. This is the single most common error on the sender side, and the one most validators trip on (see our validator).
  • Out-of-sync message reference — UNH and UNT must carry the exact same identifier. Same applies between UNB[4] and UNZ[1] for the interchange reference.
  • Unescaped reserved characters — a + inside a buyer reference must be preceded by the release character (default ?). Same for :, ' and ? itself.
  • Date formatDTM+137 expects a value matching the qualifier in component 3 (102 = CCYYMMDD). An ISO date (2026-05-13) will be rejected.
  • Encoding — the syntax level declared in UNB[0] (UNOA, UNOB, UNOC…) must match the actual encoding. UNOA forbids accented characters; UNOC (Latin-1) accepts most of them.

In a full EDI flow ORDERS is part of a conversation:

JSON equivalent

For developers consuming ORDERS in API-style architectures, here is the JSON projection that matches the example above. This mapping is not normative — it's an ediverse convention to ease integration in TypeScript / Python environments:

json orders-d96a-equivalent.json
{
  "interchange": {
    "controlRef": "CTRL000001",
    "from": { "id": "5410000000123", "qualifier": "14" },
    "to": { "id": "5410000000456", "qualifier": "14" },
    "datetime": "2026-05-13T14:30:00Z",
    "syntax": { "id": "UNOC", "version": "3" }
  },
  "message": {
    "ref": "1",
    "type": "ORDERS",
    "version": { "syntax": "D", "release": "96A", "agency": "UN", "association": "EAN008" }
  },
  "purchaseOrder": {
    "number": "ORDER789",
    "function": "220",
    "status": "9",
    "documentDate": "2026-05-13",
    "deliveryDate": "2026-05-20",
    "parties": {
      "buyer": { "gln": "5410000000123" },
      "supplier": { "gln": "5410000000456" }
    },
    "lines": [
      { "ref": 1, "gtin": "3520000001234", "description": "Acoustic guitar, mahogany finish", "quantity": { "ordered": 2 }, "price": { "net": 849.00 } },
      { "ref": 2, "gtin": "3520000005678", "description": "Capo, spring loaded", "quantity": { "ordered": 5 }, "price": { "net": 19.50 } }
    ],
    "totals": { "lineCount": 2 }
  }
}