xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField Sales & SFACRMRewardsClaimsInventoryProcurementWarehouse ManagementField ServiceServiceSupportTelephony & MessagingFinance & AccountingPayrollExpense ManagementCommercePortalsAnalytics & ReportingData StudioMobile AppSee all products →
PLATFORM
Platform overviewApp BuilderAutomationIntegrationsSecurity & GovernanceChange ManagementDevelopers
SENSE AI
Sense AI overviewSense AssistSense ControlSense VisionAI StudioTrust & governanceIn Claude & ChatGPTUse cases
SOLUTIONS
Auto DMSConsumer Goods DMSSales Force Automation (SFA) FMCG & DistributionManufacturing & Dealer NetworksAutomotive & DealershipsPharma & HealthcareConsumer DurablesAgri-InputsBuilding MaterialsService NetworksWarehousing & 3PLFinancial AccountingERP SoftwareIndia GST ComplianceUAE VAT & e-InvoicingSaudi ZATCA & VATAll solutions →
RESOURCES
Knowledge CenterDeveloper & CLIBlogGuidesWhat is xMatix?Company facts
COMPANY
AboutCareersPartnersEventsContactAuthorsLegal
Sign in Request demo
Home/Docs/Inventory/Stock balances (inventory stock records)
CONCEPT · Last reviewed

Stock balances (inventory stock records)

An inventory stock record is the live stock balance for one item at one place: one company, branch, item, SKU and storage location. It is the figure xMatix checks when it allocates an order, builds an invoice, suggests a purchase order or tells a storefront buyer whether something is in stock. Nobody types it. Each record is a set of quantity buckets that documents move when they post to the inventory ledger, plus three calculated balances, Available, In Hand and Quantity Projected, worked out from those buckets.

Overview

You meet stock records in these places:

  • Item → Inventory tab → Inventory Stock list. One row per stock record of the item. The list is read-only. Select a row's name to open the record.
  • Line forms. Sales order, service order and transfer lines show Stock Available and Stock In Hand, taken from the stock record linked to the line. Line forms can also show an Item Stock or SKU Stock tile that adds up every matching record for the line's company and branch.
  • The All Inventory Stocks list, reached from the App Launcher's entity list (the Inventory Stock entity) or from the Inventory Stock link on a line. Its standard view shows Name, Item, SKU, Branch, Storage Location, Available, In Hand, Created By and Created Date.

The Inventory → Inventory Stock page is something different. Its Stock Balance statement is worked out from ledger entries as of a date, not read from these records (see The Inventory Stock page). Business rules explains why the two can differ.

When to use it

  • A salesperson asks why an order would not allocate, or why an invoice says there is no stock. The stock record at that branch and location shows what xMatix considers available.
  • A line shows Stock Available 0 although the item is in stock. Compare the line's branch, SKU and storage location with the records on the item's Inventory tab.
  • You want to see where stock sits right now, split by branch, SKU and storage location, including what is allocated, picked, on hold, in inspection or in transit.
  • Administrators use the buckets to work out which document moved a balance, together with the item ledger.

For history (what moved, when and why), use the item ledger instead. A stock record holds only running totals.

How xMatix handles it

One record per company, branch, item, SKU and location

Posting finds the stock record that matches the source document's company and branch and the line's item, SKU and storage location. If none exists, it creates one, so records appear the first time stock moves at a new place. The same item at two storage locations therefore has two records. Item lot type is not part of the key, and posting never fills the Item Lot Type field. New records are named from the Inventory Stock Name Setting (series IS).

Company and branch come from the document header, not the line. On a two-step transfer, the outward release also keeps an in-transit quantity on a record at the destination branch with no storage location. Receiving the transfer clears it.

Buckets move only when a document posts

Each inventory ledger setting names the bucket it adds to, the bucket it takes from, or both. When a document posts, every matching setting writes one ledger entry and moves those buckets by the entry's quantity. When a posted line changes, is deleted or is cancelled, the reversal entry moves the same buckets back. The seeded settings move the buckets like this:

