Implementation Guide

How to Implement a NetSuite WMS / 3PL Integration

A practical, step-by-step setup guide that turns the reference architecture into a real, accurate integration. Each step lists exactly where to click and links to the official NetSuite documentation so you can verify everything for yourself.

Practical setup guide · Backed by the official NetSuite Help Center

Back to the main article

This is the practical companion to our NetSuite WMS / 3PL Integration guide. The main article explains the architecture and the trade-offs; this page is the plain checklist for actually wiring NetSuite to a warehouse system or 3PL. Work through the steps in order — the early decisions (system of record, item and location setup) are the hard ones to change later — and use the official NetSuite documentation link under every step to confirm the exact screen as you go.

Before you start — prerequisites

  • Features: Advanced Inventory Management (required for native NetSuite WMS); enable the inventory and shipping/receiving features you need at Setup > Company > Enable Features.
  • Integration access: for a 3PL, set up SuiteTalk REST with OAuth 2.0 and a dedicated integration record.
  • One agreed decision: write down which system is the system of record for inventory before you build anything.

What you'll set up

  1. Decide the system of record (native WMS vs 3PL)
  2. Set up items, locations & opening inventory
  3. Wire the outbound flow (orders → 3PL)
  4. Wire the inbound flow (POs / ASN → receipts)
  5. Sync inventory adjustments & returns
  6. Make the integration event-driven
  7. Reconcile daily
1

Decide the system of record (native WMS vs 3PL)

The single most important decision: which system is the authority for inventory. Get this wrong and the two never agree.

Decision:  NetSuite WMS (native, in-house)  or  3PL / third-party WMS (integrated)
  1. Choose native NetSuite WMS if you run your own warehouse — transactions update NetSuite inventory in real time.
  2. Choose a 3PL / third-party integration if a partner holds your stock — then you wire the six data flows below.
  3. Write down the system of record for inventory so disagreements always have a tie-breaker.
2

Set up items, locations & opening inventory

Both systems must start in agreement — same items, same locations, same counts — or every sync after that is reconciling a gap you created on day one.

Go to:  Lists > Accounting > Items  and  Setup > Company > Locations
  1. Create items with matching SKUs/identifiers on both sides; define warehouse locations in NetSuite.
  2. Establish an accurate opening inventory so NetSuite and the warehouse agree at go-live.
  3. Decide how serial/lot and bin detail map between the systems if you use them.
3

Wire the outbound flow (orders → 3PL)

Push orders to the warehouse to ship, and bring back a shipment confirmation as an item fulfillment so NetSuite knows what left.

Go to:  Transactions > Sales > Fulfill Orders (item fulfillment)
  1. Send approved sales orders to the 3PL (the “orders to ship” flow).
  2. When the 3PL ships, create an item fulfillment in NetSuite — this records the shipment and relieves inventory.
  3. With Advanced Shipping enabled, fulfillment and invoicing are separate, so you can confirm the shipment before billing.
4

Wire the inbound flow (POs / ASN → receipts)

Tell the warehouse what’s arriving, then record what was actually received so inventory goes up by the right amount.

Go to:  Transactions > Purchases > Create Inbound Shipment → item receipt
  1. Send purchase orders / ASNs to the 3PL so they know what to expect.
  2. Track in-transit stock with an inbound shipment record (it can bundle lines from multiple POs).
  3. When goods land, create item receipts to add the received quantity to inventory.
5

Sync inventory adjustments & returns

Cycle counts, damages, and returns at the warehouse have to land in NetSuite too — otherwise your available-to-sell is quietly wrong.

Go to:  Transactions > Inventory > Adjust Inventory; returns via item receipt
  1. Post warehouse count differences and damages as inventory adjustments in NetSuite.
  2. Bring returns back in (RMA → item receipt) so returned stock becomes sellable again.
  3. Tag the source of each adjustment so reconciliation can explain every difference.
6

Make the integration event-driven

The architectural choice that decides whether you’re right all day or only at midnight. Sync on events, not on a nightly file dump.

Go to:  Setup > Integration > Manage Integrations (OAuth 2.0); Customization > Scripting > Scripts (RESTlet)
  1. Build the connection on SuiteTalk REST web services with OAuth 2.0 — the preferred channel for new integrations.
  2. Use CRUD operations (and RESTlets where you need custom logic) to push and pull each flow as events happen.
  3. Make every flow idempotent and retryable, so a hiccup doesn’t silently drop a shipment or receipt.
7

Reconcile daily

The discipline most integrations skip. Compare both systems every day so small drift is caught in hours, not at audit.

Go to:  Reports > Saved Searches > All Saved Searches > New
  1. Build a saved search of NetSuite on-hand by item and location.
  2. Compare it against the daily 3PL inventory feed; flag every quantity that doesn’t match.
  3. Put the mismatch search on a dashboard or scheduled email so someone owns chasing it down each morning.

A note on accuracy: NetSuite menu paths and feature names vary by version, edition, and the features enabled in your account (native WMS, Advanced Shipping, Inbound Shipment Management). Confirm each step against the official NetSuite Help Center links and validate the full round-trip — order out, ship, receive, adjust, reconcile — in Sandbox before go-live.

Official NetSuite documentation

Every step links to the source. Full help center: NetSuite Applications Suite — Online Help.


Where native setup ends and engineering begins

Everything above gets you a correct, flowing inventory integration. What sits beyond point-and-click — carton/ASN logic, multi-3PL aggregation, real-time event handling, and exception tooling for stuck shipments — is engineering work. It often means SuiteScript, queue-backed workers, and a reconciliation layer on top of the native records and the connector above.

Inventory drift is expensive and hard to unwind, so build each flow in a Sandbox, reconcile daily, and validate a full order-to-receipt cycle before go-live. For the full background on each decision — system of record, event-driven sync, and where integrations break — read the companion guide.

Back to the main article
Building or fixing a WMS / 3PL integration? Our NetSuite engineers design the system of record, wire all six data flows event-driven over SuiteTalk REST, and stand up daily reconciliation — so your inventory stays accurate as volume grows.
Talk to a NetSuite integration engineer

Documentation links point to the official Oracle NetSuite Help Center (docs.oracle.com). Exact menu paths and feature names vary by NetSuite version and edition — confirm each step against the linked Help Center page and validate in Sandbox first.