Warehouses
Central storage locations that hold stock but never sell it — how they differ from a branch, how stock gets in and out, and what they cannot do.
5 min read · Updated 10 Sep 2026
On this page
A warehouse is a place that holds stock and does not sell it. If you buy in bulk for several branches, or run a central kitchen, you want the stock recorded somewhere before it is anywhere near a till — that is what this is for.
Needs the Warehouse & Commissary add-on (₱500 per branch each month), or any bundle that includes it. One subscription grants both the warehouse screens and the commissary production features.
Open Inventory → Warehouses.
A warehouse is not a branch
They are different kinds of thing, and mixing them up is the source of most questions about this feature.
| Branch | Warehouse | |
|---|---|---|
| Sells | Yes — POS, shifts, receipts | Never. No POS, no shift, no sales |
| Holds stock | Yes | Yes, in its own separate ledger |
| Appears on Stock Levels | Yes | No |
| Counted with a stock count | Yes | No |
| Stocked in or adjusted by hand | Yes | No |
| Counts toward your per-branch add-on price | Yes | No |
The last two rows are the ones to plan around. Every stock movement in Kassly belongs to a branch or a warehouse, never both — which is why a branch filter never shows warehouse activity, and why the branch tools in the rest of this part simply do not apply here.
Creating one
Click New Warehouse.
| Field | Required | Notes |
|---|---|---|
| Code | Yes | Up to 20 characters, unique across your business. e.g. WH-001 |
| Name | Yes | e.g. Main Warehouse |
| Address | No | |
| Contact Phone | No | |
| Create default zones | — | On by default |
Leaving Create default zones on gives the warehouse six zones straight away: Receiving, Storage, Picking, Packing, Shipping and Returns. A seventh type, Quarantine, exists but is not created for you — add it yourself if you hold stock back for inspection.
A code stays reserved after you delete a warehouse, so reusing an old code is refused with a plain message rather than failing oddly.
Zones and bins
Inside a warehouse you can describe the physical layout: zones of the types above, and bins within them.
| Bin type |
|---|
| Rack |
| Shelf |
| Floor |
| Freezer |
| Fridge |
| Hazmat |
Stock is held at the warehouse, not in the bin. Zones and bins are there to describe and label the space — nothing in Kassly today records which bin a quantity is sitting in, and no report splits stock by bin. Treat them as a map for your staff, not as locations you can query.
The warehouse screen
Opening a warehouse gives you four tabs.
| Tab | What is on it |
|---|---|
| Stock | What the warehouse holds, per product |
| Zones | The layout, and the bins inside each zone |
| Goods Receipts | Deliveries received here, by GRN number |
| Settings | Name, address, phone, active flag, delete |
The Stock tab lists Product, SKU, On Hand, Allocated, Available and Reorder Point, with a search and a low-stock filter.
Allocated, Available and Reorder Point are not in use yet. Allocated is always zero, Available therefore always equals On Hand, and no screen sets a warehouse reorder point — so the low-stock filter on this tab currently finds nothing. The columns are groundwork for pick-and-pack, not figures to read.
Getting stock in
There are exactly two ways, and neither of them is typing a number:
- Receive a purchase order into the warehouse. When you raise a PO you choose a delivery destination; choose the warehouse and receiving it writes the stock there, along with a numbered Goods Receipt you can open from the Goods Receipts tab. Each item gets a GRN Receipt movement carrying the PO line's unit cost.
- Receive a transfer from a branch or another warehouse. See Stock transfers.
There is no stock-in form, no adjustment form and no count for a warehouse. That is a real gap: if a warehouse figure is wrong, the only lever you have is a transfer, so opening balances have to arrive as a PO receipt or as a transfer from a branch you stocked in the ordinary way.
Getting stock out
- Transfer it to a branch — the normal path, and the reason most warehouses exist.
- Transfer it to another warehouse.
- Consume it in a commissary production run, which turns inputs into a finished item and yields that item into a warehouse.
Warehouse-to-branch transfers use the same screen as branch-to-branch ones. Because a warehouse never sells, stock leaving one always leaves as a transfer.
Deleting a warehouse
Kassly refuses the deletion, with a specific reason, in three cases:
| Reason | Message |
|---|---|
| It still holds stock | Cannot delete a warehouse that still holds stock. Transfer it out first. |
| A transfer is pending or in transit | Cannot delete a warehouse with pending or in-transit transfers. |
| An open purchase order is due to be delivered there | Cannot delete a warehouse that is the delivery destination of an open purchase order. |
Clear the blocker and try again. Deleting is a soft delete — the record and its history are kept, and the code stays reserved.
Permissions
| Action | Permission |
|---|---|
| See warehouses, zones, bins and stock | View Warehouses |
| Create, edit, delete warehouses, zones and bins | Manage Warehouses |
Both are assignable through Custom roles, so a stock controller can see everything without being able to restructure the place.
Valuation includes warehouse stock
The valuation report values branch and warehouse stock, so the total matches what your books say you are holding. Warehouse rows are costed from GRN receipts and transfer-ins. See Inventory valuation.
Where to go next
- Stock transfers — the only way stock leaves
- Inventory valuation — what the stock is worth
- Stock levels — the branch side of the ledger