Global delivery from Hanoi, Vietnam ISO 9001:2015   ISO 27001:2013 hello@agiletech.vn (+84) 989 324 830

Inventory management software: what it does and what you actually need

In short

Inventory management software exists to answer one question reliably: how much of each item do we have, where is it, and how much of it can we promise to somebody else. Everything else it does, purchasing suggestions, forecasting, valuation, is derived from that answer, which is why a system with impressive analytics on top of an inaccurate count is worse than a spreadsheet somebody trusts. The decision is not which product has the longest feature list. It is which of four tiers your operation is ready to run, and whether you are prepared to do the two unglamorous things that make any of them work: count regularly, and give every quantity exactly one owning system.

Almost every operation that holds physical goods reaches the same point. The spreadsheet that worked at thirty items and one location has become four spreadsheets that disagree, somebody has sold something that was not there, and the monthly count takes two days and produces a number nobody quite believes. That is the moment inventory management software gets bought, usually quickly, and often before anyone has written down what the system is supposed to be true about.

This article is written for that decision. It covers what the software actually does underneath the feature lists, the four tiers of capability and how to tell which one your operation is ready for, the features that earn their cost against the ones that demonstrate well and go unused, how to measure whether your numbers can be trusted, and the integration choices that decide the answer.

We write it from the implementation seat. Our teams build and integrate stock systems for retail, distribution and manufacturing clients through our retail and commerce practice, and the failures below are the ones we are called in to unpick rather than ones we read about.

Key takeaways

  • One number, one owner. Every item quantity must be written by exactly one system and read by all the others. Two systems that both believe they own stock is the defect underneath most inventory projects we are asked to rescue.
  • Available to promise is not the same as on hand. On hand minus allocated minus damaged plus inbound-within-lead-time is what you can sell. Systems that show only on hand will oversell.
  • Accuracy is a measurement, not an aspiration. If you are not cycle counting on an ABC schedule and recording the variance with a reason code, you do not know your accuracy, and every downstream number inherits that.
  • The four tiers are spreadsheet, inventory module inside an existing system, dedicated inventory platform, and full warehouse management. Skipping a tier fails more often than staying one tier behind.
  • Reorder policy is where the savings are, and it is arithmetic, not artificial intelligence. Reorder point equals demand over lead time plus safety stock, and most operations have never written either term down.
  • Barcode or RFID scanning is not a feature, it is the mechanism that makes the count true. Manual entry has an error rate, and that rate compounds through every report built on it.
  • Build only what your operation does differently. The receiving desk, the count and the valuation are the same everywhere; your allocation rules, your kitting, your regulatory lot tracking may not be.

What the software is actually for, underneath the feature list

Strip away the dashboards and an inventory system is a ledger of quantities with a location attached to each one, plus a record of every event that changed a quantity. Received twelve, sold three, moved four to the second location, wrote off one as damaged, counted and found one fewer than expected. If those events are complete and correctly ordered, every report the system offers is derivable. If they are not, no amount of analytics recovers the truth, because the analytics are computed from the same ledger.

Every quantity in that ledger hangs off an identity, and the identity is the SKU. A SKU, a stock keeping unit, is one sellable variant: this shirt in this color in this size, not the shirt in general. Getting SKU discipline right is unglamorous and decides more than most feature comparisons do, because two SKUs for the same physical thing split the count into two numbers that are each individually wrong, and one SKU covering two physical things makes the count meaningless in a way no report will reveal. The three rules are that one sellable variant gets exactly one SKU forever, that a SKU is never reused for a different item after the first one is discontinued, and that the supplier code is stored as an attribute of the SKU rather than used as the SKU, because suppliers change and the item does not.

That is why the useful way to evaluate one of these systems is to ask what it makes impossible rather than what it makes possible. Can a quantity change without an event being recorded? Can two people move the same unit at the same time and both succeed? Can a sale be confirmed against stock that was already allocated to another order? A system that permits any of those will drift out of agreement with the shelf, and the drift is what eventually costs money.

The second thing the software is for, and the part organizations underestimate, is answering what can be promised. A customer asking whether an item is available is not asking what is on hand. They are asking about on hand, minus what is already allocated to other orders, minus what is damaged or quarantined, plus what is arriving before their delivery date. That calculation is called available to promise, and getting it wrong in either direction is expensive: too conservative and you decline orders you could have filled, too optimistic and you take orders you cannot.

Everything else in the product, purchase suggestions, demand forecasts, valuation for the accounts, supplier performance reporting, is a computation over the ledger and the promise calculation. Those computations are genuinely valuable, and they are also the reason so many implementations disappoint: they are what gets demonstrated, they are what appears in the business case, and they are worthless when the ledger underneath them is wrong.

