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.

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.

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 SG3 RFF+DTM et SG4 CTA+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+LOC et SG9 TOD+LOC — transport et termes de livraison.
  • SG10 ALC+ALI+DTM — allowances/charges globales avec sous-groupes SG11 QTY+RNG, SG12 PCD+RNG, SG13 MOA+RNG, SG14 RTE+RNG, SG15 TAX+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+PCDprix 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+LOC et SG47 TOD+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.
  • DTM au 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.

edifact pricat-d96a-example.edi
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 LIN avec leur PIA+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) et AAA (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 PRI doit être qualifié par une CUX (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 AABPRI+AAA est le prix net (calculation net), PRI+AAB est 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/206 ou sans plage explicite est interprété « à durée indéterminée » — ce qui ne correspond presque jamais à l'intention métier.
  • GTIN absent — un LIN sans :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.

json pricat-d96a-equivalent.json
{
  "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 }
      }
    ]
  }
}