Get in touch
  • OpenCart
  • Import and export
  • v1.0.0

Stock Reserve & Reorder for OpenCart — physical stock, reserved orders and a reorder point

A module for OpenCart 4, 3 and 2.3 that shows three figures for every product and option value: how many units are physically on the shelf, how many are sold but not shipped yet (the reserve, with the orders that hold it) and how many you can still sell. A receipt adds +N on top of the stock instead of overwriting it; write-offs and stock counts are logged and can be cancelled. The reorder point comes from your sales speed, lead time and safety days. Pro adds per-product parameters, a suggested order quantity, documents pasted from a spreadsheet, CSV and a daily e-mail and Telegram digest.

Download Free
Pro · lifetime licence The more sites, the less each one costs
Compatibility
OpenCart 4.0.2 – 4.1.x (tested on 4.1.0.3 and 4.0.2.3, including DB_DRIVER=pdo) · OpenCart 3.0.x (tested on 3.0.5.0) · OpenCart 2.3.0.2 (PHP 7.0) · PHP as your OpenCart version requires (tested on 7.0 and 8.x) · MariaDB 10.11
Version
v1.0.0 (OpenCart 4)
v1.0.0 (OpenCart 3.x)
v1.0.0 (OpenCart 2.3)
Licence
one site, lifetime
Trial
7 days, no card, one per site
Updated
9 October 2026
Or all 173 Pro modules with All Access — 4 990 ₴ / year

What Free has,
and what Pro adds

The free version works with no time limit. Pro adds the rest of the features in the table.

Feature Free Pro
Physical, reserved and available stock for every product and option value that OpenCart subtracts from stock ✔ ✔
The deduction rule mirrors the OpenCart core, including OpenCart 4 variants and the master product of a variant ✔ ✔
Click on the reserve to see the orders that hold it: already deducted by OpenCart or not yet ✔ ✔
Tiles for reserved units, physical units, reorder now and oversold, filters, search by name, model, SKU or #ID, sorting ✔ ✔
Receipt +N on top of the stock (not an overwrite), write-off −N and stock count right from the product row ✔ ✔
A log of every change with the counter before and after, cancel a document ✔ ✔
Your own reserving statuses, including statuses where OpenCart does not deduct stock ✔ ✔
Reorder page: units sold per day, reorder point, how many days the stock lasts ✔ ✔
Physical · reserved · available line under the Quantity field of the product form ✔ ✔
Admin in English, Ukrainian, Russian and German, builds for OpenCart 4.x, 3.x and 2.3 ✔ ✔
Lead time, safety days, minimum stock, pack size and supplier per product or option value — ✔
Suggested order quantity rounded up to the pack size and a receipt from the suggestions — ✔
Multi-line receipts, write-offs and stock counts with a number, supplier and note, pasted from a spreadsheet — ✔
Lines are checked before the document is applied: one invalid line blocks the whole document — ✔
CSV of the stock, the purchase list and every stock change — ✔
Daily reorder digest by e-mail and Telegram, OpenCart 4 cron or a URL for the hosting cron — ✔

What it looks like

Stock page of Stock Reserve & Reorder in OpenCart 4.1: tiles, filters, physical, reserved and available stock
Stock page (OpenCart 4.1, demo products, Pro): OpenCart says 6 iPhones, but 13 are physically on the shelf — 7 units are held by two processing orders, shown by a click on the reserve. The MacBook is oversold: more is reserved than is on the shelf. Every row has a receipt, write-off or stock count right in the table.
Reorder page: units sold per day, lead time, reorder point and suggested quantity
Reorder (Pro): units sold per day, lead time + safety days, reorder point, how long the stock lasts and how many to order — rounded to the pack size (iMac: pack of 4) and the minimum stock (Canon EOS 5D: minimum 50). The Parameters button opens the settings of one product.
New stock document: a receipt, lines pasted from a spreadsheet and a check before applying
New stock document (Pro): type, number, supplier, note and code;quantity lines pasted from a spreadsheet. Check the lines shows the physical stock before and after, Apply the document works only when every line is valid.

Key points

What the customer sees

Customers do not see the module: nothing changes in the storefront or the checkout, the module adds no scripts or requests to shop pages, and OpenCart keeps selling from the same Quantity field.

What the admin gets

A Catalog → Stock & reorder menu item and the Stock, Reorder, Stock documents and Settings pages.

The trial starts when you ask

A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — one site

Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. For studios — keys for 5 or 25 sites, or unlimited.

