User Manual
Help Center/User Manual/Receiving: from inbound receipt to putaway

Receiving: from inbound receipt to putaway

Last updated 2026-10-13

Create inbound receipts, choose a receiving mode, and receive by pallet or direct — with variance confirmation and label printing.

Step 1: Create the inbound receipt#

Go to WMS → Inbound Receipts and create a receipt manually or by import. Manual creation asks for the customer/merchant (picked from the merchant list — Title defaults to the merchant and is no longer typed by hand), PO number, carrier, container/trailer number, BOL, seal number and the expected lines (SKU + expected quantity + UOM). Import uses a CSV template: download the template → upload → validate → review → confirm. The receipt number is generated automatically. If trucks need a dock slot, create an appointment in WMS → Appointments (make, list, edit, and settings); receiving itself does not require one (the check-in step has been removed).

Step 2: Choose the receiving mode#

Receiving mode is a per-warehouse three-way switch (wms_warehouses.receiving_mode, default both), set on the master-data → warehouse edit page: desktop (desktop receiving only — the receipt detail shows only the Receive dropdown), mobile (mobile receiving only — the receipt detail shows only Create Receive Task), or both (both buttons). It is enforced at the UI layer so the same receipt is not operated from both sides at once.

Desktop receiving: the Receive dropdown#

  1. Palletized receiving — open Receive → Palletized. The Summary area shows one row per product (SKU/name, expected qty + UOM, already-palletized qty, remaining with over/under tags). In the Build area, pick 1+ lines with remaining qty, set qty per pallet and the number of pallets N (default 1) to build N identical pallets at once, choose Condition (Good/Damaged, per pallet, default Good) and a storage location (required; only storage-type locations are listed). Click Build — pallets land in the Pallet area and Summary updates; an orange tag warns if empty building pallets exist (non-blocking). Click Receive → a variance confirmation lists expected vs palletized per product (over/short reviewed line by line) → confirm → inventory is written in one shot to each pallet’s storage location (putaway is merged in; there is no separate putaway step) → receipt becomes received. Afterwards, tick one/multiple/all pallets to print pallet labels.
  2. Direct receiving — a modal lists one row per receipt line: product info, expected qty, Received Qty input (defaults to remaining), Location (required, picking-type locations only — validated on both ends), Condition dropdown (Good/Damaged, default Good), Lot# and Expiry. The Split button can split a line into multiple rows for different locations, repeatedly. Receive → variance confirmation → the receive-batch API writes inventory.
  • Variance rules (desktop + mobile, identical): over-receiving and short-receiving are both allowed. Any variance pops a confirmation listing expected vs actual line by line (over in red, short in orange) — receiving only proceeds after explicit confirmation.
  • Condition maps to inventory status: Good → available, Damaged → damaged.
  • Location type guardrails: palletized builds only accept storage-type locations; direct receiving only accepts picking-type locations.

Mobile receiving: Create Receive Task#

  1. On the desktop receipt detail, click Create Receive Task (visible in mobile/both mode). The dialog has two fields: Assignee (a dropdown of your organization’s members) and the receiving method — palletized (phone can only use the pallet flow), direct (phone can only use the direct flow), or decide on execute (the worker picks a method when starting the task, default). Submitting creates the task (task_type=receive).
  2. On the phone, open the task detail (task_type=receive). Locked modes show the method tag and a Start button straight into that flow; decide mode shows two big cards (palletized / direct) → tap → confirm → the task is updated with the chosen method. The method locks after the first receiving submission — before that you can go back and re-pick.
  3. Palletized flow (4 steps): 1) Summary — product cards with SKU, expected, palletized, remaining; 2) Build — pick lines + qty per pallet, pallet count N, condition, storage location (scan/type/select, storage type only), Build, repeatable; factory-label mode: tick “use factory labels” and enter one factory label code per pallet (scan/type, de-duplicated within the batch) — the pallet LPN becomes the factory code (label_source=factory), skipping the LPN sequence and label printing; 3) Pallets — pallet list (LPN/content/location/status), empty pallets deletable with confirmation; 4) Confirm — variance confirmation → submit → success page lists the pallet LPNs. Label printing is not done on the phone; the success page says labels are generated — print them on desktop (except factory-label mode: “factory labels, no printing needed”).
  4. Direct flow (single-screen cards): one card per line (SKU/name/expected) with actual received qty (defaults to remaining), picking location (scan/select, required), condition, optional Lot#/Expiry, and a Split button. Submit → variance confirmation → receive-batch. Multiple rounds are allowed — a big receipt can be received across several submissions; the backend auto-advances the receipt to received once everything is in.
  5. Close the task when done: the Close action calls receive-complete, which verifies everything is received → receipt becomes received and Purchase quantities are recalculated in full. If anything is still remaining, closing is blocked (WMS_STATE_001) — ask a supervisor to handle it (reject or close the receipt).
Once a receive task exists, the desktop Receive dropdown is locked and disabled (enforced on both ends) — the same receipt only goes through one side, so floor and desk never double-operate.
Check-in has been removed — new/imported receipts can be received directly (the first receiving action auto-advances the receipt to receiving). The old Complete Receiving button is also gone; receiving is one-shot, no manual finish step.

Receipt states#

  • new / imported → receiving (auto-advanced on the first receiving action) → received (everything received).
  • Completion rule: all lines’ received_qty + damaged_qty + rejected_qty ≥ expected_qty (one rule shared by desktop, mobile and task-close).
  • Short-received remainder stays as remaining (the receipt stays in receiving), or a supervisor records it as rejected and closes the receipt.