perfectdesign.

Business systems

Inventory management system development

Stock is a truth problem before it is a software problem. The question an inventory system has to answer is not how many you own, it is which number everybody agrees to act on.

In short

An inventory system is a record of stock events with an agreed rule for reading it. It holds what arrived, what moved, what is reserved and what was counted, then produces the single figure your storefront, your warehouse and your finance team all work from. The build is decided by the awkward cases rather than the ordinary ones: a short delivery, two orders for the last unit, a return nobody has inspected yet. Write those rules down and the software becomes the straightforward part.

Written for an operations lead or founder replacing manual stock tracking with a controlled system · 7 min read

What an inventory system is actually for

Most businesses do not begin with an inventory system. They begin with a spreadsheet, a stock room somebody knows by heart, and the habit of checking before promising anything. That holds until the spreadsheet and the shelf disagree, and from then on nobody is certain which version of the truth to act on.

An inventory system exists to settle that argument. It holds items, locations, quantities and the events that changed them, then applies an agreed rule for what may be promised to a customer. Reorder alerts, valuation reports and stock dashboards are all views of that record. When the record is wrong the views are confidently wrong, which does more damage than a spreadsheet nobody trusted in the first place.

This page covers the stock side: items, locations, movements, reservations, adjustments, permissions, counting and reporting. The storefront, the basket and the money belong to e-commerce website development and payment and checkout. Those systems consume stock and ask questions of it. Neither should be the place stock is defined.

It is worth saying early that a packaged product is often the cheaper answer. If you sell a few hundred lines from one location under ordinary rules, an off-the-shelf tool will do more on its first day than a custom build can justify, and we will tell you so. A custom system earns its place when the rules are genuinely yours: allocation by customer, stock committed against contracts, assembled or kitted goods, or a process no product supports without being bent out of shape.

Who the Malaysian economy actually is. Nearly half the country works in a small business. Software priced and shaped for a multinational is not software for this market. A full text version follows.

Who the Malaysian economy actually is

Published statistic. Nearly half the country works in a small business. Software priced and shaped for a multinational is not software for this market.

Source: Department of Statistics Malaysia: MSME Performance 2025. Reviewed .

Also: DOSM: Economic Census 2023, profile of MSMEs.

Read the graphic as text
  • Of national GDP: 39.7%. RM689.8 billion of value added by micro, small and medium enterprises in 2025, growing faster than the economy as a whole
  • Of all employment: 48.7%. 8.09 million people work in one
  • Establishments: 1.07m. Counted in the 2023 Economic Census, three quarters of them micro-sized
Download this infographic (SVG)

One stock record, or none at all

Before anything is built, decide which system is allowed to be right. Stock tends to exist in several places at once: the online shop, the point of sale, the accounting package, a warehouse sheet and somebody's memory. If two of them can both change a number, they will drift apart, and reconciling them by hand becomes a permanent job nobody was hired to do.

The answer is one authoritative record and a defined direction of travel for everything else. Other systems may read from it, and they may raise events that change it, but only one of them holds the number. That single decision removes more future pain than any feature on the requirements list.

Physical, reserved and available are three different numbers

A stock record carrying one quantity will mislead you. Useful systems distinguish at least three figures, and they state in writing how the third is calculated.

  • Physical stock is what is on the shelf, by location. It changes only when goods actually move, are counted, or are written off.
  • Reserved stock is physical stock already spoken for: a paid order, a confirmed transfer, a quotation you honour for a fixed period. It is still in the building and it is not yours to sell twice.
  • Available stock is what you are prepared to promise, and it is a policy rather than a fact. Usually physical minus reserved, sometimes minus a safety buffer, sometimes plus goods on a purchase order with a delivery date attached.
  • Incoming and quarantined stock sit outside the available figure until somebody decides otherwise. A returned item nobody has inspected is not sellable, whatever the courier tracking says.

Two rules have to be agreed with you rather than assumed: whether stock may ever go negative, and what happens when two orders arrive for the last unit within the same second. Both have reasonable answers. Neither has a default we should be choosing on your behalf.

One item, four stock numbers. Available is calculated rather than observed, so the rule behind it has to be written down. A full text version follows.

One item, four stock numbers

