Solavel Docs

Adjustments

Last updated

A stock adjustment corrects the quantity of stock in one warehouse when you already know what is wrong and by how much: goods were damaged, expired, stolen, found, used internally or miscounted earlier. Each line either increases or decreases stock. Nothing moves until you post the adjustment; posting writes the movements to the inventory ledger and locks the document.

Use an adjustment when you know the difference. If you want to count the shelf and let SolaStock work out the difference, use a Stock count instead; posting a count creates an adjustment for you. To move stock between warehouses, use a Transfer, not two adjustments. To load the first quantities of a new warehouse or item, use Opening stock.

Typical users: storekeepers and inventory controllers who record write-offs and finds, and owners or SolaStock Administrators who correct posting mistakes.

Where to find it

Screen How to open it URL
Adjustments list Sidebar Operations → Adjustments /adjustments
New adjustment New adjustment (top-right of the list) /adjustments/new
Adjustment detail Click a number in the list /adjustments/{id}
Edit a draft Edit (top-right of a draft's detail page) /adjustments/{id}/edit
  • The menu item is shown to anyone who can view stock balances. Click Operations to expand the group if it is collapsed.
  • Creating, posting and reversing need the Create / post / reverse stock adjustments permission (see Permissions). Without it, New adjustment is greyed out; hover it to see "You do not have permission for this action." Opening /adjustments/new directly shows Access denied — "This page requires additional SolaStock permissions."
  • Adjustments created by a stock count also appear here, numbered COUNT- plus the count number.

Before you start

  • Inventory items only. The item picker lists active inventory items only. Service and non-inventory items never move stock; if one reaches the server, saving is refused with "Item SKU is a service or non-inventory item; it cannot have stock movements."
  • Adjustment reasons. If your organization has set up reasons in Admin → Settings → Adjustment Reasons, every adjustment must use one of them. Otherwise the reason is free text. See Settings.
  • Negative stock. Unless Negative stock is allowed in Settings → Inventory Policy, a decrease that would take an item below zero is refused when you post.
  • Warehouse access. You can only pick, see and post adjustments for warehouses you are assigned to. Owners and SolaStock Administrators see every warehouse.
  • SolaCount connection. If your organization is connected to SolaCount, the inventory and adjustment gain/loss accounts must be mapped before posting works (see SolaCount integration).

Screen tour: the adjustments list

The page is titled Stock Adjustments, with the note "Increase/decrease lines are posted to the canonical inventory ledger."

  • Header (top-right): New adjustment (primary button).
  • Filters, search, bulk actions, export: none on this screen. The list shows the 50 most recent adjustments for your warehouses, newest first, with no paging. For older adjustments, date ranges or an export, use the Adjustment Report in Reports, or the Stock Ledger.
  • Row action: click the number to open the adjustment. There is no row menu.
Column Meaning
Number The adjustment number, for example ADJ-000014, or COUNT-CNT-000007 for one created by a stock count. Click it to open the adjustment.
Date The adjustment date (the movement date in the ledger).
Warehouse The warehouse whose stock changes.
Reason The reason code (for example damage or cycle_count), or — if none.
Status Draft, Posted or Reversed.
+ Value Draft: quantity × unit cost of the Increase lines. Posted / Reversed: the real value the adjustment added to stock, taken from its ledger movements.
− Value Draft: quantity × unit cost entered on the Decrease lines, which is normally 0.00 because the unit cost field is disabled for decreases. Posted / Reversed: the real cost taken out of stock (average or FIFO), taken from its ledger movements.

Empty state: No adjustments — "Create one to correct stock." You also see this if you are a scoped user with no warehouse assigned.

Statuses and lifecycle

Status Meaning Stock effect What you can do
Draft Saved, not posted. None. Edit, Post.
Posted Movements written to the ledger. Locked. Increase lines add stock; decrease lines remove it. Reverse.
Reversed Opposite movements were added by a reversal (REV-ADJ-…). The original movements stay. Net effect is zero. Nothing; it is final.

Draft → Posted → Reversed. A posted adjustment never goes back to draft and cannot be deleted. Drafts cannot be deleted either; leave an unwanted draft unposted.

Create an adjustment

  1. Go to Operations → Adjustments and click New adjustment (top-right). The page is titled New adjustment.

  2. Fill in the header:

    Field Required Rules / defaults Notes
    Document number — Read-only. Shows Assigned automatically when saved. SolaStock assigns the next number (ADJ-000001, ADJ-000002, …) on first save. You cannot type or change it.
    Date No Defaults to today. Used as the movement date in the ledger. You can back-date.
    Warehouse Yes Only your assigned warehouses are listed (shown as CODE · Name). The warehouse whose stock changes. One warehouse per adjustment.
    Reason code Yes, when reasons are configured With configured reasons: a list starting with Select reason, showing each active reason's label. Without: a text box (e.g. damage, found, cycle_count), up to 50 characters. Errors: "Select an adjustment reason.", "The selected adjustment reason is not configured." The list and detail page show the reason code.
    Notes No Free text. Internal only.
  3. In Lines, add one row per item. Click + Add line under the table for more rows, and × at the end of a row to remove it.

    Column Required Rules / defaults Notes
    Type Yes Increase (default) or Decrease. One adjustment can mix both.
    Item Yes Active inventory items, shown as SKU · Name.
    Bin No Bin (optional)… — bins of the chosen warehouse. Pick the warehouse first. The bin must be active and belong to the warehouse.
    Quantity Yes Greater than zero. For serial-tracked items this is not typed: it equals the number of serials ("Quantity equals serial count").
    Lot / Serial For tracked items Shown only for lot-, serial- or expiry-tracked items, with the badge "Traceability required on this item". Increase: type a new Lot / batch code (and Expiry date if the item tracks expiry), or scan/type serial numbers ("Scan or type a serial number, then press Enter"; duplicates are skipped). Decrease: pick an existing lot from the Lot… list, or tick the serial number to remove (one per line, the badge shows 1 / 1 selected). For expiry-tracked lots a first-expiry (FEFO) hint suggests the earliest-expiring lot with a Use button.
    Unit cost Recommended for increases Disabled on Decrease lines. Values the stock you add. If you leave it blank on an increase, SolaStock values the gain at the item's current costing basis instead of zero: the current average cost for a weighted-average item (the warehouse average if that bin or lot has no stock), the latest cost layer for a FIFO item, and as a last resort the item's most recent inbound cost. If there is no cost history at all (a brand-new item that never had stock) the draft is refused: "Item X has no cost history to value this stock gain. Enter a unit cost on an adjustment instead." A cost you type, including 0.00 for free samples, is always used as typed. Decreases always use the stock's existing cost (average or FIFO).

    Under the lines, Increase value shows the total quantity × unit cost of the lines where you typed a cost (a line left blank is valued by SolaStock when you save).

  4. Save from the buttons at the bottom:

    • Cancel returns to the list without saving.
    • Save draft saves without moving stock. You see "Draft saved."
    • Save & post opens Post adjustment? — "Posting writes stock movements to the inventory ledger and locks this document. It cannot be edited afterwards." Click Post to save and post in one step (you see "Adjustment posted.") or Cancel to go back to the form.

Rows without an item, or without a quantity (or serials), are ignored. If no row is left you see "Add at least one line." After saving you land on the adjustment's detail page.

Screen tour: the adjustment detail page

  • Header: the number, the status badge and, on drafts, Edit (top-right).

  • Summary panel: Date, Warehouse, Reason, Reversal (reversal number and reason, once reversed; otherwise —), Increase value, Decrease value. On a posted or reversed adjustment both values and the Unit cost of every line show the actual posted cost from the ledger, so a decrease no longer shows 0.00.

  • Tabs:

    Tab Contents
    Lines Type, Item (name · SKU), Bin (bin code), Quantity, Unit cost. Serial-tracked increases appear as one line per serial with quantity 1.
    Ledger result The movements the adjustment created: Date, Item, Warehouse, Direction (In / Out), Quantity, Unit cost, Total, Running quantity (on-hand after the movement). Before posting: "No ledger entries yet. They appear here after posting." After a reversal, the reversal's opposite rows are not listed here; see the Stock Ledger.
    Audit The events of this document and its own reversal only, oldest first, within your warehouse access: Draft adjustment created, Adjustment posted, Adjustment reversed. Each shows the time, User (user number), the document reference, and a collapsible Recorded changes with the before and after values. With none: Audit timeline - "No audit events were recorded for this document."
  • Action buttons (bottom): Post on a draft; Reverse (red) on a posted adjustment. They are greyed out if you lack the permission.

Edit a draft adjustment

  1. Open the draft and click Edit (top-right). The page is titled Edit adjustment.
  2. Change the header or lines. The document number stays as assigned.
  3. Click Save draft ("Draft updated.") or Save & post.

Only drafts can be edited. Opening the edit page of a posted or reversed adjustment shows "Posted documents are read-only." and returns you to the detail page.

When you reopen a draft, the lot and serial entries of its lines are not reloaded into the form. Before saving an edited draft that has lot- or serial-tracked lines, enter the lot or serials again in the Lot / Serial column.

Post a draft adjustment

  1. Open the draft and click Post (bottom).
  2. In Post adjustment? click Post.

You see "Adjustment posted." The status becomes Posted and the Ledger result tab fills in. If your organization is connected to SolaCount, an Adjustment posted event is sent so SolaCount can post the gain or loss.

Posting is refused, and the adjustment stays a draft, when:

Message (or cause) Why Fix
"Insufficient stock for item SKU at warehouse …: have 4, need 6. Negative stock disabled." A decrease exceeds on-hand stock at that warehouse/bin/lot. Lower the quantity, pick the right bin or lot, or check Current Stock.
"Selected bin does not belong to the movement warehouse." / "Selected bin is inactive." Wrong or inactive bin. Pick a bin of the adjustment's warehouse.
"The selected serial is not available for this item and warehouse." The serial was sold, moved or already removed. Pick an available serial.
"Lot … for item … is quarantined (or recalled / expired) and cannot be shipped without an override." A decrease uses a blocked lot. There is no override on this screen. Release the lot in Traceability first, or ask an administrator.
A message about missing account mappings SolaCount is connected but the accounts this adjustment posts to are not mapped. Finish the mapping under Admin → SolaCount.

Reverse a posted adjustment

Reversing adds opposite movements; it never deletes the original ones.

  1. Open the posted adjustment and click Reverse (bottom, red).
  2. In Reverse adjustment? — "Reversing appends opposite ledger entries from the original source. The original entries remain unchanged." — type a Reason (required, at least 3 characters, up to 500; placeholder "Explain why this source document is being reversed"). The Reverse button stays disabled until the reason is long enough.
  3. Click Reverse. You see "Adjustment reversed."

The status becomes Reversed and Reversal shows the reversal number and your reason, for example REV-ADJ-000003 — Posted to the wrong warehouse. The opposite movements use the original unit costs. An Adjustment reversed event is sent to SolaCount when connected.

Reversal is refused when:

  • the adjustment is not posted ("Only a posted adjustment can be reversed …");
  • it has Increase lines and some of that added stock has since left the same item/warehouse/bin/lot (sold, transferred, adjusted out): "Cannot reverse this receipt because downstream stock consumption exists on a received coordinate. Reverse the downstream source first.", or the stock is no longer all there: "Cannot reverse this receipt because its stock is no longer fully available." Reverse the later document first, or post a new Decrease adjustment instead.

Adjustments that only decrease stock can always be reversed.

If the result is not confirmed

If the connection drops while you save or post from the form, a yellow notice appears above the buttons:

  • "We could not confirm whether the change completed. Check the current status before submitting again." — the server may or may not have saved it.
  • "The request could not be completed. Check your connection and review the page." — usually the draft was saved but posting failed.

The save and post buttons stay disabled. Click Check current status to open the adjustment (or the list) and see what actually happened before trying again. This prevents a duplicate adjustment.

Permissions

Role See the list and details Create, edit, post Reverse Warehouses
Organization Owner Yes Yes Yes All
SolaStock Administrator Yes Yes Yes All
Legacy Stock Manager (and members on older organization-level access) Yes Yes Yes Assigned only
Inventory Manager (scoped) Yes No No Assigned only
Warehouse Manager, Warehouse Operator (scoped) Yes No No Assigned only
Inventory Viewer, accountant access Yes No No Assigned only
Custom role If it has View stock balances If it has Create / post / reverse stock adjustments Same Assigned only

Warehouse scope is enforced by the server, not just hidden on screen:

  • The list only includes adjustments for warehouses you are assigned to; a scoped user with no warehouse sees none.
  • Opening, editing, posting or reversing an adjustment in another warehouse is refused with "You are not assigned to this warehouse."
  • Owners and SolaStock Administrators assign warehouses on Admin → Team access (see Team access).

Worked example 1: write off damaged stock

Al Noor Trading LLC finds 3 cartons of Arabic Coffee 500g (SKU COF-500) water-damaged in Dubai Main. The organization has the reason damage / Damaged stock configured. The item's average cost is AED 45.00.

  1. Omar Haddad (the organization owner) opens Operations → Adjustments → New adjustment.
  2. Warehouse DXB-MAIN · Dubai Main, Reason code Damaged stock, Notes "Water damage, aisle 4".
  3. Line: Type Decrease, Item COF-500 · Arabic Coffee 500g, Bin A-04-02, Quantity 3. Unit cost is greyed out.
  4. Save & post → Post. He sees "Adjustment posted."

Result:

Where What you see
List ADJ-000014 · Dubai Main · damage · Posted · + Value 0.00 · − Value 0.00
Ledger result tab Out · 3 · unit cost 45.00 · total 135.00 · running quantity 109
Current Stock COF-500 at Dubai Main drops from 112 to 109
SolaCount (if connected) Adjustment posted event: loss of AED 135.00 against inventory

Worked example 2: mixed correction, then a reversal

Sara Khan, SolaStock Administrator, finds that a delivery of Saffron 10g (SAF-10, lot-tracked with expiry) was put away at Jebel Ali while 5 jars of Cardamom 250g (CAR-250) were used for staff samples.

  1. New adjustment: Warehouse Jebel Ali, Date 2026-10-05, Reason code Found in count (found).
  2. Line 1: Increase, SAF-10, Quantity 20, Lot / batch code SAF-2610, Expiry date 2027-09-30, Unit cost 62.50.
  3. Line 2: Decrease, CAR-250, Quantity 5.
  4. Increase value shows 1,250.00. Save draft → ADJ-000015, Draft.
  5. Next day she clicks Post → Post. Jebel Ali gains 20 saffron jars at AED 62.50 and loses 5 cardamom packs at their average cost.
  6. The warehouse manager points out that the saffron really belongs to Dubai Main. Nothing has been sold yet, so Sara clicks Reverse, types "Saffron received at Dubai Main, not Jebel Ali" and confirms. The status becomes Reversed, Reversal shows REV-ADJ-000004 — Saffron received at Dubai Main, not Jebel Ali, and both lines are undone (the cardamom comes back too).
  7. She posts two new adjustments: an increase of 20 saffron at Dubai Main and a decrease of 5 cardamom at Jebel Ali.

Had any of the 20 jars already been sold from Jebel Ali, the reversal would have been refused with the "downstream stock consumption" message, and she would have used a Transfer to move the remaining jars instead.

Worked example 3: found stock with no cost typed

Omar finds 8 cartons of PKG-CTN-M (weighted average, AED 3.20 average at Dubai Main, 280 on hand, value AED 896.00) behind a pallet, with no paperwork.

  1. New adjustment, Warehouse Dubai Main, Reason code Found in count. Line: Increase, PKG-CTN-M, Quantity 8, Unit cost left blank. Save draft: ADJ-000016.
  2. He posts it. SolaStock values the gain at the item's current average cost, AED 3.20: 8 x 3.20 = AED 25.60. On hand becomes 288, value AED 921.60, and the average cost stays AED 3.20 (it is not diluted by a zero-cost layer).
  3. The posted adjustment shows + Value 25.60 in the list and on the detail page, and in SolaCount (when connected) Dr Inventory 25.60, Cr Inventory adjustment gain 25.60.
  4. A new item NEW-PLT with no stock history and no cost behaves differently: leaving the cost blank is refused with "Item NEW-PLT has no cost history to value this stock gain. Enter a unit cost on an adjustment instead." He types 18.00 and saves.

How it connects

  • Current Stock and Stock Ledger: posting updates on-hand quantities and adds ledger rows with the adjustment as the source. See Current Stock.
  • Stock Counts: posting a count creates and posts a COUNT-… adjustment with reason cycle_count. See Stock Counts.
  • Traceability: increase lines create lots and serials; decrease lines consume them. See Traceability.
  • Reports: the Adjustment Report lists adjustment documents by date range. See Reports.
  • SolaCount: posted and reversed adjustments send Adjustment posted / Adjustment reversed events, which post to the inventory and adjustment gain/loss accounts. See SolaCount integration.

Tips and common problems

Problem Cause Fix
New adjustment is greyed out Your role can view stock but not adjust it. Ask an owner or SolaStock Administrator.
Item missing from the picker It is a service or non-inventory item, or inactive. See Items.
Warehouse missing from the picker You are not assigned to it. Ask for it on Team access.
Reason must be picked from a list Reasons are configured in Settings. Pick one, or ask an administrator to add a new reason.
− Value shows 0.00 on a draft Decrease lines don't carry an entered cost. Post it: the posted value is the real cost removed. The Ledger result tab shows it line by line.
Average cost moved after an increase The increase line had a typed cost, or was valued automatically from the item's current cost. If the value is wrong, reverse it and post again with the correct unit cost.
"Item X has no cost history to value this stock gain." A blank-cost increase for an item that never had a cost. Type the unit cost.
Figures wrong after posting Posted adjustments are locked. Reverse and post a new adjustment.
Reverse refused on an increase Some of the added stock was already used. Reverse the later document first, or post a decrease.
Can't find an older adjustment The list shows the latest 50 only. Use the Adjustment Report or the Stock Ledger.

Related