Technical requirements

  • OpenCart 4.0.2 – 4.1.x (tested on 4.1.0.3 and 4.0.2.3 with the mysqli and pdo database drivers), 3.0.x (tested on 3.0.5.0) or 2.3.0.2.
  • PHP as your OpenCart version requires: the 2.3 build was tested on PHP 7.0, the others on PHP 8.x.
  • Database: tested on MariaDB 10.11. The CREATE TEMPORARY TABLES privilege speeds up pages on large catalogues; without it the module uses direct queries with the same figures.
  • The PHP cURL extension, for the licence and Telegram.
  • For the daily digest on OpenCart 3 and 2.3: a hosting cron that opens the URL from the settings once a day.

Version history

v1.0.0 Current 9 October 2026

For OpenCart 4.x, 3.x and 2.3: physical, reserved and available stock from orders with the core deduction rule (OpenCart 4 variants, option values), the orders of the reserve, receipts +N,…

Frequently bought with Stock Reserve & Reorder for OpenCart

4 modules in one order — 40% cheaper than separately

“Store starter” bundle Stock Reserve & Reorder Nova Poshta Premium LiqPay Telegram notifications and Viber/SMS for customers Need more — all 173 modules in All Access for 4 990 ₴.
3 790 ₴ lifetime instead of 6 260 UAH bought separately
Buy the bundle →

Full module description

Stock Reserve & Reorder for OpenCart is a module for shops that keep goods in their own stockroom. OpenCart stores one number per product, Quantity, and takes an order off it as soon as the order enters a processing status, long before the parcel leaves the shelf. After a few days of sales the number in the admin no longer matches the shelf, and every stock count starts with the question “where did those 7 units go?”.

The module reads the orders and shows three figures for every product and every option value: physical stock (what is on the shelf), reserved (sold but not shipped yet, with the list of orders) and available (what you can still sell). A receipt adds +N on top of the stock instead of overwriting it; write-offs and stock counts are logged and can be cancelled. The reorder point comes from your sales speed, lead time and safety days.

There is a separate version for WooCommerce: Stock Reserve & Reorder for WooCommerce.

What the customer sees

Customers do not see the module: nothing changes in the storefront or the checkout, the module adds no scripts or requests to shop pages, and OpenCart keeps selling from the same Quantity field. Customers only notice the result: the product was reordered in time, not after the last unit had been sold twice.

What the admin gets

A Catalog → Stock & reorder menu item and the Stock, Reorder, Stock documents and Settings pages.

  • Tiles: how many units are reserved and in how many lines, how many are physically on the shelf, how many lines need reordering and how many are oversold.
  • Table for every product and option value that OpenCart subtracts from stock: OpenCart quantity, physical, reserved, available, sold in the period, reorder point and state: OK, Reorder, Oversold, Nothing available, Not tracked.
  • A click on the reserve opens the orders that hold it: number, date, status, customer, quantity and whether OpenCart has already deducted the goods.
  • Filters: search by name, model, SKU or #ID, category, with a reserve, reorder + oversold, nothing available, option values, disabled products; sorting by reserve, available stock, days of stock or urgency.
  • Stock change from the row: receipt +N, write-off −N or stock count, where the counted shelf quantity becomes the physical stock. Every change is a document in the log with the counter before and after, and it can be cancelled.
  • Product form line: Physical · reserved · available under the Quantity field, with a link to the stock page.

Reorder

  • Reorder point = units sold per day × (lead time + safety days). A line goes to Reorder when the available stock is at or below this point, and to Oversold when more is reserved than physically on the shelf.
  • Stock lasts: how many days of sales the available stock covers at the current speed.
  • Pro: lead time, safety days, minimum stock, pack size and supplier for one product or option value; an Order column with the suggested quantity; CSV purchase list and Receipt from suggestions buttons.

Pro: stock documents, CSV and the daily digest

  • Multi-line documents: a receipt, write-off or stock count with a number, supplier and note. Lines are pasted straight from a spreadsheet: SKU, model, #product_id or #product_id/option_value_id and a quantity. Check the lines shows the stock before and after; an unknown code, an ambiguous model or a zero quantity blocks the whole document until the line is fixed.
  • CSV of the stock, the purchase list and every stock change: UTF-8 with BOM, semicolon separator, and names starting with = are not run as formulas in Excel.
  • Daily digest: lines at or below the reorder point with the suggested quantity and, optionally, oversold lines. When nothing is due, nothing is sent.
  • Channels: up to 5 e-mail addresses through the store mail settings, and Telegram (bot token and chat ID). In OpenCart 4 the OpenCart scheduler runs the digest, in 3 and 2.3 a URL with a secret key for the hosting cron.

