cXML Order Confirmations

ConfirmationRequest

The cXML ConfirmationRequest document is used to confirm receipt of an order and provide additional information about the status of the order.

The ConfirmationRequest document is typically sent from the supplier’s eCommerce/ERP system to the buyer’s eProcurement system. The ConfirmationRequest and child elements are defined in cXML Fulfill.dtd rather than the cXML.dtd.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.040/Fulfill.dtd">
<cXML payloadID="1539635340.3061645@example.com" timestamp="2019-01-01T12:34:56+00:00">
  <Header>
    <!-- credentials go here -->
  </Header>
  <Request>
    <ConfirmationRequest>
      <ConfirmationHeader confirmID="7890" operation="new" type="detail" noticeDate="2019-01-01T12:34:56+0000">
    	  <!-- Total/Shipping/Tax elements go here -->
      </ConfirmationHeader>
      <OrderReference orderID="123456" orderDate="2019-08-20T20:40:31Z">
        <DocumentReference payloadID="1566333631.955367.15293@example.com"/>
      </OrderReference>
      <ConfirmationItem quantity="1" lineNumber="1">
    	  <!-- UnitOfMeasure/ConfirmationStatus elements go here -->
      </ConfirmationItem>
    </ConfirmationRequest>
  </Request>
</cXML>

Credentials

See the Credentials section of the cXML Overview for more information.

ConfirmationHeader

The ConfirmationHeader element contains header-level information for the confirmation.

The following attributes on the ConfirmationHeader element should be included/processed:

  • confirmID - The supplier’s id for the confirmation (optional)

  • operation - new for new confirmations, update to update a confirmation sent previously. If the attribute is not present a value of new is implied.

  • noticeDate - the date and time the confirmation was created

  • version - a version number for the document. Should start at 1 and increment by 1 with each revision

ConfirmationHeader[@type]

The ConfirmationHeader[@type] attribute indicates the type of confirmation which dictates how the ConfirmationItem elements should be interpreted. The most value for this attribute is detail. For simplicity, it is recommended that eCommerce exclusively use the detail type. Support for other attributes varies by eProcurement system.

The following types apply a status to all line items on the order. ConfirmationItem elements should not be present if one of these types are used.

  • accept - the entire order is accepted

  • backordered - the entire order is backordered

  • reject - the entire order is rejected

The following types update statuses of individual line items and require ConfirmationItem elements to be present in the document.

  • detail - the items specified in the ConfirmationItem elements are updated. Any items on the order that are not in ConfirmationItem elements are not updated.

  • allDetail - similar to detail but will also include statuses that have not changed. This type is not widely supported.

  • except - the entire order is accepted with exceptions listed in ConfirmationItem elements

  • replace - the entire order is replaced

There is also a requestToPay type that can be sent by the supplier to request payment for the entire order or certain line items. This type is not widely supported.

Total / Shipping / Tax

Tax and Shipping amounts may be updated (included in the confirmation with new values) without corresponding ConfirmationItem elements. Total should not be included with a different value from the OrderRequest document unless ConfirmationItem elements are present with a new UnitPrice or quantity. Total, Tax and Shipping elements should not be included if they match those amounts in the original order.

OrderReference

Each ConfirmationRequest document can only provide status information for a single order. The OrderReference element provides a reference to a prior OrderRequest document. This is typically done by providing the order number from the OrderRequestHeader[orderID] in the OrderReference[@orderID] attribute. A DocumentReference element can also be included that provides the cXML[@payloadID] from the original cXML Order. It is recommended that both identifiers are included for increased compatibility.

<OrderReference orderID="123456" orderDate="2019-01-01T12:34:45Z">
  <DocumentReference payloadID="1566333631.955367.15293@example.com"/>
</OrderReference>

ConfirmationItem’s

ConfirmationItem elements should be present to provide status information for individual line items in the order when the ConfirmationHeader[@type] attribute is set to detail, allDetail, or except.

ConfirmationItem[@lineNumber] must be set to the line number of the item in the order (OrderRequest/ItemOut[@lineNumber]).

Multiple ConfirmationStatus elements can be included per line item to indicate that there are different statuses for portions of the total quantity of the line item. The ConfirmationItem[@quantity] should add up to the sum of the child ConfirmationStatus[@quantity] elements.

Accepted/Rejected Items

