Canonical Inventory Feed Implementation Guide and Specifications

Modified on Tue, May 26 at 9:29 AM

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

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