Wholesaler Onboarding: From Purchase Receiving to Distribution
Last updated 2026-10-13
The minimum closed loop for a wholesaler or distributor: master data, procure-to-receive, and order-to-ship.

This guide is for wholesalers and distributors who buy from suppliers and sell onward. The minimum closed loop has three parts: get master data right once, run procure-to-receive, and run order-to-ship.
Get master data right first#
- Products (SKUs): create each SKU with multi-UOM and pallet configuration. ABC analysis can be enabled per merchant — it runs daily and classifies items by the last 90 days of outbound volume (top 80% → A, next 15% → B, rest → C).
- Vendors and customers: vendors are shared between Purchase and WMS. When importing orders from Excel, customers that do not exist are auto-created by name.
- Locations: maintain locations under master data, with bulk import/export. Set a minimum stock level (pick_location_min) on pick faces so replenishment tasks are generated automatically when stock runs low.
Procure-to-receive loop#
- Create a PO (vendor + warehouse + lines) → submit for approval → approve. In Purchase settings you can turn on auto-create ASN on approve and auto-push ASN to WMS.
- Send the ASN or release the PO to push it down to WMS, which creates the inbound receipt (idempotent — no duplicates).
- Receive: on desktop use the Receive dropdown (Palletized or Direct), or create a receive task and assign it to a worker on mobile. Over- and short-receipts are allowed but every variance must be confirmed line by line.
- When receiving completes, actual received quantities and variances are written back to the PO lines automatically (full recalculation); variance lines can be reviewed on the Purchase variances page.
Order-to-ship loop#
- Create sales orders in OMS: manually, by Excel/CSV import, by channel pull, or converted from a CRM deal. Drafts are editable; submit to start approval.
- Approve (ATP availability check) → allocate a warehouse → release. In wms_sync mode, push-to-WMS creates the WMS outbound shipment (idempotent).
- Release waves (manual page or scheduled) → create pick tasks per order → workers pick in location sequence on mobile, into totes (to-LPN).
- Pack confirm, then ship: tracking numbers are written back to the OMS order lines; partial fulfillment across split shipments is supported.
- Returns: create an RMA from the OMS order; return receiving goes through normal receiving (source_type=return).

For expiry-sensitive goods, set the merchant allocation strategy to FEFO (first-expiry-first-out) and check the expiry alerts report regularly for batches expiring within 90 days.
Inventory adjustments require the explicit wms.inventory_adjust permission. Locations covered by an unfinished count task are locked — adjustments, moves and replenishment are blocked until the count is completed or cancelled.