Inventory management

Inventory that runs itself.

Batch-level tracking. Automatic FIFO. Smart reorder alerts. Multi-location transfers. Real-time analytics. AI-powered insights through Sage, built into the same system where you chart, invoice, and schedule.

  • Batch-levelLot, expiry, manufacturer, cost, every item
  • FIFOOldest stock dispensed first, automatically
  • 20+Transaction types logged automatically
  • Ask SageInventory queries in plain English
Cefazolin · 1 g vial
Medicine · controlled · barcode 0408-7
42
vials in stock
LOT 4721-A · 12 vials
Hikma · exp 06/12/26 · $12.40 ea
12FIFO next
LOT 4805-B · 18 vials
Hikma · exp 09/04/26 · $12.40 ea
1860d
LOT 4912-C · 12 vials
Sandoz · exp 02/15/27 · $13.10 ea
12OK
Reorder at 30 · min 20 · 90-day avg 1.4/day
Auto-PO ready
Expiration alert

3 batches of Bordetella vaccine expiring within 7 days. 45 doses remaining.

12 wellness appts this week, prioritize
Sage
asked

"What's running low?"

9 items below reorder point. 3 need ordering today, 4 within 2 weeks. Generate PO?

Built into the chart

Not an add-on. The system itself.

  • Batch-level tracking

    Lot, expiry, manufacturer, cost, every item, every batch, every movement.

  • Automatic FIFO

    Oldest stock dispensed first on every invoice. Default behavior, not a setting.

  • Smart reorder alerts

    Real-time low-stock and expiration notifications to the right staff.

  • Ask Sage anything

    Plain-English inventory queries, running low, expiring, reorder, value.

The quiet disaster

Inventory is the silent leak in most clinics.

Nobody wakes up excited about stock. But every clinic feels the pain when it goes wrong, and most practice software treats it as an afterthought.

  • $15k / yr

    Expired stock you didn't catch.

    Year-end financials surface thousands of dollars in product that quietly went past expiry while everyone was busy with patients.

  • 3rd order

    Reordering what you already have.

    Reordering Rimadyl from the main shelf when 200 tablets sit at the satellite location. Multi-location stock you can't see across.

  • $400 vial

    Stock that walks away.

    A Convenia vial goes missing. No transaction ledger, no who-took-it. The shrinkage shows up in the P&L, not the audit trail.

  • Empty shelf

    Stockouts you find at the shelf.

    An associate prescribes a med, the system doesn't flag low stock, and the tech finds an empty shelf at dispense time.

  • DEA risk

    Controlled substances on faith.

    Paper logs and spreadsheets. No timestamped attribution, no cycle-count discipline, no audit-ready ledger when DEA asks.

  • Recall day

    "Which patients got the recalled lot?"

    A frantic afternoon of CSV exports and phone calls, vs. a 30-second filter that lists every patient who received the lot.

How it works

From purchase order to patient invoice, one chain of custody.

Every product is tracked at the batch level. Every transaction is logged. Every expiration date is monitored. Every movement is connected.

01 / Batch tracking + FIFO

Every batch, every movement, traced.

Every batch carries lot number, expiration, manufacturer, and price. FIFO allocates the oldest expiry first on every invoice. COGS reflects the real cost of what was actually dispensed.

  • Lot number + expiry on every batch
  • FIFO allocation, automatic on every invoice
  • Cancellation returns stock to correct batches
  • Recall in 30 seconds, filter by lot, see every patient
Inventory · Carprofen 75 mg · 3 active batches
LOT C-3302
Zoetis · exp 05/22/26 · $0.42/tab
84 tabsFIFO
LOT C-3461
Zoetis · exp 11/08/26 · $0.42/tab
180 tabsOK
LOT C-3580
Zoetis · exp 04/14/27 · $0.45/tab
120 tabsOK
02 / Purchase orders

From "we need more" to "it's ordered" in 2 minutes.

One click scans inventory, drafts grouped POs by supplier, and emails them straight from Bittsi. Partial receiving creates new batches automatically; returns to supplier update the ledger atomically.

  • Generate suggested orders in one click
  • Email POs directly to suppliers
  • Partial receiving creates new batches automatically
  • Returns to supplier update ledger atomically
Suggested orders · scan complete · 11 items below reorder
PO-2174 · Covetrus
draft · ready to send
  • Cerenia 60 mg ×16 · ×4 boxes · $284.00
  • Apoquel 16 mg ×100 · ×2 btl · $612.00
  • Convenia 80 mg/ml · ×3 vials · $1,148.00
  • LRS 1 L bag · ×1 case · $92.00
8 items · Covetrus$2,418.00
Covetrus · 8 itemsPatterson · 3 items
03 / Multi-location transfers

Move stock between sites, without losing the trail.

Atomic transfers preserve lot, expiry, and cost at the destination. FIFO works at the destination too. COGS ties back to the original purchase. Paired TRANSFER_OUT and TRANSFER_IN entries make every move auditable.

  • Lot, expiry, cost preserved at destination
  • Atomic, completes fully or not at all
  • Both locations update instantly
  • Recall trace works across all locations
Transfer · Propofol 10 mg/ml · 10 vials
From
Main pharmacy
LOT P-2208 −6 vialsLOT P-2305 −4 vials
FIFO order, oldest first
To
Surgery suite
LOT P-2208 +6 vialsLOT P-2305 +4 vials
Lots preserved
TRANSFER_OUT · Main · 10:42 · 10 vialsTRANSFER_IN · Surgery · 10:42 · 10 vialsInitiated by S. Hayes (Office Mgr)
04 / Product bundles

