SK Inventory · Features

Stock that always adds up.

An append-only ledger underneath everything: receipts, sales, returns and adjustments are movements, never edits. The number on the screen is the number on the shelf — and you can prove how it got there.

01

Every change is a movement, with a reason

Stock is never 'edited to match'. Each receipt, sale, return and adjustment is an immutable movement carrying a reason code — so the count is always explainable.

The shelf and the screen agree — provably

Discrepancies don't get quietly erased; they book forward as current-dated adjustments with mandatory reasons. Idempotency keys mean a flaky network or a retried sync can never double-count. The ledger is the truth, and the truth is auditable.

The oldest trick in retail is editing the stock register until it matches the shelf. SK Inventory makes that impossible — stock is a log of movements, so every count can be traced, and no discrepancy can be silently buried.
✓

Immutable movements

Every quantity change is a permanent, reason-coded entry. Nothing is overwritten, ever.

Mandatory reason codes

Damage, theft, miscount, return — every adjustment says why, so patterns become visible.

✓

Idempotency keys

Retries and offline syncs can't double-count. The same movement posts exactly once.

Discrepancies book forward

Variances post as current-dated adjustments, never back-dated. The history stays honest.

✓

Full traceability

Any count traces back through every movement that produced it. Audits have answers.

Multi-location

Stock per warehouse, per shop, per van — moved between them as tracked transfers, not guesses.

02

Receiving that captures cost at the door

Goods arrive against a purchase order as a GRN — quantities, lots and landed cost recorded the moment they land. No mystery stock, no 'what did this cost us'.

Cost is known at receipt, not guessed at audit

Raise a purchase order, receive against it, and the GRN captures exactly what came in — including the landed cost that feeds your margins. Partial deliveries and over-receipts are handled explicitly, so the paperwork matches the pallet.

✓

Purchase orders

Order from vendors (who live in your CRM as the vendor role) with expected quantities and costs.

GRN receiving

Receive against the PO; the system reconciles ordered vs received and flags the difference.

✓

Landed cost capture

Freight, duty and handling folded into the real cost of stock — so margins reflect reality.

Partial & over-receipts

Short deliveries and extras handled explicitly, not fudged into the next count.

✓

Vendor on the record

Every receipt links the vendor contact — purchase history beside everything else you know.

Barcode-ready soon

Scan to receive and scan to sell, so the busy counter keeps the ledger honest.

03

Margins you can actually trust

Weighted-average cost recomputes with every receipt, so the cost behind each sale is real — and so are the margins you price and discount against.

Weighted-average costing, live

When new stock arrives at a different price, WAC blends it in immediately. Every sale records the true cost of what left the shelf, so your profit reports aren't built on a number someone typed last quarter.

✓

WAC, recomputed live

Each receipt updates the weighted-average cost instantly. No stale standard cost lying to you.

True cost per sale

Every sale books the real cost of goods sold — margin you can act on, not estimate.

✓

Margin reporting

See profit by item, category and period, computed from actual costs.

Price with confidence

Discount knowing your real floor, not a guess. Promotions that don't quietly lose money.

✓

Valuation, always current

Stock-on-hand value reflects what you actually paid, updated continuously.

Cost history

See how an item's cost moved over time — supplier creep becomes visible early.

04

Lot tracking for the things that matter

Batches, expiries and recalls — know exactly which lot is on which shelf and which customer got which batch. Essential the day a supplier issues a recall.

Which lot went where — answered instantly

Receive into a lot, sell from a lot, trace a lot to every order it touched. When expiry matters or a recall lands, you're not guessing — you're querying. The difference between a tense afternoon and a closed business.

✓

Batch / lot identity

Stock carries its batch through receiving, storage and sale — never anonymous.

Expiry tracking

Know what's ageing before it's a write-off; sell oldest-first where it matters.

✓

Recall in minutes

Trace a lot to every customer who received it — the query that protects your business.

FEFO / FIFO

First-expiry or first-in dispatch rules, enforced rather than hoped for.

✓

Serial numbers soon

For high-value goods, track individual units end to end.

Expiry alerts

Notifications before stock turns into loss — acted on, not discovered.

05

Day-end that closes itself

Counts, variances and adjustment postings run on a schedule. Closing the day is a report you read, not a shutdown you survive.

Closing is a report, not a ceremony

At day-end the system reconciles expected against counted, books variances forward with reasons, and posts the adjustments — automatically. Sell-ahead lets you oversell deliberately when stock is incoming, with limits, so it's always a decision and never a surprise.

✓

Scheduled day-end

Counts and postings on a timer — the close happens whether or not anyone remembers.

Variance booked forward

Differences post as dated adjustments with reasons. Tomorrow starts honest.

✓

Controlled sell-ahead

Oversell against incoming stock within limits you set — deliberate, never accidental.

Reorder points

Low-stock thresholds trigger alerts or purchase suggestions before you run out.

✓

Stock-take mode

Full physical counts captured cleanly, variances explained, no shutdown required.

Day-end report

What moved, what's low, what varied — a morning briefing, not an investigation.

One product of a suite that shares a brain.

SK Inventory lives on the same customer record, the same events and the same rails as the rest of the suite.

Start free  See the developer surface →