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 ofnew
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 theConfirmationItem
elements are updated. Any items on the order that are not inConfirmationItem
elements are not updated. -
allDetail
- similar todetail
but will also include statuses that have not changed. This type is not widely supported. -
except
- the entire order is accepted with exceptions listed inConfirmationItem
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>