Canonical Warehouse Shipping Order Implementation Guide and Specifications

Modified on Tue, May 26 at 9:41 AM

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

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article