Live AI Engine Active
INVENTORY MANAGEMENT

Inventory management software that lives inside your books

Stock tracking with weighted average costing, multiple warehouses, attribute-combination variants and pack-unit conversion — every movement logged, every sale posting cost of goods sold to the same ledger your CA files from.

ReadyBooks inventory overview showing opening stock, total transactions, items sold, items received and average daily movement for the period, above inflow-versus-outflow and category distribution panels, with Warehouses, Transfers, Export and Reorder low stock actions

The inventory overview — period KPIs across the top, with inflow-versus-outflow and category-distribution panels below, and warehouses, transfers and the reorder short book one click away.

Stock and accounting in one system

Most stock tools stop at quantities. ReadyBooks treats inventory as an accounting problem: every number traces to a movement, and every movement carries a cost.

Stock derived from movements

On-hand is never a counter someone forgot to update — it is the sum of a movement log written by every invoice, bill, return, transfer, adjustment and production order. Click any item to see the documents behind its balance.

Weighted average costing

Every receipt folds into the running average, recomputed from the item’s full movement history. Sales post COGS at the cost captured at the moment of sale, so your margins are real, not last-purchase-price estimates.

Multiple warehouses and transfers (Pro and above)

Define your godowns, see per-warehouse stock for any item, and move stock between locations with transfers that conserve value at current cost. On plans that include manufacturing, a managed quarantine warehouse holds goods-receipt QC stock out of sellable stock as well.

Variant stock per combination

Track quantity per attribute combination — Size × Colour × Finish — derived from tagged stock movements, with an Unspecified pool for untagged stock that always reconciles to the item total.

Buy in packs, sell in base units

Give an item a pack conversion (1 Bag = 25 KG) and enter lines in either unit. The server converts to base quantity before tax, stock and the ledger, while the printed invoice shows the pack you typed.

Reorder levels and a short book

Set a reorder level and a top-up target per item. The “Reorder low stock” short book lists everything at or below its level, grouped by vendor, and mints draft purchase orders in one click — when you ask it to.

Why inventory belongs inside your accounting

A standalone stock app and an accounting package drift apart the moment either one changes. Keeping both in one system removes the reconciliation.

Sales and purchases post stock and ledger together

A sales invoice deducts stock and posts cost of goods sold in the same transaction. A purchase bill adds stock at landed cost and updates the weighted average. There is no export step where the two views can diverge.

Costing that survives an audit

COGS is summed from the sale’s own stock movements — the cost at the moment of sale — never restated by later purchases. The Stock Register’s closing value is built from the same movement costs the ledger postings use: inflows at landed cost, outflows at the weighted average actually consumed.

One catalogue, many shapes of business

Goods, services, raw materials, finished goods, fixed assets and non-stock items live in one item master, with groups, multi-category tagging and tenant-defined attributes shaping each item’s form.

Costs visible only to the right seats

A dedicated cost-visibility permission hides the costing engine’s figures — weighted average cost, per-item valuation, Stock Register values and per-movement rates — from seats that should see quantities but not money, with the register applying one redaction rule across its screen, Excel export and PDF.

What “connected to accounting” actually means here

When you send a sales invoice, ReadyBooks writes the stock movements and posts cost of goods sold against inventory in the ledger — at the cost your stock actually carried, not a guess. When you record a purchase bill, each Shipping and line Freight component can be capitalized into landed cost or expensed, with the tenant setting providing only the default for new bills. The books and the store room are updated by the same keystroke.

That link is also why we are precise about where it stops. A stock adjustment — a physical-count correction, a write-off — moves quantity and re-costs the average, but it does not post a journal entry; the ledger side of a write-off is a deliberate, manual decision for you or your accountant. We think that is the right default for Indian businesses, and we would rather tell you than have your CA discover it.

Item types, groups and categories in one item master

Everything starts with a single question the form makes you answer once: what is this item?