The quantities a serious system distinguishes, and why each one exists

What is physically there

On hand
Units physically present at a location, including units that cannot be sold. This is the number a count verifies, and the only one that is directly observable.
Quarantined or damaged
Physically present, not sellable. Held separately because netting it into on hand hides a loss that somebody needs to see and act on.
In transit
Left one location, not yet received at another. Owned by you, countable at neither end, and the most common cause of a variance that is not really a variance.

What is committed

Allocated
On hand but reserved against a confirmed order. Selling allocated stock is how one customer receives a parcel and another receives an apology.
On order
Bought from a supplier, not yet arrived, with an expected date. Feeds available to promise only for dates after the expected arrival.
Available to promise
On hand minus allocated minus unsellable, plus on order arriving inside the requested date. This is the number a sales channel should be reading.

What decides purchasing

Reorder point
The level at which a replenishment must be raised. Demand over the lead time plus safety stock. A constant typed in once and never revisited is the usual state.
Safety stock
The buffer covering variability in demand and in supplier lead time. Set deliberately per item class, not one blanket number for everything.
Economic order quantity
How much to buy at once, balancing ordering cost against holding cost. Worth computing for the items where the holding cost is real.

If a system exposes only one number called "quantity", it will be used for decisions that need a different number. This is the minimum vocabulary for an operation that sells what it stocks.

Who owns which number, drawn as tiersA four tier ownership diagram. The item master tier owns identity, units of measure and classification. The inventory ledger tier owns on hand, location quantities and the movement history. The commitment tier owns allocation, purchase orders and available to promise. The consumer tier contains the sales channels, accounting and reporting, which read only.Item masteridentity, oneowner Item identity Units of measure Classification definesInventoryledgerthe only writerof on hand On hand Location quantity Movement history commitsCommitmentlayerwhat ispromised Allocation On order Available to promise is read byConsumers,read onlynever authors Sales channels Accounting Reporting
The whole diagram encodes one rule: exactly one writer per quantity. Every box below the owning tier reads by reference. Most inventory divergence we are asked to diagnose is a violation of this single constraint.

The four tiers, and which one your operation is ready for

The most common expensive mistake in this category is not choosing the wrong product. It is choosing a tier the operation is not ready to run. A warehouse management system deployed into an operation with no scanning discipline and no location naming convention will produce worse numbers than the spreadsheet it replaced, because it will be fed by people working around it. The tier has to match the operational maturity, and maturity is built rather than bought.

Tier one is a spreadsheet, and it is genuinely correct for a surprising number of operations: one location, a few dozen items, one person who knows the stock. It fails on three specific triggers, which are a second location, a second person entering data at the same time, and a sales channel that needs to read the quantity automatically. Any one of those is the signal to move.

Tier two is the inventory module inside a system you already run, typically the accounting package or the commerce platform. This is the tier most operations should be at and many skip. It is cheap, the data is already there, and it forces the discipline of one owning system by construction. It fails when you need multiple locations with transfers, or lot and expiry tracking, or a picking process that involves more than walking to a shelf.

Tier three is a dedicated inventory platform: multiple locations, transfer orders, purchase order management, reorder policy per item, barcode scanning, and integrations rather than an integration. This is where most growing distributors and multi-store retailers belong, and where the build-or-buy question becomes real for the first time, because your allocation and kitting rules may genuinely be unlike anyone else's.

Tier four is full warehouse management: directed put-away, zone and wave picking, task interleaving, labor tracking, and dock scheduling. It is a different product for a different problem, namely the efficiency of movement inside a large facility rather than the accuracy of a count. Operations that buy it for accuracy reasons have bought the wrong thing, and our warehouse management practice exists precisely because that tier is a specialist build.

What each tier gives you, and what it demands from the operation

SpreadsheetModule in existing systemDedicated platformFull WMS
Multiple locations with transfersNoPartialYesYes
Automatic quantity for a sales channelNoYesYesYes
Barcode scanning at every touchNoPartialYesYes
Lot, batch or expiry trackingNoNoYesYes
Reorder policy per itemNoPartialYesYes
Directed put-away and wave pickingNoNoNoYes
Demands a location naming conventionNoNoYesYes
Demands scanning discipline from staffNoPartialYesYes
Demands scheduled cycle countingPartialYesYesYes

Read the right-hand column first. Every tier asks something of the operation in exchange, and a tier whose demand you cannot meet will underperform the tier below it.

Which tier to move to, decided by what is actually breaking