Editorial framework. Available is calculated rather than observed, so the rule behind it has to be written down.

Basis: IBM: What is inventory management?. Reviewed .

Read the graphic as text
  • Physical. What is on the shelf, counted by location
  • Reserved. Spoken for already, not yours to sell twice
  • Available. What you will promise, which is a policy
  • Quarantined. Returns and damage, outside sellable stock
Download this infographic (SVG)

How stock actually moves

The clearest way to scope an inventory system is to walk one item through its life and write down what the system does at each step, who did it, and what happens when the step goes wrong. The table below does that for a fictional single-warehouse retailer. The roles, policies and responses are assumptions used for illustration, and the last column describes evidence to collect at acceptance rather than tests anybody has passed.

Worked stock ledger for a fictional single-warehouse retailer
Workflow stepAssumed actorProposed system responseExceptionAcceptance evidence to collect
Receive a deliveryWarehouse clerkRecord the item, the location and the counted quantity against the purchase orderA short or damaged delivery stays separately recorded rather than being rounded quietly to the expected figureReceipt records, discrepancy notes and the location each unit landed in
Reserve an orderOrder serviceReserve the agreed quantity without assuming the goods have shippedCompeting orders exceeding available stock need an agreed rejection, backorder or first-paid ruleConcurrent-order tests and a reservation reconciliation against the ledger
Inspect a returnWarehouse reviewerDecide restock or quarantine before the available figure changesA damaged return stays outside sellable stock until somebody accepts the write-offInspection decisions and a stock-ledger reconciliation for each outcome

Transfers, picks, dispatches and quarantine decisions have the same shape: each is a state transition with an actor, a time and a reason. Modelling them as events rather than as edits to a number is what makes the history useful later, because every figure can then be explained by the entries that produced it.

Where stock has to reach an accounting package, a point of sale or a storefront, the questions are always the same four: which system owns the fact, what triggers a change, which direction the data moves, and who investigates when the two disagree. CRM and integrations covers how we approach those connections, including what has to be confirmed before anyone promises one exists.

What Malaysian trade moves in a month. RM170.5 billion moved through wholesale and retail in a single month, and wholesale and retail trade is 38.5% of the value added of the whole services sector. Stock accuracy is not an administrative detail in that market. A full text version follows.

What Malaysian trade moves in a month

Published statistic. RM170.5 billion moved through wholesale and retail in a single month, and wholesale and retail trade is 38.5% of the value added of the whole services sector. Stock accuracy is not an administrative detail in that market.

Source: Department of Statistics Malaysia: Performance of Wholesale and Retail Trade, July 2026. Reviewed .

Read the graphic as text
  • Wholesale: RM78.4b. Up 11.7% on a year
  • Retail: RM71.3b. Up 6.4%
  • Motor vehicles: RM20.8b. Up 7.9%

Chart scale: Sales value by sub-sector, July 2026, RM billion.

Download this infographic (SVG)

Who is allowed to change a number

Stock permissions follow your business process rather than a copied role list. The useful exercise is naming who, in your operation, may do each of these things, and who reviews them afterwards.

  • Receive goods and record a discrepancy against a delivery
  • Reserve, release or override a reservation
  • Move stock between locations and confirm it arrived
  • Count a location and submit the result
  • Approve an adjustment, particularly one carrying a value
  • Decide whether a damaged or returned item ever becomes sellable again

The pattern that survives contact with a real warehouse is that ordinary movement stays fast and unremarkable, while anything that changes value or overrides a rule needs a second person and a stated reason. Every material change records who made it, when, what the figures were before and after, and why. That history is what turns an argument about stock into a five-minute look at the ledger.

The e-Invoice mandate is already fully live. Every phase has passed. If a system issues invoices, e-Invoice is not an upcoming project, it is a current obligation with a turnover threshold attached. A full text version follows.

The e-Invoice mandate is already fully live

Published statistic. Every phase has passed. If a system issues invoices, e-Invoice is not an upcoming project, it is a current obligation with a turnover threshold attached.

Source: Inland Revenue Board of Malaysia: e-Invoice implementation timeline. Reviewed .

