Bottom line first: in EDI 940 945 warehouse 3PL work, the whole game is one sentence. The 940 is the depositor telling the 3PL warehouse what to ship. The 945 is the warehouse reporting back what actually shipped. One is instruction, one is confirmation.
EDI 940 and 945: What Each Transaction Actually Does
The first mistake people make is treating the 940 and 945 as a pair of shipping notices. They are not. The 940 is an instruction from the depositor to the warehouse: ship this product, this quantity, to this address, via this carrier. The moment the warehouse accepts a 940, the service clock starts — under the terms of the contract, the 3PL's fulfillment clock runs from acceptance of the 940. The 945 is the result: what actually shipped, what came up short, and which carrier took it. The 945 then feeds the 856 ASN, which is how the receiving party knows the freight is on its way.
For troubleshooting, know the segments. In the 940: header W05, line detail W01, routing in W66. In the 945: header W06, W12 carrying ordered, shipped, and difference, carrier data in W27 and N9. GS01 functional IDs: OW for the 940, SW for the 945. When the W12 difference is not zero, read the difference reason code before accusing the warehouse of a mispick.
Two more transaction sets get dragged into this conversation. The 997 is a functional acknowledgement. It proves the other side received your transmission. It does not mean they accepted your instruction. The 943 and 944 are a pair for stock transfers — shipment advice and receipt advice. The 947 covers inventory adjustment advice.
| Transaction | Direction | What it does | Common misunderstanding |
|---|---|---|---|
| 940 | Depositor → warehouse | Shipping order: what, how many, to whom | Treated as a casual heads-up, sent and forgotten |
| 945 | Warehouse → depositor | Shipping advice: what actually shipped, what fell short | Treated as an invoice basis and billed straight from it |
| 997 | Both directions | Confirms the transmission arrived | Treated as business acceptance |
| 943 / 944 | Warehouse → depositor / reverse | Stock transfer shipment / receipt advice | Mixed up with the 945, transfer orders reconciled as sales orders |
| 947 | Warehouse → depositor | Inventory adjustment notice | Adjustment made but never sent, depositor inventory never reconciles |
Before You Send a 940: Run the Checklist
On my go-live night checklist, the 940 gets its own section. Every time. The 940 is upstream. If the 940 is wrong, everything downstream is rework. Check each item against the actual segment:
- Is the order number unique in the depositor's system, and has this order already had a 940 sent for it?
- Do the item code, quantity, and unit of measure on every line match the depositor's order? Unit errors are the worst kind — cases confused with eaches, and the warehouse picks ten times the freight.
- Is the ship-to address complete, with a contact name and phone number? A missing suite number or phone means the carrier can't deliver, and the return cost turns into a dispute between depositor and 3PL.
- Does the W66 routing segment name the carrier and the service level? Carrier name alone doesn't tell the warehouse whether the freight goes ground or air.
- Is there a pickup window? On one project, the depositor's system sent a 940 with a carrier code, but the W66 had no pickup window. The warehouse staged to its default shift, the driver arrived before the order was packed, and the trip was wasted. I have seen that hole three times, and every time it was one missing line in the W66.
- Are special requirements flagged as structured data — temperature control, serial numbers, lot, expiry? Requirements buried in free-text notes are invisible to the warehouse system. Unread is the same as unwritten.
Every item has to point at a specific segment. I have zero tolerance for vague instructions. "Ship ASAP" is not an instruction. "Per contract" is not routing.
Reconciling Against the 945: Line Up Three Sets of Numbers
When the 945 comes back, reconciliation starts. It is three sets of numbers matched line by line: what the 940 ordered, what the 945 says actually shipped, and what the invoice bills. The difference quantity in W12 is where those three sets get stitched together.
Take a concrete example. An order calls for 120 cases. The warehouse ships 118. The difference is 2 cases, reason code shortage. The depositor should invoice for 118 cases, collect for 118 cases, and handle the 2 short cases as a backorder or a refund. If the depositor invoices for the 940's 120, the customer receives 118 and disputes the 2 — a fight that started in the wrong place. The 945 is the statement of what shipped. Invoicing follows the 945, not the 940. That is the core discipline of EDI 940 945 warehouse 3PL reconciliation.
Here is the counterintuitive part: a faster 945 is not always a better 945. One 3PL pushed 945s the moment freight left the dock, to beat the clock. On one shipment, the carrier found two damaged cases at pickup and held them back. The freight didn't actually move. The depositor had already built receiving expectations off the 945, and the customer had staffed for putaway. Then the freight didn't arrive, and the 945 had to be voided and reissued. A wrong 945 sent early costs far more than a right 945 sent late. My rule: the 945 goes out only after carrier pickup is confirmed.

Exception Re-transmission: Where It Usually Falls Apart
Transmission failures come in three kinds, and each needs different handling. First, no 997 comes back. The other side may never have received the transmission, or the acknowledgement itself may have been lost. Check the transmission log before you resend anything. Second, the 997 comes back with error codes. The structure is wrong. Fix the mapping per the error code and resend. Third, the 997 comes back clean but the business rejects it — the warehouse says that order number already shipped, for example. Resending the 940 a hundred times won't fix that. Solve the business problem first.
Re-transmission has three iron rules. First, never resend the identical transmission — every resend gets a new control number and references the original order and transmission, so the receiving system recognizes it as a resend, not a new order. Second, before resending, check whether the other side already processed the original. A duplicate 940 gets treated as two orders and picked twice. Third, if the quantity changed, run the change process. Don't quietly resend a tweaked 940 to overwrite the first one. An overwrite leaves no audit trail, and at reconciliation nobody can say which version governed.
The 945 has its own re-transmission trap. When a 945 goes out wrong, the fix is a corrected 945 — difference quantity spelled out, reason code clear — not a quiet retraction pretending the first one never existed. The depositor's system may already have generated an 856 ASN from the original 945 and sent it to the receiving party. A retraction can't unspread data that has already moved downstream.
Go-Live Night Checklist: The 940/945 Page
On go-live night, I print this page and check each item off by hand. One unchecked box, and we don't go live:
- The 940 and 945 mapping tables are signed off by both the depositor and the 3PL, not just reviewed by the implementer.
- The W66 routing segment, the pickup window, and special requirements each went through at least one round of testing with real transmissions, not just the happy path.
- The alert for a missing 997 goes to a named person on duty, not to a group chat nobody reads.
- Someone in depositor finance owns the workflow for a 945 with a nonzero difference — backorder or refund, with a named owner.
- The re-transmission procedure is written into the operations manual: who may resend, what to check first, how to notify the other side.
- The 945 trigger point is locked to carrier pickup confirmation, not to the moment freight leaves the dock.
The technology behind EDI 940 945 warehouse 3PL work is not hard. The hard part is both sides understanding the same transaction the same way. The depositor thinks "I sent it, so you got it." The warehouse thinks "I sent the 945, so you accepted it." The gap between those two assumptions is exactly what the go-live night checklist is for.
By Lin Xiao, WMS Implementation Consultant










