ECGrid Simplify
Canonical Warehouse Shipping Order Format Specification
Version: 1.0 Date: May 26, 2026 Owner: ECGrid Product
1. Purpose
This document defines the canonical Warehouse Shipping Order format used by ECGrid Simplify. It is the single source of truth for warehouse shipping order structure, field definitions, data types, length limits, required fields, and serialization rules across XML and JSON.
The Warehouse Shipping Order (WSO) is an internal fulfillment document that directs warehouse operations to pick, pack, and ship goods to customers. It includes order details, shipping instructions, product information, and regulatory compliance data. Both XML and JSON representations convey the same logical order. A JSON Schema (Simplify_Warehouse_Shipping_Order.schema.json) provides machine-enforceable validation. This document is the human-readable companion.
2. Scope
In scope:
- Warehouse shipping order document structure (header and line items).
- Field-level definitions, data types, length limits, and validation rules.
- Canonical XML and JSON representations.
- Order references, party identification, and fulfillment instructions.
- Product identification, packaging, and regulatory compliance fields.
- Shipping dates, transportation codes, and delivery routing information.
Out of scope:
- Transport (HTTPS, AS2, SFTP). Covered in ECGrid Simplify API docs.
- Warehouse management system (WMS) internal processing and picking logic.
- Inventory control and stock allocation algorithms.
- Quality control and damage assessment procedures.
3. Document Structure
A Warehouse Shipping Order payload contains a single order. The order has a header section with order metadata, party information, shipping instructions, and one or more line items representing products to be picked and shipped.
- Top-level shape:
warehouseShippingOrderMessage
└── warehouseShippingOrder (required, exactly one)
├── header (required information)
│ ├── tradingPartnerId
│ ├── documentId / orderNumber
│ ├── poNumber / poDate
│ ├── vendorId / consumerId
│ └── shipping instructions & regulatory fields
├── shipTo, shipFrom, billTo, warehouse (party blocks)
├── dateInformation (shipping dates)
└── lineItem[] (1..n products to ship)
4. Header Fields
The header section contains order and fulfillment metadata.
Field | Type | Length | Req | Description | Example |
tradingPartnerId | string | 1–35 | Yes | ECGrid trading partner identifier. Routes the document. | SEV2TEST01 |
documentId | string | 1–35 | Yes | Unique identifier for this shipping order document. | WSO-2026-05-001 |
userId | string | 1–35 | No | User ID of the person creating the order. | USER456 |
sender | string | 2–17 | Yes | Sender ID (typically order source/buyer) in qualifier namespace. | SEV2TEST02 |
senderQualifier | string | 1–4 | Yes | Qualifier for sender ID (e.g. SE, ZZ, 01, 14). | SE |
receiver | string | 2–17 | Yes | Receiver ID (warehouse) in the qualifier namespace. | SEV2TEST01 |
receiverQualifier | string | 1–4 | Yes | Qualifier for receiver ID. | SE |
groupSender | string | 1–9 | No | EDI functional group sender ID. | 1 |
groupReceiver | string | 1–9 | No | EDI functional group receiver ID. | 1 |
orderNumber | string | 1–35 | Yes | Warehouse shipping order number (internal). | ORD-2026-05-12345 |
orderType | string | 1–3 | No | Order type code (e.g., 01=Standard, 02=Express, 03=Expedited). | 01 |
poNumber | string | 1–22 | No | Associated purchase order number. | 123456 |
poDate | string | 8 | No | Purchase order date. YYYYMMDD. | 20260520 |
vendorId | string | 1–35 | No | Vendor/supplier identifier. | VEND12345 |
consumerId | string | 1–35 | No | End consumer or customer identifier. | CUST-789 |
departmentNumber | string | 1–10 | No | Department or cost center number. | DEPT-001 |
priorityRating | string | 1–3 | No | Priority rating code (e.g., 01=Normal, 02=High, 03=Urgent). | 01 |
paymentMethod | string | 1–35 | No | Payment method description or code. | Credit Card |
transportationCode | string | 1–3 | No | Transportation method code (e.g., OTR, AIR, RAIL). | OTR |
routing | string | 1–80 | No | Routing instructions or carrier routing string. | ORIGIN > HUB > DEST |
scac | string | 2–4 | No | Standard Carrier Alpha Code. | SAIA |
amount | number | 1–17 | No | Total order amount. | 5250.75 |
billOfLadingNote | string | 1–255 | No | Special BOL instructions or notes. | Fragile - Handle with care |
headerPackagingInstructions | string | 1–255 | No | Order-level packaging instructions. | Use eco-friendly packaging |
footerPackagingInstructions | string | 1–255 | No | Additional footer-level packaging notes. | Include promotional materials |
labelInstructions | string | 1–255 | No | Special labeling instructions. | Add gift message sticker |
5. Regulatory and Compliance Fields
Optional fields supporting regulatory compliance for controlled substances and pharmaceuticals.
Field | Type | Length | Req | Description | Example |
providerControlNumber | string | 1–35 | No | Provider or DEA control number for compliance. | DEA-1234567 |
providerControlDate | string | 8 | No | Date of provider control issuance. YYYYMMDD. | 20260101 |
eudPractitioner | string | 1–35 | No | European Union Directive practitioner identifier. | PRACT-001 |
customerType | string | 1–20 | No | Type of customer (e.g., Hospital, Pharmacy, Retail). | Pharmacy |
stateControlledSubstanceLicenseNumber | string | 1–35 | No | State controlled substance license number. | STATE-CSL-001 |
precursorExportPermitNumber | string | 1–35 | No | Precursor chemical export permit number. | PERMIT-PREC-001 |
narcoticExportPermitNumber | string | 1–35 | No | Narcotic export permit number. | PERMIT-NARC-001 |
signingPractitioner | string | 1–60 | No | Name or ID of authorized signing practitioner. | Dr. John Smith |
merchandiseNumber | string | 1–35 | No | Merchandise or product classification number. | MERCH-001 |
vendorNumber | string | 1–35 | No | Vendor number for regulatory tracking. | VEND-REG-001 |
sapOrderNumber | string | 1–35 | No | SAP (Systems, Applications, Products) order number. | SAP-ORD-12345 |
6. Party Address Block
The same party structure is used for shipTo, shipFrom, billTo, and warehouse. These identify the shipping parties and warehouse location.
Field | Type | Length | Req | Description | Example |
partyIdentification | string | 1–80 | Yes | Party identifier value (DUNS, GLN, internal code, etc.). | 12345 |
partyIdentificationTypeCode | string | 1–5 | Yes | Qualifier for the identifier (e.g. 92=internal, 1=DUNS, UL=GLN). | 92 |
name | string | 1–60 | Yes | Legal name of the party. | Acme Distribution |
name2 | string | 1–60 | No | Secondary name line. | East Coast Facility |
name3 | string | 1–60 | No | Tertiary name line. |
|
streetAddress1 | string | 1–55 | Yes | Street address line 1. | 789 Warehouse Way |
streetAddress2 | string | 1–55 | No | Street address line 2. | Building C |
streetAddress3 | string | 1–55 | No | Street address line 3. |
|
city | string | 2–30 | Yes | City. | Newark |
cityCode | string | 1–10 | No | City code if applicable. |
|
stateCode | string | 2 | No | State or province code. 2 chars for US/CA. | NJ |
postalCode | string | 3–15 | Yes | Postal/ZIP code. | 07101 |
countryCode | string | 2 | Yes | ISO 3166-1 alpha-2 country code. 2 chars exact. | US |
vatNumber | string | 1–20 | No | VAT/Tax ID number for the party. |
|
7. Date Information
Dates for order issuance, shipping deadlines, and estimated delivery.
Field | Type | Length | Req | Description | Example |
dateInformation.issuedDate.dateCode | string | 1–3 | No | Date code qualifier (e.g., 007=Effective). | 007 |
dateInformation.issuedDate.date | string | 8 | No | Order issuance date. YYYYMMDD. | 20260520 |
dateInformation.issuedDate.time | string | 0 or 4 | No | Order issuance time. HHMM (24-hour) or empty. | 1430 |
dateInformation.estimatedDeliveryDate.dateCode | string | 1–3 | No | Date code for estimated delivery. | 007 |
dateInformation.estimatedDeliveryDate.date | string | 8 | No | Estimated delivery date. YYYYMMDD. | 20260601 |
dateInformation.estimatedDeliveryDate.time | string | 0 or 4 | No | Estimated delivery time or empty. | 0900 |
dateInformation.requestedShipDateRange.beginDate | string | 8 | No | Requested shipment period start. YYYYMMDD. | 20260525 |
dateInformation.requestedShipDateRange.endDate | string | 8 | No | Requested shipment period end. YYYYMMDD. | 20260531 |
8. Line Item
The lineItem array contains one or more items to be picked, packed, and shipped. Each item includes product information, quantities, pricing, and packing instructions.
Field | Type | Length | Req | Description | Example |
lineItemNumber | integer | 1–6 | Yes | Sequential line number within the order. | 1 |
detail.quantity | number | 1–15 | Yes | Quantity to ship. Decimals allowed. | 500.0 |
detail.quantityUOM | string | 2–3 | Yes | Unit of measure (e.g. EA=Each, CS=Case, LB=Pound). | EA |
detail.supplierAssignedPartNumber | string | 1–48 | Yes | Supplier's part number for the item. | VN123456789 |
detail.gtin12 | string | 12 | No | Global Trade Item Number (GTIN-12/UPC). | 123456789012 |
detail.ndc | string | 1–20 | No | National Drug Code (for pharmaceutical items). | NDC-001 |
detail.lockCode | string | 1–35 | No | Lock or security code for serialized items. | LOCK-123 |
detail.poLineItemNumber | integer | 1–6 | No | Reference line number from PO. | 5 |
detail.productStatus | string | 1–20 | No | Product status (e.g., New, Refurbished, Used). | New |
detail.lotNumber | string | 1–35 | No | Lot or batch number. | LOT-2026-05 |
detail.netPricePerUnit | number | 1–17 | No | Net price per unit. | 45.99 |
detail.netPricePerLine | number | 1–17 | No | Net price for the entire line. | 22995.00 |
detail.packingDetail.pack | integer | 1–6 | No | Pack number or ID. | 1 |
detail.packingDetail.size | string | 1–35 | No | Pack size or dimensions. | 5-inch |
detail.packingDetail.uom | string | 2–3 | No | Unit of measure for pack size. | IN |
detail.packagingInstructions | string | 1–255 | No | Special packaging instructions for this line item. | Individually wrap each unit |
detail.billOfLadingNote | string | 1–255 | No | BOL notes specific to this line item. | Fragile contents |
detail.partDescription.partDescription | string | 1–255 | No | Text description of the product. | Blue nylon widget, 5-inch |
9. Naming Conventions
- XML: PascalCase for all element names (e.g. WarehouseShippingOrder, LineItemNumber, QuantityUOM).
- JSON: camelCase for all field names (e.g. warehouseShippingOrder, lineItemNumber, quantityUOM).
- Field semantics and length limits are identical across both. Only casing differs.
- Empty optional values in XML use self-closing tags (e.g. <LotNumber/>). In JSON, use empty string or null.
10. XML Example
<WarehouseShippingOrderMessage>
<WarehouseShippingOrder>
<TradingPartnerId>SEV2TEST01</TradingPartnerId>
<DocumentId>WSO-2026-05-001</DocumentId>
<SenderQualifier>SE</SenderQualifier>
<Sender>SEV2TEST02</Sender>
<ReceiverQualifier>SE</ReceiverQualifier>
<Receiver>SEV2TEST01</Receiver>
<OrderNumber>ORD-2026-05-12345</OrderNumber>
<OrderType>01</OrderType>
<PONumber>123456</PONumber>
<PODate>20260520</PODate>
<VendorId>VEND12345</VendorId>
<ConsumerId>CUST-789</ConsumerId>
<DepartmentNumber>DEPT-001</DepartmentNumber>
<PriorityRating>01</PriorityRating>
<TransportationCode>OTR</TransportationCode>
<SCAC>SAIA</SCAC>
<Amount>5250.75</Amount>
<BillOfLadingNote>Fragile - Handle with care</BillOfLadingNote>
<HeaderPackagingInstructions>Use eco-friendly packaging</HeaderPackagingInstructions>
<DateInformation>
<IssuedDate>
<Date>20260520</Date>
<Time>1430</Time>
</IssuedDate>
<EstimatedDeliveryDate>
<Date>20260601</Date>
<Time>0900</Time>
</EstimatedDeliveryDate>
<RequestedShipDateRange>
<BeginDate>20260525</BeginDate>
<EndDate>20260531</EndDate>
</RequestedShipDateRange>
</DateInformation>
<ShipTo>
<PartyIdentification>12345-STORE</PartyIdentification>
<PartyIdentificationTypeCode>92</PartyIdentificationTypeCode>
<Name>Acme Store #5</Name>
<StreetAddress1>555 Retail Road</StreetAddress1>
<City>New York</City>
<StateCode>NY</StateCode>
<PostalCode>10001</PostalCode>
<CountryCode>US</CountryCode>
</ShipTo>
<ShipFrom>
<PartyIdentification>12345-WH</PartyIdentification>
<PartyIdentificationTypeCode>92</PartyIdentificationTypeCode>
<Name>Acme Warehouse East</Name>
<StreetAddress1>789 Warehouse Way</StreetAddress1>
<City>Newark</City>
<StateCode>NJ</StateCode>
<PostalCode>07101</PostalCode>
<CountryCode>US</CountryCode>
</ShipFrom>
<Warehouse>
<PartyIdentification>12345-WH</PartyIdentification>
<PartyIdentificationTypeCode>92</PartyIdentificationTypeCode>
<Name>Acme Warehouse East</Name>
<StreetAddress1>789 Warehouse Way</StreetAddress1>
<City>Newark</City>
<StateCode>NJ</StateCode>
<PostalCode>07101</PostalCode>
<CountryCode>US</CountryCode>
</Warehouse>
<LineItem>
<LineItemNumber>1</LineItemNumber>
<Detail>
<Quantity>500.0</Quantity>
<QuantityUOM>EA</QuantityUOM>
<SupplierAssignedPartNumber>VN123456789</SupplierAssignedPartNumber>
<Gtin-12>123456789012</Gtin-12>
<POLineItemNumber>5</POLineItemNumber>
<ProductStatus>New</ProductStatus>
<LotNumber>LOT-2026-05</LotNumber>
<NetPricePerUnit>45.99</NetPricePerUnit>
<NetPricePerLine>22995.00</NetPricePerLine>
<PackagingInstructions>Individually wrap each unit</PackagingInstructions>
<BillOfLadingNote>Fragile contents</BillOfLadingNote>
<PartDescription>
<PartDescription>Blue nylon widget, 5-inch</PartDescription>
</PartDescription>
<PackingDetail>
<Pack>1</Pack>
<Size>5-inch</Size>
<UOM>IN</UOM>
</PackingDetail>
</Detail>
</LineItem>
</WarehouseShippingOrder>
</WarehouseShippingOrderMessage>
11. JSON Example
{
"warehouseShippingOrderMessage": {
"warehouseShippingOrder": {
"tradingPartnerId": "SEV2TEST01",
"documentId": "WSO-2026-05-001",
"senderQualifier": "SE",
"sender": "SEV2TEST02",
"receiverQualifier": "SE",
"receiver": "SEV2TEST01",
"orderNumber": "ORD-2026-05-12345",
"orderType": "01",
"poNumber": "123456",
"poDate": "20260520",
"vendorId": "VEND12345",
"consumerId": "CUST-789",
"departmentNumber": "DEPT-001",
"priorityRating": "01",
"transportationCode": "OTR",
"scac": "SAIA",
"amount": 5250.75,
"billOfLadingNote": "Fragile - Handle with care",
"headerPackagingInstructions": "Use eco-friendly packaging",
"dateInformation": {
"issuedDate": {
"date": "20260520",
"time": "1430"
},
"estimatedDeliveryDate": {
"date": "20260601",
"time": "0900"
},
"requestedShipDateRange": {
"beginDate": "20260525",
"endDate": "20260531"
}
},
"shipTo": {
"partyIdentification": "12345-STORE",
"partyIdentificationTypeCode": "92",
"name": "Acme Store #5",
"streetAddress1": "555 Retail Road",
"city": "New York",
"stateCode": "NY",
"postalCode": "10001",
"countryCode": "US"
},
"shipFrom": {
"partyIdentification": "12345-WH",
"partyIdentificationTypeCode": "92",
"name": "Acme Warehouse East",
"streetAddress1": "789 Warehouse Way",
"city": "Newark",
"stateCode": "NJ",
"postalCode": "07101",
"countryCode": "US"
},
"warehouse": {
"partyIdentification": "12345-WH",
"partyIdentificationTypeCode": "92",
"name": "Acme Warehouse East",
"streetAddress1": "789 Warehouse Way",
"city": "Newark",
"stateCode": "NJ",
"postalCode": "07101",
"countryCode": "US"
},
"lineItem": [
{
"lineItemNumber": 1,
"detail": {
"quantity": 500.0,
"quantityUOM": "EA",
"supplierAssignedPartNumber": "VN123456789",
"gtin12": "123456789012",
"poLineItemNumber": 5,
"productStatus": "New",
"lotNumber": "LOT-2026-05",
"netPricePerUnit": 45.99,
"netPricePerLine": 22995.00,
"packagingInstructions": "Individually wrap each unit",
"billOfLadingNote": "Fragile contents",
"partDescription": {
"partDescription": "Blue nylon widget, 5-inch"
},
"packingDetail": {
"pack": 1,
"size": "5-inch",
"uom": "IN"
}
}
}
]
}
}
}
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article