Track lots, expiry dates, and receiving with Warehouse

Turn on Warehouse to receive deliveries, track stock in lots with expiry dates, and correct or write off stock with a full history.

Basic inventory tracking counts stock up and down as orders come in. Warehouse builds on top of that: it adds receiving supplier deliveries into your store, tracking stock in dated lots, and a full history of every change – reservations, corrections, and write-offs included.

Warehouse is for stores that need more than a stock number – usually because some products expire, come from named batches, or arrive through a receiving process you want a paper trail for.

What Warehouse adds

Without WarehouseWith Warehouse
A single stock number per product or variantStock held in one or more batches, each with its own expiry and quantity
You edit the number by hand when stock changesStock increases only through a posted receipt
No record of where a count came fromEvery change is recorded in Activity, with a reason and who made it
No expiry trackingProducts can require a batch (lot) number and expiry date on receiving

Regular inventory tracking keeps working for every product that doesn't need this – Warehouse only changes behavior for products you specifically turn lot tracking on for, once it's active.

Turn on Warehouse

Warehouse is included on the Pro plan at no extra cost. On a lower plan, opening the activation screen prompts you to upgrade instead of activating.

Open Settings → Modules → Warehouse, or go straight to Inventory → Activate. Warehouse is the one module that isn't a simple switch – read the activation screen before you press the button:

  • New orders start reserving stock instead of deducting it immediately.
  • Receiving, stock lots, and packing checks turn on for your whole store.
  • Orders placed before activation keep their old accounting and restock the old way if cancelled – you don't need to do anything about them.
  • Activation cannot be undone.

Warning: If you sync stock levels from another system – for example through Allegro or NoviCloud – Warehouse takes over as the source of truth. Once it's active, those incoming stock updates are refused, and you receive new goods through Warehouse instead. The activation screen warns you if a connected add-on would be affected.

Once active, Inventory shows two tabs: Stock – what you currently have – and Activity – what happened. A Receive goods button on Stock starts a new delivery, and links appear next to it for any unfinished receipts and, once a product has lot tracking on, for Batches.

Turn on lot tracking for a product

Activating Warehouse doesn't change any product by itself. To track a specific product in lots, open it for editing and turn on Track lots and expiry dates. This requires a lot number whenever goods for that product are received, and keeps the lot a unit shipped from linked to the order it went out on.

Products without lot tracking keep working exactly like ordinary tracked stock – a single number that goes up on a receipt and down on an order – they just don't get expiry dates or a lot number.

Note: Turning lot tracking on for a product that already has stock opens one lot for what's currently on the shelf, so nothing you're already holding is lost – it just won't have an expiry date until you receive dated stock going forward.

Receiving a delivery

Press Receive goods on the Stock page (or go to Inventory → Stock, then open your unfinished receipts to pick up a draft). You can either:

  • Upload the supplier's paperwork – drop in a PDF, photo, or a JSON/XML export from your supplier. YNS reads the document and drafts the line items for you. Photos and scanned PDFs are compressed automatically before upload.
  • Enter it by hand – pick products from a list and fill in quantities yourself.

Either way, you land on a draft you review before anything touches your stock. The editor keeps quantities and costs visible at a glance, with the supplier's own wording shown under whichever product it was matched to, and everything else – tax ID, document date, notes – tucked behind one Details disclosure so the page stays uncluttered:

  1. Match each line to a product. Matches by barcode, SKU, or a supplier name you've matched before happen automatically – use Apply exact matches to accept them, and pick the right product yourself for anything left unmatched. If a line doesn't match anything in your catalog, you can create the product right from that line instead of leaving the receipt to add it first.
  2. Check quantity, cost, and batch details. For lot-tracked products, enter the batch (lot) number and expiry date (and a best-before date, if it differs). If the supplier's own quantity isn't a whole number, YNS shows you the original figure so you can resolve it. A printed tax rate – including "0%" on a reverse-charge invoice or a code like "zw" / "exempt" – is read correctly now instead of blocking the receipt.
  3. Fix the header if needed. Supplier, reference, received date, currency, tax ID, document date, and notes can all be edited while the receipt is a draft, not just the line items.
  4. Reject anything that shouldn't count. Set a line's quantity to 0 and add a note – the line stays on the receipt as a record, it just doesn't add stock.
  5. Post the receipt. Every goods line needs a match and a quantity before you can post. Posting adds the stock immediately and records it in Activity. A posted receipt can't be edited.

Tip: The first time you receive from a supplier, match their line items to your products by hand. YNS remembers the match, so the same supplier's wording is recognized automatically next time.

A second delivery against the same invoice

If you upload a document YNS already has on file, it warns you instead of creating a duplicate. When that happens on a receipt that's already posted, open it and choose Record another delivery – it opens a new manual draft pre-filled with the same supplier, document number, and goods lines (quantities left blank for you to fill in), so a van that comes twice against one invoice gets recorded properly instead of re-uploaded.

Correcting a receipt after the fact

If a supplier sends a credit note or correction document, upload it the same way – YNS recognizes it as a correction and links it to the batch it adjusts. Correction lines can reduce a batch's quantity (a negative amount), but every one has to name which batch it corrects, since a correction is about one specific delivery rather than whichever stock happens to be oldest.

