Skip to content
EDIFACT INVRPT — EDIFACT Inventory ReportPublished Oct 12, 2026

EDIFACT INVRPT: Inventory Report Message Guide

EDIFACT INVRPT explained: stock by location, batch and best-before, pallets by SSCC, with live EANCOM examples, quantity codes and the X12 846 mapping.

INVRPT is how stock positions move between companies without anyone emailing a spreadsheet. A retailer sends it so a supplier can see what is sitting in each distribution centre. A third-party warehouse sends it so the goods owner can see stock by batch and date. When it is accurate and on time, replenishment can run on data instead of guesswork; when it is stale, every decision built on it is a day behind.

This guide follows the GS1 EANCOM 2002 INVRPT layout (directory D.01B, subset version EAN007). Every example is live: it is parsed in your browser by the same engine as our EDIFACT inspector, and you can open each one in the full tool.

What is an EDIFACT INVRPT?

INVRPT (inventory report) is the UN/EDIFACT message for reporting inventories that are held, and inventories that are planned or targeted, for each product. GS1 states that it can be "used in either direction between trading partners": manufacturer to distributor, retailer to supplier, warehouse to goods owner, or head office to a service provider.

The quantities it can carry fall into three groups:

  • Held stock: opening stock, actual stock, quality-control held stock, damaged stock.
  • Movements: receipts into and withdrawals out of inventory over a period.
  • Planning levels: model or target stock, minimum and maximum stock, and the reordering point.

Each quantity can be broken down further by location, batch, production or best-before date, and by the pallets or cases it is stored on.

Where INVRPT fits: replenishment and VMI

INVRPT is a data message, not an instruction. It does not order or ship anything. Its value is what the receiver does with it.

FlowSenderReceiverWhat the receiver does
Retailer stock reportRetailerSupplierPlans production and deliveries; in VMI, raises the orders
Supplier availabilitySupplierRetailer or distributorSees what can be ordered before ordering it
Warehouse stock reportThird-party warehouseGoods ownerReconciles stock by batch and date, plans rotation
Consignment stockConsignment holderOwnerTracks stock it owns but does not hold

In vendor-managed inventory (VMI), the supplier takes responsibility for keeping the buyer's stock between agreed levels. The buyer sends INVRPT with stock positions, often together with SLSRPT sales data, and the supplier decides what to send. GS1's INVRPT introduction describes exactly this: actual and target inventories "used in combination with actual sales data" (SLSRPT) and sales forecasts (SLSFCT) to keep stock close to target or to trigger reordering. Whether the supplier then raises an ORDERS message on the buyer's behalf, or the buyer raises it, is set by the VMI agreement.

The planning concepts behind the codes, such as safety stock, reorder points and lead time, are covered in our glossary.

Simple and extended reports

The EANCOM manual describes two shapes of INVRPT:

  • Simple: one stock-holding location for the whole report. The location is identified in the header, usually as the sender's own NAD.
  • Extended: several locations. Each quantity carries a LOC segment saying which site holds it.

Both shapes can split quantities by batch (GIN+BX), by date (DTM+361 best before, DTM+94 production) or by shipping container (a CPS group with SSCCs). The functions are not mutually exclusive, so a single report can split a location's stock by batch and list the pallets carrying each batch.

INVRPT segment reference

Status is M (mandatory) or C (conditional) and repeats are the maximum the EANCOM 2002 manual allows. The key structural fact: every quantity lives in its own INV group (SG11), and each INV group carries exactly one QTY. To report three different quantities for one product, repeat the INV group three times.

SegmentNameStatusRepeatsCarriesX12 846 equivalent
UNHMessage headerM1Message reference, INVRPT:D:01B:UN:EAN007ST
BGMBeginning of messageM1Report type (35, 78), report number, functionBIA
DTMDate/time/periodM10Message date (137), inventory report date (366), periodBIA03, DTM
RFF (SG1)ReferenceC10References for the whole reportREF
NAD (SG2)Name and addressC20Reporting party, supplier, goods owner, warehouseN1 loop
CUX (SG5)CurrenciesC5Currency for any prices givenCUR
LIN (SG9)Line itemC9999999The product's GTIN with SRVLIN
PIAAdditional product idC10Supplier's or buyer's item codeLIN qualifier pairs
IMDItem descriptionC10Description, if the partner wants itPID
INV (SG11)Inventory management detailsM1Snapshot balance (INV++++1) or movement in or outNo direct equivalent
QTYQuantityM1One quantity: actual stock, in transit, held, targetQTY
GINGoods identity numberC9999Batch (BX) or serial (BN) numbers for that quantityLIN lot qualifier or REF
LOCPlace/locationC5Warehouse (18) or location of goods (14)SDQ or N1
DTMDate/time/periodC5Best before (361), production (94), expiry (36)DTM
STSStatusC9Status of that stock, for example available or notPartner-specific
PRI (SG13)Price detailsC5Price used to value the stockCTP
CPS (SG15)Consignment packing sequenceC9999Opens the shipping-container breakdownNo direct equivalent
PAC / PCI / GINPackage, marking, SSCCCper groupNumber of pallets and their SSCCs (GIN+BJ)MAN (in other X12 sets)
UNTMessage trailerM1Segment count and message referenceSE

