945 Warehouse Shipping Advice
The 945 Warehouse Shipping Advice is an inbound EDI transaction that confirms your 3PL has shipped an order. When your 3PL sends a 945, the connector creates an Item Fulfillment in NetSuite with full carton details, tracking numbers, and lot/serial number assignments.
The 945 is the most feature-rich inbound 900-series transaction — it handles not just quantity confirmation, but also carton-level packing data, SSCC-18 identifiers, carrier tracking, and lot traceability.
When Does a 945 Arrive?
A 945 is sent by your 3PL after they pick, pack, and ship an order. This is the inbound counterpart to the 940 Warehouse Shipping Order — the 940 says "please ship this," and the 945 says "we shipped it, here's what we packed and the tracking numbers."
Data Flow
940 sent to 3PL (shipping instructions)
→ 3PL picks, packs, and ships
→ 3PL sends 945 to Orderful
→ Orderful delivers 945 to NetSuite connector
→ Connector matches 945 to original Sales Order or Transfer Order
→ Item Fulfillment created with:
- Shipped quantities per line
- Carton records with SSCC-18 and tracking numbers
- Lot/serial number assignments (if applicable)
→ Fulfillment status set to "Shipped"
What the Connector Does
When a 945 is received, the connector processes it in two phases:
Phase 1: Map to Business Data Object (BDO)
- Extracts the order reference — looks for the Depositor Order Number or Purchase Order Number in the 945 header
- Looks up the original order — finds the Sales Order or Transfer Order in NetSuite
- Processes each LX loop (one LX per carton/shipment group):
- Extracts SSCC-18 and tracking numbers from the Marks and Numbers segment
- Processes each W12 loop (item detail within the carton):
- Matches items to the original order using vendor number, UPC, or PO line reference
- Extracts quantities and units of measure
- Extracts lot/serial numbers from extended reference information (Lot qualifier)
- Builds a carton record linking items to their packed quantities
- Aggregates items — if the same item appears in multiple LX loops (multiple cartons), quantities are summed
- Handles unshipped items — any order line items not present in the 945 are set to a shipped quantity of zero on the fulfillment
- Validates — confirms shipped quantities don't exceed ordered quantities
Phase 2: Create Item Fulfillment
- Transforms the original order into an Item Fulfillment record
- Sets ship status to "Packed" temporarily (prevents premature outbound processing)
- Updates line items on the fulfillment:
- Sets
itemreceiveto true for each matched line - Updates quantity to the shipped quantity from the 945
- For lot-numbered items: writes lot assignments to the inventory detail subrecord
- Sets
- Creates carton records linked to the Item Fulfillment with SSCC-18 and tracking data
- Sets ship status to "Shipped" — this triggers any downstream outbound processing (e.g., generating an 856 ASN)
Line Item Matching
Same as other inbound 900-series transactions — the connector matches each W12 item to a line on the original order:
| 945 Identifier | Qualifier | Matches To |
|---|---|---|
| Product Service ID | Vendor Number | Item's Vendor Item Number in NetSuite |
| Product Service ID | UPC | Item's UPC Code in NetSuite |
| Product Service ID | Purchase Order Line Ref | Line number on the original order |
Message Structure (Inbound)
Header
| 945 Element | Used For | Notes |
|---|---|---|
| Depositor Order Number | Order lookup | Primary reference to find the Sales Order or Transfer Order |
| Purchase Order Number | Order lookup (fallback) | Used if Depositor Order Number is not present |
Carton/Shipment Groups (LX Loop)
Each LX loop represents a carton, pallet, or shipment group. The loop contains:
Marks and Numbers (per LX)
| 945 Element | Qualifier | Maps To | Notes |
|---|---|---|---|
| Marks and Numbers | SSCC-18 and Application Identifier | Carton SSCC | The unique carton identifier |
| Marks and Numbers | Carrier Assigned Package ID | Tracking Number | Carrier tracking number for this carton |
Item Details (W12 Loop, nested within LX)
Each W12 within an LX represents one item packed in that carton:
| 945 Element | Maps To | Notes |
|---|---|---|
| Product Service ID + Qualifier | Item matching | See matching table above |
| Quantity | Shipped quantity | Number of units of this item in this carton |
| Unit of Measure | UOM | |
| UPC Case Code | Case UPC | |
| Free-Form Description | Line description | |
| Case Pack Size | Pack | |
| Extended Reference (Lot qualifier) | Lot/serial number | Assigned to inventory detail subrecord |
Lot/Serial Number Handling
If items are lot-numbered or serial-numbered in NetSuite, the connector writes lot assignments from the 945 into the Item Fulfillment's inventory detail subrecord:
- Lot numbers are extracted from the W12 extended reference information (Reference Qualifier =
Lot) - Each lot number gets an inventory assignment line with the lot's quantity
- Lot information is also stored in a custom field on the fulfillment line for reporting
Note: For lot assignment to work, the item must be configured as a Lot Numbered item in NetSuite. If the item is not lot-numbered, the lot data from the 945 is stored in the custom field but not written to inventory detail.
Configuration
Enabling 945 Processing
- Open the relevant Customer or Vendor record
- Go to the Orderful subtab > Enabled Transaction Types
- Add a line for 945 - Warehouse Shipping Advice
- Configure:
- Test Mode — process 945s from the TEST stream
No additional 945-specific configuration is required beyond the standard enabled transaction type setup.
Item Requirements
Items must have identifiers matching what your 3PL sends:
- Vendor Item Number and/or UPC Code — at least one must match the 3PL's product service IDs
- Lot Numbered item type — if you need lot tracking from the 945
Validation Rules
| Rule | What Happens |
|---|---|
| Shipped quantity exceeds ordered quantity | Error logged — the line is flagged |
| Item not found on original order | Error logged — the line is skipped |
| Original order not found | Processing fails — no Item Fulfillment is created |
Troubleshooting
Item Fulfillment Not Created
| Check | How to Fix |
|---|---|
| 945 not enabled | Enable 945 on the Customer or Vendor's Enabled Transaction Types |
| Order reference doesn't match | Verify the Depositor Order Number or Purchase Order Number matches a Sales Order or Transfer Order in NetSuite |
| Sales Order not approved | The order must be in "Pending Fulfillment" status for a fulfillment to be created |
| Order already fully fulfilled | If all lines are already fulfilled, a new fulfillment can't be created |
Tracking Numbers Not Appearing
| Check | How to Fix |
|---|---|
| Wrong qualifier in 945 | Tracking numbers must use the Carrier Assigned Package ID qualifier in the Marks and Numbers segment |
| SSCC-18 present but no tracking | SSCC-18 and tracking numbers are separate fields — your 3PL needs to send both if you need carrier tracking |
Lot Numbers Not Assigned
| Check | How to Fix |
|---|---|
| Item not lot-numbered | The item must be configured as a Lot Numbered item type in NetSuite |
| Wrong qualifier in 945 | Lot numbers must use the Lot reference qualifier in the W12 extended reference information |
| Lot data in custom field but not inventory detail | This happens when the item isn't lot-numbered — lot info is stored for reference but not formally assigned |
Cartons Not Created
| Check | How to Fix |
|---|---|
| No SSCC-18 in 945 | Carton records require an SSCC-18 identifier from the Marks and Numbers segment |
| LX loop structure issues | Each carton should be its own LX loop with Marks and Numbers followed by W12 item details |
Error Messages
| Error | Meaning | Solution |
|---|---|---|
| "Could not find related Sales Order / Transfer Order" | Order reference doesn't match anything in NetSuite | Verify the Depositor Order Number with your 3PL |
| "No matching line items" | None of the items in the 945 could be matched to the original order | Check item identifiers (UPC, vendor number) |
| "Shipped quantity exceeds ordered quantity" | 3PL reported shipping more than ordered | Verify with your 3PL |
What's Next
- 940 Warehouse Shipping Order — The outbound instruction that triggers a 945 response
- 947 Warehouse Inventory Adjustment Advice — For inventory adjustments rather than shipment confirmations
- 3PLs and 900-Series Overview — Back to the overview
Updated 3 months ago
