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.

cXML InvoiceDetailRequest

La facture cXML. Émise par le fournisseur vers l'acheteur ou son hub de facturation, elle référence une ou plusieurs commandes, détaille les lignes facturées avec taxes et frais, et établit le montant dû.

Objet de la transaction

Le InvoiceDetailRequest est la facture B2B au sens cXML : l'instrument qui réclame le paiement au titre d'une ou plusieurs commandes livrées. Il supporte la facture standard, la note de crédit (purpose="creditMemo"), la note de débit (purpose="debitMemo") et leurs variantes au niveau ligne (lineLevelCreditMemo, lineLevelDebitMemo).

Deux modes : facture détail (par défaut), qui liste les lignes via InvoiceDetailOrder/InvoiceDetailItem, et facture entête (isHeaderInvoice="yes"), qui résume une commande au niveau header via InvoiceDetailHeaderOrder. Mode "entête" obligatoire pour les credit/debit memos globaux.

Structure XML

Le DTD : InvoiceDetailRequest (InvoiceDetailRequestHeader, (InvoiceDetailOrder+ | InvoiceDetailHeaderOrder+), InvoiceDetailSummary). Donc une seule structure possible : un header, puis une suite de InvoiceDetailOrder ou de InvoiceDetailHeaderOrder (exclusif), puis un summary.

InvoiceDetailRequestHeader

Le contenu : InvoiceDetailRequestHeader (InvoiceDetailHeaderIndicator, InvoiceDetailLineIndicator, InvoicePartner*, DocumentReference?, InvoiceIDInfo?, PaymentProposalIDInfo?, InvoiceDetailShipping?, ShipNoticeIDInfo?, (InvoiceDetailPaymentTerm*|PaymentTerm*), PaymentInformation?, Period?, Comments?, IdReference*, Extrinsic*). Les deux indicateurs sont obligatoires par cardinalité — même vides — car ils déclarent les choix structurants (facture header vs détail ; champs au niveau ligne ou header).

Attributs : invoiceID et invoiceDate #REQUIRED ; purpose par défaut "standard" (autres valeurs énumérées plus haut) ; operation par défaut "new" (alternative "delete").

InvoiceDetailOrder

Le contenu : InvoiceDetailOrder (InvoiceDetailOrderInfo, InvoiceDetailReceiptInfo?, InvoiceDetailShipNoticeInfo?, (InvoiceDetailItem | InvoiceDetailServiceItem)+). Au moins une ligne (article ou service) est obligatoire. InvoiceDetailOrderInfo pointe vers la commande facturée via OrderReference (ou OrderIDInfo, MasterAgreementReference).

Pour InvoiceDetailItem : invoiceLineNumber et quantity sont #REQUIRED. Le contenu impose UnitOfMeasure, UnitPrice et InvoiceDetailItemReference (qui référence la ligne d'origine via lineNumber).

InvoiceDetailSummary

Le contenu : InvoiceDetailSummary (SubtotalAmount, Tax, SpecialHandlingAmount?, ShippingAmount?, GrossAmount?, InvoiceDetailDiscount?, InvoiceHeaderModifications?, InvoiceDetailSummaryLineItemModifications?, TotalCharges?, TotalAllowances?, TotalAmountWithoutTax?, NetAmount, DepositAmount?, DueAmount?, InvoiceDetailSummaryIndustry?). Trois éléments obligatoires : SubtotalAmount, Tax, NetAmount.

