START A CONVERSATION

Let’s talk about your next build.

Prepare your brief below, then review and send it in your email app to sales@nextlabsonline.com.

THE FIRST CONVERSATION

Your product idea, AI opportunity or automation challenge—and a useful first milestone.

All fields are required.

A few sentences about the problem, your users and timing are enough.

We’ll use your details to respond to your enquiry. Please don’t include patient records, passwords or confidential information. Privacy Policy · Website Terms.

Logistics & supply chain / EDI & Message Standards

EDI 947 Warehouse Inventory Adjustment Advice for 3PL Stock

By Vikasraj YadavPublished 9 min read

For edi and integration analysts, it leads at shippers, 3pls and carriers · Understand the problem

EDI 947 Warehouse Inventory Adjustment Advice for 3PL Stock — Two supply chain IT and finance staff sitting at a wooden table with two side-by-side out-of-focus monitors, two closed laptops, a blank ruled clipboard, and a plain cream folder, overlooking a warehouse floor with pallet racking and an orange forklift.

EDI 947 Warehouse Inventory Adjustment Advice for 3PL Stock: Illustrative TMS–ERP order and invoice handoff review beside a warehouse floor; not a client facility.

At a glance · Quick answer

Quick answer: edi 947 warehouse inventory adjustment

An EDI 947 Warehouse Inventory Adjustment Advice is the X12 message a 3PL sends the goods' owner after changing stock quantity or status. The W15 segment carries the adjustment numbers; each W19 line carries a reason code such as 06 decrease, AU damaged in facility or 05 hold, plus quantity, unit and item, which the owner's ERP posts once.

TL;DR — what you’ll learn

  • Every W19 line needs a reason code, a quantity and a unit; element 181 offers 48 reason codes in release 004010 and 52 in release 8010.
  • Status codes such as 05 and 55 move stock between usable and held states at zero value; posting them as write-offs is a common mapping error.
  • Key posting on depositor, warehouse, W15-02 adjustment number and line number, so a resent file with a new interchange number posts nothing twice.
  • In India, CGST Section 17(5)(h) blocks credit on lost or destroyed goods, so a 947 decrease on stock bought at 18% GST reverses ₹180 per ₹1,000 written off.

Topics: edi 947 warehouse inventory adjustment · 947 adjustment reason codes · warehouse inventory adjustment advice · 3pl damage and shrink reporting · erp posting rules for inventory adjustments

All quantities, amounts, product codes and events are illustrative teaching examples.

The 3PL counted a pick face on night shift, found 40 eaches missing, and sent the adjustment to the client. By morning the client's ERP showed 80 missing, available-to-promise had dropped below open orders, and customer service was backordering a line that sat on the shelf. Nobody had miscounted. The same X12 947 had arrived twice, and the receiving system posted both copies because it never checked the warehouse's adjustment number.

The 947 Warehouse Inventory Adjustment Advice is a small transaction with large consequences. Each line changes either how much stock the depositor owns or what condition that stock is in, and each change has an owner, a cost and, in India, a tax effect. Mapped carefully, a 947 feed lets a depositor post 3PL adjustments the same night with the right account, the right claim and no duplicate.

  • Segments and fields: what the W15 header and W19 item lines carry, and which pairs of elements must travel together.
  • Reason codes: which codes move quantity, which move status, and how each should post in the ERP.
  • Money and tax: a worked adjustment batch in dollars and rupees, including the Indian credit reversal on lost or destroyed goods.
  • Controls: a duplicate-posting incident, the checks a translator can enforce, and an onboarding checklist for a 3PL feed.

What a 947 tells the depositor, and what it leaves unsettled

A 947 reports that the warehouse has already changed its own inventory record; it does not ask permission and it does not assign blame. X12 describes the set as a way to inform a warehouse, depositor or other party of a quantity or status change to inventory records, covering the internal adjustments between a warehouse and the goods' owner.

