EDI 940 and 945: Warehouse Shipping Messages
What the X12 940 warehouse shipping order and 945 shipping advice carry, how they differ from the 850 and 856, and where parcel labels fit.
The EDI 940 is the order a business sends its warehouse to ship goods, and the EDI 945 is the warehouse's reply saying the shipment was made. Both pass between the owner of the inventory and the warehouse, not between buyer and seller. The parcel labels are bought in the middle, after the 940 arrives and before the 945 goes out, and their tracking numbers can be part of what the 945 reports.
What do the EDI 940 and 945 do?
The 940 tells a warehouse to ship, and the 945 tells the owner of the goods that it shipped. X12 calls that owner the depositor: the business whose inventory sits in the warehouse. Per the X12 transaction set list, the 940 Warehouse Shipping Order "can be used to enable the depositor or other business party to advise a warehouse to make a shipment, confirm a shipment, or modify or cancel a previously transmitted shipping order."
The same X12 list describes the 945 Warehouse Shipping Advice this way: it "can be used by the warehouse to advise the depositor or other business party that shipment was made. It is used to reconcile order quantities with shipment quantities."
That second sentence is the point: the 945 says what actually left the building, so the depositor can catch any gap.
Stedi, a third-party EDI reference, gives the common case: a seller using a 3PL sends the warehouse a 940 to fulfill an order, and the warehouse replies with a 945 to confirm fulfillment and give shipment details.
The 940 and 945 sit in a wider warehouse family in X12. Per X12, the 943 Warehouse Stock Transfer Shipment Advice tells a receiving location that a transfer shipment was made, the 944 Warehouse Stock Transfer Receipt Advice confirms the receipt, and the 947 Warehouse Inventory Adjustment Advice reports quantity or status changes to inventory records.
How do the 850, 940, 945 and 856 compare?
The 850 and 856 usually pass between buyer and seller, while the 940 and 945 pass between the seller and its warehouse. A seller that uses a 3PL can take part in both conversations on the same order.
| Document | X12 name | Who sends it, to whom | When | What it carries |
|---|---|---|---|---|
| 850 | Purchase Order | Buyer to seller | When the buyer places the order | The purchase order. Per X12, it "should not be used to convey purchase order changes or purchase order acknowledgment information." |
| 940 | Warehouse Shipping Order | Depositor (or other business party) to the warehouse | When an order should ship, or an earlier one should change or be cancelled | Order status, depositor order number, optional PO number, warehouse line items, optional carrier information |
| 945 | Warehouse Shipping Advice | Warehouse to the depositor (or other business party) | After the shipment is made | Shipment identification, depositor order number, PO number, item detail for reconciling ordered and shipped quantities, optional carrier detail and marks and numbers, shipment totals |
| 856 | Ship Notice/Manifest | Usually the seller or shipper to the buyer | After the shipment is packed and its carrier details are known | Shipment contents, order information, product description, physical characteristics, packaging, marking, carrier information |
The 856 row follows X12's description of a shipment's contents and related information. SPS Commerce, a third-party EDI reference, adds that the 856 shipment level includes "Carrier details, tracking numbers, shipment identification," while the order level carries purchase order numbers (SPS Commerce on the 856). Our post on EDI 856 ASNs and parcel tracking numbers covers that document in detail.
What is inside a 940 and a 945?
In X12 release 004010, a 940 opens with a W05 Shipping Order Identification segment and a 945 opens with a W06 Warehouse Shipment Identification segment, and both carry the depositor order number. Per Stedi's 004010 reference:
- 940 heading. A mandatory W05 segment. Its elements include Order Status Code (mandatory), Depositor Order Number (mandatory, up to 22 characters) and Purchase Order Number (optional, up to 22).
- 940 body. A mandatory W01 Line Item Detail - Warehouse for the lines, plus optional W66 Warehouse Carrier Information and W76 Total Shipping Order segments.
- 945 heading. A mandatory W06 segment, with elements including Depositor Order Number, Shipment Identification Number and Purchase Order Number.
- 945 body. A mandatory W12 Warehouse Item Detail, optional W27 Carrier Detail and MAN Marks and Numbers segments, and a W03 Total Shipment Information summary (Stedi on the 945).
These are the 004010 layouts, and trading partners publish their own implementation guides, so segment usage can differ by partner and by X12 release. Where a parcel tracking number goes in a 945, for example, is something to confirm in your partner's guide rather than assume.
Is a 945 the same as an 856?
No: X12 defines the 945 as the warehouse telling the depositor that a shipment was made, and defines the 856 Ship Notice/Manifest as a separate transaction set. They go to different recipients and are built to different implementation guides.
A seller that uses a 3PL and sells to a retailer may deal with both on one order. The warehouse sends the 945 to the seller. If the retailer asks for an ASN, the seller's EDI provider builds an 856 to the retailer's guide. Some facts, such as the carrier and tracking numbers, may appear in both, but each has its own mapping. Ask your EDI provider how it builds each one. Our page on EDI shipping labels covers where carrier labels sit in an EDI workflow.
Where does the parcel label sit between the 940 and the 945?
The label is bought after pick and pack and before the 945 is sent, because a parcel shipment has no tracking number until its labels exist. A common flow: the WMS releases the 940 as a pick, the pack station boxes and weighs it, a label tool buys one label per box, and the tracking numbers go back to whatever builds the 945. Our page on WMS shipping integration covers the export and return paths.
A checklist for a warehouse shipping parcel orders that arrive as 940s:
- Store the depositor order number from the 940 with the order, and the PO number if the 940 carries one.
- Read any carrier information on the 940 before rate-shopping, and use a carrier or service the depositor named.
- Use the depositor order number as the shipment reference for every box's label, so all tracking numbers for the order share one key.
- Weigh and measure each packed box and buy one label per box.
- Record each tracking number against its reference and box.
- Compare packed quantities with ordered quantities before the 945 goes out. The 945 should report what actually shipped.
- If a 940 change or cancellation arrives after labels are bought, void the unused labels before they are scanned, and keep their tracking numbers out of the 945.
- Build and send the 945 only after the final labels exist.
What does a 940 to 945 cycle look like?
Example: a brand stores inventory at a 3PL and sends a 940 with depositor order number SO-20417 and PO number 7700128 for three lines totaling 30 units. The warehouse finds only 4 of the 6 units on line 3, packs 28 units into two boxes, and buys two parcel labels with reference SO-20417.
| Line (example) | Item | Ordered on the 940 | Shipped on the 945 |
|---|---|---|---|
| 1 | Item A | 12 | 12 |
| 2 | Item B | 12 | 12 |
| 3 | Item C | 6 | 4 |
| Total | 30 | 28 |
| Box (example) | Reference | Tracking number (made up) |
|---|---|---|
| 1 of 2 | SO-20417 | 1ZEXAMPLE0000000101 |
| 2 of 2 | SO-20417 | 1ZEXAMPLE0000000102 |
The 945 goes back to the brand with the same order and PO numbers, item detail showing 28 of 30 units shipped, the carrier detail, and the two tracking numbers placed where the brand's implementation guide asks for them. The brand sees the 2-unit gap on line 3 and decides whether to backorder or cancel it. If the retailer behind PO 7700128 wants an 856, the brand's EDI provider builds it separately, to the retailer's guide.
Where GoatLabels fits
GoatLabels fits as the parcel label step between the 940 and the 945. It rate-shops USPS, UPS and FedEx on domestic parcels (DHL on international lanes) from one account. Load orders with a bulk CSV import of up to 500 rows per file, where a column named Order Number, Order ID, Order, Ref or Reference becomes the shipment reference, or create them on the v1 REST API. Each box can get its own label with the same reference, your reference stays on the shipment and its ledger line, and you can search shipments by reference or tracking number. An unused label can be cancelled from the dashboard, with the credit posting back to the wallet after the carrier confirms it was not used; a scanned label cannot be cancelled.
The limits matter here. GoatLabels does not send or receive EDI documents, so it will not read your 940 or write your 945 or 856. It has no native ERP, WMS or EDI connector and no automatic write-back, so your EDI provider or WMS builds the 945 from the tracking numbers, collected through an API integration you run. It does not print GS1-128 compliance labels, and it does not handle LTL or freight. See B2B shipping software for the wider picture.