Skip to content
EDI 947 — EDI TransactionPublished Nov 3, 2026

EDI 947 Warehouse Inventory Adjustment Advice

EDI 947 explained with an example: how a 3PL reports damage, holds and cycle count changes. W15 and W19 segments, reason codes, and 947 vs 846.

The EDI 947 explains why your inventory changed when nothing shipped or arrived. Receipts come in on the 944 and shipments go out on the 945. Everything else that moves the number (a pallet dropped by a forklift, a lot put on quality hold, a cycle count that finds two extra cases) arrives on a 947. Without it, your on-hand balance and the warehouse's drift apart, and you find out when an order cannot be filled.

This guide covers what the 947 carries, the reason codes that drive it, every segment you will map, a live example with increases and decreases, how it differs from the 846, and the errors that leave your books out of step with the warehouse floor.

What Is an EDI 947?

An EDI 947 is the Warehouse Inventory Adjustment Advice transaction set defined by the ASC X12 standards body. The warehouse sends it to the depositor (the inventory owner) to report adjustments to inventory levels or status that happen inside the warehouse. In the X12 envelope it travels in a functional group with the code AW in GS01.

Two points from the X12 definition shape how it is used. First, the adjustment types that are reported by EDI are set by agreement between the warehouse and the depositor, so no two 3PLs send exactly the same mix. Second, a 947 covers one storage location: a warehouse with adjustments in two buildings sends two 947s for the period, each listing only the products that changed.

Authoritative references for 947 work:

  • The X12 transaction set catalog defines the 947 alongside the 940, 943, 944 and 945
  • GS1 US governs the UPC case codes and GTINs that identify each adjusted item
  • Your 3PL's 947 implementation guide and warehouse agreement list which adjustment reasons it reports, how often, and whether it reports status changes (holds) as well as quantity changes

Who sends it? The warehouse or 3PL, from its WMS.

Who receives it? The depositor, into its ERP or inventory system.

When is it sent? Either as each adjustment is posted, or in a batch per reporting period (often daily), depending on the agreement.

Why does it matter? The 846 Inventory Inquiry/Advice tells you what the warehouse has now. The 947 tells you why that differs from what you expected. Finance needs the reason to write off damage, file a claim or charge it back to the warehouse under the agreement, and customer service needs to know stock is on hold before it promises it.

Common Reasons for a 947

SituationEffect on available stockTypical reason code (W1901)
Forklift or handling damage in the warehouseDecrease02 Warehousing damage
Quality, regulatory or customer hold on a lotDecrease (moved to hold)05 Product put on hold
Hold releasedIncrease55 Product taken off hold
Cycle count finds less than the systemDecrease06 Book adjustment decrease
Cycle count finds more than the systemIncrease56 Book adjustment increase
Stock destroyed (expired, recalled, contaminated)Decrease07 Product dumped or destroyed
Receipt was wrong and is corrected laterDecrease or increase04 / 54 Receipt less / greater than previously reported
Shipment was wrong and is corrected laterDecrease or increase03 / 53 Shipment greater / less than previously reported
Lost stock later foundIncrease51 Unable-to-locate product located

The codes in the 01 to 07 range are stock decreases and the codes in the 51 to 56 range are the matching increases. The quantity in W1902 is reported as a number of units, and the reason code says which way it moves. Your 3PL's guide lists the exact subset it uses, and some add qualifiers to say which stock bucket (available, damaged, hold) the adjustment applies to.

Interactive Example: Damage, Hold and Cycle Count (947)

A week after receiving the Boise transfer, the Reno 3PL reports three adjustments for the depositor's stock in one 947. W15 carries the date the report was created. N1*WH names the reporting warehouse, and G62*07 the effective date of the adjustments. Each W19 line gives a reason code, a quantity, a unit and the item; G69 holds the warehouse's free-text reason and N9*TN its transaction number.

  • Line 1: 2 cases of granola damaged by a forklift (02, a decrease)
  • Line 2: 4 cases of almond butter, lot L2610B, put on QC hold (05, a decrease to available stock)
  • Line 3: 1 case of trail mix found in a cycle count (56, an increase)

Use the Plain English tab for a readable summary, or click any segment to break it down element by element.

Live example3PL WarehouseEDI 947

3PL 947 Inventory Adjustment Advice