That definition matters because the depositor owns the goods while the 3PL owns the count. When the 3PL scraps a crushed case, finds a lost pallet or moves stock to a quality hold, its warehouse management system changes first. The 947 is the notice that lets the owner's ERP follow. Whether the 3PL pays for the crushed case, whether the carrier does, or whether the loss sits inside an agreed shrink allowance is settled elsewhere, in the storage agreement and the claim file.

Our guide to why a 3PL stock report and the ERP balance disagree deals with the month-end bridge between two balances. This article sits one step earlier: it covers the individual adjustment message, so that most differences are posted correctly on the day they happen and never reach the reconciliation queue. The table below shows who originates and who approves each piece of information the message carries.

Scroll horizontally to see all columns.

Who originates each 947 data element and who approves the posting it drives
Element or decisionOriginated byHeld inApproved or accepted by
W15-02 warehouse adjustment number3PL inventory control3PL warehouse management system3PL site inventory manager
W15-03 depositor adjustment numberDepositor or 3PL, per the partner guideDepositor ERP or agreed cross-referenceDepositor inventory accountant
W19-01 reason code3PL inventory controller or QA leadAdjustment record and evidence fileDepositor supply chain analyst on review
W19-02 quantity and W19-03 unitCount or scan at the location3PL count sheet and RF transaction log3PL shift supervisor
Liability for the lossStorage agreement and claim reviewContract file and claim registerDepositor logistics finance lead
Ledger account and tax treatmentDepositor posting rulesDepositor ERP and GST credit ledgerFinancial controller and tax manager

Inside the transaction: W15 header, N1 parties and W19 lines

Every 947 is one header segment that identifies the adjustment, one or more party loops, and repeating detail loops that each start with a W19 item line. Three segments do most of the work, and a mapper who understands their paired elements avoids most rejected files.

The W15 Warehouse Adjustment Identification segment opens the set. W15-01 is the adjustment date in CCYYMMDD form. W15-02 and W15-03 are both "Adjustment Number" elements: the 004010 semantic notes say W15-02 is assigned by the warehouse and W15-03 by the depositor, and syntax rule P0203 says that if either is present the other is required. A partner guide therefore has to say what fills W15-03 when the warehouse initiated the change.

  • N1 party loop: names the depositor with entity code DE and the warehouse with WH, so a 3PL serving one client from several buildings can be told apart.
  • W19 item detail: W19-01 reason code, W19-02 credit or debit quantity and W19-03 unit of measure are mandatory in every line.
  • Item identification: rule R0405 requires either the W19-04 U.P.C. case code or a W19-05 qualifier, and P0506 pairs W19-05 with the W19-06 product ID.
  • Lot and condition: W19-09 holds the warehouse lot number, and W19-16 can carry an inventory transaction type such as DM for damaged or QU for hold or quarantined inventory.
  • Weights: W19-10 to W19-15 carry up to two weights, and each weight needs its qualifier and unit code alongside it.

The detail loop can also hold G69 descriptions, N9 references and, in later releases, an AMT monetary amount. Most 3PLs leave value out, because cost belongs to the owner. The sample below shows one header and three lines in 004010 layout; the element positions in the W19 line are counted out in the comment so a mapper can check the empty separators.

ST*947*0001~
W15*20261112*ADJ-88213*D-55102~
N1*DE*HARBOR HOME GOODS~
N1*WH*MEMPHIS DC 3~
W19*AU*12*CA**VN*40417***LOT2611*******DM~
G69*CASES CRUSHED BY REACH TRUCK AISLE 14~
W19*06*40*EA**VN*51880~
W19*56*15*EA**VN*51902~
SE*9*0001~

W19 positions in line 1:
01 AU      reason: Damaged in Facility
02 12      quantity
03 CA      unit: Case
04 (empty) U.P.C. case code, not used because 05/06 are sent
05 VN      qualifier: vendor's item number
06 40417   item
07-08      second product ID pair, not used
09 LOT2611 warehouse lot number
10-15      weights, not used
16 DM      inventory transaction type: Damaged

Reason codes that change quantity and codes that change status

