Create an Inventory Data Dictionary That Makes Reports Agree
Create an inventory data dictionary with definitions, formulas, owners, and update rules so every inventory report uses the same stock numbers.
By Praveen Nune, Co-Founder & CEO · Updated 27 Oct 2026

In brief
An inventory data dictionary is a shared register that defines every stock field in your reports: what it means, how it is calculated, when it updates, and who owns it. It keeps on-hand, available, and committed numbers consistent across teams. This guide includes a worked example, a copy-ready template, and a simple way to govern changes.
In this article
- 1Why Identical Inventory Labels Produce Conflicting Reports
- 2Inventory Data Dictionary vs Business Glossary vs Data Catalogue
- 3Build an Inventory Data Dictionary Around Clear Stock States
- 4Define the Core Quantity Fields
- 5Write Available Inventory as an Auditable Formula
- 6Worked Example: Why Two Reports Show Different Available Stock
- 7Link Commitments to Real Events
- 8Treat Quarantine as a Controlled Hold
- 9Set the Counting Level (Grain) Before We Add up Inventory
- 10Define Location and Time Boundaries
- 11Control Units of Measure and Packaging
- 12Separate Finished Kits from Buildable Kits
- 13Keep Quantity Definitions Separate from Valuation Definitions
- 14Use This Copy-Ready Dictionary Template
- 15Example: A Completed Entry for Available Inventory
- 16Roll Out the Dictionary and Govern Changes
- 17Put Arka Inventory to Work for Shared Reporting
- 18Frequently asked questions
An inventory data dictionary records what each stock field means, how it is calculated, when it updates, and which system owns it.
We define on-hand, available, committed, incoming, in-transit, damaged, and quarantined quantities so sales, warehouse, purchasing, finance, and reporting teams stop producing conflicting answers from nominally identical inventory reports.
We will show how we define the fields, control the edge cases that change totals, document quantity and value separately, and roll out a reusable template.
Why Identical Inventory Labels Produce Conflicting Reports
We see reporting disputes start with labels that look clear but carry unstated assumptions. When we call a field "available," one team may mean stock physically present, another may subtract reservations, and another may include future supply.
We solve that problem by recording the formula, status inclusion, reporting grain (the level a number is counted at, such as SKU, bin, or warehouse), cutoff time, and accountable owner beside every label.
Indiana state guidance describes a data dictionary as a collection of names, definitions, and attributes about data elements that helps people interpret data consistently. We apply that same discipline to inventory reporting, where a field must be understandable to an analyst, a picker, a buyer, and a controller without a side conversation.
We recommend documenting these differences before we compare totals:
- Status scope: We state whether damaged, quarantined, reserved, or quality-held units belong in a field.
- Location scope: We specify whether a total represents a bin, warehouse, region, legal entity, or the full network.
- Timing rule: We record the event and timestamp that update the field, plus the report's refresh time.
- Unit of measure: We identify the base unit, conversion rule, and rounding method.
- Ownership: We name the business role that approves a definition and the system that supplies it.
We use custom reporting to make those rules visible in the same place as the totals. That way, we can answer "why does this report differ?" with a documented definition instead of a spreadsheet debate.
Inventory Data Dictionary vs Business Glossary vs Data Catalogue
These three terms are often used interchangeably, but they answer different questions. A business glossary says what a term means to the business. A data dictionary records how a specific field is built. A data catalogue is the searchable index that tells people where a dataset or report lives.
| Comparison | Business Glossary | Inventory Data Dictionary | Data Catalogue |
|---|---|---|---|
| Question it answers | What does "available" mean to us? | How is the available field calculated? | Where can I find the available-stock report? |
| Typical content | Plain-language term and approved meaning | Formula, grain, status rules, source, owner, version | Report and dataset names, locations, descriptions |
| Main reader | Sales, finance, leadership | Analysts, warehouse leads, report builders | Anyone searching for data |
In practice, fixing conflicting inventory reports does not require three separate documents. One register can carry the plain-language meaning and the calculation side by side, with a pointer to wherever the report lives. That is the register this guide helps us build.
Build an Inventory Data Dictionary Around Clear Stock States
We build the terminology map before we build formulas. Our goal is not to impose one universal vocabulary, because purchasing terms, customer promises, quality workflows, and ownership rules vary. Our goal is to make our chosen meaning explicit and stable.
Define the Core Quantity Fields
| Field | Our Operational Definition | What We Document |
|---|---|---|
| On-Hand | Posted stock balance assigned to a defined location at the reporting cutoff. | Included statuses, location scope, unit of measure (UOM), and posting events. |
| Committed | Quantity reserved against approved demand that has not shipped or been released. | Reservation trigger, cancellation rule, and pick-stage treatment. |
| Available | Quantity we can promise or use now. | On-hand less commitments and non-sellable holds. |
| Incoming | Expected supply not yet dispatched or received. | Purchase-order status, confirmation rule, and cancellation treatment. |
| In-Transit | Owned or controlled quantity dispatched but not received at destination. | Ownership event, departure event, and receipt event. |
| Damaged | Quantity made non-sellable by condition, pending disposition. | Damage trigger, inspection requirement, and disposition owner. |
| Quarantined | Quantity withheld from use or release pending inspection or decision. | Hold trigger, release authority, and expiration rule. |
With inventory visibility, we can keep the location, status, and timing behind a number visible rather than treating a network total as self-explanatory.
Write Available Inventory as an Auditable Formula
We document available inventory as a formula, not a feeling: on-hand quantity minus committed quantity minus non-sellable hold quantity. We then define non-sellable holds as a non-overlapping set of statuses, so we do not subtract damaged and quarantined stock twice when a unit carries both labels.
We also keep incoming and in-transit quantities separate from immediate availability unless our documented promise policy says otherwise. That distinction lets us report what we can fulfil now alongside supply that may become usable later, such as open purchase orders handled in purchase planning.
Worked Example: Why Two Reports Show Different Available Stock
Take one SKU in one warehouse. None of the committed units are damaged or quarantined. The numbers are illustrative.
| Field | Quantity | How We Treat It |
|---|---|---|
| On-Hand | 100 | Posted balance at the reporting cutoff. |
| Committed | 30 | Reserved against approved orders. |
| Damaged | 6 | Non-sellable, pending disposition. |
| Quarantined | 4 | Held for inspection; 2 of these units are also counted as damaged. |
| Non-sellable holds (distinct units) | 8 | 6 damaged + 4 quarantined − 2 units carrying both labels. |
| Available | 62 | 100 − 30 − 8. |
| Incoming | 50 | Open purchase order, not yet dispatched; reported separately. |
| In-Transit | 25 | Dispatched, not yet received; reported separately. |
A report that subtracts damaged and quarantined stock separately would subtract 10 instead of 8 and show 60 available. The warehouse report that counts each unit once shows 62. Both reports follow a formula, but only one follows a documented, non-overlapping definition. Writing that rule into the dictionary is what makes the two numbers agree.
Link Commitments to Real Events
We define the exact event that creates a commitment, such as approved order reservation, allocation release, or pick confirmation. We also document the event that removes it, such as shipment, cancellation, expiration, or reallocation. Our order commitments workflow should use the same trigger logic as the report, or we will recreate the mismatch inside our system.
Treat Quarantine as a Controlled Hold
We use quarantined stock for items awaiting release, inspection, or disposition, not as a vague catch-all. The FDA's good manufacturing practice rules for finished pharmaceuticals (21 CFR 211.82) provide a useful model: components must be stored under quarantine until they have been tested or examined and released. We adapt that discipline by naming who can release the hold and what evidence they need.
Set the Counting Level (Grain) Before We Add up Inventory
Every quantity field should answer one precise question at one precise level of detail. We call that level the grain: whether a number is counted per SKU, per bin, per warehouse, per lot, or per day. A report that is correct by SKU can still be wrong by location, lot, unit of measure, or timestamp. We prevent that error by writing the grain directly into the field definition, not into a footnote.
Define Location and Time Boundaries
We state whether on-hand means a specific bin, a warehouse, a region, or every location. We also distinguish event time from dashboard refresh time. A receipt can be physically present before it is posted, and a report can refresh after either event. Our definition needs to say which state it represents.
Receiving and putaway are the events that move stock into a bin, so we name them as posting events in the entry. Our warehouse management workflows cover barcode-based receiving, pallet labels, and putaway into warehouse bins.
For traceable products, we connect the dictionary to lot tracking so we can explain whether a total includes a particular lot, serial range, expiration status, or recall hold.
Control Units of Measure and Packaging
We choose one base reporting unit for each item and store conversion factors for cases, packs, pallets, weight, and eaches. The GS1 standard reinforces why consistent package and unit definitions matter when trading partners exchange product data.
We document whether conversions happen before or after aggregation, how we round fractional quantities, and which unit the report displays. A case-level report and an each-level report can both be accurate while showing different totals if we do not identify their units.
Separate Finished Kits from Buildable Kits
We report finished kit stock separately from buildable kits. Finished-kit quantity counts assembled inventory already on hand. Buildable-kit quantity depends on available components and each component's bill-of-material ratio. We use kit rules to ensure our reports do not promise kits from components already reserved, quarantined, or assigned elsewhere.
Keep Quantity Definitions Separate from Valuation Definitions
We treat quantity and value as related but separate reporting systems. Quantity fields answer how many units we can locate, reserve, inspect, or promise. Valuation fields answer how those units are costed for accounting and financial analysis. Combining both questions in one field creates confusion when operational status changes before accounting treatment does.
We document cost method, cost layer, currency, landed-cost inclusion, valuation cutoff, and write-down treatment in their own dictionary entries. IRS Publication 538 states that, for merchandise purchased during the year, cost means the invoice price minus appropriate discounts plus transportation or other charges incurred in acquiring the goods.
We use that as a reminder to document our cost basis rather than assuming quantity multiplied by a visible unit cost equals the ledger balance.
We also avoid assuming that unavailable quantity has no value. Damaged or quarantined inventory may still carry a cost, a reserve, a repair estimate, or a pending disposition decision.
Our landed cost reporting should therefore reconcile to its own valuation logic while our operations reports remain clear about physical and sellable quantities.
If finance works in QuickBooks Online, Arka's QuickBooks integration handles the accounting entries required for cost allocations, which is worth documenting in the valuation entries of the register.
Use This Copy-Ready Dictionary Template
We use one shared register for report fields, formulas, and ownership. We can store it in a spreadsheet, reporting specification, or governed data catalogue, as long as every dashboard and export points back to the same approved definition.
| Template Column | What We Enter |
|---|---|
| Business Field Name | The human-readable report label. |
| Technical Field Name | The dataset, table, API field, or calculation identifier. |
| Plain-Language Definition | The field's meaning in one sentence. |
| Data Type And Unit | Whole number, decimal, or text, plus the base unit of measure. |
| Allowed Values | The valid range or list, including how negatives and blanks are handled. |
| Formula Or Logic | Inputs, operators, exclusions, null handling, and status logic. |
| Reporting Grain (Counting Level) | The level a number is counted at: SKU, location, lot, serial, UOM, entity, and date. |
| Included And Excluded Statuses | Sellable, committed, damaged, quarantined, and other status rules. |
| Source System Of Record | The authoritative system for the field. |
| Update Event And Refresh Cadence | The posting event and dashboard update schedule. |
| As-Of Timestamp And Time Zone | The reporting cutoff rule. |
| Data Owner | The accountable business role. |
| Approver | The role authorised to change the definition. |
| Version And Effective Date | The change-history reference. |
| Validation Test | The reconciliation, exception, or sample check. |
Example: A Completed Entry for Available Inventory
Here is one filled-in entry. The values for Technical Field Name, Source System Of Record, and Approver are example placeholders; replace them with your own.
| Template Column | Example Entry |
|---|---|
| Business Field Name | Available Inventory |
| Technical Field Name | available_qty (replace with your system's field name) |
| Plain-Language Definition | Units we can promise to customers right now. |
| Data Type And Unit | Whole number, in the base unit of measure (each) |
| Allowed Values | Zero or greater; any negative value is flagged as an exception |
| Formula Or Logic | On-hand − committed − distinct non-sellable units (each damaged or quarantined unit counted once) |
| Reporting Grain (Counting Level) | SKU, warehouse, and day |
| Included And Excluded Statuses | Includes sellable stock; excludes committed, damaged, quarantined, and quality-held units |
| Source System Of Record | The inventory system of record |
| Update Event And Refresh Cadence | Any posting that changes on-hand, commitments, or hold status; dashboard refreshed on the agreed schedule |
| As-Of Timestamp And Time Zone | Report run time, in the warehouse's local time zone |
| Data Owner | Warehouse operations manager |
| Approver | Inventory control lead |
| Version And Effective Date | v1.0, effective [date] |
| Validation Test | Weekly check of 20 sampled SKUs: available equals on-hand minus committed minus distinct non-sellable units |
We use the NIST definition of a data element, the smallest named item of data that conveys meaningful information. In our register, that means each field gets one definition, one purpose, and enough context for another team to reproduce the number.
We recommend starting with the fields used in inventory by location, available-to-promise, open orders, receiving, and valuation reports.
To see what those reports can look like in practice, read how one Arka customer tracks availability and value by product family and monthly stock movements. Once the register is approved, we turn it into practical filters, views, and dashboards.
Roll Out the Dictionary and Govern Changes
A dictionary only helps while it stays current. We roll it out in a few small steps, then control every change the same way.
- Pick the disputed reports first.Start with the reports teams argue about most, usually inventory by location, available-to-promise, open orders, receiving, and valuation.
- Draft one entry per field.Use the template above, and name one data owner and one approver for each entry.
- Test against real transactions.Reconcile a sample of real orders and receipts to the formula before approving the entry.
- Publish in one place.Store the register where every dashboard and export can point back to it.
- Control changes.Every change starts as a request, goes to the data owner for review, and needs the approver's sign-off. We then save a new version with an effective date and keep the old one, so historical reports keep their original logic.
- Review on a schedule and on triggers.We review the register on a regular schedule, and also whenever a workflow, source system, status, unit conversion, or accounting policy changes.
Keeping a short change log (what changed, why, who approved, and the effective date) is what lets us answer "why did this number move?" without a spreadsheet debate.
For the wider disciplines that keep stock figures trustworthy, such as audits, barcoding, and FIFO, see our guide to improving your inventory management process.
Get one set of stock numbers across every report
Frequently asked questions
Sources
- 1.Inventory Record Inaccuracy: An Empirical Analysis
- 2.Do you have a data dictionary?
- 3.21 CFR 211.82, Receipt and storage of untested components, drug product containers, and closures
- 4.GS1 Package and Product Measurement Standard
- 5.Publication 538, Accounting Periods and Methods
- 6.Data element, Computer Security Resource Center glossary (definition from the NIST Privacy Framework Version 1.0)
- 7.Motorhome dealership case study
- 8.Healthcare provider case study