Bucket (label on the record)Added byTaken away by
Unbilled ReceiptsGoods receipt lines (received quantity)Bill lines raised against a goods receipt line
Purchased QuantityBill lines, with or without a goods receipt—
Quantity On PipelineShipment linesGoods receipt lines received against a posted shipment
Allocation QuantityAllocation lines from fulfilments, sales orders and service ordersPicking lines; delivery order and invoice lines that use an allocation without a pick
Picked QuantityPicking linesDelivery order and invoice lines that use a pick
SoftCommitService order linesAllocation lines on a sales or service order line that already posted
Unbilled DispatchesDelivery order lines not raised from an invoiceInvoice lines with a delivered quantity
Sold QuantityInvoice lines with a delivered quantity—
Pending DeliveriesInward legs of a Pending Deliveries TransferDelivery order lines raised from an invoice; outward legs of a Pending Deliveries Transfer
Transfer Inward, Transfer OutwardTransfer lines (received or released quantity)—
TransitTwo-step transfer release (destination record)Two-step transfer receipt
Damaged Quantity, Excess Quantity, ShortageGoods receipt lines, transfer inward lines and single-step transfer lines with those quantities; adjustment lines of that type—
Expired Quantity, Quantity On Hold, Quantity On LoanAdjustment lines of that type—
Positive AdjustedAdjustment lines with no type and a positive quantity—
Negative AdjustedAdjustment lines with no type and a negative quantity (recorded as a positive amount)—
Assembled InAdjustment lines of type Assemble and also Disassemble—
InspectionOpen inspection lines on a goods receiptThe inspection line once it is marked done

A dash means no seeded setting takes quantity out of that bucket. It comes down only when the posting that raised it is reversed. These buckets are never moved by any seeded setting or by xMatix code, so they stay at zero: Purchase Return Quantity, Sale Return Quantity, Assembled Out, Inspection Adjustment, Fulfilment, DeAllocation and Quantity External. Credit notes have no ledger setting, so a customer or supplier return doesn't change any stock record.

A setting can write a ledger entry that moves no bucket at all. An invoice line with no allocation, pick or delivered quantity is one example. That entry has Inventory Stock Posted unchecked, and it changes the item ledger but not the stock record.

How the three balances are calculated

The balances are recalculated every time the record is saved:

  • Available = (Unbilled Receipts + Transfer Inward + Purchased + Sale Return + Positive Adjusted + Excess + Assembled In) − (Unbilled Dispatches + Transfer Outward + Purchase Return + Damaged + Expired + Shortage + Allocation + Picked + Negative Adjusted + On Hold + On Loan + Inspection + Sold + Assembled Out).
  • In Hand = Positive Adjusted + Purchased + Transfer Inward + Unbilled Receipts + Transit + Sale Return + Excess + Assembled In − Negative Adjusted − Sold − Transfer Outward − Purchase Return − Assembled Out.
  • Quantity Projected = Positive Adjusted + Transit + Purchased + Transfer Inward + Unbilled Receipts + Pipeline + Sale Return + Assembled In − Negative Adjusted − Sold − Transfer Outward − Unbilled Dispatches − Fulfilment − Picked − Allocation − Purchase Return − SoftCommit − Assembled Out.

In practice this means:

  • A receipt raises both balances, and billing it changes neither. The bill moves its quantity from Unbilled Receipts to Purchased.
  • A bill with no goods receipt also raises both balances, because it adds Purchased outright.
  • Allocation and picking lower Available, not In Hand. Picking only moves quantity from Allocation to Picked.
  • Damaged, expired, short, on-hold, on-loan and in-inspection stock lowers Available only. In Hand still counts it.
  • Stock in transit counts in In Hand at the destination, and not in Available, until the transfer is received.
  • Quantity Projected also counts inbound shipments and subtracts SoftCommit and dispatches. xMatix shows it on the record, but no feature reads it.

Who reads the balances

Almost every feature reads Available. They differ in how many records they add up:

FeatureWhat it readsWhich records
Allocation from a fulfilment, sales order or service orderAvailable, drawn record by recordThe line's company, branch, item and SKU. For a fulfilment, the line's storage location is tried first.
Invoice from an order (single and bulk)AvailableThe order's company and branch, item and SKU. Invoice lines are split per stock record and take its storage location.
Scheme free items on invoicesAvailable, less what the invoice's own lines takeThe invoice's company and branch. Applies only when the Sales setting Check free item stock when adding an invoice line is on (off by default).
Minimum-stock and forecast Auto Order, PO quantity nudgeAvailableAdded up across storage locations (and, for minimum stock, across companies) per item, SKU and branch.
Alternate-item nudge on sales and service ordersAvailableAdded up for the order's branch.
Vehicle offroad purchase orders on service ordersAvailableAdded up across storage locations at the order's company and branch.
Storefront stock pill and checkoutAvailableAdded up for the item across every company, branch and location.
Cycle count linesAvailable or In Hand, depending on the count's quantity typeThe count's company and branch, plus SKU and location where set.
Partner stock takeoverAvailableRecords of the outgoing partner with stock.
Order, service order and transfer linesStock Available and Stock In HandThe single record linked to the line.