What is the specific failure that made you start looking?

  • Two people edit the file, or a channel needs the number

    Move to the inventory module in a system you already run

    The failure is concurrency and machine readability, not capability. The module solves both, costs least, and puts one owning system in place, which is the prerequisite for every later tier.

  • A second location, or lots and expiry dates now matter

    Move to a dedicated inventory platform

    Transfers between locations and lot-level traceability are the two things modules consistently do badly, and both are correctness problems rather than convenience ones.

  • The count is fine but picking is slow and error-prone

    Consider warehouse management, or fix the layout first

    This is a movement efficiency problem. A WMS addresses it, and so does a better slotting arrangement at a fraction of the cost. Measure travel distance per pick before spending.

  • The numbers are simply wrong and nobody trusts them

    Do not change tier yet. Start cycle counting and scanning

    No tier fixes an inaccurate count, because every tier is fed by the same events. An operation that cannot count reliably will make a more expensive system produce the same wrong answer faster.

Diagnose from the symptom rather than from the growth plan. A tier chosen for where you expect to be in three years is a tier nobody is trained to run today.

What each tier demands from the operation, not from the budgetA horizontal bar chart of operational demand by tier. A spreadsheet is lowest at 12. An inventory module in an existing system is 34. A dedicated inventory platform is 68. A full warehouse management system is 94. Scanning discipline, shown separately as a prerequisite, is 76. 0 25 50 75 100relative operational demand Spreadsheet 12 one person, one place Module in existingsystem 34 best first move Dedicated platform 68 needs conventions Scanning discipline 76 prerequisite, not a tier Full WMS 94 a different problem This is not a product. Operations that skip it get worsenumbers from a better system.
An illustrative weighting of the operational demands we see decide whether an implementation succeeds. The pattern is the point: the discipline required rises faster than the capability gained, which is why skipping a tier fails more often than staying one behind.

The features that earn their cost, and the ones that demonstrate well

Feature lists in this category are long and largely undifferentiated, which pushes buyers toward whatever demonstrated most impressively. That is close to the worst available selection criterion, because the features that determine whether the system works are the ones that are impossible to demonstrate in forty minutes: what happens when two people scan the same unit, whether an adjustment records who made it and why, whether a failed integration retries or silently drops.

The features that consistently earn their cost share a property. Each one either makes the ledger more likely to be true, or makes the promise calculation more accurate. Scanning at every touch point makes the ledger true. Cycle counting with variance tracking measures whether it is true. Location-level quantities make it true at the granularity people actually work at. Allocation and available to promise make the promise accurate. Reorder policy per item turns the true ledger into money saved.

The features that demonstrate well and then go unused also share a property: they compute something impressive from data the operation does not yet have. Demand forecasting on eleven weeks of history. Supplier scorecards when purchase orders are still raised by email. Multi-echelon optimization for two locations. None of these are bad features. They are features for a later stage, and buying the tier that includes them does not accelerate arrival at that stage.

There is one class of feature worth arguing for even though it never demonstrates well, and that is the audit trail. Every quantity change recorded with who, when, why and which document, immutable, queryable. It is invisible until the first time a number is disputed, at which point it is the difference between an answer in two minutes and a week of guessing. It is also, not incidentally, what makes an inventory system defensible in a regulated context.

  • Scan at every touch, not just at receiving. Manual entry has an error rate per keystroke, and every report inherits it. Receiving, put-away, pick, pack, transfer and count should each be a scan. This is the highest-return single change most operations can make.
  • Location-level quantities, with a naming convention. Knowing you hold forty units is not useful if nobody can say where. Aisle, bay, level, position, written down as a rule before the first label is printed, because renaming locations later invalidates every historical movement record.
  • Cycle counting built in, with variance reporting. A schedule that counts high-value and fast-moving items often and everything else eventually, recording the variance each time. The variance trend is your accuracy metric, and without it accuracy is an opinion.
  • An immutable adjustment trail. Who changed the quantity, when, by how much, why, and against which document. No overwrites. This is the feature that never demonstrates well and settles every dispute.
  • Reorder policy per item, not per catalog. A single blanket reorder level across thousands of items guarantees you hold too much of the slow movers and run out of the fast ones. Per-item demand over lead time plus safety stock, reviewed quarterly.
  • Integration as a contract, not a nightly file. The channel, the accounting system and the warehouse need an interface with defined semantics, retries and a visible failure state. A scheduled export that silently fails is how divergence begins.

How these systems are evaluated well and badly