How it works, step by step

  1. The module takes the orders in the reserving statuses. By default these are the processing statuses of your store minus the complete ones, i.e. sold but not shipped.
  2. For every product and option value it counts how much of those orders OpenCart has already taken off Quantity, with the same rule as the core (OpenCart 4.1 joins the processing and complete status lists, an OpenCart 4 variant also deducts its master product).
  3. Physical = OpenCart quantity + the already deducted goods of reserving orders. Reserved = all goods of reserving orders. Available = physical − reserved.
  4. Units sold per day = sold in the period (30 days by default) ÷ days. Reorder point = units per day × (lead time + safety days); in Pro never below the minimum stock.
  5. A receipt, write-off or stock count changes Quantity with one atomic quantity + N query, so a sale arriving in the same second is not lost. Every change is logged and cancelling puts it back.

Under the hood

  • No core edits. No OCMOD patches; the menu item and the product form line are added with OpenCart events. One class library is the same in all three builds, the code is PHP 7.0 compatible.
  • Own tables oc_cc_stockres_doc (documents), oc_cc_stockres_move (change lines with the counter before and after), oc_cc_stockres_item (product parameters). Core tables are not changed.
  • Calculated on the fly, once per request in a temporary table; no cache, so the figures are always fresh.
  • Cron URL index.php?route=extension/cc_stockres/cron.cron&key=… (on 3.x and 2.3 extension/module/cc_stockres_cron/cron): without the key it answers 403, the digest goes out at most once a day and is retried if sending fails.
  • The licence lives in its own settings group: Save never touches it.
  • Uninstall removes the events and (OpenCart 4) the cron task and keeps the documents and product parameters, so a reinstall sees them. OpenCart deletes the module settings on uninstall; the licence in its own group stays. For full removal drop the oc_cc_stockres_* tables by hand.

Installation

  1. OpenCart 4: Extensions → Installer → upload cc_stockres.ocmod.zip (keep the archive name) and press Install. OpenCart 3: Extensions → Installer → cc_stockres-oc3.ocmod.zip, then Extensions → Modifications → Refresh. OpenCart 2.3: upload the contents of the upload/ folder from cc_stockres-oc2.ocmod.zip to the shop root (FTP or the hosting file manager); the 2.3 Installer does not copy files without FTP set up.
  2. Extensions → Extensions → Modules → CatCode Stock Reserve & Reorder → Install. The module is on right away.
  3. Catalog → Stock & reorder. In Settings check the reserving statuses, the sales window, lead time and safety days.
  4. For Pro: paste the licence key from the e-mail you get after payment, or press Try Pro for 7 days on the Licence tab.

Questions
about the module

Didn't find the answer? Message us on Telegram and we'll reply within a business day.

@catcode_support Setup, compatibility, activation
How is physical stock different from the OpenCart quantity?

OpenCart takes goods off the Quantity field as soon as an order enters a processing status, long before the parcel leaves the shelf. The module adds the goods of those not-yet-shipped orders back: that is the physical stock. The reserve is the same goods, and available stock is physical minus reserved.

Does the module change product quantities by itself?

No. The figures are calculated from the orders, nothing in the catalogue is rewritten. The quantity changes only with your receipt, write-off or stock count: one atomic quantity + N, written to the log and possible to cancel.

Which statuses count as reserved?

By default the processing statuses of your store minus the complete ones, i.e. sold but not shipped. In the settings you can pick your own, including statuses in which OpenCart does not deduct stock: such orders are marked not deducted yet and reduce the available stock.

How is the reorder point calculated?

Units sold per day over the last N days × (lead time + safety days), rounded up. In Pro it is set per product and is never below the minimum stock; the suggested quantity covers the reorder point plus a set number of days of sales and is rounded up to the pack size.

Does the Telegram digest work?

The digest is sent with the sendMessage method of the Bot API, following the Telegram documentation. In testing it was checked against a mock of the Telegram server, not with a live bot. The e-mail digest was checked through the store mail settings. Check both channels with the Send a test digest now button during the 7-day trial.

Is the licence yearly?

No. For OpenCart it is a one-time payment and a lifetime licence, one for all three builds: 4.x, 3.x and 2.3. The Pro trial starts only when you press the button. After the trial the documents, the log and the parameters stay, and the calculation falls back to the global settings.

Does the module change OpenCart files or the storefront?

No. No core edits and no OCMOD patches; the menu item and the product form line are added with events. The module does not touch the storefront or the checkout and changes no core tables, only its own.

Not quite what you are looking for?

We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.

Order a custom module