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 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
- Header —
invoiceID,invoiceDateen#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,TaxetNetAmountobligatoires. - InvoiceDetailItem —
UnitOfMeasure,UnitPrice,InvoiceDetailItemReferenceen cardinalité 1.SubtotalAmountetNetAmountsont 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
- InvoiceDetail.dtd — version courante
— chercher
ELEMENT InvoiceDetailRequest,InvoiceDetailRequestHeader,InvoiceDetailOrder,InvoiceDetailItem,InvoiceDetailSummary. - cXML Reference Guide (PDF) — chapitre Invoice Detail, structures fiscales (TVA, retenues, etc.).
- OrderRequest
— la commande référencée par
InvoiceDetailOrderInfo.