Do this

  • Run your own worst week through the trialTake a real historical week with the returns, the partial deliveries, the damaged units and the emergency transfer, and enter all of it. Fit shows up in the awkward cases, never in the clean ones.
  • Test the concurrency case deliberatelyTwo users move or allocate the same unit at the same moment. A system without proper locking will let both succeed, and you want to discover that before go-live rather than during a sale.
  • Ask what the integration does when it failsRetry with backoff, a visible failure queue and an alert, or a silent gap. Ask to be shown the failure state rather than told about it.
  • Insist on the audit trail in the demonstrationMake an adjustment, then find it: who, when, why, which document. If that takes the demonstrator more than a minute, it will not be usable in a dispute.

Not this

  • Scoring the feature matrixNearly every product in a tier ticks nearly every box. The matrix separates products on wording rather than behavior, and it rewards whoever writes the longest list.
  • Buying for the forecast moduleForecasting quality depends on your demand history and your data hygiene far more than on the algorithm. Buy it when the ledger is trustworthy and the history is long enough to mean something.
  • Choosing the tier you expect to need in three yearsThe operation has to run the system now, with the staff and the discipline it has now. Growth is a reason to require clean export paths, not a reason to buy two tiers up.
  • Treating implementation as configurationLocation naming, item classification, counting schedule and integration semantics are decisions about your operation. No vendor can make them for you, and skipping them is the usual reason a good product produces bad numbers.

The left column is a set of tests you can run in a trial. The right column is what most evaluations actually consist of, and it selects for demonstration quality rather than operational fit.

Inventory accuracy, measured honestly

Ask an operation what its inventory accuracy is and the answer is usually a number somebody remembers from an annual count, or a shrug. Both are the same answer, which is that it is not being measured. Accuracy is the percentage of counted locations whose recorded quantity matched the physical quantity, measured continuously against a counting schedule. Without that schedule there is no measurement, and every figure the system produces has an unknown error bar.

The measurement itself has a subtlety worth getting right. Counting by units held gives a flattering number, because the large quantities of cheap fast-moving items dominate the total and those are usually the accurate ones. Counting by location, where each location either matched or did not, is harsher and far more useful, because it reflects how often somebody looking for something will find the record wrong. Report both if you like, but manage the second one.

Cycle counting is the mechanism, and its design is a straightforward classification exercise. The standard method is ABC classification, which sorts every SKU into three classes by the annual value that moves through it rather than by the value sitting on the shelf. That distinction is the whole point: a cheap item that turns over constantly does more damage when its record is wrong than an expensive item that sits still, because the wrong record on the fast item is consulted a hundred times a month. Class A is the small group of SKUs responsible for most of the value moved, class B the moderate movers, class C the long tail. Count A weekly, B monthly, C annually in rotation, and you count the same total number of lines as an annual wall-to-wall while getting a continuous measurement instead of one number a year.

Two refinements are worth the effort once ABC is running. The first is to reclassify on a schedule, quarterly is usually enough, because seasonality and product lifecycle move SKUs between classes and a classification frozen at go-live is counting last year’s business. The second is to override the classification upward for any SKU where being wrong is expensive for a reason other than value: a controlled substance, a lot-tracked component, an item with a short expiry, a part that halts a production line. Those belong in the weekly cycle regardless of what the value calculation says about them.

Adjust the frequency of any item whose variance is repeatedly high, because repeated variance is a process defect with a cause, not bad luck.

One more discipline separates operations whose numbers can be trusted: every variance gets a reason code, and the reason codes get reviewed. Miscount, mis-pick, damage not recorded, receiving error, theft, unit of measure confusion. A variance without a reason is a number changed. A variance with a reason, aggregated over a quarter, is a list of process problems in priority order, which is the point of counting at all.

An ABC cycle counting schedule that produces a measurement rather than a chore

ClassTypical share of itemsTypical share of value movedCount frequencyWhat a high variance here means
A: fast or high valueAbout one item in fiveThe large majorityWeeklyImmediate process investigation. This class drives both service level and write-offs.
B: moderate movementAbout one item in threeA modest shareMonthlyUsually a receiving or put-away problem, since these items are handled in bulk less often.
C: slow moving tailNearly half the catalogA small shareAnnually, in rotationOften obsolescence rather than error. A tail item with drift is a candidate for write-off, not for more counting.
Any class, repeat varianceWhatever recursNot applicableAdd to weekly until stableA specific process defect exists. Treat the recurrence as the finding, not the individual count.

Classification is by annual value moved per SKU, not by value held. Frequencies are a common starting point rather than a rule; the trigger for changing them is the variance rate in the class, which is exactly the point of recording it. Reclassify quarterly, and override upward for any SKU where being wrong is costly for a reason the value calculation cannot see.

