Stock Transfers

Moving stock from one branch to another with a request, an approval, a shipment and a confirmed receipt.

5 min read · Updated 10 Sep 2026

On this page

A transfer is a shipment with a paper trail: stock leaves one location, sits in transit, and only lands at the other location when someone there confirms it arrived. Nothing is "moved" instantly, because in real life nothing is.

Needs the Stock Transfers Between Branches add-on (₱300 per branch each month), or any bundle that includes it.

Open Inventory → Transfers. Transfers are a web-app screen; there is no transfers screen on the POS app.

The life of a transfer

Status Shown as Means
requested Awaiting Approval Filed by someone who cannot approve their own; waiting on a manager
pending Pending Approved and ready to send. No stock has moved yet.
in_transit In Transit Deducted from the source, not yet at the destination
received Received Added at the destination. Final.
rejected Rejected The approver said no. Final. No stock ever moved.
cancelled Cancelled Called off. Final.

Each transfer gets a reference like ST-000001.

Creating one

The button says New Transfer if you can approve transfers and Request Transfer if you cannot — same form either way.

Field Required Notes
From Yes The source location
To Yes The destination. Must not be the source.
Notes No
Items Yes A product and a quantity per row

With only the Stock Transfers add-on the two selectors are labelled From Branch and To Branch and list branches. Add Warehouses and they become From and To, with branches and warehouses in separate groups — the same screen then handles warehouse-to-branch and warehouse-to-warehouse moves.

Who can approve their own request is the thing to understand here. If your role can manage warehouses, the transfer you create is approved on the spot and goes straight to Pending — a queue round-trip you could approve yourself would be friction, not control. Everyone else files a request that lands in Awaiting Approval and shows up in the approvals queue for a manager. See Approvals and promotions.

Shipping and receiving

Ship is the moment stock actually leaves. Kassly checks the source has enough of every item and refuses the whole shipment if it does not — Insufficient stock for product … at source branch. Nothing partial goes out. On success each item is deducted at the source and gets a Transfer Out movement, and the transfer becomes In Transit.

Receive is the moment it lands. Each item is added at the destination with a Transfer In movement, and the transfer becomes Received. Terminals at the destination branch get the new figures live.

There is no partial receive. A transfer is received in full, at the quantities that were shipped. If four of the ten arrived, receive it and then record the shortfall as an adjustment at the destination with a note — see Stock adjustments. Purchase orders can be received short; transfers cannot.

While a transfer is In Transit the stock is in neither location's on-hand figure. That is correct — it is on a van — but it does mean a transfer left in transit for a week makes both branches look understocked.

Cancelling and rejecting

Status when you cancel What happens to the stock
Awaiting Approval or Pending Nothing. No stock had moved.
In Transit Returned to the source location
Received Cannot be cancelled at all

A cancelled in-transit transfer writes the return leg as a Transfer In movement at the source, noted cancelled - stock returned. It reads slightly oddly in the history — a Transfer In at the branch the goods left from — but the quantity is right and the note explains it.

Reject is the approver's "no" on a request that was never approved. It asks for a reason, and no stock is involved.

Permissions

Transfers are split across four permissions so that a stockroom can work the dock without being able to authorise movements between branches.

Action Permission
See the list and open a transfer Receive Stock (POs & Transfers)
Create or request one Request Stock Transfers
Approve or reject a request Manage Warehouses
Ship and receive Receive Stock (POs & Transfers)
Cancel Owner or Manager

See Custom roles for assigning these, and Users and roles for what the built-in roles already carry.

What a transfer does not do

  • It does not cost anything to the receiving branch. A transfer moves quantity, not money. Nothing is invoiced between your own branches.
  • It carries no batch or expiry information. A batch received at one branch and transferred to another does not follow the stock. See Batch & expiry.
  • It does not change unit cost. For valuation, transfer movements carry whatever cost was recorded; a transfer with no cost on it contributes nothing to the destination's weighted average. See Inventory valuation.

If the add-on lapses

Nothing is deleted. Transfers already received stay in the ledger and in every branch's figures; the Transfers screen simply stops being available until you subscribe again. A transfer left In Transit stays In Transit, so finish anything in flight before letting the add-on go. See Plans and add-ons.

Where to go next