Element 181, the Quantity or Status Adjustment Reason Code, holds 48 values in release 004010 and 52 in release 8010, and they fall into two families. Some codes change how many units the depositor owns; others leave the count alone and move units between usable, held and inspection states. Posting a status code as a quantity change is the most common 947 mapping error.

Several codes come in matched pairs that show direction without a sign on the quantity. Code 06 is Book Adjustment Decrease and 56 is Book Adjustment Increase; 05 is Product Put on Hold and 55 is Product Taken Off Hold; 04 and 54 correct a receipt reported too low or too high; 03 and 53 do the same for shipments. Whether W19-02 ever carries a minus sign is a partner-guide decision, so confirm it rather than assume.

Scroll horizontally to see all columns.

Selected X12 element 181 reason codes and the ERP movement each should drive
CodeX12 descriptionChanges quantity or statusTypical ERP movementDefault cost owner to test
06 / 56Book Adjustment Decrease / IncreaseQuantityInventory difference posting to shrink or gain accountDepositor, within the contract allowance
AAPhysical CountQuantityCount difference against the count documentDepositor, within the contract allowance
AUDamaged in FacilityQuantity or status, per guideMove to damaged stock, then scrap on disposal3PL where it failed to take reasonable care
AVDamaged in TransitQuantity or status, per guideMove to damaged stock with a carrier claim referenceCarrier, subject to its liability terms
07Product Dumped or DestroyedQuantityScrap issue with destruction evidenceSet by the earlier damage or expiry cause
05 / 55Product Put on Hold / Taken Off HoldStatusTransfer between unrestricted and blocked stockNo cost movement
AXShelf-life ObsolescenceQuantityWrite-off or move to expired stockDepositor, unless rotation rules were broken
UDUnauthorized DestructionQuantityScrap issue and claim against the warehouse3PL

Codes AU and AV need the most care, because one physical event can be reported either way. A case crushed by a reach truck inside the building is AU. A case that arrived damaged and was noticed at receipt belongs on the 944 receipt as an exception, not on a 947; AV on a 947 should appear only when damage traced to transit is found after the receipt has already posted, and it should carry the carrier's pro or LR number in an N9 reference.

X12 947 Warehouse Inventory Adjustment Advice lines carry a W19-01 reason code from element 181, which lists 48 codes in release 004010, plus a mandatory W19-02 quantity and W19-03 unit, and the depositor ERP should post each W15-02 warehouse adjustment number exactly once, routing status codes 05 and 55 to stock transfers rather than write-offs.

Mapping each reason code to an ERP movement and a ledger account

A depositor needs one written rule per reason code that names the ERP movement, the stock type before and after, the general ledger account and whether a claim is opened. Without that table, the integration team guesses, and finance discovers the guesses in the month-end variance.

The mapping splits naturally into three outcomes. Status codes move units between stock types inside the same inventory value and never touch profit or loss. Quantity decreases reduce inventory value and post to a loss account chosen by cause. Quantity increases, such as 56 or a 51 Unable-to-Locate Product Located, restore value and should reverse the account that took the original loss where the two can be linked.

  • Hold and release: 05 and 55, and 08 and 88 for quality inspection in later releases, post as transfers between unrestricted and blocked or inspection stock, at zero value.
  • Shrink and gain: 06, 56 and AA post to an inventory shrink or gain account, and the running total is compared with the shrink allowance in the storage agreement.
  • Damage in the building: AU moves units to a damaged stock type first, opens a claim against the 3PL, and only becomes a write-off when a 07 destruction line or disposal record follows.
  • Damage in transit: AV follows the same path but opens a carrier claim, which should already have a deadline in the claim register.
  • Catch-all codes: AH Other should be blocked from auto-posting and routed to review, because it gives the ERP nothing to decide with.

On the accounting side, the US rule for a loss is short. ASC 330-10-35-1B requires inventory measured by methods other than LIFO or the retail method to be carried at the lower of cost and net realizable value, and says the difference is recognised as a loss in the period, naming damage and physical deterioration as causes. Ind AS 2 paragraph 34 likewise expenses all losses of inventories in the period the loss occurs.

