Receiving Stock

Putting quantities into a branch when there is no purchase order — one item at a time, a whole delivery at once, or a spreadsheet.

6 min read · Updated 10 Sep 2026

On this page

Most stock arrives without paperwork: a supplier drops off a box, you buy something from the market, you are opening a branch and typing in what is already on the shelves. This page covers all of that. It is free on every plan — no add-on gates any of it.

If the delivery does have a purchase order behind it, receive it against the PO instead so the ordered, received and outstanding figures stay in step. That needs the Inventory Pro add-on (₱400 per branch each month) and lives under Inventory → Purchase Orders.

Three ways in

Use Where Good for
Stock Adjustment → Stock In Inventory → Stock Levels → Stock Adjustment One item, with batch and expiry
Bulk Stock-In Inventory → Stock Levels → Bulk Stock-In A whole delivery, typed or from Excel
Stock In on the app Catalog → tap an item → Stock In A quick top-up at the counter

One item at a time

Open Inventory → Stock Levels and click Stock Adjustment. Set Adjustment Type to Stock In (add inventory).

Field Required Notes
Branch Yes Stock is per branch. There is no all-branches option.
Product Yes Search by name or SKU.
Adjustment Type Yes Stock In adds. The other two options are covered in Stock adjustments.
Variant Only if the item has variants
Quantity Yes
Unit — Defaults to the item's own stock unit.
Cost Price No The cost of one unit at this delivery's price.
Batch Number No Up to 100 characters.
Manufacture Date No
Expiry Date No Must not be earlier than the manufacture date.
Notes No Required for the other two adjustment types, optional here.

Batch and expiry fields only appear when the type is Stock In, which is deliberate — see Batch & expiry for what Kassly does with them, and for what it does not do.

Buying in cases, counting in grams

If the item has packaging conversions set up, the Unit dropdown offers them, and the form shows what you are really adding underneath the quantity box — = 25,000 g when you enter one sack. The quantity stored is always in the item's own stock unit, so the conversion happens once, here, and never again.

Setting conversions up is covered in Ingredients & recipes.

Cost Price is worth filling in

Cost Price is optional, and skipping it costs you nothing today and something later. Kassly values your stock as a weighted average of the costs recorded on the movements that brought it in. A stock-in with no cost contributes nothing to that average, and an item with no costed movements at all falls back to the Cost Price on the product record.

Enter the cost of one stock unit at the price you actually paid this time. Full detail in Inventory valuation.

A whole delivery at once

Click Bulk Stock-In on the Stock Levels page. Pick a branch first — the whole screen depends on it — then choose a tab.

Manual Entry is a table you add rows to: product, quantity, and optionally a unit, cost price, batch and expiry per row. Click Submit Stock-In and every row is written in one transaction. If anything fails, nothing is written.

Import from Excel is the same job from a spreadsheet:

  1. Click the template button to download bulk-stock-in-template.xlsx. It comes pre-filled with your own products for the branch you selected, so you are only typing quantities.
  2. Fill in the quantities. Rows with no quantity are ignored.
  3. Upload it and click Submit Import. .xlsx or .xls, up to 5 MB.

The import is checked before anything is written. If any row has a problem you get Some rows contain errors. Please fix them and re-upload. with the list, and no stock moves — you fix the sheet and upload it again rather than hunting for which half went through. A sheet with no quantities at all is refused the same way.

Both routes are safe to retry: a submit that times out and is sent again will not double up.

Column-by-column detail for every Kassly import sheet is in Import formats.

Opening stock for a new branch

Two shortcuts save a lot of typing when you are starting out:

  • The ingredient importer creates raw-material products and their opening stock from one sheet. See Ingredients & recipes.
  • After creating a product, Kassly offers to take you straight to the Stock Adjustment form for it.

On the app

Open Catalog, tap an item, and scroll to Stock In: a quantity, an optional note, and Add to stock. It adds to the branch the device is signed in to.

Staff below manager see Requires manager approval. under the heading and get a manager PIN prompt when they tap the button.

A manager's PIN is not currently enough on its own. Recording stock needs the signed-in account to be an Owner or a Manager. A cashier who is granted the Stock In / Adjust Inventory permission through a custom role will pass the PIN prompt and then be refused by the server. Sign in as a manager to record stock on the app.

What happens after you save

  • One Stock In movement per item, naming you and the time. It cannot be edited or deleted afterwards.
  • The branch's on-hand figure goes up.
  • Every POS terminal on that branch gets the new figure live.
  • If the item is still at or below its reorder point, a Low Stock Alert goes out anyway. Receiving does not clear an alert on its own — receiving enough does.

Offline

This is the part to read before you rely on it in a store with bad signal.

Job Offline
Stock In on the app Not protected. There is no offline queue. The request fails and nothing is recorded.
Receive PO on the app Blocked, with Receiving requires a connection.
Everything on the web Needs a connection, like the rest of the web app

Nothing you type into the app's Stock In box is queued for later. Unlike a sale, it is not held on the device and sent when signal returns — offline you get an error and the delivery is simply not recorded. If you are receiving in a dead spot, write the quantities on paper and enter them once you are back online.

Where to go next