All docs

Purchase orders

POs are how stock gets into your inventory. Every receive event traces back to a PO, which keeps your COGS clean and your accountant happy.

Creating a PO

Open Purchase Orders → New PO. The header collects:

  • PO number — your own format. Usually a supplier code + date works (e.g. MTMS-20251030)
  • Supplier — pick from your supplier list
  • Order date — when you placed the order
  • Expected arrival — optional but useful for the dashboard
  • Shipping terms — FOB / CIF / DAP. Pre-fills from the supplier's default

Add line items: pick a product, set quantity ordered and unit cost. The line total updates as you type. Add freight, duties, and other costs at the bottom — these get allocated pro-rata across line items by line value, so each unit's landed unit cost reflects its share of inbound costs. Watch the Landed / unit column update as you change freight numbers.

Click Create purchase order to save.

Status flow

POs move through these statuses:

  • DRAFT — being built, no commitment
  • ORDERED — you've placed it with the supplier
  • IN_TRANSIT — supplier shipped, you're waiting on receipt
  • PARTIALLY_RECEIVED — some lines received, others outstanding
  • RECEIVED — fully received

Use the status dropdown on the detail page. The status affects which actions are available (e.g. you can't Receive a DRAFT PO).

Recording payments

The Payments section on a PO detail page tracks deposit and final payments. Add a payment with date, amount, and method (WIRE / CC / ACH / CASH). The detail page shows running paid vs. remaining at the top.

Receiving

When stock physically arrives, click Receive on the PO detail page. Choose:

  • Received date — when the stock landed
  • Destination location — usually your main warehouse
  • Quantities — defaults to ordered qty; adjust if anything was damaged or missing

Click Confirm receipt. Behind the scenes:

1. Freight, duties, and other costs are allocated pro-rata across the received lines 2. Cost layers are created at the destination location with the correct landed unit cost (FIFO is the default; WAC and LIFO are configurable in Settings) 3. Inbound PURCHASE_RECEIPT movements are logged 4. PO status moves to RECEIVED (or PARTIALLY_RECEIVED) 5. Boxes are generated for box-level scanning (see Receiving & box scanning)

Reversing a receipt

If you need to undo a receipt — wrong qty entered, wrong location, anything — open the receipt detail page and click Reverse receipt. Reversal is gated by receipts:reverse (Owner/Admin) and requires typed-confirmation when boxes are still open.

Reversal:

  • Restores the consumed cost layers
  • Deletes the PURCHASE_RECEIPT movements
  • Returns the PO to IN_TRANSIT

You can then receive again with the corrected data.

Linked assets

POs can include line items that aren't inventory — tooling, molds, equipment. These get tracked on the Assets page with depreciation. Link an asset to a PO so the supplier invoice reconciles.