Skip to main content

Stock levels, stock locations and manual adjustments

Every product you stock or sell has a real-time stock level β€” the quantity Lupa believes is on your shelves, broken down by the location it sits in and (where you've enabled it) the batch it came from. This article covers what those numbers mean, how to organise them across the rooms, fridges, and cupboards in your practice, and how to adjust stock by hand when something needs correcting outside the usual workflows like deliveries, transfers, and stock takes.

πŸ’‘ In short: Configure your storage areas under Settings β†’ Stock Locations. Read current stock from the Stock column in the Inventory list, expanding the row to see the breakdown per location and batch. Use Update Quantity on a product's three-dot menu (or the Stock Control card on the product page) when you need a manual correction.


What a Stock Level Actually Is

In Lupa, stock isn't always a single number. Each product has its own pool of stock that's stored as one row per (location, batch) combination. So a single product like "Metacam 0.5% Inj" might have:

  • 5 ml in the Fridge, batch A22-71, expiring 2026-09-30

  • 8 ml in the Dispensary, batch A22-71, expiring 2026-09-30

  • 12 ml in the Fridge, batch A23-04, expiring 2027-02-12 The product's headline stock level β€” the number you see in the Stock column β€” is the sum across every location and every batch. Knowing how Lupa stores stock makes the rest of this article (locations, manual adjustments, audit history) much easier to follow.

    The Inventory Stock tab β€” the Stock column shows a colour-coded bar for each product, calculated from the total across all locations and batches

πŸ’‘ The colours on the stock bar (red below minimum, yellow below optimal, green at or above optimal) come from the minimum and optimal thresholds you configure on each product. For how to set those β€” and how they power Suggested Orders β€” see .


Stock Locations

A stock location is anywhere physical stock lives in your practice β€” Main Store, Dispensary, Fridge, Surgery Cupboard, Consult Room 2, anywhere a nurse might walk to fetch a vial. Configuring locations lets you track stock per area instead of as one site-wide total, which matters once you have more than one fridge or dispensing point and want Suggested Orders, stock takes, and stock movements to reflect reality.

Configuring locations

πŸ“ Permissions required: the Inventory permission. Settings cannot be reached without it.

  1. Open Settings

  2. Select Stock Locations from the left-hand menu (under the Inventory group)

  3. The page lists every active location in your store with a Default badge on the one your practice uses by default

    The Stock Locations settings page β€” Room A is marked Default, Room B is a second location. Use Create Location to add a new one, the pencil to rename, the bin to archive

Creating, renaming, and archiving locations

Action

How

Create a location

Click ** β€’ Create Location** in the top right. Enter a clear, recognisable name and click Save. The new location is immediately available everywhere stock is recorded β€” product forms, deliveries, transfers, and stock takes.

Rename a location

Click the pencil icon on a location card, change the name, and click Save. Existing stock and historical movements stay attached to the same location β€” only the displayed name changes.

Archive a location

Click the bin icon on a non-default location. Any stock currently held there is automatically moved to the Default location, and a Location Archived movement is recorded for traceability.

The Create Stock Location dialog β€” a single Name field. Lupa enforces unique names within a store

The Default location

The Default location is whichever location has priority 0 β€” it's automatically the first one you create, and it's the location Lupa pre-fills whenever stock is being recorded against a product without a specific choice.

πŸ”’ The Default location cannot be archived, and you cannot have a store without one. If you want a different location to act as the default, get in touch with support β€” the order is set when locations are created and isn't currently editable from the UI.


Reading Stock by Location and Batch

The headline number in the Stock column is convenient at a glance, but most of the time you'll want to see where the stock actually lives β€” which fridge, which batch, which expiry date.

Expand the row in the Inventory list

Any product with multiple locations or tracked batches shows a chevron next to its name. Click it to reveal sub-rows: one row per (batch, location) combination, with the batch number, expiry date, location, and per-row quantity.

Consumable 1 expanded β€” two sub-rows show batches 1234 and 4567 sitting in Room A. The chevron expands and collapses these per product

Or open the product's Stock Control card

Click a product name to open its full form. The Stock Control card on the Stock Control and Suppliers tab shows the same breakdown as a small editable table: one row per location/batch, plus the Minimum and Optimal thresholds and the Enable Batch Tracking toggle. If your store has more than one location, you may also see a Stock levels per location table here β€” use it to set the minimum and optimal thresholds for each individual location, which powers suggested transfers between locations. This is where you go when you want to see and edit the breakdown directly.

The Stock Control card on a product page β€” Min/Optimal thresholds, Enable Batch Tracking toggle, and one row per Location/Quantity/Batch Number/Expiry Date

Manual Stock Adjustments

A manual adjustment is the edit you reach for when none of the structured workflows fit β€” a single broken bottle, a vaccine pulled because the cold chain failed, a sample returned by a rep, a small drift caught between full stock takes. Lupa records every adjustment as a Manual Adjustment movement so the change shows up in the audit trail.

⚠️ Use the right tool β€” manual adjustments are the last resort. A delivery should be recorded by processing the order, items moved between rooms by a stock transfer, and shelf counts reconciled by a stock take. Each of those produces a richer audit trail (supplier links, batch traceability, a session you can reopen). Reach for Update Quantity only when the change doesn't fit any of those workflows.

Quick adjustment with Update Quantity

For a single-location product without tracked batches, this is the fastest path:

  1. Open Inventory and find the product (search, scan a barcode, or scroll)

  2. Click the three-dot menu at the end of the row

  3. Choose Update Quantity

  4. Type the new quantity (not the difference) and click Update Quantity

    The Update Quantity dialog β€” a single number input pre-filled with the current quantity, with the unit shown next to the label. Type the new total and Lupa figures out the delta

    The quantity field shows your target β€” the new total Lupa should hold. The system calculates the delta and writes it to the audit trail.

πŸ’‘ The Update Quantity option is only offered when a product has stock in a single location and no tracked batches. If the product has multiple locations or batches, the menu hides this option β€” adjust each location or batch individually using the Stock Control card on the product page (see below).

Adjusting multi-location or batch-tracked products

When stock is split across locations or batches, you need to be specific about which slice you're correcting:

  1. Open the product (click the product name in the Inventory list)

  2. On the Stock Control and Suppliers tab, scroll to the Stock Control card

  3. Edit the Quantity on the relevant row, or click Add Stock to add a new (location, batch) row

  4. Click Save at the bottom of the page Lupa diffs the old and new state and records one Manual Adjustment movement per row that changed.

⚠️ Manual adjustments cannot be undone from the audit trail. They're append-only β€” to reverse an adjustment, make an opposite one. The original change and the correction will both be visible in the history.

What manual adjustments don't capture

Lupa doesn't ask for a free-text reason on a manual adjustment. If you need to explain why a hand-correction happened (an inspector asks, an SOP requires it, a controlled drug discrepancy needs a written justification), record the reason in your own notes alongside the adjustment β€” for controlled drugs, in your CD register.

Stock Movements β€” The Audit Trail

Every change to stock β€” automatic or manual β€” is recorded as a stock movement. Movements are append-only: they cannot be deleted or edited, only offset by a new movement in the opposite direction. That's what makes them trustworthy enough to use during an inspection or a year-end audit.

Where to find them

To see…

Open

Every movement in the practice

Click Stock History in the Inventory toolbar β€” opens a full-store, filterable view

Every movement for one product

Click the product name β†’ View Product History at the bottom of the page

Movements from one delivery, transfer, or stock take

Open the order or session β€” its detail page lists the movements it created

The Stock History view β€” filter by movement type, date, location, employee, or product, and download the result as CSV

Movement types β€” what each one means

When you scan the audit trail, the Movement Type column tells you what action created each record. Knowing the vocabulary makes it much easier to investigate a discrepancy.

Movement Type

What it represents

Invoice Sale

A product was dispensed on a finalised invoice. Stock decreases.

Invoice Sale Reversal

A finalised invoice was deleted, undoing the original sale. Stock increases.

Invoice Sale Adjustment

An item on a finalised invoice was edited. Stock moves by the difference between the old and new line.

Manual Adjustment

A hand-edit through Update Quantity or the Stock Control card.

Stock Take

The reconciliation when a stock take session is completed β€” the delta between counted and expected.

Stock Transfer Out / Stock Transfer In

The paired records created when a transfer between two locations is completed.

Order Received

Stock added when a supplier delivery is processed against a purchase order.

Location Archived

Auto-recorded when a non-default location is archived and its stock moves to Default.

Batch Archived / Batch Expired

Auto-recorded when a tracked batch is archived or hits its expiry date.

πŸ’‘ Stock only moves on Invoice Sale when the invoice is finalised β€” drafts don't deduct stock. This is intentional: it stops phantom movements from invoices that are never completed.


How Stock Levels Change β€” at a Glance

A quick map of the actions that move stock and where each one is documented in detail.

Action

Effect on stock

Where to learn more

Finalising an invoice that contains stocked products

Decreases at the invoice's selected location

β€”

Processing an incoming order

Increases at the location chosen on receipt

Completing a stock transfer

Decreases at the source, increases at the destination

Completing a stock take

Adjusts each counted product to the physical count

Manual adjustment via Update Quantity or the Stock Control card

Sets the chosen (location, batch) to the new value

This article

Archiving a non-default location

Moves all the location's stock to Default

This article


Tips

βœ… Best practices from practices that run Lupa:

  • Set your preferred stock location once. If you always dispense from the same fridge or dispensary, go to Profile β†’ User Details and set your Preferred stock location β€” Lupa will pre-select it every time you add a product to an invoice.

  • Name locations after physical places, not departments. "Fridge", "Surgery Cupboard", and "Consult 2" are easier for a new starter than "Pharmacy" or "Stock A".

  • Reach for the right tool first. Use a transfer when stock moves, a stock take when you've counted, an order receipt when something arrived. Manual adjustments should be the exception, not the routine.

  • Pair every adjustment with a note. Lupa doesn't capture a free-text reason β€” keep one in your operations log or CD register so an auditor can match the entry.

  • Investigate before you correct. Before reaching for Update Quantity, open the product's stock history. Most "wrong" stock levels are explained by an unprocessed delivery or a recent transfer.

  • Keep your locations tidy. Two or three meaningful locations are easier to manage than ten that overlap. Archive locations you've stopped using rather than letting them accumulate.

  • Read controlled drugs in batch view. For CDs, always work from the expanded row or the Stock Control card so you're seeing per-batch detail, not the rolled-up total.


Troubleshooting

Problem

Solution

Update Quantity isn't in the three-dot menu

The product has multiple locations, tracked batches, or stock control disabled. Open the product, scroll to the Stock Control card, and edit the relevant row directly. To enable the menu option, archive the extra batches/locations or turn off batch tracking on the product.

A product shows negative stock

Most often this means dispensing happened before a delivery was processed, or a manual adjustment removed more than was actually there. Process any outstanding orders first, then check the product's history to find the negative entry. If your practice has Prevent negative stock turned on at company or store level, you'll need to resolve any existing negative stock before you can enable the setting β€” Lupa will warn you if products are already below zero.

Stock didn't decrease after an invoice was raised

Stock only deducts when an invoice is finalised, not while in draft. Finalise the invoice and the Invoice Sale movement will appear in the audit trail. If you have a single storage location and your products don't use batch tracking, a previous bug could have caused some finalised invoices to silently skip the stock deduction β€” this has now been fixed. To correct any stock levels affected before the fix, check the product's history for missing Invoice Sale movements and use Update Quantity or the Stock Control card to bring the quantity back in line.

Stock is in the wrong location

Don't fix this with two opposite manual adjustments β€” it loses the trail. Create a stock transfer with the correct source and destination, which records a paired Stock Transfer Out / Stock Transfer In for the audit.

A location can't be archived

You're trying to archive the Default location. The default cannot be archived β€” Lupa needs one location to act as the fallback. Promote another location to default first via support, then retry.

A new stock location doesn't appear when adding stock

Refresh the page after creating it β€” the form caches the list of locations. The location is also unavailable on archived products until you unarchive them.

Two adjustments cancel out and I want to delete them

Stock movements are append-only β€” they're never deleted, only offset. The two opposing entries staying in the history is correct. If they look noisy, add a brief note in your operations log explaining the round-trip.


Frequently Asked Questions

Can stock go negative?

By default, yes β€” Lupa allows stock to go negative as a deliberate signal that something is wrong (dispensed before a delivery was processed, an over-zealous adjustment, an unrecorded usage). Investigate using the product's stock history rather than masking the negative number.

If your practice has Prevent negative stock turned on (configured at company or store level, or on individual products), Lupa will block dispensing or billing a product once its stock would reach zero. You'll see a Maximum available stock reached message on the quantity field when you hit the limit, and the save will be rejected if the quantity would take stock below zero. Contact Lupa to find out whether this feature is available for your account.

Are stock levels per product or per selling variation?

Per product. Every selling variation of a product (e.g. a 1 ml injectable vs a 10 ml take-home dose) draws from the same pool. When a variation is dispensed, Lupa converts to base units and deducts from the product's total.

Can I set a different default location for different products?

Not per product β€” there's one Default location per store that acts as the fallback across every workflow. However, each staff member can set a Preferred stock location for themselves under Profile β†’ User Details. When a preference is set, Lupa pre-selects that location whenever you add a product to an invoice, as long as the product has stock there. You can still change the location on any individual line.

What happens if my preferred stock location has no stock of a product I'm adding to an invoice?

Lupa leaves the location field blank on that line rather than falling back to a different location. Pick the location you want for that line before saving the invoice.

Can I delete a manual adjustment?

No. The audit trail is append-only. To reverse an adjustment, make an opposite one β€” both the mistake and the correction stay visible, which is what an inspector will expect.

Why doesn't Lupa let me record a reason for a manual adjustment?

The audit trail captures what changed, when, and who β€” but not a free-text reason. Keep the reason in your operations log, daybook, or CD register so it can be matched to the timestamp in the history if needed.

What happens to historical movements when I archive a location?

They stay attached to the original location. The location's name and ID still resolve in the audit trail β€” only the active list of locations is filtered. A Location Archived movement is added for the auto-migration to Default.

Does archiving a product clear its stock?

No. Archiving only hides the product from active use. The stock records and movement history remain β€” useful if you ever unarchive the product or need to reconcile past activity.


Related Articles

Did this answer your question?