Chapter 5 of 13

Purchasing & Receiving

Purchase orders, three ways to reorder (including a demand forecast), receiving with a scanner or an AI-scanned invoice, and moving stock between stores.

All chapters

Purchase orders

Purchasing lists your POs by status — Open (draft), Sent, Pending (partially received), Completed — each numbered PO-1, PO-2… with an Origin badge showing whether it was built by hand, by the low-level tool, or by dynamic reorder.

Build one with + New PO: pick the vendor and ship-to location, add lines by item search or from the vendor's supply list (everything linked to that vendor, one tap each), set quantities and costs, then Save. When it's ready, Send to Vendor — sending stamps the date, adds every ordered unit to on-order (QOO), and emails the PO to the vendor automatically if the vendor record has an email address. If the subtotal is under the vendor's minimum-order amount, you'll see a warning before you send.

Once sent, the vendor and ship-to freeze. Void (with a reason) releases any unreceived on-order units; Mark Paid stamps a completed PO for your books.

Three ways to reorder

You never have to build a reorder from scratch — there are three engines, from simplest to smartest:

  1. Reorder Low Level (Purchasing → Reorder Low Level) — one tap turns every item at or below its Low Level into draft POs, one per default vendor, using each item's Reorder Qty. You review and send each PO yourself. Items with no default vendor are listed as skipped.
  2. Dynamic Reorder — for vendors you've flagged auto reorder: any item with a Safe Qty where on-hand plus on-order has slipped below it gets topped back up, and the POs are created and sent immediately (vendor emailed if enabled). This is the set-and-forget path for your staple suppliers.
  3. Reorder Forecast (Purchasing → Forecast) — the demand-driven one, next section.

The reorder forecast

The forecast computes a sales velocity per item — a blend of the last 30 days (weighted 60%) and the last 90 (40%) — and turns it into days of cover: how long current stock lasts at that pace. Kit sales are exploded into component demand, so the parts get reordered, not the bundle.

You set two dials: Cover days (how much runway you want, default 14) and Lead days (how long the vendor takes, default 3). The suggested order quantity is what it takes to cover both, minus what's already on hand and on order, rounded up to the item's minimum-order quantity and reorder multiples. Rows going red will run out inside the lead time — those can't wait; amber means inside your cover target. A "vs last yr" column compares recent sales to the same window a year ago so seasonality doesn't blindside you.

Edit any suggested quantity, then Create PO per vendor group — you get draft POs to review and send. Pick a specific location first: POs ship to one store.

Receiving

Stock enters the building through Receiving. Create a receiver (R-1, R-2…) for a location and optionally a vendor, then add what's in the boxes three ways — mix and match freely:

  • Scan — every scan adds one to the line; "12*" then a scan adds twelve. On the tablet app the camera does the scanning. Unknown barcodes become ad-hoc lines.
  • Search — find items by name or SKU and add them.
  • + Add PO… — pull in a sent PO's outstanding lines with expected quantities pre-filled, then correct against what actually arrived.

Each line has an editable received quantity and vendor cost; click the extension to apply an invoice discount by new dollar amount or percent. When everything's counted, ✓ Close Receiver — closing adds the stock to on-hand, marks PO lines received and relieves on-order, and updates each item's Last Cost and weighted Average Cost (and the vendor's cost on file, if you leave that toggle on). Partial deliveries are normal: receive what came, the PO flips to Pending, and the rest lands on a later receiver. Closing is irreversible, and there's a Print Labels shortcut for everything you just received.

AI invoice scan

The fastest way to receive a paper invoice: tap 📷 Scan Invoice in the receiver, photograph or upload the invoice (JPEG/PNG/WebP up to 8MB), and the AI reads the line items — descriptions, quantities, case counts, costs — and matches each to your catalog by UPC, then SKU, then name, with a confidence badge on every match. Review the table, fix any "No match" rows with the manual search, and Add N lines to receiver. The invoice number auto-fills your Reference field.

This feature needs an Anthropic API key (ANTHROPIC_API_KEY) set in your server environment. Without it the scanner tells you exactly that instead of failing silently.

Transfers between locations

Multi-store? Transfers moves stock honestly on both ends. Create one from a source to a destination location (they must differ), add lines by search or scan, then:

  • Send — the source loses the stock; the units are "in transit." Sending a line the source doesn't have warns you about negative stock but doesn't block.
  • Receive — the destination gains the stock. Receiving is all-or-nothing in this version; quantities aren't editable at receive time, so fix the lines before sending.
  • Void — a draft voids clean; a sent transfer voids the stock back to the source shelf. A received transfer can't be voided — use an adjustment.