Inventory & Warehousing

Stock tracking, receipts, adjustments and transfers

Stock Overview

The Stock Overview page shows current inventory levels for all stocked products across your warehouses. Key columns:

ColumnMeaning
Qty on HandCurrent physical stock quantity in base UoM
Qty ReservedQuantity committed to confirmed orders but not yet dispatched
AvailableQty on Hand minus Qty Reserved — what you can freely sell
Avg CostWeighted average cost per base unit
Stock ValueQty on Hand × Avg Cost — total value of this stock holding

Rows highlighted in red are below reorder level. Filter by warehouse or category to narrow down.

View Tabs

The inventory page has three view modes:

My Branch Stock

Stock at your assigned branches. This is your primary working view — it shows what you can sell and manage.

Warehouse Stock

Stock at warehouse level (before distribution to branches). Useful for receiving and central inventory management.

All Branches

Read-only view of stock across every branch in the organization. Use this to check if another branch has stock you need. Each branch row shows a "Yours" or "Other" badge so you can tell at a glance. To move stock from another branch, use Transfers.

Cross-branch visibility: The "All Branches" tab is available to any user with inventory view permissions. It's read-only — you can see what other branches have, but you can only manage stock at your own branches. This makes it easy to coordinate inter-branch transfers and borrow requests.

Branch Stock Custodian Model

StockPulse uses a branch stock custodian model: branches own stock, and warehouses are receiving points within branches. This gives you clear accountability for inventory at each location.

Branch

The custodian of stock. All inventory is tracked at the branch level. When selling stocked items, a branch must be selected so the system knows where to deduct stock from.

Warehouse

A physical receiving point within a branch. Goods arrive at warehouses via GRNs and transfers. A branch can have multiple warehouses (main, transit, quarantine).

How it works: When you receive stock, you select a warehouse (which belongs to a branch). When you sell, you select the branch and the system deducts from that branch's warehouses. Transfers move stock between branches or between warehouses within the same branch.

Multi-branch inventory requires the multi_warehouse feature (Business plan and above). Starter plan users operate with a single branch and warehouse.

Receiving Stock (GRN)

A Goods Receipt Note (GRN) records stock arriving at your warehouse — whether from a supplier or as an opening stock entry. Go to Inventory → Receive Stock.

  1. Select the destination warehouse
  2. Optionally link to an existing Purchase Order
  3. Add line items: select product, enter quantity and unit of measure, enter unit cost
  4. Review and save the GRN

On save, the system:

  • Creates a StockLedgerEntry for each line (type: receive)
  • Updates the StockBalance (qty on hand + weighted average cost)
  • Records the GRN document for audit purposes
Opening Stock: To set opening stock levels when you first set up StockPulse, use the Receive Stock form with a cost price equal to your current stock value per unit.

Stock Adjustments

Use Inventory → Adjustments to correct stock levels after a physical count, or to write off damaged/lost goods. Adjustments can target either a warehouse or a branch — choose the location type when creating an adjustment.

Branch Stock Counts: To set initial stock levels at a branch (e.g. after distributing goods), create an adjustment targeting the branch with reason code "Recount" and enter the actual quantities as positive values.
Reason CodeUse Case
RecountPhysical stock count differs from system — correcting to actual quantity
DamageGoods damaged and no longer saleable — write down
ShrinkageUnexplained stock loss (theft, spillage, evaporation)
DonationGoods given away as samples or charity
OtherAny other reason — requires a notes explanation
Approval Workflow: By default, stock adjustments require approval by a different user (four-eyes principle). You can disable this requirement in Settings → Company → Tax & Compliance by toggling off “Require approval for stock adjustments”. When disabled, adjustments are applied to stock immediately on creation.

Stock Transfers

Move stock between warehouses using Inventory → Transfers. This requires the multi-warehouse feature (Business plan and above).

Transfer Types

TypeUse Case
StandardRegular stock movement between any two warehouses
DistributionCentral warehouse distributing stock to branch locations
BorrowTemporary loan of stock with return tracking — the borrowing warehouse must return items later

Transfer Lifecycle

  1. Select source and destination warehouses
  2. Choose a transfer type (Standard, Distribution, or Borrow)
  3. Add items and quantities
  4. Submit — status moves to In Transit
  5. At the destination, confirm receipt to complete the transfer

While In Transit, stock is removed from the source but not yet added to the destination. For Borrow transfers, a return can be initiated from the active borrows list.

Stock Requests

Use Inventory → Stock Requests to request stock from another branch. This is useful when one branch is running low and another has surplus.

How It Works

  1. Go to Stock Requests → New Request
  2. Select the source branch (the branch you want stock from)
  3. Add the products and quantities you need
  4. Set a priority level (Low, Normal, High, Urgent) and optional notes
  5. Submit the request — users at the source branch are notified

Approval Flow

Users at the source branch with the inventory.request.approve permission see incoming requests in their Incoming tab. They can:

Approve

Stock is automatically transferred from the source branch to the requesting branch. A stock transfer record is created, ledger entries are posted for both branches, and the requester is notified.

Deny

The request is marked as denied with a reason. The requester is notified of the denial.

Notifications: Stock requests generate in-app notifications. Look for the bell icon in the header — a red badge shows unread notifications. Click any notification to navigate directly to the request.

Request Statuses

PendingApproved/DeniedFulfilled/Cancelled

Requesters can cancel their own pending requests. Once approved, requests move to fulfilled automatically.

Purchase Orders

Purchase Orders (POs) are formal requests sent to suppliers. Go to Inventory → Purchase Orders.

PO Lifecycle: Draft → Sent → Partial (some items received) → Received → Closed

When receiving a PO, use the GRN form and link it to the purchase order. This marks line items as received and updates stock.

Weighted Average Cost (WAC)

StockPulse uses WAC for inventory valuation. Each time you receive stock, the average cost is recalculated:

New Avg Cost = (Existing Qty × Existing Avg Cost + Received Qty × Received Cost) ÷ (Existing Qty + Received Qty)

This average cost is used when calculating COGS at the time of sale. The Avg Cost does not change when goods are sold, only when new stock is received.