A stock transfer moves stock from one warehouse to another through the inventory ledger. The stock leaves the source warehouse and enters the destination at the same cost, so the total value of your stock does not change. You can move it in one step (Post transfer) when the move is immediate, or in two steps (Ship transfer, then Receive transfer) when the goods spend time on the road.
Use a transfer whenever stock changes warehouse. Do not use a decrease adjustment in one warehouse and an increase in another: that loses the cost link and shows as a loss and a gain. Moving stock between bins of the same warehouse is not a transfer (source and destination must differ).
Typical users: warehouse managers and operators who send and receive stock between branches, and owners or SolaStock Administrators.
Where to find it
| Screen | How to open it | URL |
|---|---|---|
| Transfers list | Sidebar Operations → Transfers | /transfers |
| New transfer | New transfer (top-right of the list) | /transfers/new |
| Transfer detail | Click a transfer number | /transfers/{id} |
| Edit a draft | Edit (top-right of a draft) | /transfers/{id}/edit |
- The menu item is shown to anyone who can view stock balances.
- Creating, shipping, receiving and posting need Transfer stock between assigned warehouses. Without it New transfer is greyed out (hover: "You do not have permission for this action.") and
/transfers/newshows Access denied. - Transfers are a plan feature. Without it, saving or acting on a transfer shows "This SolaStock feature is not available for the current plan or entitlement state."
Screen tour: the transfers list
The page is titled Stock Transfers: "Move stock between warehouses through the inventory ledger."
- Header (top-right): New transfer.
- Filters, search, paging, export: none. The list shows the 50 most recent transfers you can see, newest first. For history, use the Transfer Report in Reports.
- Row action: click the number. No row menu or bulk actions.
| Column | Meaning |
|---|---|
| Transfer # | For example TRF-000021. Click to open. |
| From | Source warehouse. |
| To | Destination warehouse. |
| Date | Transfer date (movement date). |
| Status | Draft, In transit, Received or Posted. |
You only see transfers where you are assigned to both warehouses. Empty state: No transfers — "Create a transfer to move stock between warehouses." If loading fails: Transfers could not be loaded with Try again.
Statuses and lifecycle
| Status | Meaning | Ledger effect | Actions |
|---|---|---|---|
| Draft | Saved, nothing moved. | None. | Edit, Ship transfer, Post transfer. |
| In transit | Shipped from the source, not yet received. Shipped shows the time. | Out of the source; not yet in the destination. Not available in either warehouse. | Receive transfer. |
| Received | Arrived. Received shows the time. | In the destination at the shipped cost. | None. |
| Posted | Moved in one step. | Out of the source and into the destination together. | None. |
- One step: Draft → Post transfer → Posted.
- Two steps: Draft → Ship transfer → In transit → Receive transfer → Received.
Transfers cannot be cancelled, deleted or reversed from the screen. To bring stock back, create a new transfer in the opposite direction.
Create a transfer
-
Go to Operations → Transfers and click New transfer (top-right). The page is titled New transfer.
-
Fill in the header:
Field Required Rules / defaults Notes Transfer number — Leave blank. SolaStock assigns TRF-000001,TRF-000002, … on first save; a number typed on a new transfer is ignored.Date No Defaults to today. Movement date in the ledger. Source warehouse Yes Select source warehouse… — your assigned warehouses. Destination warehouse Yes Select destination warehouse… — your assigned warehouses. Must differ from the source. Otherwise a warning reads "Source and destination warehouses must be different." and Save and post is disabled; Save draft shows the same message. Notes No Free text. For example the truck or driver. -
In Lines, add one row per item (+ Add line; × removes a row):
Column Required Notes Item Yes Active inventory items only. Available at source — Read-only: on hand minus reserved at the source, excluding quarantine/damaged bins and quarantined, recalled or expired lots. — until item and source are chosen. Source bin No Bin (optional)… of the source warehouse. Destination bin No Bin of the destination warehouse. Lot / serial number For tracked items Lot: pick from the Lot… list; for expiry-tracked items a FEFO hint suggests the earliest-expiring lot (Use). Serial: tick one serial per line (badge 1 / 1 selected); add a line per serial.Quantity Yes Greater than zero. For serial items it equals the serials ticked and is not typed. -
Save from the bottom:
- Cancel — back to the list.
- Save draft — "Draft saved." Use this for a two-step move.
- Save and post — opens Post transfer? ("Posting writes stock movements to the inventory ledger and locks this document. It cannot be edited afterwards."); click Post. You see "Transfer posted."
Rows without item and quantity are ignored; if none remain you see "Add at least one transfer line." On failure: "The transfer could not be saved."
Edit a draft
- Open the draft and click Edit (top-right). The page is titled Edit transfer.
- Change header or lines; click Save draft ("Draft updated.") or Save and post.
Only drafts can be edited ("Only draft transfers can be edited."). Lot and serial selections are not reloaded when you reopen a draft: pick them again on tracked lines before saving.
Post in one step
- Open a draft and click Post transfer (bottom).
- Confirm Post this transfer? — "Posting writes the stock movements to the inventory ledger and locks this transfer. It cannot be edited afterwards." Click Post transfer.
You see "Transfer posted." For each line SolaStock takes the stock out of the source at its current cost (average or FIFO) and adds it to the destination at that same cost. With FIFO, each consumed cost layer is recreated at the destination at its own cost.
Ship and receive in two steps
Ship
- Open a draft and click Ship transfer (bottom).
- Confirm Ship transfer — "This records shipment of the reviewed transfer quantities. Check the source, destination, and quantities before continuing."
- You see "Transfer shipped." Status In transit; Shipped shows the time.
Receive
- When the goods arrive, open the transfer and click Receive transfer (bottom).
- Confirm Receive transfer — "This records receipt of the reviewed quantities at the destination. Confirm the received quantities before continuing."
- You see "Transfer received." Status Received; Received shows the time.
Receiving books exactly the shipped quantities at the cost they left the source. You cannot receive a different quantity: if goods were lost on the way, receive the transfer and then post a decrease adjustment at the destination.
Errors from these actions show as a notice, for example "The transfer action could not be completed." or the server's reason.
Screen tour: the transfer detail page
-
Header: number, status badge, Edit (drafts).
-
Summary: Date, From warehouse, To warehouse, Shipped, Received, Notes.
-
Tabs:
Tab Contents Lines Item (name · SKU), Source bin, Destination bin (shown as internal bin numbers), Quantity. Ledger result Date, Item, Warehouse, Direction (Outbound from the source, Inbound to the destination), Quantity, Unit cost, Total, Running quantity. Empty: "No ledger entries have been created for this transfer." While in transit only the outbound rows exist. Audit "Transfer posting events are recorded in the inventory audit log." -
Actions (bottom): Ship transfer and Post transfer on drafts; Receive transfer when in transit.
Rules
| Rule | Message |
|---|---|
| Source and destination must differ | "Transfer source and destination warehouses must differ." |
| Inventory items only | "Item SKU is a service or non-inventory item; it cannot have stock movements." |
| Enough stock (unless negative stock is allowed) when shipping or posting | "Insufficient stock for item … Negative stock disabled." |
| Bins must belong to the right warehouse and be active | "Selected bin does not belong to the movement warehouse.", "Selected bin is inactive." |
| Lots must not be quarantined, recalled or expired (no override on this screen) | "Lot … for item … is quarantined and cannot be shipped without an override." |
| Serials must be available at the source | "The selected serial is not available for this item and warehouse." |
If the result is not confirmed
If the connection drops while saving, a yellow notice appears above the buttons: "We could not confirm whether the change completed. Check the current status before submitting again." (or "The request could not be completed. Check your connection and review the page." if the draft saved but posting failed). The buttons stay disabled; click Check current status to open the transfer and see its real status before trying again. Ship, receive and post are safe to repeat: a transfer already shipped, received or posted is not moved twice.
Permissions
| Role | View | Create, ship, receive, post | Warehouses |
|---|---|---|---|
| Organization Owner, SolaStock Administrator | Yes | Yes | All |
| Inventory Manager, Warehouse Manager, Warehouse Operator (scoped) | Yes | Yes | Assigned only — both ends |
| Legacy Stock Manager | Yes | Yes | Assigned only — both ends |
| Inventory Viewer, accountant access | Yes | No | Assigned only |
| Custom role | With View stock balances | With Transfer stock between assigned warehouses | Assigned only |
The server checks both warehouses on every action: creating, opening, editing, shipping, receiving or posting a transfer that touches a warehouse you are not assigned to is refused with "You are not assigned to this warehouse." So a person who only works at the destination cannot receive a transfer unless they are also assigned to the source. Assign warehouses on Admin → Team access.
Worked example 1: same-day move between nearby stores
Al Noor Trading LLC moves 10 packs of Cardamom 250g (CAR-250) from Dubai Main to Deira Shop by van.
- Omar Haddad (Warehouse Manager, assigned to both) opens New transfer: source Dubai Main, destination Deira Shop.
- Line:
CAR-250, Available at source 75, Quantity 10. - Save and post → Post.
TRF-000020is Posted.
Dubai Main drops to 65 and Deira Shop rises by 10, both at the same AED 18.00 average cost. Ledger result shows one Outbound and one Inbound row of AED 180.00 each.
Worked example 2: two-day truck transfer with lots
Al Noor sends 40 cartons of Arabic Coffee 500g (COF-500, lot- and expiry-tracked) from Dubai Main to Abu Dhabi Branch.
- Omar Haddad (assigned to both warehouses) opens New transfer, Date 2026-10-05.
- Line:
COF-500(Available at source 112), Source binA-04-02, Destination binR-01-01, Quantity 40. The FEFO hint suggests lotL2609-14; he clicks Use. - Save draft →
TRF-000021, Draft. - When the truck leaves he clicks Ship transfer → confirm. Status In transit. Dubai Main now shows 72; Abu Dhabi does not show the 40 yet, and they are not available to sell anywhere.
- Next morning Sara Khan, also assigned to both warehouses, opens
TRF-000021and clicks Receive transfer → confirm. Status Received; Abu Dhabi holds 40 cartons of lotL2609-14at AED 45.00 each (AED 1,800.00). - On unpacking, 1 carton is crushed. Sara posts a decrease adjustment of 1 at Abu Dhabi with reason
damage.
If SolaCount is connected, a Transfer posted event is sent when the transfer is received (or posted in one step).
How it connects
- Current Stock and Stock Ledger: both warehouses' balances change; each movement shows the transfer as its source. See Current Stock.
- Traceability: the lot or serial keeps its identity in the destination. See Traceability.
- Reports: Transfer Report by date range. See Reports.
- Landed costs: freight or duty cannot yet follow stock that was transferred to another warehouse: a Landed Cost on a receipt whose goods were partly transferred is refused with "A landed cost cannot yet follow transferred stock, so nothing was posted." Add the landed cost before transferring, or book it in SolaCount.
- SolaCount: posted/received transfers send a Transfer posted event (transfer clearing account). See SolaCount integration.
Tips and common problems
| Problem | Cause | Fix |
|---|---|---|
| Can't see a colleague's transfer | You are not assigned to one of its warehouses. | Ask for both warehouses on Team access. |
| Destination missing from the picker | Not assigned to you. | Same as above. |
| Available at source lower than on hand | Reserved stock, quarantine/damaged bins and blocked lots are excluded. | Check Current Stock. |
| Shipped by mistake | It can't be un-shipped. | Receive it, then transfer back. |
| Fewer goods arrived than shipped | Receive books the shipped quantity. | Receive, then post a decrease adjustment. |
| Want to move between bins of one warehouse | Transfers need two warehouses. | Not supported here; use adjustments (decrease + increase) with care. |