xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField SalesCRMRewardsClaimsInventoryProcurementWarehouse 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
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/The inventory ledger
CONCEPT · Last reviewed

The inventory ledger

Every stock movement in xMatix — a receipt, a shipment, a transfer, an adjustment — is recorded as a posted entry in the inventory ledger. On-hand stock is not a figure anyone types; it is the running position that those entries have moved. Once posted, an entry is never edited or deleted: when the source document changes, the ledger posts reversal entries that neutralize the originals and, where needed, fresh entries for the new values. An item's stock history therefore reads like a bank statement — today's balance can be traced back through every movement that produced it.

Read the screen

All Inventory Ledgers list with columns for ledger name, source document, ledger type, partner account, branch, item, SKU, item lot and lot type
Inventory → Inventory Ledger: every posted movement as one immutable row, linked to the document line that produced it.UI captured
  1. 1

    Ledger Name is the movement's stable identity; open it to see the full entry.

  2. 2

    Source Document is the document line that posted the entry — the place to correct, since the entry itself cannot be edited.

  3. 3

    Ledger Type names the kind of movement (Purchased, Inward, Allocation, TransferOutward, Inspection, Shortage …).

  4. 4

    Partner Account and Branch say whose stock moved and where.

  5. 5

    Item, SKU, Item Lot and Item Lot Type carry traceability down to the batch or serial.

  6. 6

    Search and column filters isolate one item, source document, branch, type or lot.

Inventory → Inventory Ledger (view All Inventory Ledgers) lists every posted movement, newest first. Read a row as a chain of custody: Ledger Name is the movement's stable identity, Source Document is the document line that caused it, and Ledger Type names the kind of movement — Purchased, Inward, Allocation, TransferOutward, Inspection, Shortage and so on, written without spaces. Partner Account and Branch locate ownership and place; Item, SKU, Item Lot and Item Lot Type identify what moved down to the batch or serial where the item is lot-tracked. Search and the column filters narrow the list to one item, source document, branch, type or lot.

Read-only Inventory Ledger entry with Ledger Details and Item Details sections
One ledger entry opened from the list: posting context in Ledger Details, the affected item and quantity in Item Details. There is no edit or delete — corrections come from the source document.UI captured
  1. 1

    The header repeats partner account, branch, ledger type and quantity.

  2. 2

    Storage Location is the bin whose balance moved — empty for movements onto the transit balance.

  3. 3

    Source Document links the entry to the line that posted it.

  4. 4

    Inventory Stock Posted confirms a stock counter was actually moved; unchecked is a diagnostic state.

  5. 5

    Reverse Inventory Ledger is filled only on a reversal entry and names the original it neutralizes.

  6. 6

    Item Details: item, SKU, lot type, lot and quantity — read them with the ledger type to know the direction.

Open a movement to see its read-only record. The header repeats partner account, branch, ledger type and quantity. Ledger Details holds the storage location, the source document and its entity and record references, the parent document, the Inventory Stock Posted flag and — on a reversal — the Reverse Inventory Ledger it neutralizes. Item Details holds item, SKU, lot type, lot and the quantity. Read both sections together; no single field explains a stock change on its own. The entry also stores a posting date and the movement's unit cost, which the Item Ledger and the costing engine use even where the detail layout does not display them.

Every movement is a posted entry

Documents across the product post into the one ledger, each with a ledger type that names the movement. Which document lines post which movements is defined by the platform-managed inventory ledger settings — one rule per source line entity and ledger type, naming the quantity field to post and the stock counters to move. The seeded rules cover:

Source lineLedger types posted
Goods receipt line, inspection lineInward, Damaged, Shortage, Excess, Inspection
Bill linePurchased
Delivery order lineOutward
Invoice lineSold
Credit note lineSaleReturn, PurchaseReturn, Damaged, Shortage, Excess, Expired
Adjustment lineAdjustment, Excess, Shortage, Damaged, Expired, OnHold, OnLoan, Assemble, Disassemble
Transfer outward line, transfer inward line, single-step transfer lineTransferOutward, TransferInward, plus Damaged, Shortage, Excess on receipt discrepancies
Fulfilment allocation and picking lines (from orders, service orders and fulfilments)Allocation, Picked
Shipment linePipeline (inbound, informational)

Administrators can read these rules under Setup → Feature Hub → Inventory → Inventory Ledger Settings (see the configuration reference); they cannot be changed from the front end.

One document line can produce several entries — a goods receipt line posts its inward, shortage, damaged and excess quantities as separate entries — and every entry stays linked to the exact line that produced it, so the group can be found from either side. Posting the entry, moving the branch's stock balance and updating the lot's counters happen in one save. Only items with Track Inventory set post at all, and an item with Track Lots set must name a lot on the line or the posting is rejected. Most documents post through an explicit action (Post Inventory, Release Outward, Perform Receive) rather than on creation, and the reliable proof that a line reached the ledger is its Inventory Ledger reference — not a status field.

What an entry records