Read the graphic as text
  • Above RM100 million. Mandatory since 1 August 2024
  • RM25 million to RM100 million. Mandatory since 1 January 2025
  • RM5 million to RM25 million. Mandatory since 1 July 2025
  • Up to RM5 million. Mandatory since 1 January 2026
  • Under RM3 million. Exempt, unless the company belongs to a larger group
Download this infographic (SVG)

Counting, discrepancies and the recheck nobody builds

A count is a workflow, not a text box. The system holds a recorded quantity, somebody counts the shelf, the difference is calculated, a reviewer accepts or rejects it, and the accepted adjustment is written to the ledger as its own entry with a reason attached. Rolling counts by location or by value band are usually kinder to an operation than closing the warehouse once a year, and they surface problems while the cause is recent enough to find.

Reporting then follows the same record: movement history by item or location, adjustments by reviewer and reason, ageing stock, items that repeatedly disagree with their count, and open exceptions nobody has closed. A report earns its place at the point where somebody acts on it, which is why we build these views into the operation rather than as decoration. Admin dashboards covers the staff-side surface in more detail.

A stock count is a workflow, not a text box. Skip the recheck and the adjustment creates the error it was meant to fix. A full text version follows.

A stock count is a workflow, not a text box

Editorial framework. Skip the recheck and the adjustment creates the error it was meant to fix.

Basis: Perfect Design: how ecommerce works. Reviewed .

Read the graphic as text
  • Recorded. The quantity the system believes is there
  • Counted. What somebody actually found on the shelf
  • Difference. Calculated, with a reason attached to it
  • Recheck. Did the figure move while you were counting
  • Adjustment. Accepted by a reviewer, written as an entry
Download this infographic (SVG)

Stock in more than one place

Once stock sits in more than one location, three questions decide the design. Does a customer buy from a specific location or from the total? Is stock in transit between branches owned by the sender, the receiver or neither? And can one branch see another branch's figures, or only that stock exists somewhere in the network?

Selling against a total is convenient and quietly dangerous, because a promise made against a total is fulfilled from a place. If a branch can be the source of an order, it needs a way to accept or decline that job. Multi-location scope also decides how counting works: counts are per location and the totals are derived.

What to bring to a scoping conversation

Bring your item list and how it varies, your locations, the events that change stock today and who performs them, the availability rule you want to promise against, the exceptions that already cause arguments, the systems that must be connected and who controls their access, and the tests you would want to see before accepting the work. That is enough to size a build honestly. If you would rather start from the current process, talk it through with us and we will say where a product would serve you better than a build.

What you get

What is actually delivered

01

Stock ledger and availability rule

One authoritative record of items, locations and quantities, with physical, reserved and available defined in writing and agreed with you.

02

Movement workflows

Receiving, reservations, transfers, picking, dispatch, returns and quarantine, each recorded as an event with an actor, a time and a reason.

03

Counting and adjustment workflow

Rolling or full counts, a calculated difference, a review step, a recheck before anything is applied, and an adjustment history that stays.

04

Roles, permissions and approvals

Who may receive, reserve, transfer, count, adjust and write off, with value-bearing changes routed to a second person.

05

Exception handling

Short deliveries, competing orders, uninspected returns and unexplained differences given their own states and owners instead of a note in a comment field.

06

Operations views

Stock by location, movement history, exception queues and reorder signals, built for the person who has to act on them. See admin dashboards.

07

Connections to the systems that ask about stock

Storefront, point-of-sale or accounting connections where access, data quality and terms are confirmed, each with a named owner for reconciliation.

08

Handover

Code, database and accounts in your name, with the availability and adjustment rules documented so a future team can work out why a number is what it is.

How it runs

Agree the rules, then build the ledger

Inventory projects are decided by policy rather than by screens, so the rules go in writing before anything is built and are tested against the cases that already cause arguments.

  1. 01

    Map the current process

    What you stock, where it sits, what moves it, who touches it, and which disagreements happen often enough to count as normal.

  2. 02

    Write the availability policy

    Physical, reserved and available defined explicitly, along with negative stock, competing orders, backorders and the inspection a return has to pass.

  3. 03

    Prototype the awkward cases

    A working version on a live link where a short delivery, a double order and an uninspected return can be walked through before the build is committed.

  4. 04

    Build the ledger and the workflows

    The approved scope, with every change recorded as a traceable event and the staff views built around the jobs done daily.

  5. 05

    Test the exceptions and reconcile

    Concurrency, counts with movement underneath them and connected-system disagreements tested deliberately, against acceptance evidence agreed beforehand.

  6. 06

    Hand over and support

    Accounts and code to you, the rules documented, and ongoing care if you would rather we kept running it.