The item form opens with a four-way selector — Track inventory, Service, Fixed asset, Non-inventory — and only the name is mandatory; SKU, HSN and GST rate can come later. Behind the four kinds sit eight stored item types: an Item role select refines tracked goods into raw material, semi-finished, finished good, packing material or consumable — classification labels you can filter the items list and the Stock Register by, not switches that change behaviour. Only Service and Fixed asset actually change how an item behaves; they are forced non-stock on the server, while the other six carry stock, weighted average cost and ledger postings identically. The HSN/SAC field is a searchable lookup over 22,471 bundled codes: type a code prefix or a description, pick the right one, and it can seed the item name from the code’s official description.

Organisation comes in two independent layers. Item groups are the Tally stock-group analogue — one group per item, optional parent, used to filter the items list and the Stock Register. Categories are richer: an item can carry several, the first one selected is the primary (mirrored onto the item and shown with a PRIMARY badge), new categories can be created inline from the item form, and each category carries an attribute set that decides which attribute inputs appear on items tagged with it. That last part is the point of the taxonomy: categorising an item changes its form.

Two limits worth knowing before you design your tree. Parent categories are organisational only — there is no roll-up of stock or value to a parent, and a child category does not inherit its parent’s attributes; the attribute set you want on an item must be attached to a category the item actually carries. And the items-list category filter matches the primary category only, so the extra category tags show on the item but are not a list filter dimension. If filtering is what you need, make that category the primary.

Item categories master showing nine categories with a real parent hierarchy — Cement & Aggregates, Paints & Coatings and Tiles & Flooring under Building Materials — and per-category attribute counts

The categories master — parent/child grouping with each category carrying the attribute set that shapes its items’ forms.

Units of measure and per-item pack conversion

The trader’s oldest problem — buy in bags, sell in kilograms — solved at the one point where every downstream number is decided.

ReadyBooks ships a 50-unit catalogue across six categories — count, weight, length, time, volume, area — and lets you add your own units inline (a “Gatta”, a “Peti”) when the trade demands it. An item’s base unit is the unit its stock, cost and every report are kept in. On top of that, the item can carry a secondary pack unit with a conversion factor to its own base unit, stated in whichever direction you know — 1 Bag = 25 KG or 1 KG = 0.04 Bag — with a flip control that inverts the number for you, so the stored factor can never drift from what you meant.

The genuinely valuable part is where the conversion happens. When a line is entered in packs, a single server-side step converts it to base quantity and a per-base rate before tax computation, before the oversell check, before the stock movement, before weighted average cost and before the journal entry. One conversion point means every downstream consumer — GST math, stock, costing, ledger — sees the same base-unit truth. The printed invoice still shows the pack you typed (2 Bags at the per-bag rate, so Qty × Rate foots on the tax invoice), while the e-invoice, e-way bill and GSTR-1 HSN summary file the base quantity with the canonical GSTN unit code, which is what the portal expects.

And the honest boundaries. There is no system-wide conversion table — ReadyBooks does not know that 1 kg is 1,000 g or that 1 m is 100 cm; every factor is defined per item, against that item’s own base unit. The item form manages one alternate unit per item. Pack entry is accepted on sales invoices, purchase bills, delivery challans and POS; quotations, proforma invoices, purchase orders, credit and debit notes and returns take base units only — so an invoice sold in packs is credit-noted in base units. The table below sets out the full boundary.

Item form with a Food Grains primary category chip, base unit Bag, a secondary-unit conversion reading 1 Bag = 25 KG with a direction-flip control, and a stock snapshot rail showing the reorder level, unit cost, selling price, GST rate and margin

Per-item unit conversion — state the pack in whichever direction you know (1 Bag = 25 KG) and flip it with one click.

Custom item attributes and fields on the item form

Tenant-defined attributes are how a tile trader’s items grow Size and Finish fields while a chemist’s grow Salt and Schedule — without either seeing the other’s clutter.

You define attributes once, as masters: a name plus one of five field types — Text, Number, Date, Dropdown with a managed option list, or Serial No. Two flags change behaviour. “Unique across items” makes the save refuse a value already held by a different item, naming the holder — useful for a model number or a licence code that must never appear twice in the catalogue. “Show on invoices / bills (print)” prints the attribute as a NAME : VALUE line under the item description on document PDFs, which is how Brand or Grade reaches the customer’s copy without polluting the item name.