What has to be true before an accuracy figure means anything

  • A written location naming conventionEvery storage position has one unambiguous identifier that is used consistently in labels, in the system and in speech. Two names for one place produces variances that are records of nothing.
  • Counting done blindThe counter does not see the expected quantity. A visible expected number turns a count into a confirmation, which is why blind counting is the only kind worth scheduling.
  • In-transit and allocated stock handled explicitlyUnits that left one location and have not arrived at another must be visible as in transit, or every count in both places records a false variance.
  • A reason code on every adjustmentRecorded at the moment of the adjustment by the person making it, from a short fixed list. A free text field will be empty within a month.
  • Variance measured by location, not only by unitsThe location-level figure reflects how often a person looking for stock finds the record wrong, which is the experience that matters operationally.
  • A named owner for the counting scheduleCounting is the first thing dropped in a busy week. Without somebody accountable for the schedule being met, the measurement quietly stops and nobody notices for a quarter.

Each item is a precondition rather than an improvement. An accuracy percentage produced without these is a number, not a measurement.

Where inventory variance actually comes fromA donut chart of variance reason codes. Mis-picking and mis-shipping is 28 percent. Receiving errors are 22 percent. Unrecorded damage is 17 percent. Unit of measure confusion is 14 percent. Counting error is 11 percent. Theft and unexplained loss is 8 percent.Variance byrecordedreason Mis-pick or mis-ship 28% the largest single source Receiving error 22% often a supplier issue Unrecorded damage 17% process, not loss Unit of measure confusion 14% trivially preventable Counting error 11% falls with blind counts Theft or unexplained 8% usually overestimated
An explicitly illustrative distribution of reason codes, not measured data, shown because the shape is what matters: most variance is process error at handling points, and theft is usually a smaller share than people assume before they start recording reasons.

Reorder policy, which is arithmetic rather than intelligence

The savings in inventory software are mostly here, and they are unglamorous. An operation that holds too much has money sitting on shelves and a write-off risk; an operation that holds too little loses sales and pays for expedited freight. The gap between those is managed by two numbers per item, the reorder point and the order quantity, and in most operations we look at neither has ever been written down deliberately.

The reorder point is demand over the lead time, plus safety stock. If an item sells twenty units a week and the supplier takes three weeks, sixty units will be consumed while a replenishment is in flight, so an order raised at sixty arrives exactly as the shelf empties, assuming nothing varies. Something always varies, which is what safety stock is for: a buffer sized to the variability of demand and of the lead time, larger for items where either is erratic, and deliberately small for items where a stockout is cheap.

The order quantity trades ordering cost against holding cost. Ordering weekly means low stock and frequent handling, ordering quarterly means the opposite. Where the holding cost is real, meaning the item is bulky, perishable or capital intensive, the economic order quantity is worth computing. Where it is not, supplier minimums and delivery schedules dominate and the arithmetic is a formality.

This is also where the case for automation is strongest and most often overstated. A system that computes reorder points from actual demand and lead time history, and flags the exceptions, replaces a task humans do badly and inconsistently. A system that reorders automatically without a human confirming exceptions will, the first time a data error inflates demand, order six months of a slow-moving item. Compute automatically, review the exceptions, and keep the confirmation.

Setting a reorder policy for one item, with the arithmetic shown

  1. Measure demand over the lead timeStep 1

    The item sells about 20 units a week. The supplier quotes 3 weeks, and the last ten orders actually took between 3 and 5 weeks. Use the real distribution, not the quote: expected demand over lead time is 20 times 3, which is 60 units.

  2. Size safety stock against the variability that actually occurredStep 2

    The worst observed case was 5 weeks at 26 units a week, which is 130 units consumed before arrival. Covering most of that gap rather than all of it, safety stock of 40 units is a deliberate choice with a stated risk.

  3. Set the reorder pointStep 3

    Demand over lead time plus safety stock: 60 plus 40 is 100 units. When available to promise falls to 100, a replenishment is raised. Note that this uses available to promise, not on hand, or allocated stock will be counted twice.

  4. Choose the order quantity separatelyStep 4

    Ordering cost is a fixed administrative amount per purchase order; holding cost is capital plus space plus obsolescence risk. Where holding cost is high, order little and often. Where the supplier imposes a minimum, that minimum is the answer.

  5. Review on a schedule, and on exceptionStep 5

    Recompute quarterly from recent demand, and immediately when a supplier lead time changes or an item is reclassified. A reorder point set once and left is the most common form of this being done wrong.

