Skip to content

Step 3 — Take your first sale

You can scan a product, attach a customer, take payment, and print a receipt end-to-end — for both retail (walk-in customer) and wholesale (on-account customer with credit terms). Any cashier can repeat the same flow.

  1. Sign in to POS Workspace (/point-of-sale/sale) — see Sign-in and account.
  2. Pick a store in the top bar (only if you have multiple stores).
  3. Pick a register / lane — if the store has more than one lane, the system requires you to pick one before checkout unlocks.
  4. Open a work shift — see Work shifts. The shift tracks who is holding the cash drawer.

III. Retail vs wholesale — pick the right surface

Section titled “III. Retail vs wholesale — pick the right surface”

The dashboard separates retail and wholesale into two distinct workspaces because they have different pricing, different payment methods, and different downstream flows:

SurfacePathPricingPayment methodsWhen to use
POS Workspace (retail)/point-of-sale/saleRetail price listCash / Card / WalletWalk-in customer, single ticket, no credit terms
Wholesale Workspace/dashboard/orders/create-wholesaleWholesale price list (per customer)Cash / Card / Bank transfer / Customer debtKnown customer, on-account credit, multi-line invoice

Retail POS workspace — walk-in counter flow POS Workspace — the cashier’s home for retail sales.

Wholesale order form — on-account customer flow Wholesale order form — pick the customer, apply the wholesale price list, optionally sell on credit.

The retail-vs-wholesale split is enforced by route (/point-of-sale/... vs /dashboard/orders/...), not by a toggle inside a single page. If you need to switch mid-shift, finish the current sale first.

  1. Catalog panel (left) — click a product, scan a barcode, or search by name/SKU.
  2. Cart panel (right) — adjust quantities with the + / − stepper, apply a line discount if the product allows it.
  3. The cart header shows Subtotal · Tax · Total in real time. Checkout stays disabled until you have at least one line in the cart.
  4. (Optional) Click the Customer pill at the top of the cart to attach a customer — see § V.
  5. (Optional) Click Save draft if you want to come back to this cart later — see § VI.

When ready, click Checkout → the payment modal opens. See § VII.

POS workspace with three cart lines — Checkout enabled Three items in the cart. Checkout is now enabled.

The cart has a Customer pill (top of the cart panel) that opens a customer listbox.

You want toDo this
Walk-in customer (no CRM)Leave the customer empty. The order records as a guest sale.
Existing customerType a few letters of their name or phone in the listbox — the system filters live. Pick the right row.
Brand-new customer at the counterClick + Add new customer inside the listbox. The Add customer modal opens — fill in name + phone (+ optional email) and Save. The new customer is auto-attached to the cart.

Adding a customer at the counter does not block the sale — it’s a quality-of-life improvement that lets you track the purchase against a customer record (loyalty points, wallet, future refunds, B2B invoice).

VI. Save a draft (or send to WBS / warehouse pick)

Section titled “VI. Save a draft (or send to WBS / warehouse pick)”

Three “park the cart” options live in the cart toolbar:

ActionWhen to useWhat happens
Save draftCustomer pauses, walks away, will come back.Cart state (lines, qty, customer, discounts) persists under a named draft in POS Workspace’s draft tab. Re-open later from Draft orders panel.
Send to warehouse pickSome items need to be picked from the back warehouse, not the front shelf.Mark the order for warehouse pick — the warehouse team sees it in POS → Warehouse board (/point-of-sale/warehouse-board) and prepares the items before pickup.
Save as quotation (wholesale only)Wholesale customer wants a quote before committing.Generate a quotation document; the customer can approve later from Orders → Wholesale.

Drafts are stored under a client-side identity (Code128 barcode) so the cart survives reloads, lane switches, and even brief offline windows. See POS Workspace tour → “Drafts” for the full persistence model.

Click Checkout. A modal opens with:

  1. Total payable at the top (the cart total).
  2. A row of payment methods as chips — only the ones your store has configured in Settings → General → Payments appear.
  3. A cash key-pad (if Cash is selected) for entering the amount tendered; the system auto-shows change due.
  4. A split-tender mode if the customer pays partly by cash and partly by card.
MethodFlow
CashEnter amount tendered → see change due → click Confirm. Receipt prints.
CardThe paired terminal (PAX / CodePay / Stripe) prompts the customer to tap / insert / swipe. The system polls the terminal status; on success, the receipt prints.
WalletConfirm the deduction from the customer’s wallet; receipt prints.
Other / Bank transferManual entry; mark as paid when the transfer clears.

The order is created with a Code128 barcode (the client’s client_order_id), not a numeric EAN-13 — the same barcode appears on the printed receipt and on the order detail page.

Order detail — line items, payments, totals, timeline Order detail in the dashboard — the same order you just placed, with line items, payment method, totals, and timeline.

Full walkthrough: POS Workspace tour → “Checkout” / “Receipt”.

POS report — end-of-shift totals POS → Report — end-of-shift totals.

POS work shifts POS → Work shift — manage the current shift.

  • The receipt prints with the correct store name + address (see header at Settings → General).
  • Real stock decreased by the sold qty.
  • The order appears in Sales activity → Orders (/dashboard/orders).
  • Shift summary updated (cash drawer + order count).
  • For wholesale: the order appears in /dashboard/orders/wholesale AND the customer’s debt tile on the dashboard ticks up if payment was on-account.
SymptomWhere to look
Printer doesn’t printReceipt printer + POS Bridge status
Card payment stuck “pending”Card terminal — verify WebSocket
Stock didn’t decreaseItems → Track stock is off, or the Lot is still pending (not delivered)
Customer picklist shows nothingThe customer was filtered out by another store — open the customer in Customers → List and check the Stores column.
Wholesale form won’t accept the orderThe customer hit their credit limit — check the warning banner; ask them to pay down existing debt, or switch to a smaller order.

→ Step 4 — Process a return: step 4.