From a 3PL stock change to one posted ERP movement Step 1, 3PL adjusts: WMS records the change. Count, damage or hold logged at the location; Adjustment number W15-02 assigned; Evidence packet filed by number. Step 2, 947 received: Syntax and uniqueness checks. W15-02 and W15-03 present as a pair; Unit and item resolve in the master; Repeat adjustment number posts nothing. Step 3, Map by reason: Code picks movement and account. 05 and 55 move stock status only; 06, 56 and AA post to shrink or gain; AU and AV open a claim first. Step 4, Cost and tax: Loss, recovery and credit. Loss expensed in the period; 3PL or carrier claim tracked; India: Section 17(5)(h) reversal. From a 3PL stock change to one posted ERP movement Each 947 line is checked once, mapped by reason code, costed and routed to a claim or a credit reversal 1 · 3PL ADJUSTS WMS records the change • Count, damage or hold logged at the location • Adjustment number W15-02 assigned • Evidence packet filed by number 2 · 947 RECEIVED Syntax and uniqueness checks • W15-02 and W15-03 present as a pair • Unit and item resolve in the master • Repeat adjustment number posts nothing 3 · MAP BY REASON Code picks movement and account • 05 and 55 move stock status only • 06, 56 and AA post to shrink or gain • AU and AV open a claim first 4 · COST AND TAX Loss, recovery and credit • Loss expensed in the period • 3PL or carrier claim tracked • India: Section 17(5)(h) reversal

Under US GAAP ASC 330-10-35-1B, a depositor carrying FIFO or average-cost stock that a 3PL reports on a 947 with reason AU, AV or 07 recognises the loss in the period it occurs, and a mapping table should route at least 95% of lines automatically, holding reason AH Other for review.

Damage, shrink and found stock: who pays and what evidence proves it

The 947 reports a loss but never decides who bears it; the storage agreement and the evidence do. A depositor that posts every AU line straight to its own damage expense gives up a claim that the contract may well support.

In the US, UCC Section 7-204(a) holds a warehouse liable for loss of or injury to goods caused by its failure to exercise the care that a reasonably careful person would use in similar circumstances, and Section 7-204(b) allows the warehouse receipt or storage agreement to limit that liability to a stated amount. In practice the storage agreement adds a shrink allowance, often expressed as a percentage of throughput, below which count losses are the owner's cost.

For each liability decision, ask the 3PL for a defined evidence packet linked to the W15-02 number. Without it, a claim becomes an argument about memory, and the shrink allowance becomes the default for everything. The 3PL shrinkage allowance calculation explains how the allowance itself is priced.

  • Damaged in facility: photos of the damaged units with location label visible, the equipment or task involved, the RF user ID and the time, plus the disposal or rework decision.
  • Damaged in transit: the receipt record showing the earlier posting, the carrier's delivery document, any exception noted on it, and the claim reference sent to the carrier.
  • Count decrease: the count document, the recount by a second counter, and the transaction history of the location for the previous 30 days.
  • Found stock: where it was found, the location history, and any earlier 06 or AA line that the find reverses.

A count adjustment posted twice: the duplicate 947 trace

The opening example is a real pattern: a translator resends a file after a missing acknowledgement, the resend gets a new interchange control number, and the ERP treats it as new. The fix is an idempotency check on the warehouse's own adjustment number, not on envelope numbers.

  1. 23:40 count closes: the 3PL cycle count of pick face 14-03-B for item 51880 finds 40 eaches short; the WMS posts adjustment ADJ-88213 with reason 06 and sends a 947 in interchange 000004417.
  2. 23:52 acknowledgement missing: the value-added network times out and no 997 functional acknowledgement returns to the 3PL translator within its 10-minute window.
  3. 02:10 automatic resend: the translator rebuilds the interchange as 000004418 with the same W15-02 value, ADJ-88213, and transmits it again.
  4. 02:14 second posting: the depositor ERP inbound queue checks only the interchange control number, finds it unique, and posts a second inventory difference of 40 eaches against item 51880.
  5. 07:30 orders backordered: available-to-promise shows 80 short, three customer orders release as backorders, and an analyst traces both postings to the same W15-02 value at 09:15.

