ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

ORDERS — Purchase Order Message (D.96A)

Le message ORDERS notifie au vendeur l'intention de l'acheteur de placer une commande pour des biens ou des services, selon les termes négociés en amont.

Objet du message

Selon la définition officielle UN/CEFACT, ORDERS « a pour but de spécifier des détails relatifs à des biens ou des services commandés sous des conditions convenues entre le vendeur et l'acheteur ». En pratique, ORDERS supporte aussi bien la commande spot (un panier ponctuel) que la commande sur contrat-cadre, le réapprovisionnement JIT en automotive ou les commandes de service. Il n'est pas le bon véhicule pour les modifications après acceptation — celles-ci passent par le message ORDCHG.

Structure segmentaire

Un message ORDERS D.96A se découpe en trois sections : Header, Detail (groupe LIN répétable, jusqu'à 200 000 lignes par interchange), et Summary. La table ci-dessous résume les segments autorisés au niveau le plus haut, dans leur ordre canonique.

Au niveau du header, les segments mandataires sont : UNH M , BGM M , et DTM M . Les autres segments de tête sont conditionnels : PAI C , ALI C , IMD C , FTX C .

Suivent les groupes de segments SG1 à SG24 du header, dans cet ordre précis : SG1 RFF, SG2 NAD+LOC+FII (les parties — acheteur, vendeur, livré-à…), SG3 DOC, SG4 CTA+COM, SG5 TAX+MOA+LOC, SG6 CUX (devises), SG7 PAT (termes de paiement), SG8 TDT (transport), SG9 PAC+MEA (emballage), SG10 EQD+HAN+MEA+FTX, SG11 SCC+FTX+RFF, SG12 APR, SG13 ALC (allowance/charge), SG14 RCS+RFF+DTM+FTX.

Detail (ligne d'article)

La section Detail est entièrement encapsulée dans SG25, un loop construit autour du segment LIN M . Chaque ligne peut porter PIA , IMD , MEA , QTY , PCD , ALI , DTM , MOA , GIN , GIR , QVR , DOC , PAI , et FTX .

Au-delà du LIN lui-même, 28 groupes nichés permettent de décrire à la maille ligne : classifications (SG26 CCI+CAV+MEA), termes de paiement spécifiques (SG27 PAT), prix (SG28 PRI+CUX+APR+RNG+DTM), références (SG29 RFF), emballage (SG30 PAC+MEA+PCI+GIN), lieux et quantités par site (SG31 LOC+QTY+DTM), taxes ligne (SG32 TAX+MOA+LOC), parties spécifiques à la ligne (SG33 NAD+LOC+RFF+DOC+CTA), allowances/charges (groupes ALC), transport ligne, équipement, etc.

La spécification autorise jusqu'à 200 000 répétitions du loop SG25 par interchange — un plafond rarement atteint en commande retail, mais fréquent en commande de fabrication ou de pièces détachées.

Summary

La section Summary contient : UNS M , MOA , CNT , puis un groupe SG54 ( ALC + ALI + MOA ) pour les allowances/charges globales, et enfin UNT M .

Obligatoire / conditionnel

Quatre segments sont strictement mandataires dans tout ORDERS D.96A :

  • UNH — ouvre le message, porte l'identifiant et la version.
  • BGM — précise le code de fonction (220 = commande), le numéro de commande, et le statut du document.
  • UNS+S — délimite le passage du Detail au Summary.
  • UNT — ferme le message, déclare le nombre de segments et l'identifiant de référence (qui doit matcher UNH).

À cela il faut au moins un DTM dans le header (typiquement DTM+137 — Document Date) et au moins un LIN dans le Detail. Toute donnée « business » (parties NAD, prix PRI, devises CUX) est techniquement conditionnelle au niveau du standard : ce sont les conventions d'usage et les subsets sectoriels (EANCOM, Odette…) qui les rendent obligatoires.

Exemple réel

Une commande retail typique entre une centrale d'achat (acheteur) et un industriel (fournisseur), pour deux produits identifiés en 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 entre deux GLNs (qualifier :14) à la date du 13 mai 2026, 14:30.
  • BGM+220+ORDER789+9 — type 220 (commande), numéro ORDER789, statut 9 (Original).
  • DTM+137 — date du document. DTM+2 — date de livraison demandée.
  • NAD+BY / NAD+SU — Buyer et Supplier, identifiés par GLN.
  • Deux LIN avec leur IMD, QTY (qualifier 21 = ordered quantity) et PRI (AAA = calculation net).
  • UNT+15+1 — 15 segments dans le message (UNH compris), référence « 1 » en cohérence avec UNH.

Erreurs fréquentes

  • UNT segment count erroné — la valeur après UNT+ doit inclure UNH et UNT eux-mêmes. C'est l'erreur la plus courante côté émetteur, et c'est celle qui fait planter la majorité des contrôleurs syntaxiques (voir notre validateur).
  • Référence message désynchronisée — UNH et UNT doivent porter exactement le même identifiant de message. Idem entre UNB[4] et UNZ[1] pour la référence d'interchange.
  • Caractères réservés non échappés — un + dans une référence acheteur doit être précédé du release char (par défaut ?). Idem pour :, ' et ? lui-même.
  • Date formatDTM+137 attend un format conforme au qualifier du composant 3 (102 = CCYYMMDD). Une date au format ISO (2026-05-13) sera rejetée.
  • Encodage — le syntax level annoncé en UNB[0] (UNOA, UNOB, UNOC…) doit correspondre à l'encodage réel. UNOA n'accepte pas les caractères accentués ; UNOC (Latin-1) en accepte la majorité.

Messages liés

Dans un flux EDI complet, ORDERS s'inscrit dans une conversation :

Équivalent JSON

Pour les développeurs qui consomment ORDERS dans des architectures API, voici la projection JSON correspondant à l'exemple ci-dessus. Ce mapping n'est pas normatif — c'est une convention ediverse pour faciliter l'intégration en environnement TypeScript / Python :

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 }
  }
}