Illustrative numbers, chosen to be reproducible rather than typical. Substitute your own and the method is unchanged. The point of showing the arithmetic is that this is routinely presented as a machine learning problem when it is a spreadsheet with two variables.

What changes when reorder policy is set per itemA six row before and after comparison. Total stock held goes from high across the catalog to lower and redistributed. Stockouts on fast movers go from frequent to rare. Slow-moving tail goes from overstocked to trimmed. Purchase orders go from bulk and irregular to scheduled. Expedited freight goes from routine to exceptional. Write-offs go from discovered annually to visible monthly. One blanket level Per-item policy Total stock held High across the wholecatalog Lower and redistributed Stockouts on fast movers Frequent, and expensive Rare, and predicted The slow-moving tail Overstocked and invisible Trimmed deliberately Purchase orders Bulk, irregular, reactive Scheduled from policy Expedited freight A routine cost line An exception with a cause Write-offs Discovered at annual count Visible monthly
The same catalog managed two ways. Not a promise of these figures, which depend entirely on your turn rates and lead time variability, but the direction is consistent: per-item policy holds less total stock while running out less often, because the stock moves to the items that need it.

The integrations that decide whether the numbers can be trusted

An inventory system is never alone. It sits between a sales channel that needs to know what can be sold, an accounting system that needs a valuation, a purchasing process that raises replenishments, and a physical operation that moves things. Each connection is a place where the truth can diverge, and the quality of these connections determines whether the system is an asset or a second opinion.

The governing rule is the one from the first section, applied at every boundary: exactly one system owns each quantity, and the others read it. In practice that means deciding, explicitly and in writing, who owns on hand, who owns allocation, and who owns the item master. Those three can legitimately live in different systems, but each must live in exactly one, and the decision has to be made deliberately rather than discovered after two systems have been writing to the same field for a year.

The second rule concerns failure. Integrations fail, and the failure mode has to be visible and safe. A channel that cannot reach the inventory service should stop promising stock rather than fall back to a cached number of unknown age. An accounting export that fails should raise an alert and queue, not skip a day and carry on. The difference between a system people trust and one they work around is almost entirely how it behaves when a dependency is unavailable.

The third consideration is the physical layer, because a scan is an integration too. Handheld scanners, mobile devices, fixed readers, and increasingly sensor data feed the same ledger, and they do it from places with poor connectivity. Any of them must be able to record a movement offline and reconcile it later without producing a duplicate, which is a design requirement rather than a device feature. The same offline-first discipline we apply to field and fleet systems applies here, for the same reason: the work does not stop when the network does.

The integration decisions to make in writing, before anyone builds

Quantity authorship
Which single system writes on hand. Every other system reads. If the storefront must cache, define the expiry and reserve against the owner at checkout so a stale read loses a sale rather than overselling.
Allocation ownership
Which system decides that stock is committed to an order. Commonly the order management system rather than the inventory system, which is fine, provided the inventory system is told and available to promise reflects it.
Item master ownership
Where an item is created and its attributes maintained. Two systems creating items produces duplicate records with divergent units of measure, which corrupts every quantity computed across them.
Unit of measure discipline
Whether a quantity means eaches, cases or pallets, declared per item and enforced at every boundary. Unit confusion is a leading cause of large variances and is trivially preventable.
Valuation method and timing
Which cost basis the accounting system uses and at what moment cost is captured. Inventory and accounting disagreeing on this produces a reconciliation gap that looks like a stock error and is not.
Failure behavior
What each consumer does when the inventory service is unreachable: stop promising, serve a cached value with a stated maximum age, or queue and retry. Chosen per consumer, written down, and tested deliberately.
Offline movement reconciliation
How a movement recorded on a device without connectivity is reconciled later without duplicating. Requires an idempotency key generated on the device, which is a design decision rather than a setting.

Each of these has a default that happens if it is not decided, and the default is usually the expensive option. Writing them down takes an afternoon and prevents the divergence that takes a quarter to unpick.

When to build, when to buy, and what to build if you build

The honest default in this category is buy. The receiving desk, the count, the transfer, the purchase order and the valuation are the same in almost every operation, they are thoroughly solved, and building them again is expenditure without differentiation. We say this as a company that builds software for a living, because a client who spends a year rebuilding a purchase order screen has spent a year not building the thing that makes their operation unusual.

The argument for building applies to the part of your operation that genuinely differs, and that part is usually narrow and specific. Allocation rules that reflect a commercial model no product anticipated. Kitting or light assembly where the bill of materials changes per order. Regulatory lot traceability with a chain of custody that has to survive an audit in your jurisdiction. A pricing or availability promise tied to something idiosyncratic about how you sell. These are real, they are worth building, and they are a fraction of an inventory system rather than the whole of one.