Attributes attach to categories, and the category attachment is what drives the form: tag an item with “Tiles & Flooring” and the item form renders that category’s attribute inputs; tag it with two categories and it renders the union. One-off attributes can also be added to a single item without touching any category. The masters live under Inventory alongside groups and categories, with dropdown options managed per attribute — options that were used historically are archived rather than deleted, so old documents keep resolving.

Be clear about what the item form captures, because the product itself is: attributes on the item are name tags, and the on-screen copy says exactly where values go — “Values are captured per combination in Variants.” Values are entered per document line when you invoice (informational only — they never touch tax, totals or the ledger) or per variant combination once variant tracking is on; bulk import can additionally write item-level values. One design decision to respect up front: an attribute’s field type cannot be changed after creation, so decide Text versus Dropdown before the data accumulates.

Item form Attributes section with Size, Colour, Brand and Finish chips and the on-screen note that values are captured per combination in Variants

Attributes on the item form are name tags — the product’s own copy says where values live: “Values are captured per combination in Variants.”

Variant stock per attribute combination

Stock per combination — Size × Colour × Brand × Finish — derived from movements, never a counter that can drift.

Switch on “Track attribute variants (per combination)” and every stock movement can carry a combination tag. A variant’s on-hand quantity is the sum of movements stamped with that combination — there is no stored per-variant counter to go stale, which is the failure mode of most variant systems. Combinations come into existence lazily: pick one on an invoice or purchase line and it is created on the spot; combinations are authored on the web item form one at a time (there is no matrix generator, deliberately — a cartesian explosion of combinations nobody stocks is its own data-quality problem).

Real catalogues have history, so untagged stock is a first-class citizen. The “Unspecified” pool is the item’s total minus everything tagged, and it is pickable on documents like any combination — legacy stock stays sellable and can be drained into tagged combinations through variant-tagged adjustments. The register states the invariant on screen, and the screenshot below shows it live: 153 units tagged to combinations plus 194 unspecified equals the item total of 347. If those numbers ever failed to reconcile, that would be a bug, not a rounding note. Archived combinations remain usable for history and drain-down; only new combinations built on archived attributes are refused.

What variants deliberately do not do: change money. Item-level stock, weighted average cost, COGS and journal entries are identical with or without variant tags — tagging never changes a rupee. Variants carry no price, SKU, barcode or reorder level of their own, and the per-combination average purchase rate in the register is display-only. If two sizes genuinely command structurally different prices or costs, model them as separate items; variants answer “which combination is on the shelf?”, not “which combination makes more margin?”.

Per-item variant register showing 4 combinations, 153 units tagged to combinations and 194 unspecified against an item total of 347, with a table of size, colour, brand and finish combinations, per-combination on-hand stock and average purchase rate

153 tagged + 194 unspecified = 347 on hand — the variant register always reconciles to the item total.

Warehouses, transfers and the movement log behind every number

Multi-location stock, with a movement trail under every figure — and the limits stated as plainly as the features.

Multiple warehouses are a Pro-and-above capability; on the free and entry plans stock lives in a single location. Where it is available, define as many warehouses as your business runs — name, code, address — with one flagged as the default. Per-warehouse stock is derived the same way item stock is: by summing movements per location. Transfers move stock between warehouses as a draft you complete: completion checks the source actually holds the quantity, posts a matched out/in movement pair per line — one pair per lot, for batch-tracked items — at the item’s current weighted average cost so value is conserved, and takes a row lock so two concurrent completions cannot double-post. Alongside your own locations the system maintains special buckets that are excluded from sellable stock automatically: an expired-stock warehouse the nightly sweep relocates lapsed lots into for batch-tracked items, and — on plans that include manufacturing — a quarantine warehouse for stock held back by a goods-receipt QC inspection.