FieldWhat it holds
Item, SKU, item lot, item lot typeWhat moved; on transfers, Related Item Lot is the lot on the other side.
QuantityHow much. Direction comes from the ledger type; entries store a magnitude, and reversal entries are negated.
Ledger typeThe kind of movement.
Partner account and branchWhose stock moved and where, taken from the source document's header. Transfer entries also carry the related partner account and branch on the other side.
Storage locationThe bin within the branch, after transfer resolution — an inward leg names the destination location; movements onto the transit balance carry none.
Unit costThe cost on the movement, from the source line or lot.
Posting dateWhen the entry was posted — the posting time, not the source document's own date.
Source document, source record, parent recordThe line that posted the entry and its parent document, as navigable references.
Inventory stock postedWhether the quantity was applied to a stock balance. false means the row exists but no stock counter matched the rule — a diagnostic flag, not a normal state.
Reverse inventory ledgerOn a reversal entry, the original it neutralizes.

Corrections post reversals, not edits

The ledger refuses direct edits and deletes with an explicit message: Inventory ledger entries are immutable and cannot be edited. Reverse the source document's posting to correct it. If a posted line's quantity or cost is changed, the ledger inserts a negated reversal entry for each original — against the original lot and at the original unit cost — and posts fresh entries for the new values. If a posted line is deleted, it inserts one reversal per original; the originals stay. Each reversal references the entry it reverses, so correction pairs are traceable in both directions.

None of this is done by hand: you correct the source document — edit the line, delete it, or post a correcting document such as an adjustment — and the ledger follows. Two reading habits follow. A pair of opposite entries for the same line is a correction that happened, not an error. And counting ledger rows does not count documents: one line can legitimately stand behind several rows.

Stock balances and the negative-stock guard

Each posting updates the Inventory Stock row for the partner account, branch, item, SKU and storage location it moves (rows are created on demand and never typed), and the matching item lot's counters. Every counter is a positive magnitude — purchased, sold, transfer inward, damaged, on hold and so on — and Available and In Hand are calculated from them. A posting that would take the counter it decrements below zero is rejected with Insufficient stock: … cannot go negative, and nothing is written for that document; the usual cause is a line drawing from a different lot or storage location than the one holding the stock. Because the guard works per counter, the calculated in-hand or available figure can still read negative when issues have been posted that receipts never covered — treat a negative balance as a data problem to trace through the ledger.

Two availability views exist and do not always agree: the stock row's Available and In Hand (which count purchased quantity) and the Item Ledger's running totals (which treat purchased and pipeline quantity as neutral). Use the stock row and the Inventory Stock page for current balances, and the ledger for movement history.

The Inventory Stock page

Inventory Stock page showing the Stock Balance statement with Compare by, Branches and Balance as On controls and an item-by-item Current column
Inventory → Inventory Stock: current available quantity per item for the selected company, with comparison and as-on controls; clicking a figure drills into the lots or the item ledger behind it.UI captured
  1. 1

    Company picker — balances are per partner account; search and refresh sit beside it.

  2. 2

    Compare by: no comparison, by branch, by period or by years, each with a (movement) variant showing opening, change and closing.

  3. 3

    Branches: columns for By branch, otherwise a scope filter (empty = all, consolidated).

  4. 4

    Balance as On: Current, to-date presets, previous month, a fiscal-year end or a custom period.

  5. 5

    Click a figure for Item lot details (lot-tracked items) or View ledger where an Item Ledger page is configured.

  6. 6

    Total across the listed items for the selected scope.

Inventory → Inventory Stock shows the Stock Balance statement: one row per item with the available quantity for the selected company (the picker at the top right) and a total. Its controls follow the finance statements:

  • Compare byNo comparison (one Current column), By branch, By period or By years, each with a (movement) variant that shows opening, change and closing per column.
  • Branches — for By branch the branches that become columns; for every other comparison a scope filter (empty means all branches, consolidated).
  • Balance as OnCurrent, week / month / quarter / year to date, previous month, a fiscal-year end, or a custom period. Period presets render opening, change and closing.

Clicking a figure opens a drill in a side panel: Item lot details for lot-tracked items (the lots behind the balance, with their quantity state), and View ledger where your administrator has placed the Item Ledger component on a page. The Item Ledger takes a company, item (optionally SKU), branch and a date range — today, week, month, quarter or year to date, or custom — and lists the opening stock, every posted movement in order with a running balance and its source document, and the closing stock; leaving the branch empty consolidates all branches so inter-branch transfers net to zero.

When a stock number surprises you, start here: the balance is the sum of the movements behind it, so the movement that explains the surprise is in the list. Troubleshooting inventory gives a working method, and Inventory period balances explains the period rollup behind the By period comparisons.

Common questions

Can I edit or delete a ledger entry?

No — the ledger blocks direct edits and deletes with an explicit message telling you to correct the source document instead. Change or remove the offending line, or post a correcting document such as an adjustment; the ledger then posts reversal entries automatically. The net quantities end up where an edit would have put them, and the audit trail of the original posting is preserved.

Why do I see pairs of opposite entries for the same item?

A correction happened. When a posted line is changed or deleted, the ledger neutralizes the original entries with reversal entries — each referencing the entry it reverses — and posts fresh entries if there are new values. Read the pair together with its replacement, not row by row.

Why does the posting date differ from my document's date?

The ledger's posting date is stamped when the entry is posted, not copied from the source document. A document created on Monday and posted on Wednesday shows Wednesday in the ledger. Period comparisons and the costing engine work from posting dates.

Does the ledger show value as well as quantity?

Each entry carries the unit cost of its movement, and the Item Ledger shows a simple running line-cost value alongside quantity. The carrying value of stock depends on the costing method your valuation policy selects — under FIFO or moving average it is not quantity times the latest cost. Value questions belong to Inventory Valuation, which is built on the same ledger; see Inventory valuation and costing.