xml invoice-detail-request.cxml.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.069/cXML.dtd">
<cXML payloadID="260520.090000.inv@supplier.example"
      timestamp="2026-05-20T09:00:00+02:00"
      version="1.2.069">
  <Header>
    <From>
      <Credential domain="DUNS"><Identity>987654321</Identity></Credential>
    </From>
    <To>
      <Credential domain="DUNS"><Identity>123456789</Identity></Credential>
    </To>
    <Sender>
      <Credential domain="DUNS">
        <Identity>987654321</Identity>
        <SharedSecret>shared-secret-here</SharedSecret>
      </Credential>
      <UserAgent>supplier-erp/2.1</UserAgent>
    </Sender>
  </Header>
  <Request>
    <InvoiceDetailRequest>
      <InvoiceDetailRequestHeader invoiceID="INV-2026-00321"
                                  purpose="standard"
                                  operation="new"
                                  invoiceDate="2026-05-20T09:00:00+02:00">
        <InvoiceDetailHeaderIndicator/>
        <InvoiceDetailLineIndicator isTaxInLine="yes"/>
        <InvoicePartner>
          <Contact role="remitTo">
            <Name xml:lang="fr">Fournisseur SARL — Compte bancaire</Name>
            <PostalAddress>
              <Street>15 boulevard Haussmann</Street>
              <City>Paris</City>
              <PostalCode>75009</PostalCode>
              <Country isoCountryCode="FR">France</Country>
            </PostalAddress>
          </Contact>
          <IdReference identifier="FR12345678901" domain="vatID"/>
        </InvoicePartner>
        <PaymentTerm payInNumberOfDays="30"/>
      </InvoiceDetailRequestHeader>
      <InvoiceDetailOrder>
        <InvoiceDetailOrderInfo>
          <OrderReference orderID="PO-2026-00789"
                          orderDate="2026-05-13T16:00:00+02:00">
            <DocumentReference payloadID="260513.160000.order@buyer.example"/>
          </OrderReference>
        </InvoiceDetailOrderInfo>
        <InvoiceDetailItem invoiceLineNumber="1" quantity="3">
          <UnitOfMeasure>EA</UnitOfMeasure>
          <UnitPrice><Money currency="EUR">29.99</Money></UnitPrice>
          <InvoiceDetailItemReference lineNumber="1">
            <ItemID>
              <SupplierPartID>SKU-A100</SupplierPartID>
            </ItemID>
            <Description xml:lang="fr">Chaise de bureau ergonomique noire</Description>
          </InvoiceDetailItemReference>
          <SubtotalAmount><Money currency="EUR">89.97</Money></SubtotalAmount>
          <Tax>
            <Money currency="EUR">17.99</Money>
            <Description xml:lang="fr">TVA 20%</Description>
            <TaxDetail purpose="tax" category="vat" percentageRate="20">
              <TaxableAmount><Money currency="EUR">89.97</Money></TaxableAmount>
              <TaxAmount><Money currency="EUR">17.99</Money></TaxAmount>
            </TaxDetail>
          </Tax>
          <GrossAmount><Money currency="EUR">107.96</Money></GrossAmount>
          <NetAmount><Money currency="EUR">107.96</Money></NetAmount>
        </InvoiceDetailItem>
      </InvoiceDetailOrder>
      <InvoiceDetailSummary>
        <SubtotalAmount><Money currency="EUR">89.97</Money></SubtotalAmount>
        <Tax>
          <Money currency="EUR">17.99</Money>
          <Description xml:lang="fr">TVA 20%</Description>
        </Tax>
        <GrossAmount><Money currency="EUR">107.96</Money></GrossAmount>
        <NetAmount><Money currency="EUR">107.96</Money></NetAmount>
        <DueAmount><Money currency="EUR">107.96</Money></DueAmount>
      </InvoiceDetailSummary>
    </InvoiceDetailRequest>
  </Request>
</cXML>

Requis vs optionnel

  • HeaderinvoiceID, invoiceDate en #REQUIRED. Les indicateurs sont obligatoires (cardinalité 1) même si tous leurs attributs sont par défaut.
  • Orders ou Header Orders — au moins un, jamais les deux.
  • Summary — cardinalité 1, avec SubtotalAmount, Tax et NetAmount obligatoires.
  • InvoiceDetailItemUnitOfMeasure, UnitPrice, InvoiceDetailItemReference en cardinalité 1. SubtotalAmount et NetAmount sont optionnels au niveau ligne, mais en pratique systématiquement présents.

Patterns courants

Facture multi-commandes : répéter InvoiceDetailOrder, chacun avec son OrderReference. Les lignes peuvent venir de bons différents.

Crédit ligne : purpose="lineLevelCreditMemo" sur le header, DocumentReference obligatoire vers la facture d'origine, reason="return" sur les InvoiceDetailItem crédités, et leurs SubtotalAmount/NetAmount doivent être négatifs.

Facture services : utiliser InvoiceDetailServiceItem au lieu de InvoiceDetailItem. Le DTD garde l'exclusivité par item (un InvoiceDetailOrder ne mêle pas articles et services).

Documentation