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.

INVOIC — Invoice Message (D.96A)

Le message INVOIC porte la facture commerciale d'un vendeur à un acheteur : montants TTC, base taxable, conditions de paiement, références à la commande et à l'avis d'expédition.

Objet du message

Selon la définition officielle UN/CEFACT, INVOIC « a pour but de réclamer un paiement pour des biens ou services fournis, conformément aux termes et conditions convenues entre le vendeur et l'acheteur ». En pratique, INVOIC supporte aussi bien la facture commerciale classique que l'avoir (credit note), la facture récapitulative multi-livraisons, l'auto-facturation (self-billing) ou la facture proforma. Le code de fonction porté par BGM[1] (380 = facture commerciale, 381 = avoir, 384 = facture corrective…) précise le type.

Structure segmentaire

Un message INVOIC D.96A se découpe en trois sections : Header, Detail (groupe SG25 répétable, jusqu'à 9 999 999 lignes par interchange), et Summary. La structure est plus dense qu'ORDERS — les taxes, devises et termes de paiement sont systématiquement présents.

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+DTM (références — c'est ici qu'on rappelle le numéro de commande, le numéro de bon de livraison, le contrat-cadre), SG2 NAD+LOC+FII (parties — vendeur, acheteur, livré-à, payeur), SG3 RFF+DTM (références liées à une partie), SG4 DOC+DTM (documents associés), SG5 CTA+COM (contacts), SG6 TAX+MOA+LOC (taxes header), SG7 CUX+DTM (devises et taux de change), SG8 PAT+DTM+PCD+MOA+PAI+FII (termes de paiement), SG9 TDT (transport), SG10 LOC+DTM (lieux), SG11 RFF+DTM, SG12 TOD+LOC (conditions de livraison), SG13 PAC+MEA (emballage), SG14 PCI+RFF+DTM+GIN (identification colis), SG15 ALC+ALI avec ses sous-groupes SG16-SG21 (RFF+DTM, QTY+RNG, PCD+RNG, MOA+RNG, RTE+RNG, TAX+MOA) pour les allowances/charges header, SG22 RCS+RFF+DTM+FTX (requirements), SG23 AJT+FTX (ajustement), SG24 INP+FTX (instructions parties).

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 , GIN , GIR , QVR , EQD , et FTX .

Au-delà du LIN lui-même, 22 groupes nichés permettent de décrire à la maille ligne : montants ligne (SG26 MOA+CUX), termes de paiement spécifiques (SG27 PAT+DTM+PCD+MOA), prix (SG28 PRI+APR+RNG+DTM), références (SG29 RFF+DTM), emballage (SG30 PAC+MEA) et son sous-groupe SG31 PCI+RFF+DTM+GIN, lieux et quantités par site (SG32 LOC+QTY+DTM), taxes ligne (SG33 TAX+MOA+LOC), parties spécifiques à la ligne (SG34 NAD+LOC) avec leurs sous-groupes SG35-SG37 (RFF+DTM, DOC+DTM, CTA+COM), allowances/charges ligne (SG38 ALC+ALI+DTM) et leurs sous-groupes SG39-SG43 (QTY+RNG, PCD+RNG, MOA+RNG, RTE+RNG, TAX+MOA), transport ligne (SG44 TDT) et SG45 LOC+DTM, conditions de livraison ligne (SG46 TOD+LOC), requirements ligne (SG47 RCS+RFF+DTM+FTX).

La spécification autorise jusqu'à 9 999 999 répétitions du loop SG25 par interchange — un plafond rarement atteint, mais qui rend possible la facture récapitulative annuelle d'un gros fournisseur télécoms ou énergie.

Summary

La section Summary contient : UNS M , CNT , puis un groupe mandataire SG48 ( MOA M ) avec ses sous-groupes SG49 ( RFF + DTM ) et SG50 ( TAX + MOA ), puis SG51 ( ALC + ALI + MOA ) pour les allowances/charges globales, et enfin UNT M .

Obligatoire / conditionnel

Quatre segments sont strictement mandataires dans tout INVOIC D.96A : UNH, BGM, UNS+S, UNT. Le groupe SG48 (totaux MOA) est également mandataire — c'est la spécificité d'INVOIC par rapport à ORDERS.

  • UNH — ouvre le message, porte l'identifiant et la version.
  • BGM — précise le code de fonction (380 = facture commerciale, 381 = avoir), le numéro de facture, et le statut du document.
  • UNS+S — délimite le passage du Detail au Summary.
  • SG48 MOA — au moins un total monétaire (montant TTC ou montant HT).
  • UNT — ferme le message, déclare le nombre de segments.

À cela il faut au moins un DTM+137 (date de facture) et un NAD+SU et NAD+BY pour identifier vendeur et acheteur. Les conventions sectorielles (EANCOM en retail, Galia en automotive) ajoutent l'obligation de référencer la commande (RFF+ON) et l'avis d'expédition (RFF+DQ).

Exemple réel

Une facture retail typique entre un industriel (vendeur) et une centrale d'achat (acheteur), pour deux produits livrés via le DESADV de référence :

edifact invoic-d96a-example.edi
UNB+UNOC:3+5410000000456:14+5410000000123:14+260601:1000+CTRL000003'
UNH+1+INVOIC:D:96A:UN:EAN008'
BGM+380+INV-2026-1042+9'
DTM+137:20260601:102'
DTM+35:20260520:102'
RFF+ON:ORDER789'
RFF+DQ:DESADV-2026-0521'
NAD+SU+5410000000456::9'
NAD+BY+5410000000123::9'
CUX+2:EUR:4'
PAT+1++5:3:D:30'
LIN+1++3520000001234:EN'
QTY+47:2'
MOA+203:1698.00'
PRI+AAA:849.00'
TAX+7+VAT+++:::20'
MOA+125:1698.00'
LIN+2++3520000005678:EN'
QTY+47:5'
MOA+203:97.50'
PRI+AAA:19.50'
TAX+7+VAT+++:::20'
MOA+125:97.50'
UNS+S'
MOA+79:1795.50'
MOA+125:1795.50'
MOA+150:359.10'
MOA+9:2154.60'
TAX+7+VAT+++:::20'
MOA+124:359.10'
UNT+30+1'
UNZ+1+CTRL000003'
  • BGM+380+INV-2026-1042+9 — type 380 (facture commerciale), numéro INV-2026-1042, statut 9 (Original).
  • DTM+137 — date de facture. DTM+35 — date de livraison effective.
  • RFF+ON et RFF+DQ — références à la commande (ORDER789) et au bon de livraison (DESADV-2026-0521).
  • CUX+2:EUR:4 — devise de facturation (EUR, qualifier 4 = invoicing currency).
  • PAT+1++5:3:D:30 — termes de paiement : escompte 3 % à 5 jours, échéance 30 jours net.
  • Deux LIN avec leur QTY+47 (invoiced quantity), MOA+203 (montant ligne HT), PRI+AAA (prix net unitaire), TAX+7 (VAT 20 %) et MOA+125 (taxable amount).
  • Summary : MOA+79 (line total), MOA+125 (taxable base), MOA+150 (tax payable), MOA+9 (total payable), TAX+7 + MOA+124 (tax detail).
  • UNT+30+1 — 30 segments dans le message, référence « 1 » en cohérence avec UNH.

Erreurs fréquentes

  • Cohérence des totaux — le MOA+9 (total payable) du summary doit être égal au MOA+125 (taxable base) + MOA+150 (total tax). C'est l'erreur la plus filtrée par les contrôles métier côté acheteur.
  • Absence de référence à la commande — un INVOIC sans RFF+ON est rejeté automatiquement par 100 % des plateformes de dématérialisation retail (Tradeshift, Tungsten, Generix…).
  • Devise manquante quand non-EURCUX+2 est obligatoire si la devise diffère de celle déclarée dans l'accord d'interchange. Une facture USD avec CUX absent est ambiguë.
  • Code TVA invalideTAX[1] doit être un qualifier connu (7 = VAT, 5 = customs duty…). Un code custom non documenté bloque le traitement automatique.
  • UNT segment count erroné — la valeur après UNT+ doit inclure UNH et UNT eux-mêmes.

Messages liés

INVOIC est l'aboutissement du cycle order-to-cash :

É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 invoic-d96a-equivalent.json
{
  "interchange": {
    "controlRef": "CTRL000003",
    "from": { "id": "5410000000456", "qualifier": "14" },
    "to": { "id": "5410000000123", "qualifier": "14" },
    "datetime": "2026-06-01T10:00:00Z",
    "syntax": { "id": "UNOC", "version": "3" }
  },
  "message": {
    "ref": "1",
    "type": "INVOIC",
    "version": { "syntax": "D", "release": "96A", "agency": "UN", "association": "EAN008" }
  },
  "invoice": {
    "number": "INV-2026-1042",
    "function": "380",
    "status": "9",
    "issueDate": "2026-06-01",
    "deliveryDate": "2026-05-20",
    "references": {
      "buyerOrder": "ORDER789",
      "despatchAdvice": "DESADV-2026-0521"
    },
    "parties": {
      "supplier": { "gln": "5410000000456" },
      "buyer": { "gln": "5410000000123" }
    },
    "currency": "EUR",
    "paymentTerms": { "basis": "1", "days": 30, "discount": { "percent": 3, "days": 5 } },
    "lines": [
      {
        "ref": 1,
        "gtin": "3520000001234",
        "quantity": { "invoiced": 2 },
        "price": { "net": 849.00 },
        "lineTotal": 1698.00,
        "vat": { "rate": 20, "amount": 339.60 }
      },
      {
        "ref": 2,
        "gtin": "3520000005678",
        "quantity": { "invoiced": 5 },
        "price": { "net": 19.50 },
        "lineTotal": 97.50,
        "vat": { "rate": 20, "amount": 19.50 }
      }
    ],
    "totals": {
      "totalLineNet": 1795.50,
      "taxableBase": 1795.50,
      "totalTax": 359.10,
      "amountDue": 2154.60
    }
  }
}