3PLs and 900-Series Transactions

Getting started with 900-series transactions and 3PL Trading Partners

Table of Contents

  1. Overview
  2. Transaction Types
  3. Quick Start Guide
  4. 940 - Warehouse Shipping Order
  5. 945 - Warehouse Shipping Advice
  6. Configuration Requirements
  7. Integration Flow
  8. Troubleshooting
  9. 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

TransactionNameDirectionPurpose
940Warehouse Shipping OrderOutboundInstructs 3PL to ship goods to customers
943Warehouse Stock TransferOutboundRequests inventory transfer between locations
944Warehouse Stock Transfer ReceiptInboundConfirms stock transfer completion
945Warehouse Shipping AdviceInboundConfirms shipment and provides tracking
947Warehouse Inventory AdjustmentInboundReports inventory adjustments

Currently implemented: 940 (Outbound), 945 (Inbound)

Quick Start Guide

Prerequisites

  1. NetSuite Setup

    • Orderful NetSuite Connector installed
    • Locations configured with vendor assignments
    • Item records with proper identifiers (UPC, SKU)
  2. Orderful Configuration

    • Active Orderful account
    • Trading partner connections established
    • ISA IDs configured
  3. 3PL Provider Setup

    • EDI capabilities enabled
    • ISA ID provided to configure in NetSuite

Step 1: Configure Vendor for 3PL

  1. Navigate to Lists > Relationships > Vendors
  2. Create or edit your 3PL vendor record
  3. 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

  1. Navigate to Lists > Site > Locations
  2. Edit the location that will use the 3PL
  3. 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

  1. Navigate to your Customer record
  2. Go to the Enabled Transaction Types subtab
  3. Add entries for:
    • 940 - Warehouse Shipping Order
    • 945 - Warehouse Shipping Advice
  4. Configure each with:
    • Test Mode (Yes/No)
    • Company ISA ID
    • Auto-send preferences

Step 4: Send Your First 940

  1. Create a Sales Order with:
    • Location set to your 3PL-enabled location
    • Items with proper UPC/SKU codes
    • Ship-to address information
  2. Save the Sales Order
  3. Click Generate & Send 940 button (if manual sending)
  4. Or wait for auto-send if configured

Step 5: Receive Your First 945

  1. 945s are automatically polled and processed
  2. 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 assigned
  • purchaseOrderNumber - Customer PO reference
  • shipDate - Requested ship date
  • ediNotes - Delivery instructions

Item Fields Required:

  • upcCode - Product UPC
  • itemId - Vendor SKU
  • caseUpc - 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

  1. Transaction Receipt: 945 received via Orderful webhook
  2. Validation: Verify against original Sales Order items
  3. Item Matching: Match shipped items to order lines using:
    • UPC codes
    • Vendor/SKU numbers
    • PO line references
  4. Fulfillment Creation: Generate Item Fulfillment records
  5. Tracking Update: Add tracking numbers to fulfillment

Configuration Requirements

Company Preferences

  1. Navigate to Orderful > Company Preferences
  2. 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:

  1. Location has vendor assigned

    Lists > Site > Locations > [Your Location]
    Verify Vendor field is populated
  2. Customer has 940 enabled

    Customer Record > Enabled Transaction Types
    Verify 940 is listed and active
  3. 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:

  1. Item matching failing

    • Verify UPC codes match between order and 945
    • Check vendor item numbers are consistent
  2. Sales Order status

    • Order must be approved
    • Not already fulfilled
  3. 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

ErrorMeaningSolution
"No location found for sales order"Sales Order missing locationSet location field on Sales Order
"No vendor found for location"Location not linked to 3PLConfigure vendor on location record
"Outbound config not found for 940"Missing transaction configurationAdd 940 to Enabled Transaction Types
"No matching line items found"945 items don't match orderVerify item identifiers (UPC/SKU)
"Could not find related sales orders"940 not linked to Sales OrderCheck transaction linkage

Best Practices

Data Quality

  1. Maintain accurate item identifiers

    • Keep UPC codes current
    • Ensure vendor SKUs match 3PL's system
    • Use consistent units of measure
  2. Address validation

    • Verify ship-to addresses before sending 940
    • Include all required address components
    • Use standard state/country codes

Performance Optimization

  1. Batch processing

    • Group orders by location/vendor
    • Use scheduled scripts for bulk operations
    • Monitor script governance
  2. Error handling

    • Implement retry logic for transient failures
    • Log detailed error information
    • Set up alerts for critical failures

Testing Procedures

  1. Use test mode first

    • Configure test ISA IDs
    • Send test transactions
    • Verify correct mapping
  2. Validate with trading partners

    • Confirm field mappings
    • Test full order lifecycle
    • Document any custom requirements

Appendix

Field Mappings

940 Field Mapping

NetSuite FieldEDI SegmentEDI Element
Sales Order #W05Depositor Order Number
PO NumberW05Purchase Order Number
Ship DateG62Date (Qualifier 10)
Location.VendorN1Ship-To Information
Item.UPCW01Product Service ID
QuantityW01Quantity

945 Field Mapping

EDI SegmentEDI ElementNetSuite Field
W06Depositor Order NumberLinks to Sales Order
W12Product Service IDMatches Item.UPC
W12QuantityFulfillment Quantity
MANMarks and NumbersTracking Number