RECADV — Receiving Advice Message (D.96A)
Le message RECADV signale au fournisseur la réception physique d'une livraison : quantités effectivement reçues, écarts éventuels par rapport à l'expédition annoncée (DESADV) ou à la commande (ORDERS).
Objet du message
Selon la définition officielle UN/CEFACT, le RECADV « adresse les besoins métier liés à la réception des marchandises. Le message rapporte la réception physique des marchandises et permet de signaler les écarts portant sur les produits, quantités, conditions, emballages, etc. » Le message peut soit confirmer que la livraison reçue correspond exactement à l'expédition annoncée dans le DESADV, soit signaler les écarts par rapport au DESADV, à ORDERS D.96A, DELFOR D.96A ou DELJIT D.96A.
En pratique, RECADV est le pivot du processus « 3-way match » en comptabilité fournisseur (Order ↔ Receipt ↔ Invoice) et le déclencheur de l'auto-facturation (self-billing) chez les retailers et constructeurs automobile.
Structure segmentaire
Contrairement à ORDERS ou INVOIC, le segment table de RECADV D.96A n'a pas de séparation formelle Header / Detail / Summary : pas de UNS, pas de section Detail délimitée. On peut néanmoins le découper en trois zones logiques : en-tête, suivi de groupes de parties / transport, puis le loop emballage SG16 (CPS) qui porte les lignes reçues.
Header
Au niveau du header, les segments mandataires sont : UNH M , BGM M , et DTM M . Le segment ALI C est conditionnel, juste après DTM.
Suivent en zone « tête de message » une longue série de groupes :
- SG1
RFF+DTM— références (RFF+ON commande, RFF+DQ DESADV...). - SG2
DOC+ SG3CDI+INP— documents externes. - SG4
NAD+LOC— parties (mandataire dans la spec). - SG5
RFF+DTMet SG6CTA+COM— références et contacts liés à la partie. - SG7
TODet SG8CDI+INP— termes de livraison et état physique. - SG9
LOC+CDI— lieux et états par lieu. - SG10
TDT+DTM+CDI— transport. - SG11
EQDavec SG12CDI+INP, SG13SEL+CDI(scellés), SG14EQA, SG15CDI+INP— équipement.
Detail (CPS + LIN reçus)
Le cœur métier de RECADV est porté par le loop SG16 (jusqu'à 9 999 occurrences) construit autour de CPS M . Chaque CPS imbrique :
- SG17
PAC+QVR— emballage et écart éventuel de quantité d'emballage, avec sous-groupes SG18PCI+RFF, SG19CDI+INPet SG20GIN+ SG21CDI+INPpour décrire l'identification colis (SSCC reçus) et leur état. - SG22 — le loop article (jusqu'à 9 999) avec LIN M , PIA C , IMD C , QTY C , QVR C , et DTM C .
- SG23
CDI+INP, SG24DOC, SG25CDI+INP— états et documents au niveau ligne. - SG26
GIN+ SG27CDI+INP— identifiants ligne (séries, lots). - SG28
RFF+DTM— références ligne. - SG29
PCI+QTY+QVR+ SG30CDI+INPet SG31GIN+ SG32CDI+INP— emballage ligne et états.
Trailer
RECADV n'a pas de section Summary formelle : pas de UNS. Après le loop SG16 viennent directement : CNT C , puis UNT M .
Obligatoire / conditionnel
Cinq éléments structurels sont strictement mandataires dans tout RECADV D.96A :
UNH— ouvre le message.BGM— précise la fonction (632 = receiving advice) et le numéro.DTMau header — au moins une date (DTM+137 ou DTM+50 date de réception).- SG4 avec son
NAD— au moins un groupe parties (M dans la spec, 10 occurrences max). UNT— ferme le message.
En pratique métier, il faut aussi : RFF+ON (commande de référence),
typiquement RFF+DQ (DESADV de référence), au moins un CPS
(SG16) avec dedans au moins un LIN (SG22) et QTY+194
(received quantity). Les écarts sont portés par QVR en SG22 — sans QVR, la
réception est implicitement conforme.
Exemple réel
Un avis de réception pour deux références issues d'un DESADV référencé : la première est reçue conforme (2 unités), la seconde présente un écart négatif (4 reçus, 5 annoncés — soit 1 manquant, QVR+1).
UNB+UNOC:3+5410000000123:14+5410000000456:14+260521:0930+CTRL000030'
UNH+1+RECADV:D:96A:UN:EAN008'
BGM+632+RECADV-2026-0521-001+9'
DTM+137:20260521:102'
DTM+50:202605210900:203'
RFF+ON:ORDER789'
DOC+351:DESADV-2026-0521'
NAD+BY+5410000000123::9'
NAD+SU+5410000000456::9'
NAD+DP+5410000000789::9'
CPS+1'
PAC+10+++:::1 pallet'
PCI+33E'
LIN+1++3520000001234:EN'
QTY+194:2'
LIN+2++3520000005678:EN'
QTY+194:4'
QVR+1:21'
CNT+2:2'
UNT+18+1'
UNZ+1+CTRL000030' BGM+632+RECADV-2026-0521-001+9— type 632 (Receiving advice), numéro RECADV-2026-0521-001, statut 9 (Original).DTM+137— date du document.DTM+50— date/heure de réception physique (qualifier 203 horodaté).RFF+ON:ORDER789— référence à la commande d'origine.DOC+351:DESADV-2026-0521— référence au DESADV qui annonçait l'expédition.NAD+BY/NAD+SU/NAD+DP— Buyer, Supplier, Delivery Point.CPS+1— séquence d'emballage n°1 (la palette reçue).- Première ligne :
QTY+194:2— 2 unités reçues, sans QVR (conforme). - Seconde ligne :
QTY+194:4+QVR+1:21— 4 unités reçues, écart court de 1 unité (raison 21 = quantity short shipped). CNT+2:2— 2 lignes pour 2 articles distincts.UNT+18+1— 18 segments.
Erreurs fréquentes
- RFF+DQ ou DOC+351 absent — un RECADV sans référence au DESADV qui l'a déclenché est ingérable côté fournisseur : impossible de rapprocher la réception de l'expédition correspondante.
- QTY+194 vs QTY+12 — RECADV utilise
QTY+194(received quantity), pasQTY+12(despatched quantity, qui appartient à DESADV). Beaucoup d'implémentations naïves recopient le QTY du DESADV sans changer le qualifier. - Pas de UNS — RECADV n'a pas de segment UNS. L'ajouter par mimétisme avec ORDERS/INVOIC fait planter les validateurs stricts.
- QVR ambigu — un écart se signale par
QVRavec un code raison (élément 4221) clair : 21 short shipped, 22 over shipped, 23 damaged, etc. Sans code raison, le fournisseur ne peut pas qualifier l'écart pour engager un avoir ou un remplacement. - NAD oublié — au moins un NAD est mandataire (groupe SG4 est M). Beaucoup de réceptions implicites en EDI court-circuitent ce point, ce qui les rend non-conformes au standard.
Messages liés
RECADV est l'étape acquittement métier du cycle order-to-cash :
- DESADV D.96A — l'avis d'expédition qui déclenche le RECADV.
- ORDERS D.96A — la commande de référence.
- ORDRSP D.96A — la confirmation de commande.
- INVOIC D.96A — la facture qui doit matcher le RECADV (3-way match) ou être générée par auto-facturation à partir du RECADV.
- REMADV D.96A — l'avis de règlement, 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": "CTRL000030",
"from": { "id": "5410000000123", "qualifier": "14" },
"to": { "id": "5410000000456", "qualifier": "14" },
"datetime": "2026-05-21T09:30:00Z",
"syntax": { "id": "UNOC", "version": "3" }
},
"message": {
"ref": "1",
"type": "RECADV",
"version": { "syntax": "D", "release": "96A", "agency": "UN", "association": "EAN008" }
},
"receivingAdvice": {
"number": "RECADV-2026-0521-001",
"function": "632",
"status": "9",
"issueDate": "2026-05-21",
"receivedAt": "2026-05-21T09:00:00Z",
"references": {
"buyerOrder": "ORDER789",
"despatchAdvice": "DESADV-2026-0521"
},
"parties": {
"buyer": { "gln": "5410000000123" },
"supplier": { "gln": "5410000000456" },
"deliveryPoint": { "gln": "5410000000789" }
},
"packingSequences": [
{
"ref": 1,
"package": { "type": "pallet", "quantity": 1 },
"lines": [
{ "ref": 1, "gtin": "3520000001234", "received": 2 },
{ "ref": 2, "gtin": "3520000005678", "received": 4, "variance": { "type": "short", "value": 1 } }
]
}
],
"totals": { "lineCount": 2 }
}
}