The pattern that works is therefore neither build nor buy but both, with a deliberate seam. Buy the ledger, the counting, the purchasing and the valuation. Build the layer that expresses your commercial model, reading quantities from the bought system and writing back through its interface rather than into its database. The seam has to be a supported interface, because a custom layer coupled to another product's internal tables is a rewrite scheduled for that product's next major version.

Two practical tests before committing to a build of any size. First, can you describe the behavior you need in a way a product genuinely cannot support, rather than one it supports awkwardly? Awkward is usually cheaper than custom. Second, will you still want to maintain it in five years, including its integrations, when the person who specified it has moved on? A custom inventory component is a long-lived commitment, and the maintenance is the larger half of the cost. If those questions are hard, our guide to evaluating a software partner covers how to test whether a supplier will still be a good answer at that horizon.

The projects that go well are the ones where the client had already decided which part of their operation was ordinary. Ordinary parts get bought, unusual parts get built, and the seam between them is a documented interface rather than a shared database table.

AgileTech delivery teamRetail and distribution systems

A sequence that gets to trustworthy numbers before it gets to clever ones

  1. Ownership and namingWeeks 1 to 3

    Decide quantity, allocation and item master ownership in writing. Define the location naming convention and the unit of measure per item class.

    Done when A written model with exactly one owner per quantity, and a location scheme nobody needs to interpret.

  2. Ledger and scanningWeeks 3 to 10

    Movements recorded as events at every touch point, scanned rather than typed, with an immutable adjustment trail and reason codes.

    Done when Every quantity change in a real week is traceable to a person, a moment and a document.

  3. Counting and accuracyWeeks 8 to 14

    Classification by value moved, a blind cycle counting schedule, variance recorded by location with reason codes, and a named owner for the schedule.

    Done when A measured accuracy figure with a trend, and a ranked list of process defects from the reason codes.

  4. Promise and channelsWeeks 12 to 18

    Available to promise computed correctly, exposed to every channel through one interface, with defined behavior when the service is unreachable.

    Done when No channel can oversell, and each channel's failure behavior has been tested by taking the service down deliberately.

  5. Policy and then analyticsWeeks 16 onward

    Per-item reorder points and order quantities computed from real history with human exception review. Forecasting and supplier reporting only once the ledger is trusted.

    Done when Purchasing decisions made from computed policy rather than habit, on data with a known accuracy figure behind it.

Spans are illustrative and scale with catalog size and location count. The ordering is the transferable part: each phase produces the thing the next one depends on, and the analytics everyone wants are deliberately last because they are worthless earlier.

Deciding what to build, from what your operation actually does differentlyA decision tree from one question: which part of your stock handling would a product genuinely be unable to express. If the answer is nothing specific, buy a product and fund the rollout, meaning naming conventions, scanning, a counting schedule and integration. If the answer is one narrow rule, such as allocation of scarce stock or lot and chain of custody, buy the ledger and build only that layer, reading quantities through the product interface rather than its tables. If the answer is most of it, write the process down before building, because an operation unlike every product usually has an unwritten process rather than a unique one. Which part of your stock handling would a productgenuinely be unable to express? Nothing specific Buy, and fund the rollout Naming, scanning, a countingschedule, integration. A buildstarves exactly this. One narrow rule Buy the ledger, build thatlayer Allocation, or lot andcustody. Read quantitiesthrough the API, never thetables. Most of it Write the process downfirst That usually means anunwritten process, not aunique one. Write it, thenre-ask.
The question is deliberately narrow. Almost every operation answers it with a specific, small part of the whole, and the correct project is that part plus a documented seam, not a replacement for the ordinary machinery around it. Two answers dominate in practice. The first is allocation, where your commercial model, not a first-come queue, decides who receives scarce stock. The second is traceability, where lot and chain-of-custody records are audited against a jurisdiction rather than a preference. Both are extensions to a bought ledger. Neither is a reason to build one.

Frequently asked questions

What is inventory management software, in one paragraph?

It is a ledger of how much of each item you hold and where, plus a record of every event that changed a quantity, plus a calculation of how much you can promise to somebody else. Purchasing suggestions, forecasting and valuation are all computed from those three things. That is why an accurate ledger with no analytics is useful and impressive analytics over an inaccurate ledger is worse than useless: people act on it.

Do we need a warehouse management system or an inventory system?

They solve different problems. An inventory system is about knowing what you have and what you can promise. A warehouse management system is about the efficiency of movement inside a facility: directed put-away, zone and wave picking, labor tracking, dock scheduling. If your problem is that the numbers are wrong, a WMS will not fix it, because it is fed by the same events. If your problem is that picking is slow in a large building, that is what a WMS is for.

