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 QuoteMessage / QuoteRequest

B2B request-for-quote flow. The QuoteRequest is issued by the buyer to candidate suppliers; the QuoteMessage is the price proposal each supplier returns — potentially several times if the negotiation or auction extends.

Purpose

The QuoteRequest/QuoteMessage pair models a tender: the buyer publishes a need (volumes, dates, specs) and one or more suppliers reply with their price-and-lead-time proposals. The type attribute on QuoteMessageHeader is #REQUIRED and takes five values: accept (accept the latest proposal), reject, update (new proposal during negotiation), final (final proposal once the event closes), award (buyer awards the contract to this supplier).

The quoteReceivingPreference attribute on QuoteRequestHeader controls when the buyer wants to receive QuoteMessage entries from the sourcing system: winningOnly, finalBidsFromAll, or all (as bids come in).

XML structure

QuoteRequest

The DTD: QuoteRequest (QuoteRequestHeader, QuoteItemOut*). QuoteRequestHeader content: (Name?, SupplierSelector?, Total?, Description?, ShipTo?, Contact*, Comments?, QuoteHeaderInfo?, Extrinsic*, QuoteRequestHeaderIndustry?). No element required by cardinality.

#REQUIRED attributes: requestID, requestDate, openDate, closeDate, currency, xml:lang. So every RFQ has a mandatory time window and a fixed language+currency.

QuoteMessage

The DTD: QuoteMessage (QuoteMessageHeader, QuoteItemIn*). QuoteMessageHeader content: (OrganizationID, Total, ShipTo?, Contact*, QuoteRequestReference?, Comments?, QuoteHeaderInfo?, SupplierProductionFacilityRelations?, Extrinsic*). Two required elements: OrganizationID (the bidding supplier's identity) and Total (the proposed amount).

#REQUIRED attributes on QuoteMessageHeader: type, quoteID, quoteDate, currency, xml:lang.

QuoteItemIn

The DTD: QuoteItemIn (ItemID?, ItemDetail, ShipTo?, Shipping?, Tax?, SpendDetail?, Total?, TermsOfDelivery?, ReferenceDocumentInfo*, Contact*, Comments?, Alternative?, SupplierProductionFacilityRelations?, Extrinsic*). Only ItemDetail is required by cardinality; ItemID is optional but always present in practice.

Attributes: type #REQUIRED (same five values as QuoteMessageHeader), quantity #REQUIRED, lineNumber #IMPLIED, rank to position the bid when multiple suppliers are compared.

xml quote-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="260510.100000.qreq@buyer.example"
      timestamp="2026-05-10T10:00:00+00:00"
      version="1.2.069">
  <Header>
    <From>
      <Credential domain="DUNS"><Identity>123456789</Identity></Credential>
    </From>
    <To>
      <Credential domain="DUNS"><Identity>987654321</Identity></Credential>
    </To>
    <Sender>
      <Credential domain="DUNS">
        <Identity>123456789</Identity>
        <SharedSecret>shared-secret-here</SharedSecret>
      </Credential>
      <UserAgent>ediverse-sourcing/1.0</UserAgent>
    </Sender>
  </Header>
  <Request>
    <QuoteRequest>
      <QuoteRequestHeader requestID="RFQ-2026-0017"
                          requestDate="2026-05-10T10:00:00+00:00"
                          type="new"
                          openDate="2026-05-10T10:00:00+00:00"
                          closeDate="2026-05-17T18:00:00+00:00"
                          currency="USD"
                          xml:lang="en">
        <Name xml:lang="en">Office chair tender Q3 2026</Name>
        <Description xml:lang="en">RFQ for 500 ergonomic chairs</Description>
      </QuoteRequestHeader>
      <QuoteItemOut quantity="500" lineNumber="1">
        <ItemID>
          <SupplierPartID>RFQ-LINE-1</SupplierPartID>
        </ItemID>
        <ItemDetail>
          <UnitPrice><Money currency="USD">0.00</Money></UnitPrice>
          <Description xml:lang="en">Ergonomic office chair with lumbar support</Description>
          <UnitOfMeasure>EA</UnitOfMeasure>
          <Classification domain="UNSPSC">56101504</Classification>
        </ItemDetail>
      </QuoteItemOut>
    </QuoteRequest>
  </Request>
</cXML>
xml quote-message.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="260515.140000.qmsg@supplier.example"
      timestamp="2026-05-15T14: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-sourcing/1.0</UserAgent>
    </Sender>
  </Header>
  <Message>
    <QuoteMessage>
      <QuoteMessageHeader type="final"
                          quoteID="Q-2026-0042"
                          quoteDate="2026-05-15T14:00:00+00:00"
                          currency="USD"
                          xml:lang="en">
        <OrganizationID>
          <Credential domain="DUNS"><Identity>987654321</Identity></Credential>
        </OrganizationID>
        <Total>
          <Money currency="USD">12500.00</Money>
        </Total>
        <QuoteRequestReference requestID="17" requestDate="2026-05-10T10:00:00+00:00">
          <DocumentReference payloadID="260510.100000.qreq@buyer.example"/>
        </QuoteRequestReference>
      </QuoteMessageHeader>
      <QuoteItemIn type="update" quantity="500" lineNumber="1">
        <ItemID>
          <SupplierPartID>SKU-A100</SupplierPartID>
        </ItemID>
        <ItemDetail>
          <UnitPrice><Money currency="USD">25.00</Money></UnitPrice>
          <Description xml:lang="en">Ergonomic chair, black — supplier proposal</Description>
          <UnitOfMeasure>EA</UnitOfMeasure>
          <Classification domain="UNSPSC">56101504</Classification>
          <LeadTime>14</LeadTime>
        </ItemDetail>
        <Total>
          <Money currency="USD">12500.00</Money>
        </Total>
      </QuoteItemIn>
    </QuoteMessage>
  </Message>
</cXML>

Required vs optional

  • QuoteRequestHeader — 6 #REQUIRED attributes: requestID, requestDate, openDate, closeDate, currency, xml:lang. type defaults to "new". Content: zero element required by cardinality.
  • QuoteMessageHeader — 5 #REQUIRED attributes: type, quoteID, quoteDate, currency, xml:lang. Content: OrganizationID and Total required.
  • QuoteItemIntype and quantity are #REQUIRED. Content: ItemDetail required.

Common patterns

Multi-round negotiation: each intermediate proposal is a QuoteMessage type="update". The final proposal after closure is type="final". The award (buyer's commitment) flows through a QuoteMessage type="award" — this one emitted by the buyer.

Link back to the original RFQ: use QuoteRequestReference with its DocumentReference. The DTD also accepts redundant requestID/requestDate attributes to enable standalone processing.

Variants / alternatives: a supplier can propose a different item through the Alternative element inside QuoteItemIn. Handy for substitute parts or next-generation models.

Documentation