The Stock Ledger is the permanent record of every stock movement in SolaStock: each line says which item moved, in which warehouse, in or out, how many, at what cost, what the running balance became, and which document caused it. It also has an Activity audit tab showing who changed what.
The ledger is read-only. Lines are never edited or deleted: a reversal adds opposite lines and leaves the original in place, so the ledger always explains the balance you see in Current Stock.
Use it to investigate a quantity or value, to trace a document's effect, or to review changes for audit.
Where to find it
- Sidebar: Stock → Stock Ledger. URL
/inventory/ledger. - Breadcrumb: Stock Ledger; the header is marked Read-only.
- Related views: an item's Movements tab, a warehouse's Movements tab, and each document's Ledger result tab.
| Who | Movements tab | Activity audit tab |
|---|---|---|
| Owner, SolaStock Administrator | All warehouses | Yes |
| Inventory Manager | Assigned warehouses | No |
| Organization Manager / Member / Viewer / Accountant | Assigned warehouses | No |
| Warehouse Manager, Warehouse Operator, Inventory Viewer | Menu item hidden | No |
Permissions: View the stock ledger for movements; Manage inventory settings for the activity audit. Without them, the tab shows its empty state.
Screen tour
- Header: Stock Ledger · Read-only.
- Tabs: Movements and Activity audit.
- Filter panel (changes with the tab), with Clear to reset all filters.
- The table.
Movements tab — filters
| Filter | What it does |
|---|---|
| Item | One item (active items, SKU · name). |
| Warehouse | All warehouses or one warehouse. |
| Direction | Any, In, Out. |
| Source | Exact document type (placeholder Document class). It must match the internal type exactly, e.g. App\Models\Tenant\StockAdjustment; partial words return nothing. To see one document's movements, use that document's Ledger result tab instead. |
| From, To | Movement date range (inclusive). |
Results update as you change filters.
Movements tab — columns
| Column | Meaning |
|---|---|
| Date | Movement date and time. Documents use their own date (opening stock uses its Opening date); reversals use the moment they were posted. |
| Item | Name · SKU. |
| Warehouse | Warehouse name. |
| Direction | In or Out. |
| Quantity | Quantity moved (always positive). |
| Unit cost | Cost per unit of this movement. For outbound lines it is the cost taken out (FIFO layer cost or average). |
| Total | Quantity × unit cost. |
| Running quantity | Balance of that stock row after the movement. |
| Source | The document, e.g. Opening stock OS-000001, Adjustment ADJ-000004, Goods receipt GRN-000014, Transfer TRF-000002, Shipment …, Sales return …, and Internal consumption IC-000007 for internal consumption documents numbered IC-… (issues) or ICR-… (returns); in Arabic the label reads الصرف الداخلي. Click it to open the document; an internal consumption document opens at /internal-consumptions/{id}. |
Lines are listed oldest first and the page shows the first 100 lines that match. To see recent activity, set From to a recent date or filter by item and warehouse. Empty state: No ledger entries.
Document types you will see:
| Source label | Number prefix | Direction |
|---|---|---|
| Opening stock | OS- |
In (reversal: Out) |
| Adjustment (also stock-count variances) | ADJ- |
In or Out |
| Goods receipt | GRN- |
In |
| Transfer | TRF- |
Out of source, In to destination |
| Shipment | shipment number | Out |
| Sales return | return number | In |
| Internal consumption | IC- (issue), ICR- (return) |
Issue: Out. Return: In, linked to the issue row it gives back. See Internal Consumption. |
| Supplier return | SPR- |
Out. See Supplier Returns. Shown by its document type without a link. |
| Reversal of a document | REV-… (for example REV-OS-, REV-ADJ-, REV-GRN-, REV-RMA-) |
The opposite of the original rows. |
Landed costs change the value of stock but add no ledger row, because no quantity moves; see the valuation reports for their effect.
Activity audit tab
Filters: Action (placeholder item.updated; matches part of the action name), Entity (exact, placeholder item), From, To.
| Column | Meaning |
|---|---|
| Time | When it happened (newest first). |
| Actor | The user's ID number, or System. |
| Action | e.g. item.created, item.updated, item.bulk_updated, opening_stock.post, opening_stock.reverse. |
| Entity | Type and number, e.g. item #42. |
| Document | Reference such as a SKU or document number. |
| Before, After | The changed values as raw data. |
Shows up to 100 events. Empty state: No audit events (also what you see without the permission).
Tasks
Investigate a wrong quantity
- Movements tab → Item = the item, Warehouse = the warehouse.
- Read Running quantity line by line until it diverges from what you expect.
- Click the Source to open the document responsible.
- Correct with an adjustment or reverse the document; the ledger keeps both.
See what a document did
Open the document → Ledger result tab (same columns, that document only).
See the FIFO layers an outbound line used
Open the item → Movements → View on the line → FIFO consumption (see Items).
Review who changed an item
Activity audit → Entity item, Action item.updated, dates → read Before / After.
Export
The ledger page has no export button. Use the Item Ledger or Stock Movement report in Reports (needs Export inventory reports).
Statuses and rules
Ledger lines have no status. They are append-only:
| Event | Ledger effect |
|---|---|
| Post a document | New lines added. |
| Reverse a document | Opposite lines added with the same quantities and costs; originals stay. |
| Edit/delete a line | Not possible. |
Permissions
| Action | Owner / Admin | Inventory Manager, Org Manager/Member/Viewer/Accountant | Warehouse Manager, Operator, Inventory Viewer |
|---|---|---|---|
| Movements tab | All warehouses | Assigned warehouses | No |
| Activity audit | Yes | No | No |
| Item Movements tab | Yes | Yes | No |
Worked examples
Example 1 — Today's receipts (quick)
Omar sets Direction In, From and To = 5 Oct 2026. He sees one line: iPhone 15 Pro 256 GB · Dubai Main · In · 20 · 3,900.0000 · 78,000.00 · running 45 · Goods receipt GRN-000014.
Example 2 — Tracing a balance (full)
Item IP15P-256 (FIFO), filtered to the item:
| Date | Warehouse | Direction | Qty | Unit cost | Total | Running qty | Source |
|---|---|---|---|---|---|---|---|
| 2026-10-01 00:00 | Dubai Main | In | 25 | 3,850.0000 | 96,250.00 | 25 | Opening stock OS-000003 |
| 2026-10-05 10:12 | Dubai Main | In | 20 | 3,900.0000 | 78,000.00 | 45 | Goods receipt GRN-000014 |
| 2026-10-06 14:30 | Dubai Main | Out | 30 | 3,858.3333 | 115,750.00 | 15 | Shipment SHP-1007 |
| 2026-10-06 16:05 | Dubai Main | Out | 8 | 3,900.0000 | 31,200.00 | 7 | Transfer TRF-000002 |
| 2026-10-06 16:05 | Jebel Ali | In | 8 | 3,900.0000 | 31,200.00 | 8 | Transfer TRF-000002 |
The shipment consumed 25 units of the opening layer at 3,850 and 5 of the receipt layer at 3,900 (total 115,750). Current Stock shows Dubai Main 7 and Jebel Ali 8. If the goods receipt is later reversed, a new Out 20 line is added — but because 10 units of its layer were already used, the reversal is refused: "Cannot reverse this inbound movement: … unit(s) of the received cost layer (#…) were already consumed downstream …".
How it connects
- Fed by Opening Stock, Adjustments, Transfers, Purchasing and Sales & fulfillment.
- Produces the balances in Current Stock and the numbers in Reports and the Dashboard.
- Posted documents also send accounting events to SolaCount when connected (SolaCount integration).
Tips & common problems
| Problem | Cause | Fix |
|---|---|---|
| No Stock Ledger menu. | Role lacks View the stock ledger. | Ask an administrator. |
| I don't see recent lines. | Oldest first, first 100 lines. | Use From/To or item filters. |
| Source filter returns nothing. | Needs the exact internal type. | Use the document's Ledger result tab. |
| Activity audit is empty. | Only owners/administrators can see it. | Ask an administrator. |
| Actor shows a number. | The audit stores user IDs. | Match it with your team list. |