Guide / for builders

VB.NET inventory systems — the honest assessment

VB.NET can absolutely run an inventory record — the language was never the risk. The risks are the schema you choose, the concurrency you skip, and the tail you inherit.

The key facts

  • The language is the least important decision — VB.NET on .NET with a relational database is a perfectly capable stack for an inventory record.
  • The architecture that matters: append-only movements, derived quantities, transactional writes, an audit row per change — identical in every language (the class model).
  • The real risks: the maintenance tail, the bus factor of a one-developer system, and the retrofit of the parts tutorials omit.
  • BSimple is commercial and not VB.NET-based open source — stated plainly; this page maps the build route honestly.
  • Where it fits: this page is one branch of the inventory management guide.
Diagram — index of this pageThe ground this page covers
  1. 01The key facts
  2. 02The stack, honestly assessed
  3. 03The architecture that decides success
  4. 04Build vs buy, with our stake visible

The stack, honestly assessed

VB.NET in 2026 is a supported, first-class .NET language — the stereotype of it as a dead end is dated. For an internal inventory system it is a reasonable choice: Visual Studio's tooling is excellent, WinForms/WPF builds screens fast, and any relational database (SQL Server, PostgreSQL) under ADO.NET or an ORM handles the transactional work. The honest caveats are organisational, not technical: VB.NET talent is thinner than C# (consider C# for the same design — the syntax differs, the architecture does not), and desktop-first thinking tends to reappear as reach problems — the browser-vs-desktop question is where that bites.

If the choice is driven by an existing VB.NET codebase or developer, build with confidence on the architecture below; if it is greenfield, weigh the talent pool before the syntax.

Genuine BSimple screenThe BSimple reorder view showing what to buy before stock runs out.
The BSimple reorder view showing what to buy before stock runs out.

The architecture that decides success

Movements, not mutable quantities. An append-only StockMovement table (direction, quantity, product, location, actor, reason); on-hand derived by query. This buys the audit trail, concurrency safety and traceability that every later requirement assumes — the VBA comparison shows the same lesson at smaller scale.

Transactional writes. Two users selling the last unit must not both succeed — wrap the check-and-insert in a transaction and fail loudly. In .NET terms: a serializable transaction or optimistic concurrency on the movement insert.

Deliberate accounting boundary. Invoices are produced from checked orders and handed to the accounting system once, reviewed — never a second ledger growing quietly beside the first.

The tail. Authentication and roles, backup and restore, import from the spreadsheet the business runs today, reconciliation reports, and a deployment story that survives the developer's holidays. Tutorials end where this list begins; the list is the project.

DiagramDiagram: spreadsheet data imported into live stock records.
Diagram: spreadsheet data imported into live stock records.

Build vs buy, with our stake visible

We build BSimple, so weigh that: it is commercial software, not VB.NET and not open source — this page maps the build route because it is a legitimate one. Build when the requirement is genuinely internal, learning counts, and someone will own the tail for years. Buy when the requirement is a dependable multi-user record maintained by someone else: BSimple runs the sound architecture as a product — live multi-location stock, batches, purchasing, portals, invoices to Xero or MYOB (US integrations rolling out) — from $180/$250/$399 per month AUD, with the trial pricing the buy side in an afternoon. The project-on-GitHub route is the third path: existing code you maintain.

DiagramOrderPick and packInvoiceXero
Diagram: Order → Pick and pack → Invoice → Xero — how this work moves through BSimple.

Frequently Asked Questions

Is VB.NET a good choice for an inventory system?

Technically yes — supported .NET, fast screen development, solid database access. Choose it for the team you have; choose C# for the talent pool you might need. The architecture matters more than either.

How do we stop two users overselling the same stock?

Transactions around the check-and-record: the movement insert either happens against verified availability or fails loudly. Stored editable quantities cannot give you this — the schema is the concurrency strategy.

What does the maintenance tail include?

Authentication and roles, backups that get tested, spreadsheet import, reconciliation and audit reports, deployment and updates — everything tutorials skip. Estimate the tail honestly; it is usually the majority of the project.

Can we migrate a VB.NET system to something else later?

Yes, and the effort tracks the schema: a movements-based design exports cleanly to any system; a mutable-quantity design needs a reconciliation first. Build for the migration you may want.

What would BSimple replace in this plan?

The entire tail plus the core: live multi-location stock, batches, purchasing, portals, accounting handoff — maintained by the vendor. The trial is how you price that against your VB.NET estimate on real products.

In practiceBusiness processes built into the system, not remembered by staff.
Business processes built into the system, not remembered by staff.

BSimple

Get started with BSimple