Like PRICAT, EANCOM INVRPT has no UNS or CNT: after the last INV group comes UNT.

Example 1: stock by location for VMI

The fictional retailer Brackenfield Stores reports stock of two products from the fictional supplier Fenwold Foods at its two distribution centres, as counted at the end of 11 October. This is an extended report: each quantity has a LOC. All GLNs and GTINs are made up with valid check digits.

Live exampleEDIFACT INVRPTEANCOM 2002 D.01B

Extended stock report: two products, two distribution centres

BGM+35 inventory report, DTM+366 report date, and one INV group per quantity: actual stock (QTY+145) per warehouse, stock in transit (QTY+198) and a reorder level (QTY+197).

Structurally valid UN/EDIFACT
UN/EDIFACT · INVRPT · D:01B:UN · EANCOM EAN007 · 30 segments · 1 message

INVRPT · Inventory report · ref 1

Document
Inventory report
Document number
BS-INV-261012
Message function
Original
Document/message date/time
2026-10-12
Date (366)
2026-10-11

Parties

RoleIdentifierName and address
GY GY5011122000002GS1 (GLN)-
Supplier SU5067890000003GS1 (GLN)-

Lines (2)

#GTINCodesDescriptionActual stockPriceAmount
15067890100017--612--
25067890100024--96--

Interchange (UNB)

Sender
5011122000002GS1 GLN
Recipient
5067890000003GS1 GLN
Prepared
2026-10-12 06:00
Control reference
BS0092210
Syntax
UNOC version 3
Messages
1
SegmentWhat it says
BGM+35+BS-INV-261012+9'Document 35 (inventory report), number BS-INV-261012, original
DTM+366:20261011:102'The stock position is as at 11 October 2026
NAD+GYThe inventory reporting party: the retailer
NAD+SUThe supplier the report is for
LIN+1++5067890100017:SRV'Product 1 by GTIN; INVRPT lines have no action code
INV++++1'Fourth element 1: a book-keeping inventory balance (a snapshot)
QTY+145:1440' + LOC+18+5011122000101::9'1,440 units actually in stock at warehouse 5011122000101
QTY+198:480'480 units in transit to the second warehouse
QTY+197:240'The reorder level for product 2 at that warehouse is 240
UNT+27+1'27 segments from UNH to UNT inclusive

Read product 2 at the second warehouse (GLN 5011122000200): 96 in stock against a reorder level of 240. In a VMI programme, that line is the reason the supplier plans a delivery today. Quantities are in the unit identified by the GTIN in LIN, so if the GTIN is a consumer unit, the numbers are consumer units, not cases.

Example 2: warehouse stock by batch and best-before date

The fictional warehouse operator Wrenfield Logistics stores cases for Fenwold Foods and reports them as a simple, single-location report. Fenwold is the goods owner (NAD+GO). Each batch is its own INV group with a batch number and a best-before date, and 40 cases from one batch are on quality hold.

Live exampleEDIFACT INVRPTEANCOM 2002 D.01B

Simple stock report split by batch and best-before date

Warehouse to goods owner. Each INV group pairs one quantity with a GIN+BX batch number and a DTM+361 best-before date; QTY+89 reports quality-control held stock.

Structurally valid UN/EDIFACT
UN/EDIFACT · INVRPT · D:01B:UN · EANCOM EAN007 · 28 segments · 1 message

INVRPT · Inventory report · ref 1

Document
Inventory report
Document number
WL-SR-261012
Message function
Original
Document/message date/time
2026-10-12
Date (366)
2026-10-11

Parties

RoleIdentifierName and address
GY GY5034567000000GS1 (GLN)-
GO GO5067890000003GS1 (GLN)-

