Skip to content
Kapda StockDocs

Stock adjustments & movements

Record purchases into stock with weighted-average cost, remove stock, read a variant's full movement history, and track individual fabric rolls (thaan) and remnants (chindi).

Stock in Kapda Stock is never edited as a bare number. Every change is a movement — in or out, with a reason, a quantity and, for purchases, a cost — so the history always explains the balance.

Recording movements needs the Manager role or above.

What moves stock automatically#

EventMovement
POS sale, or issuing a draft invoiceOUT, reason SALE
Sale returnIN, reason RETURN
Receiving goods against a purchase orderIN, reason PURCHASE
Job work — material issued / finished goods receivedOUT / IN
Goods returned to a supplierOUT, reason PURCHASE_RETURN
Opening stock when a product is added or importedIN

You never need to adjust stock by hand for these.

Record a purchase (stock in)#

Use this when goods arrive without a purchase order — a cash purchase from the market, for example.

  1. In Inventory, click + (Record purchase (stock in)) on the variant.
  2. Enter the Quantity (whole number).
  3. Purchase price / unit ₹ — what you paid. The dialog previews New average cost: ₹X (was ₹Y · N on hand + M @ ₹Z).
  4. Selling price / unit ₹ — pre-filled with the current price. Change it to reprice the product.
  5. Purchase date — today or earlier; future dates are refused.
  6. For MTR, YARD or ROLL products, optionally enter Roll lengths — for example 25, 25, 20 — to register each thaan separately. They must add up to the quantity.
  7. Notes (supplier, bill no…) — optional, up to 500 characters.
  8. Save.

Weighted-average cost#

The purchase rate blends into a weighted-average cost across old + new stock; the selling price is set directly.

New average cost = (stock on hand × current cost + quantity bought × purchase price) ÷ (stock on hand + quantity bought)

For example, 40 m on hand at ₹200 plus 60 m bought at ₹250 gives (8,000 + 15,000) ÷ 100 = ₹230.

Stock out#

Click (Stock out) on a variant and enter the Quantity to remove:. Use it for stock that leaves without a bill — samples given away, damaged pieces thrown out. The quantity cannot exceed what is on hand (Insufficient stock: N available).

Purchase & stock history#

⋯ → 🧾 Purchase & stock history opens a drawer with the variant's current stock and two tables:

  • 📦 Purchase batches — every purchase with Date, Entry, Qty, Unit ₹ and Value. Empty state: No purchases recorded yet — use the + button to record one with price and date.
  • All stock movements — every in and out with Date, Entry, Qty (green for in, red for out) and Unit ₹.

Movement reasons#

ReasonDirectionCreated by
OPENING_STOCKInAdding or importing a product
PURCHASEInRecord purchase; receiving a purchase order
RETURNInA sale return
CORRECTIONInA stock correction
JOB_WORK_INInFinished goods received from a karigar
JOB_WORK_CANCELInMaterial returned when a job work is cancelled
SALEOutPOS sales, issued invoices, and Stock out
PURCHASE_RETURNOutGoods returned to a supplier (debit note)
JOB_WORK_OUTOutMaterial issued to a karigar
CUTOutA roll cut with "also remove from stock" ticked
DAMAGE / THEFTOutA stock adjustment

Fabric rolls & remnants#

For fabric sold by length (MTR, YARD or ROLL), you can track each physical roll — thaan — so you know exactly which pieces are on the shelf and which are down to chindi.

Register rolls#

Either enter Roll lengths when recording a purchase, or open ⋯ → 🧵 Fabric rolls & remnants, type lengths such as 25, 25, 20 in Register rolls and click + Add rolls. Each roll is numbered ROLL-00001, ROLL-00002, … across your business.

The roll table#

ColumnShows
RollRoll number
FullOriginal length
LeftRemaining length, tagged 🧶 remnant or finished

A roll is a remnant once it has been started and is down to 2 units or 10% of its original length, whichever is larger — for example 4 m left of a 40 m roll, or 2 m left of a 15 m roll.

Cut from a roll#

  1. Click ✂ Cut on the roll.
  2. Enter the Length (up to what is left, in steps of 0.1).
  3. Leave also remove from stock unticked if the cut was billed at POS (the sale already reduced stock). Tick it only for cuts NOT billed at POS — for example fabric sent for a sample.
  4. Click Cut.

Error messages#

MessageCause
Quantity must be positiveEnter a whole number above 0.
Insufficient stock: N availableYou are removing more than is on hand.
Date cannot be in the futurePick today or earlier.
Roll lengths add up to X, but quantity is YMake the lengths total the quantity.
Every roll length must be positive / Enter positive lengths, e.g. 25, 25, 20Remove zero or blank entries.
Only N left on ROLL-…The cut is longer than the roll.
Insufficient stock for this cut"Also remove from stock" is ticked but stock is too low.

Last updated 15/09/2026