If you need to undo a posted receipt entirely – before anything on it has shipped or been used – open it and choose Void receipt. You'll need to give a reason; voiding creates a compensating entry in Activity rather than deleting anything, so the original receipt stays in your history.

Stock and the product panel

Inventory → Stock is your one table of variants: filter by All, Needs attention, Low, Out, or Unavailable, search by name, variant, SKU, or barcode, and see the last delivery for each row. Needs attention covers anything that wants a look – a negative balance, an expired batch, or a batch expiring soon that still holds free goods.

Click a row to open its panel: the variant's on-hand, reserved, and unavailable counts, its receipts, and its own slice of the activity feed, all in one place. From the panel header you can:

  • Count stock – record what you actually found on the shelf. YNS shows the difference from what it expected and asks for a note. If the shelf moved again after you opened the count (someone else adjusted it, or an order came in), YNS tells you the new number and asks you to confirm before saving.
  • Remove stock – mark units unavailable, put previously-unavailable units back on sale, or remove units from the warehouse for good (a write-off). Each choice previews exactly what on-hand, available, and unavailable will read afterward, so you're never guessing.

Batches

Inventory → Batches (linked from Stock once a product has lot tracking on) lists every batch of stock you're tracking, opening stock included, with its expiry date, what's still on the shelf, what's reserved, and what's marked unavailable. A batch within 30 days of expiry is flagged, and an expired one is called out clearly.

When an order is packed, YNS automatically picks the first-expiring stock first (then the oldest delivery) from the batches that have it – you don't choose a batch yourself unless something needs your attention.

Write off or mark stock unavailable

You can mark stock unavailable or write it off either from the product panel (above) or from a batch's own row in Batches:

  • Mark damaged or unavailable sets units aside – they can't be sold, but they're still counted as stock you're holding, in case you resell or return them later.
  • Write off removes units for good – use this once you know they're gone. You'll need to give a quantity (up to what's on the shelf and not reserved), a reason (damaged, expired, or a correction), and a note. Both actions are recorded in Activity.

You can't write off or reassign units that are already reserved for an order – deal with the order first.

Activity

Inventory → Activity is the full ledger, read back as what actually happened rather than raw rows: every reservation, receipt, correction, write-off, dispatch, and cancellation, in plain language – "Short 5 → 2" when a delivery covers part of a shortage, for example – with a link back to the order or receipt it came from (a document badge and an action badge lead the row so you can scan what happened at a glance). Test-mode orders are tagged so you can tell them apart from real activity. Filter by document kind (Deliveries, Shipments, Adjustments, Reservations), product, batch, or date range, open Documents to jump to the receipts list, and export the list as a CSV when you need it outside YNS. When one event touches several products, they're grouped into a single row – open it to see the before-and-after balance and batch for each product it affected.

Activity reads the same ledger two ways. Operations (the default) groups everything one action caused into a single row – a bulk count shows expected → counted for every product it touched, for example. Movements shows one row per underlying ledger line instead, with the stock balance recorded right after that line and, when the line moved a batch, the batch it named – the flat, one-line-per-change view an audit asks for. Switch between them from the toolbar; narrowing Activity down to a single product or batch always shows Movements, since tracing one item is a movements reading by definition. Under a batch filter, the quantity shown is that batch's own share of the movement rather than the total – movements recorded before batches were tracked this closely show Not recorded instead of guessing. The CSV export and the API always return full movement detail regardless of which view you're looking at.

Common mistakes to avoid

  • Turning on lot tracking mid-delivery. Switch it on before you receive a product's next shipment, not partway through matching one.
  • Posting a receipt before every line is right. Once posted, a receipt is locked – fix mismatches in the draft first, or use a correction afterward.
  • Writing off instead of marking unavailable. Writing off is permanent. If there's any chance you'll recover or resell the units, mark them unavailable instead.
  • Forgetting a stock-sync add-on will stop working. If you sync stock from Allegro, NoviCloud, or a similar integration, check the activation warning first – Warehouse takes over as the source of truth.

FAQ

Can I turn Warehouse off after activating it?

No. Activation is permanent for the store. If you're not ready, keep using regular inventory tracking – see Manage inventory.

Does Warehouse cost extra?

No separate charge – it's included on the Pro plan. If you're on a lower plan, upgrading unlocks activation; see Manage your plan & billing. Once activated, a store keeps Warehouse even if it later downgrades, since the stock ledger can't be switched off.

Do I have to turn on lot tracking for every product?

No. Turn it on only for products that need an expiry date or a lot number – everything else keeps a simple stock count.

What happens to orders I placed before activating Warehouse?

They keep working exactly as before – cancelling one restocks it the old way. Only orders placed after activation reserve stock and interact with batches.

Can I pick which batch an order ships from?

YNS picks automatically – the stock closest to expiring goes out first, then the oldest delivery. You only need to step in if an order is missing an allocation, which YNS flags for you to review.

What's the difference between marking stock unavailable and writing it off?

Marking stock unavailable sets it aside without removing it – useful while you're still deciding what to do with it. Writing it off removes it from your count for good, with a reason recorded in Activity.

What's next