Lines (2)

#GTINCodesDescriptionActual stockPriceAmount
15067890100116--420--
25067890100130--300--

Interchange (UNB)

Sender
5034567000000GS1 GLN
Recipient
5067890000003GS1 GLN
Prepared
2026-10-12 05:45
Control reference
WL0007731
Syntax
UNOC version 3
Messages
1
SegmentWhat it says
NAD+GY+5034567000000::9'The warehouse is the reporting party
NAD+GO+5067890000003::9'Fenwold owns the goods
LIN+1++5067890100116:SRV'The case GTIN, so quantities are cases
GIN+BX+FW26241'Batch FW26241
DTM+361:20270601:102'Best before 1 June 2027
QTY+89:40'40 cases of batch FW26268 are held for quality control

Batch and date sit in the same INV group as the quantity they describe. The order inside the group is fixed by the message structure: INV, QTY, GIN, LOC, DTM, then STS. GS1 notes that if the goods do not all belong to the same owner, the owner is identified at line level, not in the header.

Example 3: stock on SSCC-labelled pallets

The same warehouse reports one product's stock by pallet. A CPS group under the INV group lists how many pallets hold that quantity and their SSCCs. This is the third function in GS1's simple report table: "total stock quantity divided in sub-quantities according to shipping container".

Live exampleEDIFACT INVRPTEANCOM 2002 D.01B

Stock split by shipping container, with SSCCs

Under each INV group, CPS opens a packing group: PAC gives the number and type of pallets, PCI+33E says they carry SSCC labels, DTM+361 gives their best-before date and GIN+BJ lists the SSCCs.

Structurally valid UN/EDIFACT
UN/EDIFACT · INVRPT · D:01B:UN · EANCOM EAN007 · 24 segments · 1 message

INVRPT · Inventory report · ref 1

Document
Inventory report
Document number
WL-SR-261012P
Message function
Original
Document/message date/time
2026-10-12
Best before date
2027-06-28
Best before date
2027-07-05
Packages
3

Parties

RoleIdentifierName and address
GY GY5034567000000GS1 (GLN)-
GO GO5067890000003GS1 (GLN)-

Lines (1)

#GTINCodesDescriptionActual stockPriceAmount
15067890100116--240--

Interchange (UNB)

Sender
5034567000000GS1 GLN
Recipient
5067890000003GS1 GLN
Prepared
2026-10-12 05:50
Control reference
WL0007732
Syntax
UNOC version 3
Messages
1

GIN+BJ can list several SSCCs in one segment, one per element, as the first pallet group shows. The PCI+33E marking code comes from the EANCOM manual's own INVRPT example; check your partner's guide in case it expects a different code. For SSCC rules and labelling, see the DESADV guide and our SSCC glossary entry.

Code tables

BGM document name

CodeMeaning
35Inventory report: actual inventory at the time of the report
78Inventory movement advice: movements in and out during a period
172Authorisation to plan and suggest orders
173Authorisation to plan and ship orders
263Inventory adjustment status report

The message function (third element) is 9 original, 7 duplicate or 31 copy. EANCOM gives INVRPT no change or replace function, so a correction goes out as a new report. Agree with your partner how it treats the earlier one.

INV: snapshot or movement

UsageMeaning
INV++++1'Book-keeping inventory balance (snapshot)
INV++++2'Formal inventory balance, for example a physical count
INV+1'Movement out of inventory
INV+2'Movement into inventory

GS1's note on the segment: use the first element for movements and the fourth for snapshots.

QTY qualifiers you will meet most

CodeMeaning
145Actual stock
198Quantity in transit
89Quality control held
124Damaged goods
66Committed quantity
157Opening stock balance
199Inventory withdrawal quantity
97 / 98Minimum / maximum inventory
146Model or target stock
197Reordering level

The full EANCOM list has around 30 codes, including consignment stock and promotional quantities. Partners normally use a handful; their guide lists which.

LOC and DTM in the INV group

SegmentCodeMeaning
LOC18Warehouse
LOC14Location of goods
LOC19Factory or plant
DTM361Best before date
DTM94Production or manufacture date
DTM36Expiry date
DTM366Inventory report date for this sub-quantity

Timing and frequency

The standard sets no schedule. Common patterns:

  • Daily, overnight after stock is booked, for VMI and fast-moving lines.
  • Weekly for slower lines or where INVRPT supports planning rather than daily replenishment.
  • On request or at month end for consignment and third-party warehouse reconciliation.

