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 ShipNoticeRequest

The cXML equivalent of an EDIFACT DESADV Advance Ship Notice. Announces that an order has shipped from the supplier — or is planned to ship — with transport, packaging and per-line shipment information.

Purpose

ShipNoticeRequest informs the buyer that a shipment is on its way: it lets the buyer's supply chain plan reception, pre-allocate storage locations and reconcile expected deliveries with purchase orders. The shipmentType attribute distinguishes "actual" (already departed) from "planned" (announced but not yet shipped).

Three operations via the operation attribute: new (default), update (correct a previous ASN), delete (cancel a planned shipment that will not happen). An update replaces the previous version entirely.

XML structure

The DTD: ShipNoticeRequest (ShipNoticeHeader, ShipControl*, ShipNoticePortion*). ShipControl's repeatability lets you describe multi-leg transport with different carriers per leg (each subsequent element must carry a startDate). ShipNoticePortion's repeatability lets a single shipment cover multiple OrderRequest documents.

ShipNoticeHeader

Content: ShipNoticeHeader (ServiceLevel*, DocumentReference?, Contact*, LegalEntity?, OrganizationalUnit*, Hazard*, Comments*, TermsOfDelivery?, TermsOfTransport*, Packaging?, Extrinsic*, IdReference*, ReferenceDocumentInfo*). No element is required by content; shipmentID and noticeDate attributes are #REQUIRED.

ShipControl

Content: ShipControl (CarrierIdentifier+, ShipmentIdentifier+, PackageIdentification?, (Route|TransportInformation)*, Contact*, Comments*, Extrinsic*). So at least one CarrierIdentifier and at least one ShipmentIdentifier (typically the carrier tracking number). CarrierIdentifier carries a required domain attribute (SCAC, DUNS, etc.).

ShipNoticePortion

Content: ShipNoticePortion (OrderReference, (MasterAgreementReference | MasterAgreementIDInfo)?, Contact*, Comments*, Extrinsic*, ShipNoticeItem*, ReferenceDocumentInfo*). OrderReference is required (the DTD is explicit: a given OrderRequest can only appear inside one ShipNoticePortion). If no ShipNoticeItem is listed, the shipment covers the entire referenced order.

xml ship-notice-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="260516.080000.asn@supplier.example"
      timestamp="2026-05-16T08: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-wms/4.0</UserAgent>
    </Sender>
  </Header>
  <Request>
    <ShipNoticeRequest>
      <ShipNoticeHeader shipmentID="SHIP-2026-00456"
                        operation="new"
                        noticeDate="2026-05-16T08:00:00+00:00"
                        shipmentDate="2026-05-16T07:30:00+00:00"
                        deliveryDate="2026-05-18T10:00:00+00:00"
                        shipmentType="actual"
                        fulfillmentType="partial">
        <ServiceLevel xml:lang="en">Ground 48h</ServiceLevel>
        <Comments xml:lang="en">Partial shipment, line 2 to follow.</Comments>
      </ShipNoticeHeader>
      <ShipControl>
        <CarrierIdentifier domain="SCAC">UPSN</CarrierIdentifier>
        <ShipmentIdentifier>1Z999AA10123456784</ShipmentIdentifier>
      </ShipControl>
      <ShipNoticePortion>
        <OrderReference orderID="PO-2026-00789"
                        orderDate="2026-05-13T16:00:00+00:00">
          <DocumentReference payloadID="260513.160000.order@buyer.example"/>
        </OrderReference>
        <ShipNoticeItem quantity="3" lineNumber="1" shipNoticeLineNumber="1">
          <UnitOfMeasure>EA</UnitOfMeasure>
        </ShipNoticeItem>
      </ShipNoticePortion>
    </ShipNoticeRequest>
  </Request>
</cXML>

Required vs optional

  • ShipNoticeHeader attributes: shipmentID, noticeDate are #REQUIRED; operation defaults to "new"; shipmentDate, deliveryDate, shipmentType, fulfillmentType, requestedDeliveryDate, reason, activityStepType are #IMPLIED. Note: shipmentDate and deliveryDate are in practice required except for operation="delete".
  • ShipControl: 0..n. Without any ShipControl you have announced a shipment with no carrier detail — allowed but unusual. CarrierIdentifier and ShipmentIdentifier are 1..n inside it.
  • ShipNoticePortion: 0..n. OrderReference has cardinality 1 inside each portion. ShipNoticeItem is repeatable, with quantity and lineNumber as #REQUIRED.
  • ShipNoticeItem: content (ItemID?, ShipNoticeItemDetail?, UnitOfMeasure, Packaging*, Hazard*, (Batch | SupplierBatchID)*, AssetInfo*, TermsOfDelivery?, OrderedQuantity?, ShipNoticeItemIndustry?, ComponentConsumptionDetails*, ReferenceDocumentInfo*, Comments*, Extrinsic*). Only UnitOfMeasure is required.

Common patterns

Multi-order shipment: one truck-load can consolidate several OrderRequest documents. Emit a single ShipNoticeRequest with multiple ShipNoticePortion elements, one per covered order.

Partial shipment: set fulfillmentType="partial" on the header. A new ShipNoticeRequest with a different shipmentID will be emitted for the second part. The sum of quantity across all ShipNoticeItem elements must not exceed the ordered quantity.

Returns: reason="return" with reversed From/To (buyer → supplier) notifies a goods return.

Documentation