Corrections go through stock adjustments: typed (write-off, physical count, production wastage), reasoned, and run through a draft → approval workflow where small-value adjustments auto-approve under a value threshold and larger ones wait for an admin. Underneath all of it sits the stock movement log: every document that touches stock writes rows recording item, signed quantity, cost, warehouse, batch, variant and the source document. Click any item for a drawer of recent movements with document numbers and party names, or open the Stock Register for per-item opening, inward, outward and closing quantity and value with a running-balance ledger per item — exportable to Excel and a letterhead PDF.

The limits, so you can plan around them. A completed transfer has no line-level detail view and no in-transit stage — stock leaves the source and lands at the destination in the same instant, with no dispatch/receive confirmation (for a GST-documented move between branches, use a delivery challan of type branch transfer, which is a separate printable document). Permissions are module-level, not per warehouse. There are no bin or rack locations inside a warehouse — rack location is a single text field on the item. Stock adjustments post no journal entry, so a write-off needs a manual ledger entry to keep the inventory account in step. And the movement log is re-posted when a source document is edited — it faithfully reflects the current documents, but it is not an append-only audit trail.

How weighted average costing (WAC) works in ReadyBooks

One costing method, applied consistently, with its edge cases documented instead of hidden.

ReadyBooks values stock at weighted average cost — the only method offered, on purpose. WAC is what most Indian SMB auditors expect, and one method applied consistently beats a costing dropdown nobody re-verifies. The average is never nudged in place: after any write that touches stock, the server replays the item’s entire movement history in exact decimals and re-derives the cost, rounding once at the end. Receipts fold in via (stock × WAC + qty × rate) ÷ (stock + qty); outflows never change the average. Sales post COGS from the sale’s own movement costs — the cost at the moment of sale — so a later purchase never restates posted COGS.

What lands in cost is more than the invoice rate. On each purchase bill, header Shipping and the sum of line-level Freight are classified independently: Capitalized amounts are allocated into landed inventory cost, while Expensed amounts stay out of WAC. Both components can coexist; when their positive amounts are equal, ReadyBooks requires you to confirm that they are genuinely distinct costs. Source is independent too: supplier-billed freight is included in that supplier’s payable, while an external carrier cost stays outside supplier due and is linked to the carrier’s Expense. These Shipping and Freight fields are post-tax; taxable supplier freight belongs on a taxable service line. Free scheme quantities enter stock and lower the effective unit cost, the way a trader actually thinks about a 10+1 deal. Cost figures remain behind the dedicated cost-visibility permission, with the Stock Register applying one redaction rule across the screen, the Excel export and the PDF.

Three behaviours to understand rather than discover. First, negative stock rebases cost: if on-hand reaches zero or below, the next receipt resets the average to that receipt’s rate — sell what you have not yet entered and the old cost basis is gone, which is a strong reason to keep entries in order. Second, backdating does not re-cost history: the replay runs in entry order, and a backdated purchase entered today changes the current average without rewriting past movements or reposting old COGS. Third, “valuation” is two numbers, not one: the dashboard tile is on-hand × current WAC (a snapshot at today’s cost), while the Stock Register’s closing value is the sum of actual movement costs (the number that ties to the inventory ledger account) — they can legitimately disagree, and knowing why is half of understanding your own books.

Reorder levels and the low-stock short book

An honest reorder workflow: a standing list you work down, not a notification we do not actually send.

Every item can carry a reorder level (the trigger), a max stock level (the top-up target) and a preferred vendor (who to buy it from). Those three fields drive the low-stock surfaces: the items list filters to low stock, out of stock or negative stock (an item at zero shows under Out of stock, not Low stock); the dashboard’s stock-health card counts in-stock items below their reorder level; and each row shows on-hand, reserved and the reorder level side by side, so the gap is visible at a glance. Reserved stock — quantities allocated to quotations, proformas and production orders — is shown separately from on-hand, so what is already spoken for is visible before you promise it again.

The working tool is the short book. “Reorder low stock” lists every stock-tracked item at or below its reorder level — including items at zero, which a plain low-stock filter excludes — grouped by the vendor to buy from: the item’s preferred vendor, else the vendor on its most recent purchase bill, else an Unassigned group. Each line carries a suggested quantity (the gap up to the max stock level, or up to the reorder level when no target is set) at the item’s current cost, editable before you commit. One click mints one draft purchase order per vendor; you review, adjust and send them like any other PO.