Whatever the cadence, DTM+366 should say when the stock was counted. A report sent on Monday describing Saturday night's position is fine, as long as both sides know it is Saturday's.

INVRPT vs the X12 846

DataEDIFACT INVRPTX12 846
Report type and numberBGM document code and numberBIA
Report dateDTM+366BIA03, DTM
PartiesNAD with GLNs (GY, SU, GO, WH)N1 loop
ItemLIN with GTIN and SRVLIN with qualifier pairs
Quantity and its typeOne QTY per INV group, typed by qualifierQTY with qualifier
Location breakdownLOC inside each INV groupSDQ or location-level loops
Batch or lotGIN+BXLot qualifier in LIN, or REF, by partner
Dates per quantityDTM inside the INV groupDTM
Pallet SSCCsCPS group with GIN+BJNot usual in an 846
Line countNoneCTT

The difference that trips up mappers is grouping. In an 846, a line can carry several QTY segments in a row. In INVRPT, each quantity needs its own INV group, and its location, batch and date belong to that group. Converting one to the other is a restructure, not a rename. See the EDI 846 guide for the X12 side, and TRADACOMS file types for the TRADACOMS stock report, SNPSTS.

Common errors and fixes

  • Two QTY segments in one INV group. The structure allows one. Repeat INV for each quantity.
  • No report date. Without DTM+366, the receiver uses the message date and may compare stock to the wrong day's sales.
  • Mixed units. Reporting a consumer-unit GTIN with case quantities, or the reverse. The quantity follows the GTIN in LIN.
  • Locations as free text. Use GLNs in LOC with agency 9. Store names and internal codes break matching.
  • Sub-quantities that do not add up. If you report a total and a breakdown, the parts must equal the total. Receivers check.
  • Stale reports sent on schedule. A report generated before stock is booked looks valid and is wrong. Run it after the stock update.
  • Invalid check digits. Validate every GTIN, GLN and SSCC before sending.

Testing checklist

  1. Agree the report shape (simple or extended), the quantity qualifiers and the cadence with your partner.
  2. Confirm whether quantities are consumer units or cases, and use the matching GTIN.
  3. Send a report for one product and one location and check the partner's figures match your stock system.
  4. Add locations, batches and dates one at a time and recheck after each.
  5. Test a zero-stock line: agree whether the partner wants QTY+145:0 or the line omitted.
  6. Check that the report runs after stock is booked, and that DTM+366 matches the count time.
  7. Paste each test message into the EDIFACT inspector to check structure and counts before sending.

Frequently Asked Questions

What is an INVRPT message used for?

INVRPT reports inventory: actual stock, stock in transit, held or damaged stock, movements, and planning levels such as minimum, target and reorder stock. Retailers use it to share stock with suppliers, and warehouses use it to report stock to the goods owner.

Is INVRPT the same as the X12 846?

They serve the same purpose. The 846 is the X12 inventory inquiry/advice; INVRPT is the UN/EDIFACT and EANCOM equivalent. The structure differs: INVRPT puts each quantity in its own INV group with its location, batch and dates.

What does QTY+145 mean?

145 is the qualifier for actual stock. QTY+145:1440' means 1,440 units are in stock, in the unit identified by the GTIN in the preceding LIN.

How do I report stock for several warehouses in one INVRPT?

Use the extended structure. Under each LIN, repeat the INV group once per warehouse, each with its QTY and a LOC+18 segment carrying the warehouse GLN.

Does INVRPT replace purchase orders in VMI?

No. INVRPT reports stock; it does not order anything. GS1 is explicit for sales reports that they never replace business transactions such as orders, and the same logic applies here. In VMI, an ORDERS message still follows, raised by whichever party the agreement names.

Does INVRPT need UNS and CNT?

No. The EANCOM 2002 INVRPT has no summary segments other than UNT.

Related guides

Sources

Check your INVRPT structure, counts and GTIN, GLN and SSCC check digits in the free EDIFACT inspector.

James Darby
Last updated: 10/12/2026

How to Answer "Are You EDI Capable?"

A buyer asked, and you need to answer this week. The four things they are checking, what you can say yes to today, and a realistic date for the rest.

  • What a buyer is really asking when they ask this
  • The minimum set-up that makes the answer yes
  • What you can answer today versus what needs building
  • Rough timelines, so you can give a date rather than a maybe

One email with the download. Unsubscribe any time.

Related Resources