3PLs and 900-Series Transactions
Getting started with 900-series transactions and 3PL Trading Partners
Table of Contents
- Overview
- Transaction Types
- Quick Start Guide
- 940 - Warehouse Shipping Order
- 945 - Warehouse Shipping Advice
- Configuration Requirements
- Integration Flow
- Troubleshooting
- Best Practices
Overview
The 900-series EDI transactions facilitate communication between businesses and their third-party logistics (3PL) providers. These transactions enable automated warehouse operations, including order fulfillment, inventory management, and shipment tracking.
Key Benefits
- Automated communication with warehouse/3PL providers
- Real-time inventory visibility
- Streamlined fulfillment process
- Reduced manual data entry and errors
- Improved order tracking and visibility
Transaction Types
Transaction | Name | Direction | Purpose |
---|---|---|---|
940 | Warehouse Shipping Order | Outbound | Instructs 3PL to ship goods to customers |
943 | Warehouse Stock Transfer | Outbound | Requests inventory transfer between locations |
944 | Warehouse Stock Transfer Receipt | Inbound | Confirms stock transfer completion |
945 | Warehouse Shipping Advice | Inbound | Confirms shipment and provides tracking |
947 | Warehouse Inventory Adjustment | Inbound | Reports inventory adjustments |
Currently implemented: 940 (Outbound), 945 (Inbound)
Quick Start Guide
Prerequisites
-
NetSuite Setup
- Orderful NetSuite Connector installed
- Locations configured with vendor assignments
- Item records with proper identifiers (UPC, SKU)
-
Orderful Configuration
- Active Orderful account
- Trading partner connections established
- ISA IDs configured
-
3PL Provider Setup
- EDI capabilities enabled
- ISA ID provided to configure in NetSuite
Step 1: Configure Vendor for 3PL
- Navigate to Lists > Relationships > Vendors
- Create or edit your 3PL vendor record
- Set the following fields:
- Company Name: Your 3PL provider name
- Production ISA ID: 3PL's production ISA identifier
- Test ISA ID: 3PL's test ISA identifier (if applicable)
Step 2: Configure Location
- Navigate to Lists > Site > Locations
- Edit the location that will use the 3PL
- In the custom fields section:
- Vendor: Select your 3PL vendor
- This links the location to the 3PL for 940 generation
Step 3: Enable Transaction Types
- Navigate to your Customer record
- Go to the Enabled Transaction Types subtab
- Add entries for:
- 940 - Warehouse Shipping Order
- 945 - Warehouse Shipping Advice
- Configure each with:
- Test Mode (Yes/No)
- Company ISA ID
- Auto-send preferences
Step 4: Send Your First 940
- Create a Sales Order with:
- Location set to your 3PL-enabled location
- Items with proper UPC/SKU codes
- Ship-to address information
- Save the Sales Order
- Click Generate & Send 940 button (if manual sending)
- Or wait for auto-send if configured
Step 5: Receive Your First 945
- 945s are automatically polled and processed
- When received, the system will:
- Create Item Fulfillments
- Update inventory
- Add tracking information
- Link to original Sales Order
940 - Warehouse Shipping Order
Purpose
The 940 transaction instructs your 3PL provider to ship products to your customers. It contains all necessary information for the warehouse to pick, pack, and ship the order.
Data Flow
NetSuite Sales Order → 940 Generation → Orderful → 3PL Provider
Key Components
Header Information
- Order Number: Sales Order number from NetSuite
- Purchase Order Number: Customer's PO reference
- Order Date: Transaction date
- Ship Date: Requested ship date
- Delivery Dates: Earliest/Latest delivery windows
Ship-To Information (N1 Loop)
- Name: Ship-to customer name
- Address: Complete shipping address
- Identification: DC number, Store number, or Address ID
Line Items (LX Loop)
- Product Identifiers:
- UPC Code
- Vendor/SKU Number
- Case UPC (if applicable)
- Quantities: Ordered quantity
- Units: Unit of measure (EA, CA, etc.)
- Description: Item description
- References: PO line references
Implementation Details
Main Files:
/TransactionHandling/940/warehouseShippingOrder.ts
- Main 940 generation logic/TransactionHandling/940/transactionMapper.ts
- EDI mapping functions
Key Functions:
// Generate 940 from Orderful Transaction
generateOutbound940FromOrderfulTransaction(
orderfulTransaction: record.Record,
enabledTransactionType: EnabledTransactionType,
entity: Vendor
)
// Create 940 transaction set from Sales Order
generate940TransactionSet(salesOrder: record.Record)
Configuration Fields
Sales Order Fields Used:
location
- Must have vendor assignedpurchaseOrderNumber
- Customer PO referenceshipDate
- Requested ship dateediNotes
- Delivery instructions
Item Fields Required:
upcCode
- Product UPCitemId
- Vendor SKUcaseUpc
- Case-level UPC (optional)casePackSize
- Units per case
945 - Warehouse Shipping Advice
Purpose
The 945 transaction confirms that your 3PL has shipped the order and provides shipment details including tracking numbers and actual quantities shipped.
Data Flow
3PL Provider → Orderful → NetSuite → Item Fulfillment
Key Components
Shipment Identification
- Depositor Order Number: Links back to original order
- Shipment Date: Actual ship date
- Carrier Information: Shipping method and carrier
Carton Information (LX Loop)
- SSCC: Serial Shipping Container Code
- Tracking Number: Carrier tracking number
- Dimensions: Length, width, height (optional)
- Weight: Package weight (optional)
Item Details (W12 Loop)
- Product Identifiers: UPC, SKU matching original order
- Shipped Quantity: Actual quantity shipped
- Carton Assignment: Which items in which cartons
Implementation Details
Main Files:
/TransactionHandling/945/transactionMapper.ts
- Maps EDI to BDO/TransactionHandling/945/validator.ts
- Validates line items/TransactionHandling/945/utilities.ts
- Helper functions
Key Functions:
// Map 945 EDI to Business Data Object
mapEdiToBdo945(
inboundTransaction: TransactionDataInbound,
transaction: TransactionWarehouseShippingAdvice945,
orderedLineItems: OrderedLineItem[],
diagnostic: Diagnostic
): MappedBdo945
// Process carton and item information
lXLoopToBdo945(
loop: LoopLX[],
lineItems: OrderedLineItem[]
): Partial<MappedBdo945>
Processing Logic
- Transaction Receipt: 945 received via Orderful webhook
- Validation: Verify against original Sales Order items
- Item Matching: Match shipped items to order lines using:
- UPC codes
- Vendor/SKU numbers
- PO line references
- Fulfillment Creation: Generate Item Fulfillment records
- Tracking Update: Add tracking numbers to fulfillment
Configuration Requirements
Company Preferences
- Navigate to Orderful > Company Preferences
- Configure:
- Company ISA ID: Your company's EDI identifier
- Default Test Mode: For new trading partners
- Auto-processing: Enable/disable automatic processing
Customer Configuration
Required fields on Customer record:
- Production ISA ID: Customer's production identifier
- Test ISA ID: Customer's test identifier (optional)
- Enabled Transaction Types: List of active transactions
Vendor Configuration
Required fields on Vendor record (for 3PL):
- Company Name: Vendor display name
- Production ISA ID: Vendor's production identifier
- Test ISA ID: Vendor's test identifier (optional)
Location Setup
Link locations to 3PL vendors:
- Vendor: Select 3PL vendor for the location
- This determines where 940s are sent
Item Configuration
Ensure items have:
- UPC Code: Primary product identifier
- Vendor Item Number: SKU at 3PL
- Case UPC: For case-level shipping (optional)
- Pack Size: Units per case (optional)
Integration Flow
Outbound 940 Flow
graph LR A[Sales Order Created] --> B{Auto-send enabled?} B -->|Yes| C[Automatic 940 Generation] B -->|No| D[Manual Button Click] C --> E[Generate 940 Transaction] D --> E E --> F[Map to EDI Format] F --> G[Send via Orderful API] G --> H[3PL Receives Order] H --> I[3PL Processes & Ships]
Inbound 945 Flow
graph LR A[3PL Ships Order] --> B[3PL Sends 945] B --> C[Orderful Receives] C --> D[Webhook to NetSuite] D --> E[Map/Reduce Processing] E --> F[Validate Against Order] F --> G[Create Item Fulfillment] G --> H[Update Tracking] H --> I[Complete]
Troubleshooting
Common Issues and Solutions
940 Not Generating
Symptom: Sales Order saved but no 940 created
Check:
-
Location has vendor assigned
Lists > Site > Locations > [Your Location] Verify Vendor field is populated
-
Customer has 940 enabled
Customer Record > Enabled Transaction Types Verify 940 is listed and active
-
ISA IDs configured
- Customer has Production/Test ISA ID
- Vendor has Production/Test ISA ID
- Company ISA ID is set
Solution:
- Ensure all configuration is complete
- Check for errors in Orderful Transaction records
- Review script logs for errors
945 Not Creating Fulfillments
Symptom: 945 received but no Item Fulfillment created
Check:
-
Item matching failing
- Verify UPC codes match between order and 945
- Check vendor item numbers are consistent
-
Sales Order status
- Order must be approved
- Not already fulfilled
-
Validation errors
- Check Orderful Transaction record for errors
- Review mapped data for issues
Solution:
- Correct item identifiers
- Ensure Sales Order is in correct status
- Review and fix validation errors
Tracking Numbers Not Updating
Symptom: Fulfillment created but no tracking number
Check:
- 945 contains tracking in Marks and Numbers section
- Tracking number qualifier is correct (CP for carrier)
Solution:
- Work with 3PL to ensure tracking included in 945
- Verify correct qualifier codes used
Error Messages
Error | Meaning | Solution |
---|---|---|
"No location found for sales order" | Sales Order missing location | Set location field on Sales Order |
"No vendor found for location" | Location not linked to 3PL | Configure vendor on location record |
"Outbound config not found for 940" | Missing transaction configuration | Add 940 to Enabled Transaction Types |
"No matching line items found" | 945 items don't match order | Verify item identifiers (UPC/SKU) |
"Could not find related sales orders" | 940 not linked to Sales Order | Check transaction linkage |
Best Practices
Data Quality
-
Maintain accurate item identifiers
- Keep UPC codes current
- Ensure vendor SKUs match 3PL's system
- Use consistent units of measure
-
Address validation
- Verify ship-to addresses before sending 940
- Include all required address components
- Use standard state/country codes
Performance Optimization
-
Batch processing
- Group orders by location/vendor
- Use scheduled scripts for bulk operations
- Monitor script governance
-
Error handling
- Implement retry logic for transient failures
- Log detailed error information
- Set up alerts for critical failures
Testing Procedures
-
Use test mode first
- Configure test ISA IDs
- Send test transactions
- Verify correct mapping
-
Validate with trading partners
- Confirm field mappings
- Test full order lifecycle
- Document any custom requirements
Appendix
Field Mappings
940 Field Mapping
NetSuite Field | EDI Segment | EDI Element |
---|---|---|
Sales Order # | W05 | Depositor Order Number |
PO Number | W05 | Purchase Order Number |
Ship Date | G62 | Date (Qualifier 10) |
Location.Vendor | N1 | Ship-To Information |
Item.UPC | W01 | Product Service ID |
Quantity | W01 | Quantity |
945 Field Mapping
EDI Segment | EDI Element | NetSuite Field |
---|---|---|
W06 | Depositor Order Number | Links to Sales Order |
W12 | Product Service ID | Matches Item.UPC |
W12 | Quantity | Fulfillment Quantity |
MAN | Marks and Numbers | Tracking Number |
Updated about 4 hours ago