ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

cXML InvoiceDetailRequest

The cXML invoice. Issued by the supplier to the buyer or its invoicing hub. It references one or more orders, details the billed lines with taxes and charges, and establishes the amount due.

Purpose

InvoiceDetailRequest is the B2B invoice in cXML terms: the instrument that claims payment for one or more delivered orders. It supports the standard invoice, credit memo (purpose="creditMemo"), debit memo (purpose="debitMemo") and their line-level variants (lineLevelCreditMemo, lineLevelDebitMemo).

Two modes: detail invoice (default), which lists lines through InvoiceDetailOrder/InvoiceDetailItem, and header invoice (isHeaderInvoice="yes"), which sums up an order at header level through InvoiceDetailHeaderOrder. Header mode is mandatory for whole-document credit/debit memos.

XML structure

The DTD: InvoiceDetailRequest (InvoiceDetailRequestHeader, (InvoiceDetailOrder+ | InvoiceDetailHeaderOrder+), InvoiceDetailSummary). So one fixed shape: a header, then a sequence of InvoiceDetailOrder or InvoiceDetailHeaderOrder (exclusive), then a summary.

InvoiceDetailRequestHeader

Content: InvoiceDetailRequestHeader (InvoiceDetailHeaderIndicator, InvoiceDetailLineIndicator, InvoicePartner*, DocumentReference?, InvoiceIDInfo?, PaymentProposalIDInfo?, InvoiceDetailShipping?, ShipNoticeIDInfo?, (InvoiceDetailPaymentTerm*|PaymentTerm*), PaymentInformation?, Period?, Comments?, IdReference*, Extrinsic*). Both indicators are required by cardinality — even if empty — because they declare structural choices (header vs detail invoice; line-level vs header fields).

Attributes: invoiceID and invoiceDate are #REQUIRED; purpose defaults to "standard" (other values listed above); operation defaults to "new" (alternative "delete").

InvoiceDetailOrder

Content: InvoiceDetailOrder (InvoiceDetailOrderInfo, InvoiceDetailReceiptInfo?, InvoiceDetailShipNoticeInfo?, (InvoiceDetailItem | InvoiceDetailServiceItem)+). At least one line (item or service) is required. InvoiceDetailOrderInfo points to the billed order via OrderReference (or OrderIDInfo, MasterAgreementReference).

For InvoiceDetailItem: invoiceLineNumber and quantity are #REQUIRED. The content requires UnitOfMeasure, UnitPrice and InvoiceDetailItemReference (which links to the source line via lineNumber).

InvoiceDetailSummary

Content: InvoiceDetailSummary (SubtotalAmount, Tax, SpecialHandlingAmount?, ShippingAmount?, GrossAmount?, InvoiceDetailDiscount?, InvoiceHeaderModifications?, InvoiceDetailSummaryLineItemModifications?, TotalCharges?, TotalAllowances?, TotalAmountWithoutTax?, NetAmount, DepositAmount?, DueAmount?, InvoiceDetailSummaryIndustry?). Three required elements: 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+00: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+00:00">
        <InvoiceDetailHeaderIndicator/>
        <InvoiceDetailLineIndicator isTaxInLine="yes"/>
        <InvoicePartner>
          <Contact role="remitTo">
            <Name xml:lang="en">Acme Supplies Ltd — Remittance account</Name>
            <PostalAddress>
              <Street>15 Old Broad Street</Street>
              <City>London</City>
              <PostalCode>EC2N 1HQ</PostalCode>
              <Country isoCountryCode="GB">United Kingdom</Country>
            </PostalAddress>
          </Contact>
          <IdReference identifier="GB123456789" domain="vatID"/>
        </InvoicePartner>
        <PaymentTerm payInNumberOfDays="30"/>
      </InvoiceDetailRequestHeader>
      <InvoiceDetailOrder>
        <InvoiceDetailOrderInfo>
          <OrderReference orderID="PO-2026-00789"
                          orderDate="2026-05-13T16:00:00+00:00">
            <DocumentReference payloadID="260513.160000.order@buyer.example"/>
          </OrderReference>
        </InvoiceDetailOrderInfo>
        <InvoiceDetailItem invoiceLineNumber="1" quantity="3">
          <UnitOfMeasure>EA</UnitOfMeasure>
          <UnitPrice><Money currency="USD">29.99</Money></UnitPrice>
          <InvoiceDetailItemReference lineNumber="1">
            <ItemID>
              <SupplierPartID>SKU-A100</SupplierPartID>
            </ItemID>
            <Description xml:lang="en">Ergonomic office chair, black</Description>
          </InvoiceDetailItemReference>
          <SubtotalAmount><Money currency="USD">89.97</Money></SubtotalAmount>
          <Tax>
            <Money currency="USD">7.20</Money>
            <Description xml:lang="en">Sales tax 8%</Description>
            <TaxDetail purpose="tax" category="sales" percentageRate="8">
              <TaxableAmount><Money currency="USD">89.97</Money></TaxableAmount>
              <TaxAmount><Money currency="USD">7.20</Money></TaxAmount>
            </TaxDetail>
          </Tax>
          <GrossAmount><Money currency="USD">97.17</Money></GrossAmount>
          <NetAmount><Money currency="USD">97.17</Money></NetAmount>
        </InvoiceDetailItem>
      </InvoiceDetailOrder>
      <InvoiceDetailSummary>
        <SubtotalAmount><Money currency="USD">89.97</Money></SubtotalAmount>
        <Tax>
          <Money currency="USD">7.20</Money>
          <Description xml:lang="en">Sales tax 8%</Description>
        </Tax>
        <GrossAmount><Money currency="USD">97.17</Money></GrossAmount>
        <NetAmount><Money currency="USD">97.17</Money></NetAmount>
        <DueAmount><Money currency="USD">97.17</Money></DueAmount>
      </InvoiceDetailSummary>
    </InvoiceDetailRequest>
  </Request>
</cXML>

Required vs optional

  • HeaderinvoiceID, invoiceDate are #REQUIRED. Both indicators are required by cardinality even if every attribute defaults.
  • Orders or Header Orders — at least one, never both.
  • Summary — cardinality 1, with SubtotalAmount, Tax and NetAmount required.
  • InvoiceDetailItemUnitOfMeasure, UnitPrice, InvoiceDetailItemReference are cardinality 1. SubtotalAmount and NetAmount are optional at line level, but always present in practice.

Common patterns

Multi-order invoice: repeat InvoiceDetailOrder, each carrying its own OrderReference. Lines may come from different POs.

Line credit memo: purpose="lineLevelCreditMemo" on the header, a required DocumentReference to the original invoice, reason="return" on credited InvoiceDetailItem entries, and their SubtotalAmount/NetAmount must be negative.

Service invoice: use InvoiceDetailServiceItem rather than InvoiceDetailItem. The DTD enforces per-item exclusivity (an InvoiceDetailOrder does not mix items and services).

Documentation