Prerequisites

  • Track Inventory set on the item. Items without it never post, so they have no stock records (see Items).
  • Read access to the Inventory Stock entity in your security profile (see Permissions).

Procedure

Step 1 — See an item's stock records

  1. Open the item, for example from a document line's item link or the Items list (see Items).
  2. Select the Inventory tab. The Inventory Stock list shows one row per company, branch, SKU and storage location where the item has moved.
  3. Read Available and In Hand on each row. To see every bucket, select the row's name.

The list has no buttons. Stock records change only when documents post.

Step 2 — Read a stock record

The record page has four collapsible sections:

  • Item Information: Item, SKU, Item Lot Type (always empty) and Is Transaction Locked.
  • Inventory Information: the movement buckets, from Purchased Quantity to Inspection Adjustment.
  • Inventory Availability: Available, In Hand, Quantity Projected, Quantity On Pipeline, Transit, Allocation Quantity and SoftCommit.
  • System Information: Created By and Created Date.

The page has no action buttons, and its values can't be edited. It doesn't show the company, branch or storage location. Read those on the list row you came from, or in the All Inventory Stocks list.

Step 3 — Find all stock for a branch or location

  1. Open the All Inventory Stocks list from the App Launcher's entity list (search for Inventory Stock).
  2. Search, or filter on Branch, Storage Location or Item.
  3. Sort by Available to find records that are fully committed.

A second standard view, Inventory Stock for QAP, shows Name, Branch, Storage Location, Available and In Hand, and hides records where both balances are zero.

Step 4 — Trace a balance back to documents

  1. Note the record's item and its branch (from the list).
  2. Open Inventory → Inventory Ledger, pick the company, the item, the branch and a period, and select Submit (see the item ledger).
  3. Match the entries against the bucket table in Buckets move only when a document posts. Entries with Inventory Stock Posted unchecked didn't move any bucket.

Step 5 — Correct a wrong balance

You can't edit a stock record. Correct the document that posted the movement, or post an adjustment for a real loss, gain, damage or hold. The reversal and the new entry move the buckets for you.

Fields

FieldWhat it meansNotes
NameThe record's reference.Series IS, set automatically.
Partner AccountThe company that owns the stock.Part of the key. Taken from the document header. Not shown on the record page. Hidden on single-company tenants.
BranchWhere the stock is held.Part of the key. Empty on tenants that run without branches.
Storage LocationThe location inside the branch.Part of the key. Empty on the destination's in-transit record for a two-step transfer.
Item, SKUWhat the stock is.Part of the key.
Item Lot TypeNot used.Posting never fills it. Lot quantities live on item lots.
Is Transaction LockedThe record is frozen by a cycle count.Set by Start Counting and cleared by Finish Counting on counts with inventory locking.
AvailableFree stock you can promise.Calculated. Never negative: postings that would make it negative are refused.
In HandPhysical stock xMatix believes is present.Calculated. Never negative.
Quantity ProjectedA forward-looking balance including inbound shipments.Calculated. Shown only. No feature reads it.
Unbilled ReceiptsReceived but not yet billed.Billing moves it to Purchased.
Purchased QuantityPosted by bills.Counts in both balances.
Unbilled DispatchesDelivered but not yet invoiced.Lowers Available only.
Sold QuantityInvoiced quantity with a delivery.Lowers both balances.
Allocation Quantity, Picked QuantityReserved and picked for fulfilment.Lower Available only.
SoftCommitCommitted by service order lines.Affects only Quantity Projected.
Pending DeliveriesStock held for invoiced-but-undelivered sales through a Pending Deliveries Transfer.Not in any balance.
Quantity On PipelineInbound on posted shipments.Affects only Quantity Projected.
TransitReleased on a two-step transfer and not yet received.Counts in In Hand at the destination.
Transfer Inward, Transfer OutwardMoved between branches or companies.Add to and lower both balances.
Damaged Quantity, Expired Quantity, ShortageWritten off by receipts, transfers or adjustments.Lower Available only.
Excess QuantityOver-received or found.Adds to both balances.
Quantity On Hold, Quantity On LoanBlocked or lent by adjustments.Lower Available only.
InspectionHeld for incoming inspection.Lowers Available only.
Positive Adjusted, Negative AdjustedUntyped adjustments.Add to and lower both balances.
Assembled InAssembly and disassembly adjustments.Both adjustment types add to it.
Purchase Return Quantity, Sale Return Quantity, Assembled Out, Inspection Adjustment, Fulfilment, DeAllocation, Quantity ExternalNot used.Never written. They stay at zero.
Cost Price, Sale Price, Profit Price, Average Cost, Value, Cost of Goods, Inventory Turnover, Opening Stock, Closing Stock, Financial YearNot maintained.xMatix doesn't write them. For value, see Inventory valuation. For periods, see period balances.

