PRICAT — Price/Sales Catalogue Message (D.96A)
Le message PRICAT transmet d'un fournisseur vers un acheteur les informations de prix et de catalogue pour les biens et services offerts à la vente.
Objet du message
Selon la définition officielle UN/CEFACT, PRICAT est « un message permettant la transmission d'informations concernant la tarification et les détails de catalogue pour les biens et services offerts par un vendeur à un acheteur ». Le standard précise que les conditions de vente et de livraison peuvent porter sur l'ensemble du catalogue, sur un groupe d'articles, sur un article unique, ou même sur différentes occurrences de base de prix d'un même article.
PRICAT remplace l'envoi de catalogues PDF / tableurs Excel par un format structuré, actionnable directement dans l'ERP acheteur. Il est dimensionné pour les volumes réels : jusqu'à 999 999 lignes article par message (loop SG33).
Structure segmentaire
PRICAT D.96A se découpe en deux sections nominales : Header (groupes SG1 à SG15) et Detail (groupes SG16 à SG47 — produits, prix, taxes, allowances, packs). Il n'y a pas de section Summary formelle dans la spec UNECE : l'UNT vient directement après le dernier loop article.
Header
Au niveau du header, les segments mandataires sont : UNH M , BGM M , et DTM M .
Les segments header conditionnels sont : ALI C , et FTX C .
Suivent les groupes header :
- SG1
RFF+DTM— références (contrat-cadre, numéro de version catalogue). - SG2
NAD+LOC— parties (mandataire dans la spec, jusqu'à 99 occurrences) avec SG3RFF+DTMet SG4CTA+COM. - SG5
TAX+MOA— taxes en-tête. - SG6
CUX+DTM— devises (mandataire pour qualifier les PRI). - SG7
PAT+DTM+PCD+MOA— termes de paiement. - SG8
TDT+LOCet SG9TOD+LOC— transport et termes de livraison. - SG10
ALC+ALI+DTM— allowances/charges globales avec sous-groupes SG11QTY+RNG, SG12PCD+RNG, SG13MOA+RNG, SG14RTE+RNG, SG15TAX+MOA.
Detail (lignes catalogue)
La section Detail s'ouvre par le groupe optionnel SG16 PGI+DTM+QTY+ALI+FTX (Product Group Information, jusqu'à 1 000
occurrences) pour regrouper logiquement les articles, avec SG17 CUX+DTM
et un sous-loop SG18 PRI+CUX+APR+RNG+DTM pour les prix de groupe, suivi
de SG19 TAX+MOA et SG20 ALC+ALI avec ses sous-groupes (SG21
à SG25 — quantités/percentages/montants/taux/taxes par range).
Le cœur métier est le loop SG33 (jusqu'à 999 999 occurrences) construit autour de LIN M . Chaque ligne porte les conditionnels : PIA C , IMD C , MEA C , QTY C , HAN C , ALI C , DTM C , NAD C , RFF C , LOC C , DOC C , et FTX C .
Sous chaque LIN s'imbriquent les groupes ligne :
- SG34
CCI+CAV+MEA— classifications et caractéristiques (couleur, taille...). - SG35
TAX+MOA— taxes spécifiques à l'article. - SG36
CUX+DTM— devise spécifique. - SG37
PRI+CUX+APR+RNG+DTM+PCD— prix article (jusqu'à 100 occurrences). C'est ici que se trouvent prix net, prix tarif, prix promotionnel. - SG38
ALC+ALI+DTM— allowances/charges ligne, avec ses sous-groupes SG39 à SG43. - SG44
PAC+MEA+HAN— emballage. - SG45
PAT+DTM+PCD+MOA— termes de paiement. - SG46
TDT+LOCet SG47TOD+LOC— transport et livraison.
Trailer
PRICAT n'a pas de section Summary formelle : pas de UNS, pas de CNT. Après le dernier SG33 vient directement UNT M .
Obligatoire / conditionnel
Quatre segments structurels sont strictement mandataires dans tout PRICAT D.96A :
UNH— ouvre le message.BGM— précise la fonction (9 = Original, 1 = Cancellation, 4 = Change, etc.) et le numéro de catalogue.DTMau header — au moins une date (typiquement DTM+137 émission, plus DTM+194 / DTM+206 plage de validité).- SG2 avec son
NAD— au moins un groupe parties (M dans la spec).
En pratique métier, il faut aussi : NAD+SU (fournisseur), souvent
NAD+BY (acheteur destinataire spécifique du catalogue), une CUX
(SG6), au moins un LIN dans SG33, et au moins un PRI dans
SG37 par ligne — sinon le catalogue n'a pas de prix.
Exemple réel
Un catalogue trimestriel envoyé par un industriel à une enseigne, pour deux articles avec leur prix tarif (AAB), prix net négocié (AAA), et la TVA applicable.
UNB+UNOC:3+5410000000456:14+5410000000123:14+260513:0900+CTRL000040'
UNH+1+PRICAT:D:96A:UN:EAN008'
BGM+9+PRICAT-2026-Q3+9'
DTM+137:20260513:102'
DTM+194:20260701:102'
DTM+206:20260930:102'
NAD+SU+5410000000456::9'
NAD+BY+5410000000123::9'
CUX+2:EUR:4'
LIN+1++3520000001234:EN'
PIA+5+SUP-REF-AC-001:SA'
IMD+F++:::Acoustic guitar, mahogany finish'
QTY+52:1'
PRI+AAB:899.00'
PRI+AAA:849.00:CA::1'
TAX+7+VAT+++:::20'
LIN+2++3520000005678:EN'
PIA+5+SUP-REF-CP-001:SA'
IMD+F++:::Capo, spring loaded'
QTY+52:1'
PRI+AAB:24.90'
PRI+AAA:19.50:CA::1'
TAX+7+VAT+++:::20'
UNT+22+1'
UNZ+1+CTRL000040' BGM+9+PRICAT-2026-Q3+9— fonction 9 (Original), numéro PRICAT-2026-Q3, statut 9.DTM+137— date émission.DTM+194/DTM+206— début et fin de plage de validité.NAD+SU/NAD+BY— Supplier (émetteur) et Buyer (destinataire).CUX+2:EUR:4— devise de référence : EUR.- Deux
LINavec leurPIA+5(référence fournisseur),IMD+F(description libre),QTY+52(quantité par UoM = 1). - Chaque ligne porte deux
PRI:AAB(prix tarif/list price) etAAA(prix net calculé). TAX+7+VAT— taxe applicable (qualifier 7 = tax) avec taux 20%.UNT+22+1— 22 segments, référence « 1 » cohérente avec UNH.
Erreurs fréquentes
- PRI sans devise — chaque
PRIdoit être qualifié par uneCUX(au header SG6 ou en SG36 pour spécificité article). Sans devise, un prix de « 849.00 » est ambigu et sera typiquement rejeté par l'ERP acheteur. - Confusion AAA vs AAB —
PRI+AAAest le prix net (calculation net),PRI+AABest le prix tarif (calculation gross/list). Inverser les deux fait apparaître l'article en perte sur l'ERP acheteur. - Période de validité manquante — PRICAT sans
DTM+194/206ou sans plage explicite est interprété « à durée indéterminée » — ce qui ne correspond presque jamais à l'intention métier. - GTIN absent — un
LINsans:EN(qualifier 3055 = EAN International) dans la composite C212 n'est pas matchable avec les commandes de l'acheteur, qui réfère systématiquement le GTIN. - Pas de UNS — PRICAT n'a pas de UNS dans sa spec. Ne pas en ajouter.
- BGM fonction code mal interprété — la fonction code en BGM (9 Original, 1 Cancellation, 4 Change, 5 Replace, 31 Copy) doit refléter le cycle de vie. Envoyer toujours « 9 Original » en suppression empêche l'acheteur de purger l'ancien catalogue.
Messages liés
PRICAT s'inscrit dans la phase amont du cycle :
- ORDERS D.96A — la commande, qui doit référencer les GTIN du PRICAT.
- ORDRSP D.96A — la confirmation de commande peut renvoyer un PRI différent (renégociation).
- INVOIC D.96A — la facture, dont les prix doivent matcher ceux du PRICAT.
- INVRPT D.96A — le rapport d'inventaire que le fournisseur peut envoyer en complément.
- 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": "CTRL000040",
"from": { "id": "5410000000456", "qualifier": "14" },
"to": { "id": "5410000000123", "qualifier": "14" },
"datetime": "2026-05-13T09:00:00Z",
"syntax": { "id": "UNOC", "version": "3" }
},
"message": {
"ref": "1",
"type": "PRICAT",
"version": { "syntax": "D", "release": "96A", "agency": "UN", "association": "EAN008" }
},
"priceCatalogue": {
"number": "PRICAT-2026-Q3",
"function": "9",
"status": "9",
"issueDate": "2026-05-13",
"validity": { "from": "2026-07-01", "to": "2026-09-30" },
"parties": {
"supplier": { "gln": "5410000000456" },
"buyer": { "gln": "5410000000123" }
},
"currency": "EUR",
"items": [
{
"ref": 1,
"gtin": "3520000001234",
"supplierSku": "SUP-REF-AC-001",
"description": "Acoustic guitar, mahogany finish",
"uom": "EA",
"priceList": 899.00,
"priceNet": 849.00,
"vat": { "category": "VAT", "rate": 20 }
},
{
"ref": 2,
"gtin": "3520000005678",
"supplierSku": "SUP-REF-CP-001",
"description": "Capo, spring loaded",
"uom": "EA",
"priceList": 24.90,
"priceNet": 19.50,
"vat": { "category": "VAT", "rate": 20 }
}
]
}
}