ECGrid Simplify
Canonical Inventory Feed Format Specification
Version: 1.0 Date: May 26, 2026 Owner: ECGrid Product
1. Purpose
This document defines the canonical Inventory Feed format used by ECGrid Simplify. It is the single source of truth for inventory report structure, field definitions, data types, length limits, required fields, and serialization rules across XML and JSON.
The Inventory Feed enables suppliers and warehouses to report current stock levels, product information, and inventory metrics to buyers. Both XML and JSON representations convey the same logical inventory data. A JSON Schema (Simplify_Inventory_Feed.schema.json) provides machine-enforceable validation. This document is the human-readable companion.
2. Scope
In scope:
- Inventory feed document structure (header and product lines).
- Field-level definitions, data types, length limits, and validation rules.
- Canonical XML and JSON representations.
- Party identification for warehouse, supplier, shipFrom, and shipTo locations.
- Product identification using multiple identifier types (SKU, GTIN, part numbers, etc.).
- Inventory quantity reporting with location-based breakdowns.
Out of scope:
- Transport (HTTPS, AS2, SFTP). Covered in ECGrid Simplify API docs.
- Functional acknowledgments and application responses.
- Warehouse management system (WMS) logic and allocation algorithms.
- Real-time inventory synchronization or delta updates.
3. Document Structure
An Inventory Feed payload contains a single inventory report. Each report has a header section with trading partner information, report metadata, party locations, and one or more product records representing inventory items being reported.
- Top-level shape:
inventoryFeed
└── inventory (required, exactly one)
├── header (required information)
│ ├── tradingPartnerId
│ ├── documentId
│ ├── sender / senderQualifier
│ ├── receiver / receiverQualifier
│ ├── creationDateTime
│ ├── reportTypeCode
│ └── inventoryRefNum
├── warehouse, supplier, shipFrom, shipTo (party blocks)
└── product[] (1..n line items)
4. Header Fields
The header section contains inventory report metadata and routing information.
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 inventory feed document. | INV-FEED-2026-001 |
sender | string | 2–17 | Yes | Sender ID in the qualifier namespace (warehouse or supplier). | SEV2TEST01 |
senderQualifier | string | 1–4 | Yes | Qualifier for sender ID (e.g. SE, ZZ, 01, 14). | SE |
receiver | string | 2–17 | Yes | Receiver ID in the qualifier namespace (buyer). | SEV2TEST02 |
receiverQualifier | string | 1–4 | Yes | Qualifier for receiver ID. | SE |
vendorId | string | 1–35 | No | Vendor/supplier identifier for inventory owner. | VEND12345 |
groupSender | string | 1–9 | No | EDI functional group sender ID. | 1 |
groupReceiver | string | 1–9 | No | EDI functional group receiver ID. | 1 |
creationDateTime | string | 14–17 | Yes | Date/time inventory feed was created. YYYYMMDDHHMMSS. | 20260526143001 |
transactionPurposeCode | string | 1–3 | Yes | Purpose of transaction (e.g., 00=Original, 01=Replace, 05=Status Update). | 00 |
inventoryRefNum | string | 1–35 | No | Reference number for tracking inventory report cycles. | INV-REF-001 |
purchaseOrderNumber | string | 1–22 | No | Associated purchase order number if applicable. | 123456 |
releaseNumber | string | 1–6 | No | Release number if inventory is for a specific PO release. | 1 |
reportTypeCode | string | 1–3 | Yes | Type of inventory report (e.g., 00=Full Stock, 01=On-Hand, 02=Available-to-Promise). | 00 |
5. Party Address Block
The same party structure is used for warehouse, supplier, shipFrom, and shipTo. These identify the locations and parties involved in the inventory report.
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 Warehouse |
name2 | string | 1–60 | No | Secondary name line. | East Coast Distribution |
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 |
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 |
provinceCode | string | 2–5 | No | Province code (alternative to stateCode). |
|
vatNumber | string | 1–20 | No | VAT/Tax ID number for the party. |
|
dockNumber | string | 1–10 | No | Dock number or code at location. | DOCK-A1 |
storeNumber | string | 1–10 | No | Store number or retail location code. | STORE-001 |
6. Product Line Item
The product array contains one or more inventory line items. Each item represents a stock-keeping unit (SKU) and its associated quantity, pricing, and descriptive information.
Field | Type | Length | Req | Description | Example |
lineItemNumber | integer | 1–6 | Yes | Sequential line number within the inventory feed. | 1 |
confirmedUnitPrice | number | 1–17 | No | Confirmed unit price for the SKU (including or excluding tax per agreement). | 45.99 |
currency | string | 3 | No | ISO 4217 currency code. 3 chars exact. | USD |
supplierAssignedPartNumber | string | 1–48 | Yes | Supplier's part number for the item. | VN123456789 |
supplierAssignedPartCode | string | 1–48 | No | Alternative supplier part code or legacy number. | SUP-CODE-001 |
buyerAssignedPartNumber | string | 1–48 | Yes | Buyer's part number for the item. | BY123456789 |
buyerAssignedPartCode | string | 1–48 | No | Alternative buyer part code. | BUY-CODE-001 |
buyerStyleNumber | string | 1–35 | No | Buyer's style number or collection code. | STYLE-2026-A |
vendorStyleNumber | string | 1–35 | No | Vendor/supplier style number. | VENDOR-STYLE-X |
sku | string | 1–48 | Yes | Stock keeping unit identifier. | SKU-ABC-001 |
gtin14 | string | 14 | No | Global Trade Item Number (GTIN-14). | 01234567890123 |
gtin13 | string | 13 | No | Global Trade Item Number (GTIN-13/EAN). | 1234567890123 |
gtin12 | string | 12 | No | Global Trade Item Number (GTIN-12/UPC). | 123456789012 |
gtin8 | string | 8 | No | Global Trade Item Number (GTIN-8). | 12345678 |
modelNumber | string | 1–35 | No | Product model number or code. | MODEL-XYZ-2026 |
mfgPartNumber | string | 1–35 | No | Manufacturer's part number. | MFG-12345 |
mfgName | string | 1–60 | No | Manufacturer name. | Acme Manufacturing Co. |
catalogNumber | string | 1–35 | No | Catalog or reference number. | CAT-2026-001 |
brandName | string | 1–60 | No | Brand or trade name. | Acme Brand |
productType | string | 1–35 | No | Product type classification. | Widget |
buyerColor | string | 1–35 | No | Color description from buyer's perspective. | Blue |
vendorColor | string | 1–35 | No | Color code or description from vendor perspective. | BLU-001 |
7. Quantity Information
Quantity details for inventory items, including unit of measure and timing.
Field | Type | Length | Req | Description | Example |
quantity.quantityQualifier | string | 1–3 | Yes | Quantity type qualifier (e.g., 1=Discrete, 2=On-hand, 3=Reserved, 4=Available). | 2 |
quantity.quantity | number | 1–15 | Yes | Quantity value. Decimals allowed up to 15 digits. | 500.5 |
quantity.uom | string | 2–3 | Yes | Unit of measure (e.g. EA=Each, CS=Case, LB=Pound, KG=Kilogram). | EA |
quantity.dateQualifier | string | 1–3 | No | Date qualifier for the quantity (e.g., 007=Effective Date). | 007 |
quantity.date | string | 8 | No | Date the quantity is effective. YYYYMMDD. | 20260526 |
shipDestinationQty.quantity | number | 1–15 | No | Quantity designated for a specific destination/location. | 250.0 |
shipDestinationQty.uom | string | 2–3 | No | Unit of measure for destination quantity. | EA |
shipDestinationQty.destinationLocationCode | string | 1–35 | No | Code or identifier for the destination location. | LOC-EAST-01 |
8. Description and Date Information
Field | Type | Length | Req | Description | Example |
partDescription.partDescription | string | 1–255 | No | Text description of the product line item. | Blue nylon widget, 5-inch, pre-drilled |
partDescription.partDescriptionType | string | 1–5 | No | Type of description (e.g., TXN=Text, UND=Undefined). | TXN |
partDescription.partDescriptionID | string | 1–35 | No | Reference ID for the description or specification. | DESC-2026-001 |
dateInformation.replacementEffective.dateCode | string | 1–3 | No | Date code qualifier for effective date (e.g., 007=Effective, 010=Publication). | 007 |
dateInformation.replacementEffective.date | string | 8 | No | Effective date for replacement or update. YYYYMMDD. | 20260601 |
dateInformation.replacementEffective.time | string | 0 or 4 | No | Effective time. HHMM (24-hour) or empty. | 0000 |
9. Naming Conventions
- XML: PascalCase for all element names (e.g. InventoryFeed, LineItemNumber, ConfirmedUnitPrice).
- JSON: camelCase for all field names (e.g. inventoryFeed, lineItemNumber, confirmedUnitPrice).
- Field semantics and length limits are identical across both. Only casing differs.
- Empty optional values in XML use self-closing tags (e.g. <VendorColor/>). In JSON, use empty string for string fields or null for complex objects.
10. XML Example
<InventoryFeed>
<Inventory>
<TradingPartnerId>SEV2TEST01</TradingPartnerId>
<DocumentId>INV-FEED-2026-001</DocumentId>
<SenderQualifier>SE</SenderQualifier>
<Sender>SEV2TEST01</Sender>
<ReceiverQualifier>SE</ReceiverQualifier>
<Receiver>SEV2TEST02</Receiver>
<VendorId>VEND12345</VendorId>
<CreationDateTime>20260526143001</CreationDateTime>
<TransactionPurposeCode>00</TransactionPurposeCode>
<InventoryRefNum>INV-REF-001</InventoryRefNum>
<PurchaseOrderNumber>123456</PurchaseOrderNumber>
<ReportTypeCode>00</ReportTypeCode>
<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>
<DockNumber>DOCK-A1</DockNumber>
</Warehouse>
<Supplier>
<PartyIdentification>54321</PartyIdentification>
<PartyIdentificationTypeCode>92</PartyIdentificationTypeCode>
<Name>Widget Supplier Inc</Name>
<StreetAddress1>456 Oak Ave</StreetAddress1>
<City>Springfield</City>
<StateCode>IL</StateCode>
<PostalCode>62701</PostalCode>
<CountryCode>US</CountryCode>
</Supplier>
<Product>
<LineItemNumber>1</LineItemNumber>
<ConfirmedUnitPrice>45.99</ConfirmedUnitPrice>
<Currency>USD</Currency>
<SupplierAssignedPartNumber>VN123456789</SupplierAssignedPartNumber>
<BuyerAssignedPartNumber>BY123456789</BuyerAssignedPartNumber>
<Sku>SKU-ABC-001</Sku>
<Gtin14>01234567890123</Gtin14>
<ModelNumber>MODEL-XYZ-2026</ModelNumber>
<BrandName>Acme Brand</BrandName>
<ProductType>Widget</ProductType>
<BuyerColor>Blue</BuyerColor>
<Quantity>
<QuantityQualifier>2</QuantityQualifier>
<Quantity>500.5</Quantity>
<UOM>EA</UOM>
<DateQualifier>007</DateQualifier>
<Date>20260526</Date>
</Quantity>
<ShipDestinationQty>
<Quantity>250.0</Quantity>
<Uom>EA</Uom>
<DestinationLocationCode>LOC-EAST-01</DestinationLocationCode>
</ShipDestinationQty>
<PartDescription>
<PartDescription>Blue nylon widget, 5-inch, pre-drilled</PartDescription>
<PartDescriptionType>TXN</PartDescriptionType>
</PartDescription>
<DateInformation>
<ReplacementEffective>
<DateCode>007</DateCode>
<Date>20260601</Date>
<Time/>
</ReplacementEffective>
</DateInformation>
</Product>
<Product>
<LineItemNumber>2</LineItemNumber>
<ConfirmedUnitPrice>120.00</ConfirmedUnitPrice>
<Currency>USD</Currency>
<SupplierAssignedPartNumber>VN987654321</SupplierAssignedPartNumber>
<BuyerAssignedPartNumber>BY987654321</BuyerAssignedPartNumber>
<Sku>SKU-XYZ-002</Sku>
<Gtin13>1234567890123</Gtin13>
<ModelNumber>MODEL-ABC-2026</ModelNumber>
<BrandName>Acme Brand</BrandName>
<ProductType>Super Widget</ProductType>
<BuyerColor>Red</BuyerColor>
<Quantity>
<QuantityQualifier>2</QuantityQualifier>
<Quantity>150.0</Quantity>
<UOM>CS</UOM>
<Date>20260526</Date>
</Quantity>
<PartDescription>
<PartDescription>Red super widget, case of 10 units</PartDescription>
</PartDescription>
</Product>
</Inventory>
</InventoryFeed>
11. JSON Example
{
"inventoryFeed": {
"inventory": {
"tradingPartnerId": "SEV2TEST01",
"documentId": "INV-FEED-2026-001",
"senderQualifier": "SE",
"sender": "SEV2TEST01",
"receiverQualifier": "SE",
"receiver": "SEV2TEST02",
"vendorId": "VEND12345",
"creationDateTime": "20260526143001",
"transactionPurposeCode": "00",
"inventoryRefNum": "INV-REF-001",
"purchaseOrderNumber": "123456",
"reportTypeCode": "00",
"warehouse": {
"partyIdentification": "12345-WH",
"partyIdentificationTypeCode": "92",
"name": "Acme Warehouse East",
"streetAddress1": "789 Warehouse Way",
"city": "Newark",
"stateCode": "NJ",
"postalCode": "07101",
"countryCode": "US",
"dockNumber": "DOCK-A1"
},
"supplier": {
"partyIdentification": "54321",
"partyIdentificationTypeCode": "92",
"name": "Widget Supplier Inc",
"streetAddress1": "456 Oak Ave",
"city": "Springfield",
"stateCode": "IL",
"postalCode": "62701",
"countryCode": "US"
},
"product": [
{
"lineItemNumber": 1,
"confirmedUnitPrice": 45.99,
"currency": "USD",
"supplierAssignedPartNumber": "VN123456789",
"buyerAssignedPartNumber": "BY123456789",
"sku": "SKU-ABC-001",
"gtin14": "01234567890123",
"modelNumber": "MODEL-XYZ-2026",
"brandName": "Acme Brand",
"productType": "Widget",
"buyerColor": "Blue",
"quantity": {
"quantityQualifier": "2",
"quantity": 500.5,
"uom": "EA",
"dateQualifier": "007",
"date": "20260526"
},
"shipDestinationQty": {
"quantity": 250.0,
"uom": "EA",
"destinationLocationCode": "LOC-EAST-01"
},
"partDescription": {
"partDescription": "Blue nylon widget, 5-inch, pre-drilled",
"partDescriptionType": "TXN"
},
"dateInformation": {
"replacementEffective": {
"dateCode": "007",
"date": "20260601",
"time": ""
}
}
},
{
"lineItemNumber": 2,
"confirmedUnitPrice": 120.00,
"currency": "USD",
"supplierAssignedPartNumber": "VN987654321",
"buyerAssignedPartNumber": "BY987654321",
"sku": "SKU-XYZ-002",
"gtin13": "1234567890123",
"modelNumber": "MODEL-ABC-2026",
"brandName": "Acme Brand",
"productType": "Super Widget",
"buyerColor": "Red",
"quantity": {
"quantityQualifier": "2",
"quantity": 150.0,
"uom": "CS",
"date": "20260526"
},
"partDescription": {
"partDescription": "Red super widget, case of 10 units"
}
}
]
}
}
}
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