How-toOracle NetSuitePurchasing / Drop Shipments

How to Set Up and Process Drop Ship Orders in NetSuite

Question
how to set up drop ship in NetSuite

Also searched as

  • NetSuite drop ship purchase order from sales order
  • NetSuite drop ship vs special order
  • NetSuite drop ship receive and bill
  • NetSuite create PO drop ship column

Short answer

Enable Drop Shipments and Special Orders, set Create PO to Drop Ship on the sales order line, and NetSuite generates a purchase order that ships straight to your customer. Receiving that purchase order records the vendor shipment and fulfills the sales order line, without moving inventory in your warehouse.

Applies to: NetSuite (all editions) with Drop Shipments & Special Orders enabled; non-inventory for resale items and inventory items

Process a drop ship order end to end

  1. 1Enable the feature at Setup > Company > Enable Features > Transactions > Purchasing, tick Drop Shipments & Special Orders, and save.
  2. 2On the item record, set the preferred vendor and purchase price. For non-inventory items for resale, tick Drop Ship Item so the item is always drop shipped.
  3. 3Create the sales order. On each drop ship line set the Create PO column to Drop Ship and choose the Vendor if the item has more than one.
  4. 4Save and approve the order. NetSuite flags the line for a purchase order; generate it from the order or from the Create POs list under Transactions > Purchases.
  5. 5Open the resulting purchase order. The ship-to address is the customer's, and the PO is linked to the sales order. Send it to the vendor.
  6. 6When the vendor confirms shipment, click Receive on the purchase order. This records the receipt and marks the sales order line as fulfilled.
  7. 7Enter the vendor bill against the purchase order and invoice the customer from the sales order. Match the two for margin review.

What happens to inventory and the ledger

A drop shipped item never enters your warehouse, so on-hand quantity does not change. Receiving the purchase order records an item receipt tagged as drop ship, and NetSuite recognizes the cost of goods at that point, using the PO rate, rather than holding it on the balance sheet. The sale itself is recognized through the invoice as usual.

This makes timing the main risk: revenue and cost post on different transactions. If the customer is invoiced at order approval but the vendor receipt is entered weeks later, margin for the period looks inflated until the receipt posts. Many teams report on unmatched drop ship lines weekly for that reason.

Drop ship versus special order

A drop ship purchase order ships directly from the vendor to your customer. A special order purchase order ships to you first, you receive the goods into inventory, and then you fulfill the customer order yourself. Use special order when you need to inspect, kit, label or consolidate.

Both use the same Create PO column on the sales order line and the same feature switch. The choice is per line, so a single order can mix stock items, drop ship lines and special order lines, and each is fulfilled by its own route.

-- SuiteQL: sales order lines with a linked purchase order not yet received
SELECT t.tranid, tl.item, tl.createdpo
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id
WHERE t.type = 'SalesOrd'
  AND tl.createdpo IS NOT NULL
  AND tl.isfullyshipped = 'F'

Troubleshooting drop ship flows

If no PO is created, check that the line has a Create PO value, that the order is approved, and that the item has a vendor. If the PO ships to your own address, the line was probably set to Special Order, not Drop Ship, or the ship-to was edited manually.

If receiving does not close the sales order line, check whether the receipt quantity matches the line quantity and whether another fulfillment was created manually, double counting the line. Fix by reviewing related records on the order's Related Records subtab and removing the extra fulfillment.

Common pitfalls

  • !Forgetting to receive the drop ship PO, so the sales order never fulfills and the customer invoice stays pending.
  • !Creating a manual item fulfillment on a drop ship line, which duplicates the fulfillment and corrupts quantities.
  • !Letting the PO price differ from the sales cost without checking margin, since there is no inventory cost layer to catch it.
  • !Not communicating tracking numbers back to the order, so customer service cannot answer where is my order.
  • !Mixing drop ship and stock on one line. Split the quantity into separate lines.

How an ERP-grounded AI assistant handles this