The warehouse reports three adjustments to the depositor's stock: 2 cases damaged in the warehouse, 4 cases of one lot put on QC hold, and a 1-case cycle count overage

Document
947 Warehouse Inventory Adjustment Advice
From / to
RIDGELINE3PL → NFPANTRY
Segments
18
Interchange date
Nov 13, 2026

Raw EDI (X12)

1
ISA*00* *00* *ZZ*RIDGELINE3PL *ZZ*NFPANTRY *261113*0700*U*00401*000000947*0*P*:~
2
GS*AW*RIDGELINE3PL*NFPANTRY*20261113*0700*947*X*004010~
3
ST*947*0001~
4
W15*20261113~
5
N1*WH*RIDGELINE LOGISTICS RENO*91*RNO2~
6
G62*07*20261112~
7
W19*02*2*CA*086123450014*VN*NFP-GRN-12~
8
G69*FORKLIFT DAMAGE AISLE 14~
9
N9*TN*WT-77120~
10
W19*05*4*CA*086123450021*VN*NFP-ALB-16***L2610B~
11
G69*QC HOLD REQUESTED BY DEPOSITOR~
12
N9*TN*WT-77121~
13
W19*56*1*CA*086123450038*VN*NFP-TMX-10~
14
G69*CYCLE COUNT OVERAGE~
15
N9*TN*WT-77122~
16
SE*14*0001~
17
GE*1*947~
18
IEA*1*000000947~

Human-Readable

Interchange

Sender ID(ZZ)RIDGELINE3PL
Receiver ID(ZZ)NFPANTRY
Date261113
Time0700
Standards IDU
Version00401
Control Number000000947
Acknowledgment RequestedNo
UsageProduction
Included Groups (IEA01)1

Functional Group

Functional IDAWAW
SenderRIDGELINE3PL
ReceiverNFPANTRY
Date20261113
Time0700
Control Number947
Agency CodeX
Version004010
Transactions1
Reported Transaction Count (GE01)1

Transaction 947

Warehouse Inventory Adjustment Advice
Transaction Type947
Control Number0001
Segments, ST to SE14
Count in SE0114 (matches)

Segment Detail

W15Warehouse Adjustment Identification
W1501Date20261113
N1Party Identification
N101Entity CodeWH
N102NameRIDGELINE LOGISTICS RENO
N103ID Qualifier91
N104ID CodeRNO2
G62Date/Time
G6201Date Qualifier07
G6202Date20261112
W19Warehouse Adjustment Item Detail
W1901Quantity or Status Adjustment Reason Code02
W1902Credit/Debit Quantity2
W1903Unit of MeasureCA
W1904UPC Case Code086123450014
W1905Product/Service ID QualifierVN
W1906Product/Service IDNFP-GRN-12
G69Line Item Detail (Description)
G6901Item DescriptionFORKLIFT DAMAGE AISLE 14
N9Reference Identification
N901Reference Identification QualifierTN
N902Reference IdentificationWT-77120
W19Warehouse Adjustment Item Detail
W1901Quantity or Status Adjustment Reason Code05
W1902Credit/Debit Quantity4
W1903Unit of MeasureCA
W1904UPC Case Code086123450021
W1905Product/Service ID QualifierVN
W1906Product/Service IDNFP-ALB-16
W1909Warehouse Lot NumberL2610B
G69Line Item Detail (Description)
G6901Item DescriptionQC HOLD REQUESTED BY DEPOSITOR
N9Reference Identification
N901Reference Identification QualifierTN
N902Reference IdentificationWT-77121
W19Warehouse Adjustment Item Detail
W1901Quantity or Status Adjustment Reason Code56
W1902Credit/Debit Quantity1
W1903Unit of MeasureCA
W1904UPC Case Code086123450038
W1905Product/Service ID QualifierVN
W1906Product/Service IDNFP-TMX-10
G69Line Item Detail (Description)
G6901Item DescriptionCYCLE COUNT OVERAGE
N9Reference Identification
N901Reference Identification QualifierTN
N902Reference IdentificationWT-77122
1 functional group1 transactionControl #000000947Valid

947 Structure at a Glance