What is ABC classification and do we need it?

ABC classification sorts your SKUs into three classes by the annual value that moves through each one, so that counting effort goes where being wrong is expensive. Class A is the small group of items responsible for most of the movement and gets counted weekly, class B monthly, class C annually in rotation. You need it as soon as you have more items than you can count in a day, because without it you either count everything rarely, which gives you one unreliable number a year, or count everything often, which nobody sustains. The two things people get wrong are ranking by the value held on the shelf instead of the value moved through, and setting the classes once at go-live and never revisiting them.

How accurate should our inventory be?

The more useful answer is that you should know the figure and its trend rather than aim at a benchmark. Measure the percentage of counted locations that matched, by location rather than by units, on a cycle counting schedule, with a reason code on every variance. An operation that knows it is at a given level and improving is in a far better position than one quoting a high number from an annual count nobody analyzed. What matters is that the figure exists, is measured continuously, and is moving in the right direction.

Can we just use spreadsheets?

For a while, legitimately, and longer than software vendors suggest. One location, a small catalog, one person who knows the stock: a spreadsheet is honest and cheap. It fails on three specific triggers, and any one of them is the signal to move. A second location, because transfers between sheets are unreconcilable. A second person entering data concurrently, because the last save wins. And a sales channel that needs to read the quantity automatically, because a human copying numbers into a storefront is a divergence generator.

Should we build our own inventory system?

Usually not the whole thing, and we say that as a company that builds software. Receiving, counting, transfers, purchase orders and valuation are the same in almost every operation and are thoroughly solved. What is worth building is the part your operation genuinely does differently, most often allocation rules that reflect an unusual commercial model, kitting where the bill of materials varies per order, or jurisdiction-specific lot traceability. Buy the ledger, build that layer, and keep the seam a supported interface rather than a shared database table.

How long does an implementation take?

The software configuration is rarely the long part. What determines the timeline is the operational work: agreeing a location naming convention, classifying items by value moved, rolling out scanning at every touch point, establishing a counting schedule with a named owner, and defining what each integrated system does when the inventory service is unreachable. Plan for the decisions rather than the installation, and expect the phases to overlap, with trustworthy numbers arriving well before any analytics are worth switching on.

What is the most common reason these projects disappoint?

Two systems both authoring the same quantity. It is almost always the cause when an operation says the new system is producing numbers nobody trusts. The storefront keeps its own stock figure for speed, the back office keeps the real one, a scheduled job reconciles them, and every failure of that job or order placed during the window creates a divergence that cannot be adjudicated because both numbers were written rather than derived. Exactly one owner per quantity, with caching permitted and authorship not, prevents it.

If you are choosing or building a stock system and want the tier question answered against your actual operation rather than a feature matrix, a software development partner in Vietnam with delivery teams who have implemented these systems in retail, distribution and manufacturing can tell you which part is genuinely worth building.

Consult Industry Specialists

Connect with us today to discuss your software development needs and discover how our tailored outsourcing services can propel your business forward.

Start a conversation
AgileTech Vietnam team at the office

Privacy choices

We use one category of strictly necessary first-party storage, which keeps the site working and remembers this choice; it is always active. Every other category is optional and stays off until you switch it on, wherever you are in the world. Two optional categories have something behind them today: Analytics, which is Google Analytics, and External content, which is the Google map of our Hanoi office on the Contact page. Neither runs until you allow it.

Our worldwide approach. We apply one standard to everyone: nothing outside strictly necessary storage runs until you allow it. That meets the EU and UK requirement for prior consent, Vietnam's Law 91/2025/QH15 on personal data protection, the notification and consent requirements of Singapore's PDPA, and US state privacy law. You can withdraw or change your choice at any time, as easily as you gave it, from Privacy choices in the footer.

Where you are connecting from. Our network tells us the country associated with your connection, and we use it to choose which consent policy to apply. We do not use it to work out your address, we do not put it in a cookie, and we never send your IP address to the page. Today every country receives the same strict policy, so it makes no difference to what you see. If your country cannot be determined, or you are using Tor, you get the strict policy too: an unknown location always means the more protective setting, never the weaker one.

If you are in the United States. We do not sell your personal information and we do not share it for cross-context behavioral advertising, so there is nothing to opt out of. We still honor an opt-out preference signal from your browser: if your browser sends Global Privacy Control, the optional categories stay off without you having to do anything.

Full detail, including the name and lifetime of the one cookie we set, is in the Cookie Policy.