A grounded assistant can list drop ship lines whose PO has not been received, compare PO cost with sales price to flag negative margin, and show which vendors are slowest to ship. ERPray runs those as read-only queries on live NetSuite data and shows the SQL it used. Sending a PO or receiving it stays with your buyers or goes through human approval.

Frequently asked questions

What is the difference between drop ship and special order in NetSuite?

Drop ship sends goods from the vendor directly to the customer, and you never handle them. Special order sends the goods to you first, you receive them into inventory, then you ship to the customer. Both are chosen with the Create PO column on the sales order line.

Does a drop ship purchase order affect inventory?

No. The item is not stocked at your location, so on-hand does not change. The receipt is recorded for cost recognition and to fulfill the sales order line, but no quantity is added to or removed from your warehouse.

Why did my sales order not create a purchase order?

Check that Drop Shipments & Special Orders is enabled, the Create PO column is set on the line, the order is approved and the item has a vendor. Then generate the PO from the order or the Create POs page, as it is not always automatic.

Can I drop ship an inventory item?

Yes. Set the Create PO column to Drop Ship on the sales order line for that item. For non-inventory items for resale, you can also tick Drop Ship Item on the record so the behavior is the default for every order.

Related

How-to

How to Create an Item Fulfillment in NetSuite (Pick, Pack, Ship)

Open an approved sales order and click Fulfill, or use Transactions > Sales > Fulfill Orders to batch them, then set quantities and inventory detail and save. With the Pick, Pack and Ship feature on, the fulfillment moves through Picked, Packed and Shipped statuses, and inventory and cost of goods post when it reaches Shipped.

How-to

How to Set Up Approval Routing in NetSuite

NetSuite offers two approval routing paths: native transaction approval (Enable Features > Transaction approvals, then per-employee Approval Limit and Purchase Approval Limit fields) for simple single-approver chains, and SuiteFlow (Customization > Workflow > Workflows) for multi-step, condition-based, or parallel approval routing with escalation and notification logic.

How-to

How to write and run SuiteQL queries in NetSuite

SuiteQL is NetSuite's read-only SQL dialect over the underlying record tables, run either interactively from Analytics > SuiteQL Query Tool (or the older /app/suiteanalytics query page), through REST at /services/rest/query/v1/suiteql, or programmatically via the N/query module in SuiteScript 2.x. It supports standard SELECT, JOIN, WHERE, GROUP BY and window functions against table names that mostly match record type IDs (transaction, transactionline, item, customer).

How-to

NetSuite Outsourced Manufacturing: Subcontract Work Order Flow

NetSuite outsourced manufacturing lets you buy a finished or processed assembly from a vendor while supplying the components yourself. A purchase order drives a linked work order, components are sent to the vendor, and the item receipt brings in the assembly with component cost plus the vendor charge. It works well once the item, vendor charge and component location are set correctly.

Error fix

Fix NetSuite SSS_USAGE_LIMIT_EXCEEDED Error

SSS_USAGE_LIMIT_EXCEEDED fires when a SuiteScript execution consumes all the governance units (usage points) allotted to its script type before it finishes. Fix it by checking runtime.getCurrentScript().getRemainingUsage() before expensive calls, yielding or rescheduling in Scheduled scripts, and moving heavy record-count work into Map/Reduce, which yields automatically across stages.

Error fix

Fix NetSuite INVALID_FLD_VALUE Error

INVALID_FLD_VALUE means NetSuite rejected a value you tried to set on a field because it does not match the field's expected type, list option, or reference record. Fix it by confirming the internal ID or text value actually exists on that field's source list and matches the field's value type (text versus list versus record reference) before setting it.

AI for ERP

AI for NetSuite, Beyond the Built-In Text Tools

NetSuite's built-in AI covers text generation, not grounded answers on your own data. See how a private LLM over SuiteQL adds real Q&A and controls.

AI for ERP

AI agents for NetSuite manufacturing operations

AI agents for NetSuite manufacturing: WIP tracking, routing exceptions, and work order status grounded in SuiteQL, with human approval on anything that writes back.

Stuck on Oracle NetSuite?

Talk to engineers who work inside Oracle NetSuite every week, and who build private AI that answers these questions from your own ERP data.