ORDRSP — Purchase Order Response Message (D.96A)
Le message ORDRSP transmet la réponse du vendeur à une commande reçue : confirmation complète, modification partielle, refus, contre-proposition.
Objet du message
Selon la définition officielle UN/CEFACT, ORDRSP « a pour but de spécifier les détails relatifs aux biens ou services commandés sous des conditions convenues entre le vendeur et l'acheteur » et de notifier l'acheteur des actions du vendeur. Le message couvre les quatre cas : acceptation pure, acceptation avec modification (date livraison, quantité, prix), rejet partiel ou rejet total. Le code de fonction porté par BGM[1] (231 = réponse à commande, 232 = confirmation…) précise l'intention.
Structure segmentaire
Un message ORDRSP D.96A se découpe en trois sections : Header,
Detail (groupe SG26 répétable, jusqu'à 200 000 lignes par
interchange), et Summary. La structure miroir celle d'ORDERS, enrichie
du segment AJT (Adjustment Details) pour expliciter les écarts.
Header
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 à SG25 du header, dans cet ordre
précis : SG1 RFF+DTM (références — c'est ici qu'on rappelle le
numéro de commande d'origine), SG2 AJT+FTX (motif d'ajustement), SG3
NAD+LOC+FII (parties), SG4 RFF+DTM, SG5
DOC+DTM, SG6 CTA+COM, SG7 TAX+MOA+LOC, SG8
CUX+PCD+DTM (devises), SG9 PAT+DTM+PCD+MOA (termes de
paiement), SG10 TDT (transport), SG11 LOC+DTM, SG12
TOD+LOC, SG13 PAC+MEA, SG14 PCI+RFF+DTM+GIN,
SG15 EQD+HAN+MEA+FTX, SG16 SCC+FTX+RFF, SG17
QTY+DTM, SG18 APR+DTM+RNG, SG19 ALC+ALI+DTM
et ses sous-groupes SG20-SG24 (QTY+RNG, PCD+RNG,
MOA+RNG, RTE+RNG, TAX+MOA), SG25
RCS+RFF+DTM+FTX.
Detail (ligne d'article)
La section Detail est entièrement encapsulée dans SG26, 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, 30 groupes nichés permettent de décrire à la maille ligne :
classifications (SG27 CCI+CAV+MEA), termes de paiement spécifiques (SG28
PAT+DTM+PCD+MOA), motif d'ajustement (SG29 AJT+FTX), prix
(SG30 PRI+CUX+APR+RNG+DTM), références (SG31 RFF+DTM),
emballage (SG32 PAC+MEA+QTY+DTM) et son sous-groupe SG33-SG34
(RFF+DTM, PCI+RFF+DTM+GIN), lieux et quantités par site (SG35
LOC+QTY+DTM), taxes ligne (SG36 TAX+MOA+LOC), parties
spécifiques à la ligne (SG37 NAD+LOC) et leurs sous-groupes SG38-SG40
(RFF+DTM, DOC+DTM, CTA+COM), allowances/charges
ligne (SG41 ALC+ALI+DTM) et leurs sous-groupes SG42-SG46
(QTY+RNG, PCD+RNG, MOA+RNG, RTE+RNG,
TAX+MOA), transport ligne (SG47 TDT) et SG48 LOC+DTM,
SG49 TOD+LOC, équipement ligne (SG50 EQD+HAN+MEA+FTX),
scheduling (SG51 SCC+FTX+RFF) et SG52 QTY+DTM, requirements
ligne (SG53 RCS+RFF+DTM+FTX), étapes de fabrication (SG54 STG)
et SG55 QTY+MOA.
La spécification autorise jusqu'à 200 000 répétitions du loop SG26 par interchange.
Summary
La section Summary contient : UNS M , MOA , CNT , puis un groupe SG56 ( ALC + ALI + MOA ) pour les allowances/charges globales, et enfin UNT M .
Obligatoire / conditionnel
Quatre segments sont strictement mandataires dans tout ORDRSP D.96A :
UNH— ouvre le message, porte l'identifiant et la version.BGM— précise le code de fonction (231 = réponse à commande, 232 = confirmation), le numéro de réponse, 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.
À cela il faut au moins un DTM dans le header (date du document) et au
moins une référence RFF+ON pour rappeler le numéro de commande de
l'acheteur. Le segment QTY en ligne est techniquement conditionnel, mais
en pratique chaque ligne en porte au moins deux occurrences — quantité commandée
(qualifier 21) et quantité confirmée (qualifier 185 ou similaire).
Exemple réel
Une réponse de commande typique en retail : confirmation complète, sans écart sur les deux lignes commandées via le message ORDERS de référence :
UNB+UNOC:3+5410000000456:14+5410000000123:14+260514:0915+CTRL000002'
UNH+1+ORDRSP:D:96A:UN:EAN008'
BGM+231+RESP-ORDER789+4'
DTM+137:20260514:102'
DTM+171:20260520:102'
RFF+ON:ORDER789'
NAD+SU+5410000000456::9'
NAD+BY+5410000000123::9'
LIN+1++3520000001234:EN'
QTY+21:2'
QTY+185:2'
PRI+AAA:849.00'
LIN+2++3520000005678:EN'
QTY+21:5'
QTY+185:5'
PRI+AAA:19.50'
UNS+S'
MOA+128:1795.50'
CNT+2:2'
UNT+18+1'
UNZ+1+CTRL000002' BGM+231+RESP-ORDER789+4— type 231 (réponse à commande), numéro de réponse, statut 4 (Original avec acceptation).DTM+137— date du document.DTM+171— date de livraison confirmée.RFF+ON:ORDER789— rappel obligatoire du numéro de commande acheteur (ON = Order Number).NAD+SU/NAD+BY— Supplier et Buyer, identifiés par GLN.- Deux
LINavec leur QTY+21 (commandée) et QTY+185 (déjà reçue / confirmée). MOA+128— montant total facturable de la commande confirmée.UNT+18+1— 18 segments dans le message, référence « 1 » en cohérence avec UNH.
Erreurs fréquentes
- Absence de référence à la commande d'origine — un ORDRSP doit obligatoirement référencer la commande qu'il acquitte via
RFF+ONdans le header. Sans cette référence, l'acheteur ne peut pas matcher la réponse avec son flux de commandes. - Confusion entre QTY+21 et QTY+185 — la quantité commandée (21) doit rester égale à celle de l'ORDERS reçu. Seule la quantité confirmée (185, 21 ré-utilisé selon convention) ou la variance (QVR) doit varier en cas d'écart.
- Code de fonction BGM erroné — 231 = response to order, 232 = order confirmation, 230 = delivery order response. Choisir le mauvais code crée un mismatch sémantique côté ERP acheteur.
- UNT segment count erroné — la valeur après
UNT+doit inclure UNH et UNT eux-mêmes. - Date de livraison incompatible —
DTM+171(delivery date confirmed) ne doit pas précéder la date du documentDTM+137.
Messages liés
ORDRSP fait partie du cycle order-to-cash :
- ORDERS D.96A — la commande d'origine.
- ORDCHG D.96A — la modification de commande, en amont de l'acceptation.
- DESADV D.96A — l'avis d'expédition.
- INVOIC D.96A — la facture, in fine.
- CONTRL D.96A — l'accusé syntaxique automatique.
Équivalent JSON
Projection JSON correspondant à l'exemple ci-dessus. Ce mapping n'est pas normatif : c'est une convention ediverse pour faciliter l'intégration en TypeScript / Python.
{
"interchange": {
"controlRef": "CTRL000002",
"from": { "id": "5410000000456", "qualifier": "14" },
"to": { "id": "5410000000123", "qualifier": "14" },
"datetime": "2026-05-14T09:15:00Z",
"syntax": { "id": "UNOC", "version": "3" }
},
"message": {
"ref": "1",
"type": "ORDRSP",
"version": { "syntax": "D", "release": "96A", "agency": "UN", "association": "EAN008" }
},
"orderResponse": {
"number": "RESP-ORDER789",
"function": "231",
"status": "4",
"responseDate": "2026-05-14",
"confirmedDelivery": "2026-05-20",
"references": { "buyerOrder": "ORDER789" },
"parties": {
"supplier": { "gln": "5410000000456" },
"buyer": { "gln": "5410000000123" }
},
"lines": [
{ "ref": 1, "gtin": "3520000001234", "quantity": { "ordered": 2, "confirmed": 2 }, "price": { "net": 849.00 } },
{ "ref": 2, "gtin": "3520000005678", "quantity": { "ordered": 5, "confirmed": 5 }, "price": { "net": 19.50 } }
],
"totals": { "lineCount": 2, "totalNet": 1795.50 }
}
}