PositionSegmentNameUsageNotes
HeaderSTTransaction Set HeaderMandatoryST01 = 947
HeaderW15Warehouse Adjustment IdentificationMandatoryReport date and adjustment numbers
Header loopN1 / N2 / N3 / N4 / PERName and addressMandatoryThe reporting warehouse, sometimes the depositor too
HeaderN9Reference IdentificationOptionalExtra references for the whole report
HeaderG62Date/TimeOptionalEffective date of the adjustments
HeaderNTENote/Special InstructionOptionalFree-text notes
Detail loopW19Warehouse Adjustment Item DetailMandatory, repeatsOne per item adjustment: reason, quantity, unit, item IDs
Detail loopG69Line Item Detail - DescriptionOptionalFree-text reason for the adjustment
Detail loopN9Reference IdentificationOptionalWarehouse transaction number, lot, stock status
SummarySETransaction Set TrailerMandatorySegment count and control number

Unlike the 943 and 944, the 947 has no totals segment. Each W19 line stands on its own.

Key Segments Explained

W15: Warehouse Adjustment Identification

W15*20261113~
ElementNameExampleWhat it means
W1501Date20261113The date the report was created, as CCYYMMDD
W1502Adjustment NumberThe warehouse's ID for this adjustment
W1503Adjustment NumberThe depositor's ID for this adjustment
W1504Transaction Set Purpose CodeOriginal, replacement and so on, where the guide uses it

W1502 and W1503 are a pair in the X12 syntax: if one is sent, the other must be too. That suits adjustments the depositor asked for (a hold it requested, for example) where both sides have a number. For routine adjustments the warehouse often leaves both blank and puts its own transaction number on each line in N9*TN, as in the example.

W19: Warehouse Adjustment Item Detail

W19*05*4*CA*086123450021*VN*NFP-ALB-16***L2610B~
ElementNameExampleWhat it means
W1901Quantity or Status Adjustment Reason Code05Why the stock changed, and in which direction. See the table above
W1902Credit/Debit Quantity4How many units were adjusted
W1903Unit of MeasureCAThe unit of W1902
W1904UPC Case Code086123450021The 12-digit case-level UPC
W1905Product/Service ID QualifierVNWhat the next element is. VN = vendor item number
W1906Product/Service IDNFP-ALB-16Your item number
W1907 / W1908Second qualifier and IDA second identifier, where needed
W1909Warehouse Lot NumberL2610BThe lot affected

Further elements carry weights (W1910 to W1915) and an inventory transaction type code (W1916) for warehouses that use them. Read the reason code before the quantity: a 4 with code 05 takes four cases out of available stock; the same 4 with code 55 puts them back.

G69 and N9: The Story Behind the Number

G69*QC HOLD REQUESTED BY DEPOSITOR~
N9*TN*WT-77121~

G69 is free text, and it is often the only place the warehouse says what actually happened. Keep it with the adjustment in your system; it is the first thing anyone asks for in a damage dispute. N9*TN carries the warehouse's transaction reference, which is what you quote back to the 3PL. Some guides also use an N9 to say which stock status (available, damaged, hold) the line applies to.

EDI 947 vs 846, 944 and 945

DocumentSent byWhat it tells you
947 Warehouse Inventory Adjustment AdviceWarehouseEach change to stock, with a reason
846 Inventory Inquiry/AdviceWarehouse (or supplier)The current balance, as a snapshot
944 Warehouse Stock Transfer Receipt AdviceWarehouseStock received into the building
945 Warehouse Shipping AdviceWarehouseStock shipped out against a 940

Think of the 846 as a bank balance and the 947 as the statement lines that are not deposits or withdrawals. You can run a 3PL relationship on the 846 alone and simply overwrite your balance every day, but you lose the reasons. That is fine for a small catalog. It is a problem for anyone who has to account for damage, track holds by lot, or hold a 3PL to an inventory accuracy clause.

A good reconciliation is simple to state: yesterday's balance plus 944 receipts, minus 945 shipments, plus or minus 947 adjustments, should equal today's 846. When it does not, one of the four documents is missing.

Where the 947 Sits in 3PL EDI

FlowDocumentDirection
Inbound943 Stock Transfer Shipment AdviceDepositor to warehouse
Inbound944 Stock Transfer Receipt AdviceWarehouse to depositor
Outbound940 Warehouse Shipping OrderDepositor to warehouse
Outbound945 Warehouse Shipping AdviceWarehouse to depositor
Inventory846 Inventory Inquiry/AdviceWarehouse to depositor
Inventory947 Warehouse Inventory Adjustment AdviceWarehouse to depositor
All997 Functional AcknowledgmentBoth ways