Business rules

  • Records are created by posting only. No New, Edit or Delete action exists on the stock list or record.
  • Every bucket a posting touches must stay at zero or above. Otherwise the whole document is refused with Insufficient stock: … cannot go negative (result: …)., naming the bucket.
  • Available and In Hand must stay at zero or above. Two seeded checks refuse the posting with Stock Available Quantity cannot be negative!! or Stock In Hand Quantity can't be negative. There is no setting that allows negative stock.
  • A locked record refuses postings. While a cycle count with inventory locking is in progress, any posting that would change one of its locked records fails with Item is locked for transaction! Please contact your Administrator for more details. Finishing the count unlocks it.
  • A line is linked to its stock record when the line is created. The match uses the document's company and branch and the line's item, item lot type, SKU and storage location. Stock records never carry an item lot type. So a sales or service order line that names an Item Lot Type isn't linked, and neither is a line whose storage location differs from where the stock is held. Those lines show Stock Available and Stock In Hand as 0. Lines that post are linked again by posting.
  • Line figures are a snapshot. Stock Available and Stock In Hand on a line are recalculated when the line is saved, not live.
  • The Stock Balance statement uses different rules. The Inventory → Inventory Stock statement adds up ledger entries by type as of a date, for the whole item, across SKUs and storage locations. It ignores Purchased, Damaged, Shortage, Expired, On Hold, On Loan, Inspection, Picked and Unbilled Dispatches, and it counts every Sold entry, including those that moved no bucket. A bill without a receipt, or damaged stock, can therefore make the record's Available and the statement's figure differ. The two are reconciled through the ledger, not by editing either one.

Example

A distributor's North branch holds a filter cartridge at storage location Main Store.

  1. A goods receipt for 50 units is received. The record gains Unbilled Receipts 50: Available 50, In Hand 50.
  2. The supplier's bill for those 50 units is posted. Unbilled Receipts drops to 0 and Purchased Quantity rises to 50. Both balances stay at 50.
  3. A fulfilment allocates 12 units for a sales order. Allocation Quantity is 12: Available 38, In Hand 50.
  4. The warehouse picks the 12 units. Picked Quantity is 12 and Allocation is 0. Available is still 38.
  5. An adjustment of type Damaged writes off 2 units found broken. Damaged Quantity is 2: Available 36, In Hand 50.
  6. A salesperson's new order line for 40 units shows Stock Available 36. Allocating it reserves 36 and leaves 4 pending.

Training

Practice exercise

In a sandbox company, use a stock item with Track Inventory set and no lot tracking:

  1. Receive 20 units on a goods receipt at one branch and storage location.
  2. Open the item's Inventory tab and open the new stock record.
  3. Post an adjustment at the same branch and location with type OnHold and quantity 5.
  4. Reopen the stock record.

Expected result: Unbilled Receipts 20, Quantity On Hold 5, Available 15 and In Hand 20. On the Inventory → Inventory Stock statement, the item still shows 20, because the statement doesn't count on-hold stock.

Quick reference

  • One record per company, branch, item, SKU and storage location.
  • Records are created and changed only by posting. You can't edit them.
  • Available = free to promise. In Hand = physically present.
  • Allocation, picking, damage, holds, loans and inspection lower Available only.
  • Billing a received quantity doesn't change either balance.
  • Credit notes don't return stock to any record.
  • A line with an Item Lot Type shows Stock Available 0. Check the Inventory tab instead.
  • The Inventory Stock statement and the record can differ by design. Use the item ledger to reconcile them.

Permissions

To do thisYou need
See the Inventory tab list, the All Inventory Stocks list and stock recordsRead access to the Inventory Stock entity. The shipped System Admin, Standard User, Sales Manager, Sales Executive, Sales and Service profiles have it.
Open Inventory → Inventory Stock (the statement)The Inventory app page permission and the Inventory Stock Statement action grant. Both are given to System Admin, Standard User and Sales Manager in the shipped profiles.
Create, edit or delete a stock recordNot possible from the screens. Stock changes only through posting.