The correction is a uniqueness key of depositor, warehouse, W15-02 and line number, checked before posting. Envelope control numbers prove that an interchange arrived once; they say nothing about whether the business event is new. Our article on the 997 functional acknowledgment covers why acknowledgements go missing and how resend rules should work.

A worked adjustment batch in dollars and rupees

The same four-line batch shows how the reason code, not the quantity, drives cost and recovery. The figures are illustrative; the US case uses a depositor in a Memphis 3PL building, and the Indian case uses the same items held by a 3PL in Bhiwandi, bought at 18% GST with input tax credit availed.

Indian tax adds a step the US case lacks. Section 17(5)(h) of the CGST Act blocks input tax credit on goods lost, stolen, destroyed or written off, so credit already taken on those units must be reversed. The damaged-stock write-off guide on reversing GST credit on written-off goods walks through the return mechanics; here the point is that each decrease line carries a tax amount as well as a cost.

Scroll horizontally to see all columns.

One illustrative 947 batch costed for a US depositor and an Indian depositor
947 lineQuantityUS cost ($)US recovery routeIndia cost (₹)India credit to reverse at 18% (₹)
AU damaged in facility, item 4041712 cases460.80 (12 × 38.40)Claim on 3PL: 460.8035,400 (12 × 2,950)6,372
AV damaged in transit, item 404175 cases192.00 (5 × 38.40)Carrier claim: 192.0014,750 (5 × 2,950)2,655
06 book decrease, item 5188040 eaches128.00 (40 × 3.20)Inside shrink allowance9,800 (40 × 245)1,764
56 book increase, item 5190215 eaches(48.00) gainOffsets shrink(3,675) gainNil; no credit was reversed on this item
Batch total before recoveries72 units732.80652.80 claimed56,27510,791
Net cost if both claims succeed80.00Set by the claims10,791 stays reversed

Two lessons sit in the table. First, only 80 of the 732.80 dollars is genuinely the owner's cost, and that figure is visible only because each line kept its own reason code. Second, in India the ₹10,791 of credit reversal follows the loss whether or not the 3PL or carrier later compensates, so the reversal is posted from the 947 line, while the claim runs on its own timetable.

Indian depositors posting a 947 decrease for goods lost, destroyed or written off must reverse input tax credit under CGST Act Section 17(5)(h), and Ind AS 2 paragraph 34 expenses the inventory loss in the same period; on goods bought at 18% GST, each ₹1,000 written off carries ₹180 of credit to reverse.

Translator checks that are fixed rules and reviews a planner owns

Most 947 controls are mechanical and belong in the translator or the ERP inbound layer, where they run on every file without fatigue. A smaller set needs a person, because the answer depends on photos, history or the contract, and software can only prepare the case.

Scroll horizontally to see all columns.

Which 947 checks run as fixed rules and where software only prepares a person's decision
TaskFixed rule in translator or ERPSoftware assists, person decides
Rejecting a W15 with W15-02 but no W15-03Yes: syntax rule P0203No
Blocking a repeat of the same W15-02 and lineYes: uniqueness key before postingNo
Checking the W19-03 unit against the item's unit conversionsYes: unknown or unconvertible unit rejects the lineNo
Sending reason AH Other or a value above a set limit to reviewYes: routing ruleReviewer decides the posting
Reading damage photos to judge AU against AVNoImage model suggests a cause; analyst confirms
Matching a 56 found line to an earlier 06 lossNoSearch proposes candidate lines by item and location; analyst links them
Deciding whether a loss is inside the shrink allowanceRunning total is calculated automaticallyFinance lead decides on borderline months

The table is deliberately short on artificial intelligence. A model can read a damage photo or rank likely matches for a found pallet, which saves an analyst time. It should not post, because a wrong cause on a damaged line moves cost between three parties and changes the Indian credit position.