For the full setup with a new 3PL, see our guide to 3PL EDI integration.

Common 947 Errors and How to Prevent Them

ErrorWhat happensPrevention
Reason code direction ignoredA hold release posted as a second decreaseMap every reason code your 3PL uses to increase or decrease explicitly
Negative quantity in W1902Double reversal, or the line rejectedAgree that quantities are positive and the reason code sets direction, unless the guide says otherwise
Holds posted as write-offsStock that will come back is written off, then reappearsPost hold codes to a hold location, not to scrap
Lot missing on a lot-specific holdThe whole item is blocked instead of one lotRequire W1909 or a lot N9 on hold and release lines
947 not sent for a reason the 3PL treats as internal846 balance changes with no explanationList in the agreement which adjustments must be reported
Unit of measure mismatchCases adjusted as eachesConvert with a maintained item table, same as for 944s
Duplicate 947Adjustment applied twiceDeduplicate on the warehouse transaction number

947 Implementation Checklist

  • Get the 3PL's 947 guide and the exact list of reason codes it sends
  • Map each reason code to an ERP adjustment type, a direction and a stock location (available, hold, damaged, scrap)
  • Agree whether adjustments are sent as they happen or in a daily batch
  • Agree how damage is charged under the warehouse agreement, and capture the warehouse transaction number for it
  • Confirm lot reporting for holds, releases and destruction
  • Build the daily reconciliation: opening balance, 944s, 945s, 947s, against the 846
  • Test a decrease, an increase, a hold and its release, and a destruction
  • Send a 997 for every 947

For the full list of X12 document numbers, see our EDI document types reference.

Handling 3PL and Order Data With OrderSync

Accurate inventory only pays off if the orders that consume it are entered correctly. For most distributors those orders arrive in every shape: EDI 850s from retailers, PDFs and emails from independents, spreadsheets from reps.

OrderSync reads those orders in any format, matches customers, items and units to your catalog, and outputs clean data to your ERP or valid X12. Paste any 947 into the free EDI inspector to see it parsed segment by segment with a plain-English summary, read about ERP integration, or book a 15-minute walkthrough to see your own orders processed.

Frequently Asked Questions

What is an EDI 947 used for?

The EDI 947 lets a warehouse tell the inventory owner that stock changed inside the warehouse for a reason other than a receipt or a shipment: damage, a hold, a hold release, destruction, or a correction after a cycle count. Each line carries the item, quantity and a reason code.

What is the 947 EDI document type?

The 947 is the X12 Warehouse Inventory Adjustment Advice, part of the warehouse series with the 940, 943, 944 and 945. It travels in a functional group with the code AW. It reports changes in quantity or status, not balances.

What does an EDI 947 example look like?

A typical 947 has a W15 header with the report date, an N1 naming the warehouse, a G62 effective date, then one W19 line per adjustment. For example, W19022*CA followed by the item's UPC case code and item number reports two cases lost to warehouse damage.

What is the difference between an EDI 947 and an EDI 846?

The 846 reports the current inventory balance as a snapshot. The 947 reports individual changes and the reason for each. The 846 tells you what you have; the 947 tells you why it changed. Many depositors use both and reconcile them daily.

How does an EDI 947 show an increase or a decrease?

Through the reason code in W1901. Codes 01 to 07 are decreases (for example 02 warehousing damage, 05 product put on hold) and codes 51 to 56 are increases (for example 55 product taken off hold, 56 book adjustment increase). The quantity in W1902 is the number of units adjusted.

What is the W19 segment in an EDI 947?

W19 is the Warehouse Adjustment Item Detail segment, one per adjusted item. W1901 is the reason code, W1902 the quantity, W1903 the unit of measure, W1904 the UPC case code, W1905 and W1906 an item ID qualifier and number, and W1909 the lot.

Does every 3PL send EDI 947s?

No. Some 3PLs only send an 846 and let the balance speak for itself. Others send 947s for every adjustment. Which adjustments are reported by EDI is a matter for the warehouse agreement, so ask before you sign rather than after the first unexplained write-off.

James Darby
Last updated: 11/3/2026

Related Resources