One price for the client. Full visibility for the clinic.

Sell a Puppy Wellness Package as a single $175 line. Each component still tracks FIFO, COGS, and the SOAP plan documents the dispense. Cascade delete keeps the chart clean.

  • Parent at bundle price, components at $0
  • Inventory + COGS tracked per component
  • Works in plans, estimates, and invoices
  • Cascade delete keeps the chart clean
SOAP plan · Bella Hayes · Puppy Wellness Package
Puppy Wellness Package
$175.00
Bundle · 4 components · client sees one price
  • DA2PP vaccine
    LOT 4721 · exp 08/15/26
    $0.00
  • Deworming tablet
    LOT 3302 · COGS $4.20
    $0.00
  • Fecal test
    service · in-house
    $0.00
  • Puppy exam
    service · 30 min
    $0.00
Real-time analytics

Your inventory's vital signs, at a glance.

Eight live widgets, value, ABC, expiration risk, reorder predictions, loss trends, and more. CSV export on every panel. No reporting tool, no pivot tables.

Inventory value
$48,240
+2.1% MoM
Potential profit
$31,820
66% margin
Turnover ratio
3.2×
healthy
Total loss YTD
$1,420
↑ track

Value by category

click to filter
  • Medicine$18,420
  • Vaccine$12,180
  • Food$9,420
  • Supply$5,820
  • CRI / fluids$2,400

Expiration risk

all batches
  • OK214
  • Warning76
  • Critical38
  • Expired17

ABC analysis

  • Class A
    top 20% · 80% value
    $38.6k
  • Class B
    middle tier
    $7.4k
  • Class C
    bulk · low value
    $2.2k

Reorder predictions

90-day rolling
ItemOn handReorderDays leftUrgency
Cerenia 60mg8242 daysReorder now
Apoquel 16mg22405 daysReorder now
Convenia 80mg369 daysSoon
LRS 1L423028 daysOK

Inventory loss · monthly

last 6 mo
  • Nov
  • Dec
  • Jan
  • Feb
  • Mar
  • Apr
Inventory + Sage

Talk to your stock room.

Sage has full access to your inventory data, stock levels, batch details, expiration dates, transactions, analytics. Ask in plain English. Get an answer. No reports, no exports, no pivot tables.

Learn about Sage
"What should we reorder this week?"
Sage · grounded in your inventory

9 items are below reorder point. 3 need ordering today, 4 within 2 weeks, 2 within the month. Grouped by supplier for one-click PO:

ItemOn handDaysAction
Cerenia 60 mg82Order today · Covetrus
Apoquel 16 mg225Order today · Covetrus
Convenia 80 mg39Within 2 wks · Patterson
LRS 1 L4228OK · monitor

Generate the suggested POs?

How Bittsi compares

Most PIMS count your inventory. Bittsi manages it.

Bolt-on tools fill gaps but split your data across two systems. Built-in inventory keeps everything in one ledger.

CapabilityBasic PIMSAdd-on toolsBittsi
Batch / lot tracking with expiryNoSomeEvery batch
FIFO allocation on invoicingNoRareAutomatic
POs · partial receiving + auto-generateBasicYesFull lifecycle
Multi-location transfersNoSomeAtomic + audit
Native product bundlesNoNoPlan, est, invoice
Real-time reorder alertsNoYesTargeted
COGS per invoice itemNoRareAuto, batch-tied
AI inventory queriesNoNoSage, plain English
Transaction ledger types3-5Moderate20+ types
In the wild

Real Mondays. Real outcomes.

  • Monday morning · alert

    The expired vaccine that wasn't.

    Dr. Williams gets a notification: 3 Bordetella batches expiring in 7 days, 45 doses on hand. The team spreads them across 12 wellness appointments that week.

    38 doses used. 7 written off. Saved $600.
  • Thursday · 9am

    The PO that wrote itself.

    Sarah used to walk the shelves every Thursday. Now she clicks Generate Suggested Orders, reviews two drafts, hits send.

    45 minutes saved. 2 POs sent in 2 minutes.
  • Friday · 4 pm

    The controlled-substance audit.

    Cycle count limited to Medicine + controlled cabinet. Ketamine off by 1 vial. Variance documented, signed, posted to the ledger.

    Audit-ready. Documented. Traceable.
  • Mid-day transfer

    The propofol that didn't need a PO.

    Surgery low. Transfer 10 vials FIFO from the main pharmacy with lot preservation. Both sides update instantly.

    Stock moved in 30 sec. Surgery on time.
  • Puppy visit

    The bundle that just works.

    Puppy Wellness Package $175 lands on the SOAP plan. Each component allocates a batch, COGS lands on the invoice automatically.

    One price out. Full traceability in.
  • End of month

    "What's our inventory looking like?"

    Owner asks Sage. Total value $45.2k, 6 items below min, 2 expiring this week, turnover 3.2×.

    5 minutes. Complete oversight.
FAQ

What practice managers ask first.

Honest answers from the team. If something's missing, the inventory lead will get on a call.

Every item is tracked as individual batches, each carrying its lot number, expiration date, manufacturer, purchase price, and quantity. New batches are created when stock arrives on a PO; on dispense, the system records exactly which batch was used. The result is a complete chain of custody from arrival to dispense.

See it on your own data

Bring us your last shelf walk.

30 minutes. We'll load a recent PO, run cycle counts, transfer between locations, and ask Sage what's running low, on a real chart, not a sandbox.