And the part most inventory software fudges: ReadyBooks does not send low-stock notifications. No email, no SMS or WhatsApp, no push, no bell entry, and no scheduled job quietly raising purchase orders overnight. Every low-stock signal in the product renders when someone opens a screen (or asks the AI assistant). We think auto-fired POs and alert fatigue are the wrong defaults for a working purchase desk — but more to the point, we will not describe a pull-based list as an alerting system. One more limit for multi-godown businesses: reorder levels are evaluated against an item’s total stock across all warehouses, not per location.

Inventory items table with SKU, category, item-type and in-stock columns, stock-status filters for low, out-of-stock and negative stock, a scan-barcode-to-jump-to-item bar, and variant attribute chips under a variant-tracked item

The items list — filter by item role, category or stock status, scan a barcode to jump straight to an item, and see reserved stock and reorder levels per row.

The boundaries, in one place

Where alternate (pack) units are accepted
DocumentPack-unit entry
Sales invoiceYes — converted to base quantity before tax, stock and ledger
Purchase billYes — the entered pack is preserved on the line and the PDF
Delivery challanYes — stock legs post in base units
POS billingYes — but a per-line discount is not allowed on a pack line
Quotation / proforma invoiceNo — enter base units
Purchase orderNo — enter base units
Credit / debit note, sales returnNo — returns are entered in base units
GST filings (e-invoice, e-way bill, GSTR-1)Always base quantity with the canonical GSTN unit code
The five attribute field types
Field typeWhat it storesWorth knowing
TextFree text up to 500 charactersPrints as NAME : VALUE when print-flagged
NumberA decimal value (4 places)Non-numeric input is rejected at save
DateA calendar date (YYYY-MM-DD)Validated as a real date
DropdownOne value from a managed option listUp to 500 options; removed options archive rather than delete
Serial NoFree text in a serial formatA label format only — separate from serial-number stock tracking

More of the module, as it actually looks

Captured from a live ReadyBooks tenant — the masters and tracking screens the deep dives above describe.

Item attributes master listing five tenant-defined attributes — Brand as Text, and Colour, Finish, Grade and Size as Dropdowns with their option lists shown — with a Print flag badge on Brand

The attributes master — each attribute’s field type and, for dropdowns, its option list; Brand carries the Print flag so its value prints on documents.

Stock & tracking section of the item form with a barcode field offering Generate and View barcode, a tracking-type selector, the track-attribute-variants toggle checked, an explainer for the Unspecified pool, and existing combination chips with per-combination stock

Stock & tracking — barcode, tracking type and the per-combination variant toggle, with existing combinations and their stock shown inline.

Three businesses this was built for

Tile & sanitaryware trader, MorbiSix hundred SKUs where the real question is always which size and finish is actually in the godown.

Size, Colour and Finish become attributes on the Tiles category; each combination’s stock is derived from tagged movements, and years of legacy stock sit in the Unspecified pool — sellable on day one, drained into combinations as counts happen. The register always reconciles to the item total, so the floor and the books stop arguing.

Grain & commodity trader, IndoreBuys in 25 kg bags, sells loose in kilograms, and every billing clerk converts differently.

Each item carries 1 Bag = 25 KG once. Lines are entered in bags or kilograms and the server converts to base quantity before tax, stock and costing — the printed invoice shows bags so the total foots, while GSTR-1 files kilograms with the official unit code. One conversion, one truth, no clerk arithmetic.

FMCG distributor with three godowns, NagpurStock scattered across locations, a purchase desk working from memory, and month-end counts that never tie to the books.

Three warehouses with per-location stock and transfers that conserve value at current cost; reorder levels and preferred vendors per item; and the short book turns the standing low-stock list into vendor-wise draft purchase orders in one click. Physical counts land as adjustments with an approval step, so large corrections are reviewed rather than slipped in.

Frequently asked questions

Put your stock inside your books

Start free with real-time stock, weighted average costing and a movement log under every number. No credit card required.

Chat on WhatsApp