Read the bin card

Every stock movement per product, with a running balance that always matches your current stock.

3 min readUpdated 10 September 2026

The bin card is a pharmacist's digital record of every unit that came into or left a product's shelf. RxShelf's version has two levels:

  • Movement summary — one row per product, showing opening balance, closing balance, and each movement type totaled for the period.
  • Bin card — the per-product drill-down: every movement in chronological order with a running balance.

Both live under Sidebar: Reports → Inventory.

Movement summary

Landing on Reports → Inventory shows the summary — one row per active product over your chosen period.

Movement summary — one row per product.
Demo coming soon
Movement summary — one row per product.

Columns:

ColumnWhat it shows
ProductFull identity — name, generic, strength, form, manufacturer.
OpeningBalance at the start of the period.
Stock inTotal received via restock / PO in the period.
SaleTotal dispensed via completed sales.
RefundTotal returned to stock via refunds.
VoidTotal returned to stock via voided sales.
ExpiredTotal quarantined (removed as expired/damaged via the quarantine flow).
AdjustmentTotal manual adjustments (positive or negative).
ClosingBalance at the end of the period.

Every row reconciles:

Opening + Stock in + Refund + Void + Adjustment − Sale − Expired = Closing

Filters: date range (default today), and a search box across name / generic / manufacturer. Server-paginated.

Bin card — the per-product drill-down

Click any product row in the summary to open its bin card. Also reachable from the product detail page → View full bin card on the stock-movements section.

Per-product movement history with running balance.
Demo coming soon
Per-product movement history with running balance.

Columns:

ColumnWhat it shows
Date & timeWhen the movement happened (12-hour AM/PM).
TypeStock in, sale, refund, void, quarantine, adjustment — as a colored badge.
Qty beforeAggregate stock immediately before this movement.
Qty changeSigned. Green + for additions, red − for removals.
BalanceRunning balance immediately after the movement (bold).
Performed byWho did it.
BatchThe specific batch affected.

A synthetic Created row anchors the very oldest end when the creation date is in the visible range — starts the history at when the product first entered inventory.

The reconciliation guarantee

The bin card header shows Current stock: N unit as a live banner. The latest row's Balance equals that number — always. The balance isn't recalculated on the fly; it's stored on every stock movement (quantity_before and quantity_after), so any two RxShelf devices reading the same log see the same balance.

This is your reconciliation tool. If your physical shelf count disagrees with RxShelf, scroll the bin card to find the discrepancy — usually a missed adjustment or an unrecorded refund. Every movement carries who did it and when.

A note on "Expired"

Expired = quarantine. The quarantine flow (Inventory → Expiry → quarantine a batch) writes a movement with reason quarantine. A manual stock adjustment with sub-reason "expired" lands in the Adjustment column instead — the sub-reason isn't preserved in the log.

Filter the bin card

  • Date range — narrow to a specific period.

That's it. The bin card doesn't need many filters — it's one product's story in one place.

Who can access it

  • Owner — yes.
  • Manager — yes.
  • Accountant — yes.
  • Dispenser — no (inventory reports are hidden from dispensers by default).

Export

Both the movement summary and the bin card export to CSV, Excel, and PDF. The bin card PDF is formatted the way a pharmacist expects for reconciliation or inspection purposes.

Next steps