Proof

Work you can click through

Aruva is a Perfect Design concept prototype, not client work. It appears here because its Seller Centre, live availability on product pages, fulfilment workspace and returns flow demonstrate the stock mechanics this page describes, running end to end in one build.

Concept prototypes are labelled as prototypes everywhere they appear. They demonstrate what we can build, not work delivered for that named client. More client work is going live and will be added as it does.

How we work

The parts people ask about before they commit

How we build

React first, other languages when a project needs them

We build in React by preference, on both web and mobile, and we work in other languages when a project genuinely calls for it.

Timeline

Project dependent, and often quicker than expected

Timelines are project dependent. A focused build can go live in about a week, while a larger platform takes longer once scope is agreed.

Ongoing care

Quoted with the project, not bolted on

For a more complex website or a system with a real backend, ongoing care starts from RM 250 a month, with the plan confirmed against what was actually launched. Care is quoted with the project, not bolted on afterwards.

Getting hold of us

Normally under one working day

We normally respond to a support request in under one working day, and we work to solve problems as fast as we can. That is how we normally work rather than a contractual guarantee, and responding is not the same as resolving. If your operation needs a formal response or resolution commitment, we can write one into your scope.

Ownership

Everything belongs to your business

You own everything we build for you: the code, the content, the domain, the hosting account and every third-party account opened for the project. There is no lock-in. If you move to another provider, everything goes with you and we help with the handover.

  • Source code, handed over in your own repository
  • Domain and DNS, registered to your business
  • Hosting and every service account, in your name
  • Analytics, search and ad accounts, with us as a manager you can remove
  • All content, media and data in the system

Questions

Asked about inventory systems

Straight answers to what people ask before they commit. Anything else, message us.

What does an inventory system cost?

Website packages are published openly on the pricing page, but an inventory system is quoted against its scope rather than sold as a package. The figure moves with how many locations you hold stock in, how complicated the availability rule is, how much of the work is the warehouse side, and how many other systems have to agree with it. A scoped conversation is the fastest route to a real number.

Should we build or buy?

Buy, if a product already handles your process. Single location, ordinary purchase and sale, no unusual allocation rules: an off-the-shelf tool will be live sooner and cost less. Building is justified when the rules are specific to your business, when the data has to sit inside a system you already run, or when the workarounds a product forces on you are themselves becoming the problem.

Can it connect to our accounting system or point of sale?

Often, and the answer depends on four things we check before anything enters a scope: whether an interface exists, who can grant access, whether the data is clean enough to rely on, and what the vendor terms allow. Where a connection is not feasible we design around it, with a defined reconciliation step, rather than promise it and discover the limitation during the build.

Can staff scan barcodes?

Yes. Most handheld scanners behave like a keyboard, so a well-built screen accepts a scan anywhere a code is expected without special hardware integration, and a phone camera covers lighter use. The design work is in the screen flow rather than the scanner: receiving, counting and picking should each be completable one-handed, with the next field already focused.

What happens when the system and the shelf disagree?

That is normal and the system should expect it. The shelf wins, but only after a count is reviewed, and the correction is written as an adjustment with a reason and an author rather than by overwriting the number. Repeated differences on the same item or location are the useful signal, because they usually point at a process problem rather than at theft.

Do we have to stop trading to go live?

No, but you do need a clean starting point. The usual approach is a full count at a quiet moment, an opening balance loaded from it, and a short period where the old method runs alongside the new one so differences are visible while they are still small. Cutting over without an opening count means every later discrepancy is arguable.

How long does it take?

Timelines are project dependent. A focused build can go live in about a week, while a larger platform takes longer once scope is agreed. For inventory work the pacing item is normally agreeing the availability and adjustment rules, not writing the screens.

Where to go next

Tell us what you need built

We will show you the closest thing we have already built, then scope the real version against your requirements.