Onboarding checklist for a 3PL partner's 947 feed

A 947 feed is ready for production when the depositor has agreed the reason code list, tested every code it allows, and proved that a resend posts nothing. Most problems after go-live trace back to a code that was never tested or a pairing rule that was never agreed.

Scroll horizontally to see all columns.

Go-live checklist for accepting a 3PL's warehouse inventory adjustment feed
CheckPass conditionOwner
Reason code list agreedWritten list of allowed element 181 codes, with AH Other limited or excludedDepositor supply chain analyst
Mapping table signedEach allowed code has an ERP movement, stock type, account and claim ruleFinancial controller
W15 pairing definedPartner guide states what fills W15-03 for warehouse-initiated changesEDI analyst
Sign convention agreedGuide states whether W19-02 is ever negative or direction comes only from the codeEDI analyst
Every code testedAt least one test line per allowed code posts as mappedIntegration tester
Resend test passedSame W15-02 in a new interchange posts zero linesIntegration tester
Evidence packet agreedDamage and count evidence retrievable by W15-02 within one working day3PL account manager
Indian credit reversal linkedDecrease lines for lost or destroyed goods feed the credit reversal reportTax manager

The 947 is one of several warehouse messages, and it works best when the 944 receipt and 945 shipment advices are mapped to the same item and unit master. More logistics data and control guides are collected on the Logistics and Supply Chain hub. If you are choosing an integration partner or a 3PL and want adjustment feeds specified before contract signature, you can send us your requirements.

Discuss this workflow

Describe your current systems, the recurring exception and the outcome you need. Keep shipment, customer and financial records out of the initial message.

START A CONVERSATION

Let’s talk about your next build.

Prepare your brief below, then review and send it in your email app to sales@nextlabsonline.com.

SELECTED INDUSTRYLogistics & supply chain

Article: EDI 947 Warehouse Inventory Adjustment Advice for 3PL Stock · EDI & Message Standards

THE FIRST CONVERSATION

Your product idea, AI opportunity or automation challenge—and a useful first milestone.

All fields are required.

A few sentences about the problem, your users and timing are enough.

We’ll use your details to respond to your enquiry. Please don’t include patient records, passwords or confidential information. Privacy Policy · Website Terms.

Common operational questions

Practical answers for operations, engineering, and finance teams working on edi 947 warehouse inventory adjustment in logistics & supply chain.

What is the difference between an EDI 947 and an EDI 846?
A 947 reports individual adjustments, each with its own reason code, quantity and adjustment number, as they happen. An 846 Inventory Inquiry/Advice reports stock positions, usually as a periodic snapshot. A depositor uses 947 lines to post and explain each change, and the 846 to confirm that the resulting balances still agree.
Which 947 reason code should a 3PL use for stock damaged by its own forklift?
Code AU, Damaged in Facility, fits damage that happened inside the warehouse, such as a case crushed by a reach truck. The line should be backed by photos, the location, the RF user and time. If the damaged units are later destroyed, a separate line with code 07, Product Dumped or Destroyed, records the disposal.
Why does the 947 W15 segment have two adjustment numbers?
In release 004010, W15-02 is the adjustment number assigned by the warehouse and W15-03 the number assigned by the depositor. Syntax rule P0203 requires both whenever either is present, so the partner guide must state what fills W15-03 when the warehouse started the change, such as a repeat of its own number.
Does a 947 decide whether the 3PL pays for a loss?
No. The 947 only reports that the warehouse record changed. Liability comes from the storage agreement and evidence; in the US, UCC Section 7-204 makes a warehouse liable for loss caused by failing to take reasonable care, subject to any agreed limit. Shrink inside a contractual allowance usually stays with the goods' owner.

References

Sources checked 13 November 2026. US and India statutory authorities and vendor documentation support platform facts; the worked examples and diagrams are original.

About the author

Vikasraj Yadav writes about operational decisions, software and automation for NextEdge Labs.