Items that are being accepted or rejected by the supplier can be sent with a ConfirmationStatus[@type] value of accept or reject, respectively. When a portion of a line item is being accepted or rejected, the ConfirmationItem/UnitOfMeasure should match the ConfirmationStatus/UnitOfMeasure.

<ConfirmationItem quantity="1" lineNumber="1">
  <UnitOfMeasure>EA</UnitOfMeasure>
  <ConfirmationStatus quantity="1" type="accept">
    <UnitOfMeasure>EA</UnitOfMeasure>
  </ConfirmationStatus>
</ConfirmationItem>

Backordered Items

Backordered items can be specified by setting the ConfirmationStatus[@type] to backordered. The ConfirmationStatus[@shipmentDate] and ConfirmationStatus[@deliveryDate] attributes can also be included to provide shipment and delivery dates.

<ConfirmationItem quantity="1" lineNumber="1">
  <UnitOfMeasure>EA</UnitOfMeasure>
  <ConfirmationStatus quantity="1" type="backordered" shipmentDate="2019-01-05T12:00:00+0000" deliveryDate="2019-01-07T12:00:00+0000">
    <UnitOfMeasure>EA</UnitOfMeasure>
  </ConfirmationStatus>
</ConfirmationItem>

Updated Items

Portions of items can be updated by setting the ConfirmationStatus[@type] to detail and providing additional elements describing the changes. Updates generally fall into one of 3 categories: updating delivery dates, updating pricing and substituting items.

Updating Pricing

The UnitPrice, Tax, and Shipping elements can be included to update pricing for a portion of the item.

<ConfirmationItem quantity="5" lineNumber="1">
  <UnitOfMeasure>EA</UnitOfMeasure>
  <ConfirmationStatus quantity="5" type="detail">
    <UnitOfMeasure>EA</UnitOfMeasure>
    <UnitPrice>
      <Money currency="USD">12.00</Money>
    </UnitPrice>
    <Tax>
      <Money currency="USD">0.90</Money>
      <Description xml:lang="en-US">Cost of tax, including shipping tax</Description>
    </Tax>
    <Shipping>
      <Money currency="USD">3.00</Money>
      <Description xml:lang="en-US">Cost of shipping, not including shipping tax</Description>
    </Shipping>
    <Comments>Updating shipping cost</Comments>
  </ConfirmationStatus>
</ConfirmationItem>
Substitute Items

The ConfirmationStatus/ItemIn element can be used to specify the details of a substitute item. All of the required fields for ItemIn elements need to be included.

<ConfirmationItem quantity="10" lineNumber="1">
  <UnitOfMeasure>EA</UnitOfMeasure>
  <ConfirmationStatus quantity="10" type="detail">
    <UnitOfMeasure>EA</UnitOfMeasure>
    <ItemIn quantity="10">
      <ItemID>
        <SupplierPartID>300925</SupplierPartID>
        <SupplierPartAuxiliaryID>275451934678936</SupplierPartAuxiliaryID>
      </ItemID>
      <ItemDetail>
        <UnitPrice>
          <Money currency="USD">22.43</Money>
        </UnitPrice>
        <Description xml:lang="en">Swingline 747 Stapler</Description>
        <UnitOfMeasure>EA</UnitOfMeasure>
        <Classification domain="UNSPSC">44121615</Classification>
        <ManufacturerPartID>747</ManufacturerPartID>
        <ManufacturerName>Swingline</ManufacturerName>
      </ItemDetail>
    </ItemIn>
    <Comments>Replacing item with a substitute</Comments>
  </ConfirmationStatus>
</ConfirmationItem>

Multiple Statuses per Line Item

The example below includes multiple ConfirmationStatus elements to indicate that of the 10 items ordered, 5 have been accepted and 5 have been backordered.

<ConfirmationItem quantity="10" lineNumber="1">
  <UnitOfMeasure>EA</UnitOfMeasure>
  <ConfirmationStatus quantity="5" type="accept">
    <UnitOfMeasure>EA</UnitOfMeasure>
  </ConfirmationStatus>
  <ConfirmationStatus quantity="5" type="backordered" shipmentDate="2019-01-05T12:00:00+0000" deliveryDate="2019-01-07T12:00:00+0000">
    <UnitOfMeasure>EA</UnitOfMeasure>
  </ConfirmationStatus>
</ConfirmationItem>

Share