See Security profiles.

Configuration

  • Inventory ledger settings (Setup → Feature Hub → Inventory → Inventory Ledger Settings, view-only) decide which bucket each document line adds to or takes from. See Inventory configuration.
  • Item flags. Track Inventory decides whether an item has stock records at all. Track Lots adds lot quantities alongside the stock record.
  • Cycle count locking. A count with inventory locking locks its stock records between Start Counting and Finish Counting (see Cycle counting).
  • Free-item stock check. Setup → Feature Hub → Administration → Module Settings → Sales, setting Check free item stock when adding an invoice line (group Schemes). When on, a scheme free item is refused if the invoice's company and branch don't have enough available stock.
  • Document naming. Record names come from the Inventory Stock Name Setting (series IS).
  • Data import. Inventory Stock appears in the import entity list. An imported row has no ledger entries behind it, so the item ledger and the Stock Balance statement never show it, and the next posting adds to it as if it were real. Load opening stock with an adjustment instead.
  • Mobile. The field app has a Stock on hand component for dashboard pages. It lists stock records for a branch, with an item search, and labels each one Available, Low · n short, Out of stock or Negative stock. Tapping a row opens that item's ledger at the branch. No shipped mobile page includes it, so an administrator has to add it to a mobile dashboard page before field users see it.

Common problems

"Insufficient stock: … cannot go negative"

The posting would take one bucket of the stock record (or of the lot) below zero. The message names the bucket. The usual cause is a line pointing at a different storage location, SKU or lot from the one holding the stock. Check the item's Inventory tab for the record that has the stock, correct the line and post again.

"Stock Available Quantity cannot be negative!!" or "Stock In Hand Quantity can't be negative."

The posting would leave the record's Available or In Hand below zero, for example by invoicing more than is free at that location. Allocate or invoice less, move stock in first with a transfer, or post an adjustment if stock really is there.

"Item is locked for transaction! Please contact your Administrator for more details."

A cycle count with inventory locking is counting this stock. Wait until the count's Finish Counting has run, or ask the person running the count.

"Available stock not found for allocation."

Allocating straight from a sales or service order found no stock record with available stock for the line's company, branch, item and SKU. Check the Inventory tab. If the stock is at another branch, transfer it first.

A line shows Stock Available 0 but the item has stock

The line isn't linked to a stock record. The line names an Item Lot Type, or its storage location or SKU differs from the record that holds the stock, or the stock is at another branch or company. The figure is also a snapshot from the last time the line was saved. Use the item's Inventory tab or the line's Item Stock tile for the real position.

The Inventory Stock statement and the stock record disagree

They are built differently (see Business rules). Typical causes are bills without a goods receipt, damaged, expired or on-hold stock, picked or dispatched quantities, and invoice lines whose Sold entry moved no bucket. Open the item ledger for the branch and look for those entry types.

Common questions

Can I correct a stock figure by editing the record?

No. The record page has no Edit action, and every value is either calculated or written by posting. To correct stock, change or cancel the document that posted the wrong movement, which writes a reversal, or post an adjustment when stock really was lost, found, damaged or put on hold. Importing stock records isn't a correction either: an imported row has no ledger history, so it can never be reconciled.

Why does billing a goods receipt not increase stock?

The receipt already added the quantity to Unbilled Receipts, which counts in both Available and In Hand. When the bill posts, xMatix moves the same quantity from Unbilled Receipts to Purchased Quantity, so the balances stay where they were. A bill with no goods receipt is different: it adds to Purchased Quantity directly, so it raises both balances on its own.

Why is damaged stock still counted in In Hand?

In Hand measures what xMatix believes is physically present, and damaged, expired, short, on-hold, on-loan and in-inspection quantities are still on the premises as far as the formula is concerned. They are subtracted from Available, so nothing can be allocated or invoiced from them. If the goods have actually gone, post a negative untyped adjustment, which lowers both balances.

Do customer returns put stock back?

Not through credit notes. No ledger setting covers credit note lines, so the Sale Return Quantity and Purchase Return Quantity buckets are never moved and a return changes no stock record. To bring returned goods back into stock, post an adjustment or a goods receipt, depending on how your process records returns.

Why does the storefront show an item in stock when my branch has none?

The storefront adds up Available for the item across every company, branch and storage location, then applies the channel's safety buffer and active reservations. Stock at any location counts. Branch-level figures are on the item's Inventory tab.