ECGrid Simplify
Canonical Shipment Information Format Specification
Version: 1.0 Date: May 26, 2026 Owner: ECGrid Product
1. Purpose
This document defines the canonical Shipment Information format used by ECGrid Simplify. It is the single source of truth for shipment information structure, field definitions, data types, length limits, required fields, and serialization rules across XML and JSON.
The Shipment Information (990) document provides detailed logistics and transportation data for shipments in transit or completed. It includes shipment references, equipment details, party information, measurements, and line-item level shipment details including hazardous material information. Both XML and JSON representations convey the same logical shipment data. A JSON Schema (Simplify_Shipment_Information.schema.json) provides machine-enforceable validation. This document is the human-readable companion.
2. Scope
In scope:
- Shipment information document structure (header and detail lines).
- Field-level definitions, data types, length limits, and validation rules.
- Canonical XML and JSON representations.
- Shipment references, equipment details, and weight/volume measurements.
- Party identification and contact information for all shipment parties.
- Hazardous material information, certifications, and regulatory compliance.
Out of scope:
- Transport (HTTPS, AS2, SFTP). Covered in ECGrid Simplify API docs.
- Real-time GPS tracking and location updates.
- Carrier-specific tracking systems and proprietary formats.
- Customs documentation and international border crossing procedures.
3. Document Structure
A Shipment Information payload contains one or more shipments. Each shipment has a header section with shipment metadata, party information, measurements, and one or more detail records representing delivery stops or line-item shipment information.
- Top-level shape:
shipments
└── shipment (required, one or more)
├── header (required information)
│ ├── tradingPartnerID
│ ├── documentId / shipmentId
│ ├── sender / receiver
│ ├── billOfLading / masterBillOfLading
│ └── shipment references & charges
├── billTo (party receiving freight charges)
├── shipmentMeasurements (total)
├── equipmentDetails (trailers, containers)
└── detail[] (1..n delivery stops or line items)
4. Header Fields
The header section contains shipment-level information and references.
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 shipment information document. | SI-2026-05-001 |
userId | string | 1–35 | No | User ID of the person creating the shipment information. | USER789 |
sender | string | 2–17 | Yes | Sender ID (typically carrier) in the qualifier namespace. | SEV2TEST01 |
senderQualifier | string | 1–4 | Yes | Qualifier for sender ID (e.g. SE, ZZ, 01, 14). | SE |
receiver | string | 2–17 | Yes | Receiver ID (typically shipper/buyer) in qualifier namespace. | SEV2TEST02 |
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 |
vendorID | string | 1–35 | No | Vendor/supplier identifier. | VEND12345 |
scac | string | 2–4 | No | Standard Carrier Alpha Code. | SAIA |
shipmentId | string | 1–35 | Yes | Unique shipment identifier for tracking. | SHIP-2026-05-001 |
billofLading | string | 1–35 | No | Bill of Lading number. | BOL-2026-0001 |
masterBillofLading | string | 1–35 | No | Master BOL number (for consolidated shipments). | MBIL-2026-001 |
invoiceNumber | string | 1–22 | No | Associated invoice number. | INV-2026-001 |
purchaseOrderNumber | string | 1–22 | No | Associated purchase order number. | 123456 |
quoteNumber | string | 1–35 | No | Associated quote or rate quote number. | QUOTE-2026-001 |
loadPlaningNumber | string | 1–35 | No | Load planning or consolidation number. | LOAD-2026-001 |
paymentMethod | string | 1–35 | No | Freight payment method (e.g., Prepaid, Collect). | Prepaid |
purposeCode | string | 1–3 | Yes | Purpose of shipment (e.g., 00=Original, 01=Replacement). | 00 |
applicationtype | string | 1–3 | No | Application type code (e.g., 01=Order, 02=Quote). | 01 |
totalCharges | number | 1–17 | No | Total freight charges for the shipment. | 500.00 |
servicePerformedCode | string | 1–3 | No | Service performed code (e.g., 01=Standard, 02=Expedited). | 01 |
shipperId | string | 1–35 | No | Shipper ID or reference number. | SHIP-ID-001 |
5. Shipment Measurements and Equipment
Field | Type | Length | Req | Description | Example |
shipmentMeasurements.ladingQuantity | integer | 1–8 | No | Number of shipping units (pieces, pallets, etc.). | 15 |
shipmentMeasurements.weight | number | 1–15 | No | Total weight of shipment. | 5500.50 |
shipmentMeasurements.weightQualifier | string | 1–2 | No | Weight qualifier (e.g., B=Billable Weight). | B |
shipmentMeasurements.weightUOM | string | 2–3 | No | Unit of measure (e.g., LB=Pounds, KG=Kilograms). | LB |
shipmentMeasurements.volume | number | 1–15 | No | Volume of shipment. | 125.75 |
shipmentMeasurements.volumeUOM | string | 2–3 | No | Unit of measure (e.g., CF=Cubic Feet). | CF |
equipmentDetails.equipmentInitial | string | 1–4 | No | Equipment prefix/company code. | SCAC |
equipmentDetails.equipmentID | string | 1–20 | No | Equipment identifier (e.g., trailer number). | 54321 |
equipmentDetails.equipmentDescriptionCode | string | 1–3 | No | Equipment type code (e.g., TL=Trailer). | TL |
equipmentDetails.equipmentType | string | 1–35 | No | Detailed equipment type description. | 53-foot Dry Van |
equipmentDetails.sealInfo.sealNumber | string | 1–35 | No | Seal number applied to equipment. | SEAL-123456 |
equipmentDetails.sealInfo.sealingParty | string | 1–35 | No | Organization that applied the seal. | Carrier XYZ |
6. Party Address Block
Multiple party types are used in shipment information: billTo (freight recipient), and detail-level parties (shipFrom, shipTo, shipper, ultimateConsignee).
Field | Type | Length | Req | Description | Example |
partyIdentification | string | 1–80 | Yes | Party identifier (DUNS, GLN, internal code, etc.). | 12345 |
partyIdentificationTypeCode | string | 1–5 | Yes | Qualifier for identifier (92=internal, 1=DUNS). | 92 |
name | string | 1–60 | Yes | Legal name of the party. | Acme Logistics |
streetAddress1 | string | 1–55 | Yes | Street address line 1. | 789 Warehouse Way |
city | string | 2–30 | Yes | City. | Newark |
stateCode | string | 2 | No | State or province code. | NJ |
postalCode | string | 3–15 | Yes | Postal/ZIP code. | 07101 |
countryCode | string | 2 | Yes | ISO 3166-1 alpha-2 country code. | US |
dockNumber | string | 1–10 | No | Dock number at location. | DOCK-A1 |
storeNumber | string | 1–10 | No | Store or location number. | STORE-001 |
governmentRefNumber | string | 1–35 | No | Government reference number (passport, license, etc.). | GOV-REF-001 |
tradeRefNumber | string | 1–35 | No | Trade reference number. | TRADE-REF-001 |
7. Detail Line - Delivery Stop Information
The detail array contains one or more delivery stops or shipment line items with stop-specific information and measurements.
Field | Type | Length | Req | Description | Example |
stopSequenceNumber | integer | 1–6 | No | Sequence number of delivery stop. | 1 |
stopReasonCode | string | 1–3 | No | Reason code for stop (e.g., 01=Pickup, 02=Delivery). | 02 |
carrierRefNumber | string | 1–35 | No | Carrier reference number for the stop. | CARR-REF-001 |
customerOrderNumber | string | 1–22 | No | Customer order number. | CUST-ORD-001 |
detail.orderDetail.refId | string | 1–35 | No | Reference ID for order. | REF-001 |
detail.orderDetail.poNum | string | 1–22 | No | Purchase order number. | 123456 |
detail.orderDetail.quantity | number | 1–15 | No | Quantity for this order. | 100.0 |
detail.orderDetail.quantityUOM | string | 2–3 | No | Unit of measure (e.g., EA, CS). | EA |
8. Shipment Details and Hazardous Materials
Line-level shipment details including product descriptions, measurements, and hazardous material information.
Field | Type | Length | Req | Description | Example |
shipmentDetails.packagingCode | string | 1–5 | No | Packaging code (e.g., BOX, PLT, BAG). | BOX |
shipmentDetails.ladingLineItemNumber | integer | 1–6 | No | Lading line item number. | 1 |
shipmentDetails.ladingDescription | string | 1–255 | No | Description of contents being shipped. | Blue widgets, assorted sizes |
shipmentDetails.ladingQuantity | number | 1–15 | No | Quantity at this line. | 100.0 |
shipmentDetails.weight | number | 1–15 | No | Weight of this line. | 550.0 |
shipmentDetails.weightUOM | string | 2–3 | No | Unit of measure (e.g., LB, KG). | LB |
shipmentDetails.nmfcCode | string | 1–6 | No | NMFC (National Motor Freight Classification) code. | 050000 |
shipmentDetails.marks | string | 1–255 | No | Marks or identifying information. | Handle With Care |
shipmentDetails.hazardousInformation.ladingQuantity | number | 1–15 | No | Quantity of hazardous material. | 10.0 |
shipmentDetails.hazardousInformation.classification.id | string | 1–10 | No | Hazard class ID. | 3 |
shipmentDetails.hazardousCertification.certificationName | string | 1–60 | No | Certification name for hazmat. | DOT Compliant |
9. Naming Conventions
- XML: PascalCase for all element names (e.g. ShipmentInformation, ShipmentId, LadingQuantity).
- JSON: camelCase for all field names (e.g. shipmentInformation, shipmentId, ladingQuantity).
- Field semantics and length limits are identical across both. Only casing differs.
- Empty optional values in XML use self-closing tags (e.g. <InvoiceNumber/>). In JSON, use empty string or null.
10. XML Example
<Shipments>
<Shipment>
<TradingPartnerID>SEV2TEST01</TradingPartnerID>
<DocumentId>SI-2026-05-001</DocumentId>
<SenderQualifier>SE</SenderQualifier>
<Sender>SEV2TEST01</Sender>
<ReceiverQualifier>SE</ReceiverQualifier>
<Receiver>SEV2TEST02</Receiver>
<VendorID>VEND12345</VendorID>
<SCAC>SAIA</SCAC>
<ShipmentId>SHIP-2026-05-001</ShipmentId>
<BillofLading>BOL-2026-0001</BillofLading>
<PurchaseOrderNumber>123456</PurchaseOrderNumber>
<TotalCharges>500.00</TotalCharges>
<PurposeCode>00</PurposeCode>
<PaymentMethod>Prepaid</PaymentMethod>
<ShipmentMeasurements>
<LadingQuantity>15</LadingQuantity>
<Weight>5500.50</Weight>
<WeightUOM>LB</WeightUOM>
<Volume>125.75</Volume>
<VolumeUOM>CF</VolumeUOM>
</ShipmentMeasurements>
<EquipmentDetails>
<EquipmentID>54321</EquipmentID>
<EquipmentDescriptionCode>TL</EquipmentDescriptionCode>
<EquipmentType>53-foot Dry Van</EquipmentType>
<SealInfo>
<SealNumber>SEAL-123456</SealNumber>
</SealInfo>
</EquipmentDetails>
<BillTo>
<PartyIdentification>12345</PartyIdentification>
<PartyIdentificationTypeCode>92</PartyIdentificationTypeCode>
<Name>Acme Logistics</Name>
<StreetAddress1>789 Warehouse Way</StreetAddress1>
<City>Newark</City>
<StateCode>NJ</StateCode>
<PostalCode>07101</PostalCode>
<CountryCode>US</CountryCode>
</BillTo>
<Detail>
<StopSequenceNumber>1</StopSequenceNumber>
<StopReasonCode>02</StopReasonCode>
<CustomerOrderNumber>CUST-ORD-001</CustomerOrderNumber>
<ShipFrom>
<PartyIdentification>54321</PartyIdentification>
<PartyIdentificationTypeCode>92</PartyIdentificationTypeCode>
<Name>Widget Supplier</Name>
<StreetAddress1>456 Oak Ave</StreetAddress1>
<City>Springfield</City>
<StateCode>IL</StateCode>
<PostalCode>62701</PostalCode>
<CountryCode>US</CountryCode>
</ShipFrom>
<ShipTo>
<PartyIdentification>12345-001</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>
<DockNumber>DOCK-A1</DockNumber>
</ShipTo>
<OrderDetail>
<PONum>123456</PONum>
<Quantity>100.0</Quantity>
<QuantityUOM>EA</QuantityUOM>
</OrderDetail>
<ShipmentDetails>
<PackagingCode>BOX</PackagingCode>
<LadingDescription>Blue widgets, assorted sizes</LadingDescription>
<LadingQuantity>100.0</LadingQuantity>
<Weight>550.0</Weight>
<WeightUOM>LB</WeightUOM>
<NMFCCode>050000</NMFCCode>
<Marks>Handle With Care</Marks>
</ShipmentDetails>
</Detail>
</Shipment>
</Shipments>
11. JSON Example
{
"shipments": [
{
"shipment": {
"tradingPartnerID": "SEV2TEST01",
"documentId": "SI-2026-05-001",
"senderQualifier": "SE",
"sender": "SEV2TEST01",
"receiverQualifier": "SE",
"receiver": "SEV2TEST02",
"vendorID": "VEND12345",
"scac": "SAIA",
"shipmentId": "SHIP-2026-05-001",
"billofLading": "BOL-2026-0001",
"purchaseOrderNumber": "123456",
"totalCharges": 500.00,
"purposeCode": "00",
"paymentMethod": "Prepaid",
"shipmentMeasurements": {
"ladingQuantity": 15,
"weight": 5500.50,
"weightUOM": "LB",
"volume": 125.75,
"volumeUOM": "CF"
},
"equipmentDetails": {
"equipmentID": "54321",
"equipmentDescriptionCode": "TL",
"equipmentType": "53-foot Dry Van",
"sealInfo": {
"sealNumber": "SEAL-123456"
}
},
"billTo": {
"partyIdentification": "12345",
"partyIdentificationTypeCode": "92",
"name": "Acme Logistics",
"streetAddress1": "789 Warehouse Way",
"city": "Newark",
"stateCode": "NJ",
"postalCode": "07101",
"countryCode": "US"
},
"detail": [
{
"stopSequenceNumber": 1,
"stopReasonCode": "02",
"customerOrderNumber": "CUST-ORD-001",
"shipFrom": {
"partyIdentification": "54321",
"partyIdentificationTypeCode": "92",
"name": "Widget Supplier",
"streetAddress1": "456 Oak Ave",
"city": "Springfield",
"stateCode": "IL",
"postalCode": "62701",
"countryCode": "US"
},
"shipTo": {
"partyIdentification": "12345-001",
"partyIdentificationTypeCode": "92",
"name": "Acme Store #5",
"streetAddress1": "555 Retail Road",
"city": "New York",
"stateCode": "NY",
"postalCode": "10001",
"countryCode": "US",
"dockNumber": "DOCK-A1"
},
"orderDetail": {
"poNum": "123456",
"quantity": 100.0,
"quantityUOM": "EA"
},
"shipmentDetails": {
"packagingCode": "BOX",
"ladingDescription": "Blue widgets, assorted sizes",
"ladingQuantity": 100.0,
"weight": 550.0,
"weightUOM": "LB",
"nmfcCode": "050000",
"marks": "Handle With Care"
}
}
]
}
}
]
}
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