{"id":387076,"date":"2026-10-25T09:12:22","date_gmt":"2026-10-25T09:12:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/catcode-stock-reserve-reorder-for-woocommerce\/"},"modified":"2026-10-25T09:12:06","modified_gmt":"2026-10-25T09:12:06","slug":"catcode-stock-reserve-reorder-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/catcode-stock-reserve-reorder-for-woocommerce\/","author":23504569,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.3","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"CatCode Stock Reserve & Reorder for WooCommerce","header_author":"CatCode","header_description":"Physical, reserved and available stock for every product: units of paid orders that are not shipped yet are shown as reserved instead of disappearing. Goods receipts add \"+N\" to the current stock instead of overwriting it, and a reorder point built from the sales rate and the supplier's lead time tells you what to order and by when.","assets_banners_color":"515e7e","last_updated":"2026-10-25 09:12:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/catcode.com.ua\/modules\/catcode-stock-reserve-reorder-for-woocommerce\/","header_author_uri":"https:\/\/catcode.com.ua","rating":0,"author_block_rating":0,"active_installs":0,"downloads":47,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"catcodestudio","date":"2026-10-25 09:12:06","revision":3764163}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3764162,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3764162,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3764162,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3764162,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3764162,"resolution":"1","location":"assets","locale":"","width":1440,"height":1002},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3764162,"resolution":"2","location":"assets","locale":"","width":1440,"height":930},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3764162,"resolution":"3","location":"assets","locale":"","width":1440,"height":930},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3764162,"resolution":"4","location":"assets","locale":"","width":751,"height":202}},"screenshots":{"1":"Stock overview: physical, reserved, available, sales per day, days left, reorder point and the date to order by.","2":"A goods receipt: lines, pasted SKU list, \"+N\" to the current stock.","3":"Orders holding the reserved units of a product.","4":"Lead time and safety stock in the Inventory tab."}},"plugin_section":[],"plugin_tags":[6601,2286,201482,12448,286],"plugin_category":[45],"plugin_contributors":[271712],"plugin_business_model":[],"class_list":["post-387076","plugin","type-plugin","status-publish","hentry","plugin_tags-inventory","plugin_tags-reorder","plugin_tags-reserved-stock","plugin_tags-stock","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-catcodestudio","plugin_committers-catcodestudio"],"banners":{"banner":"https:\/\/ps.w.org\/catcode-stock-reserve-reorder-for-woocommerce\/assets\/banner-772x250.png?rev=3764162","banner_2x":"https:\/\/ps.w.org\/catcode-stock-reserve-reorder-for-woocommerce\/assets\/banner-1544x500.png?rev=3764162","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/catcode-stock-reserve-reorder-for-woocommerce\/assets\/icon-128x128.png?rev=3764162","icon_2x":"https:\/\/ps.w.org\/catcode-stock-reserve-reorder-for-woocommerce\/assets\/icon-256x256.png?rev=3764162","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/catcode-stock-reserve-reorder-for-woocommerce\/assets\/screenshot-1.png?rev=3764162","caption":"Stock overview: physical, reserved, available, sales per day, days left, reorder point and the date to order by."},{"src":"https:\/\/ps.w.org\/catcode-stock-reserve-reorder-for-woocommerce\/assets\/screenshot-2.png?rev=3764162","caption":"A goods receipt: lines, pasted SKU list, \"+N\" to the current stock."},{"src":"https:\/\/ps.w.org\/catcode-stock-reserve-reorder-for-woocommerce\/assets\/screenshot-3.png?rev=3764162","caption":"Orders holding the reserved units of a product."},{"src":"https:\/\/ps.w.org\/catcode-stock-reserve-reorder-for-woocommerce\/assets\/screenshot-4.png?rev=3764162","caption":"Lead time and safety stock in the Inventory tab."}],"raw_content":"<!--section=description-->\n<p>WooCommerce takes stock the moment an order is paid or put on hold. The units are still on the shelf until the parcel leaves, but the stock figure no longer shows them \u2014 so a stock count never matches, and nobody can say how much is promised to customers. The low-stock e-mail fires at a fixed number, whether the supplier needs three days or four weeks. And typing a delivery into the stock field overwrites whatever orders changed in the meantime.<\/p>\n\n<p>Stock Reserve &amp; Reorder adds the light warehouse layer a small shop needs, without an ERP.<\/p>\n\n<ul>\n<li><strong>Physical, reserved, available.<\/strong> For every product and variation that manages stock: physical = on the shelf, reserved = units of orders that are paid but not shipped yet (by default \"Processing\" and \"On hold\" \u2014 choose your own statuses, a custom \"Packing\" status included), available = what can still be sold. Click the reserved figure to see the orders holding it. Units held by unpaid checkouts are shown too.<\/li>\n<li><strong>Goods receipts with \"+N\".<\/strong> Book a delivery as a document \u2014 document number, supplier, note, any number of lines, or a pasted \"SKU quantity\" list straight from a spreadsheet. Every line is added to the current stock in one relative database update, so orders placed while you type are never lost. A quick \"+N\" box sits on every row of the overview. Receipts are kept, and a receipt booked by mistake can be cancelled (\u2212N).<\/li>\n<li><strong>Reorder point by lead time.<\/strong> Sales rate over the last N days \u00d7 supplier lead time + safety stock. When available stock plus expected deliveries falls to it, the product is marked \"Reorder now\", with the date you have to order by and the days of stock left. Lead time and safety stock are set per product and per variation, with store defaults.<\/li>\n<li><strong>Products list.<\/strong> \"Physical 12 \u00b7 reserved 2\" and a \"Reorder\" mark under the stock figure; a counter of products to reorder next to the menu item.<\/li>\n<li><strong>Works with CatCode Multi Warehouse.<\/strong> A receipt can go into a chosen warehouse.<\/li>\n<li><strong>Partial shipments and refunds.<\/strong> Units already sent with a partial shipment (WooCommerce order fulfillments, Shiptastic \/ Germanized shipments) and units refunded without restock are no longer reserved.<\/li>\n<li><strong>Works with CatCode Shared Stock.<\/strong> Cards that sell from one stock pool are counted together: every card shows the whole pool, and the overview keeps one row per pool, so a reorder is suggested once.<\/li>\n<li><strong>HPOS and blocks.<\/strong> Compatible with High-Performance Order Storage and the Cart and Checkout blocks. The plugin never changes how WooCommerce takes stock for orders.<\/li>\n<\/ul>\n\n<h4>How the numbers work<\/h4>\n\n<p>WooCommerce records on every order line how many units it took from stock (the <code>_reduced_stock<\/code> order item meta): cancelling the order gives them back, a refund with restock lowers the figure. The plugin sums it for orders in the reserved statuses. Units that already left with a partial shipment, and units refunded without restock, are taken off the order line's figure: they will not leave the shelf any more. Physical = WooCommerce stock + reserved; available = WooCommerce stock. The sales rate counts the same units for orders created in the measuring window, so cancelled orders and restocked refunds do not count as sales. A product younger than the window is measured over its own age.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin. WooCommerce must be active, with stock management switched on.<\/li>\n<li>Open <strong>WooCommerce \u2192 Stock &amp; Reorder<\/strong>. The overview lists every product and variation with \"Manage stock\" on.<\/li>\n<li>In <strong>Settings<\/strong>, check which order statuses mean \"paid, not shipped yet\", and set the default lead time and safety stock.<\/li>\n<li>Set a lead time on products whose supplier is faster or slower than the default (Inventory tab of the product or the variation).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20change%20the%20stock%20of%20my%20products%3F\"><h3>Does the plugin change the stock of my products?<\/h3><\/dt>\n<dd><p>Only when you book or cancel a goods receipt, and then only relatively (+N \/ \u2212N) through WooCommerce's own stock function. Reserved and physical stock are computed from your orders; nothing is written to them.<\/p><\/dd>\n<dt id=\"my%20shop%20marks%20orders%20%22completed%22%20when%20they%20are%20packed%2C%20not%20when%20they%20leave.\"><h3>My shop marks orders \"Completed\" when they are packed, not when they leave.<\/h3><\/dt>\n<dd><p>Tick \"Completed\" (or your own status) in Settings \u2192 Reserved stock. Units of orders in the ticked statuses are reserved.<\/p><\/dd>\n<dt id=\"what%20about%20orders%20created%20before%20the%20plugin%20was%20installed%3F\"><h3>What about orders created before the plugin was installed?<\/h3><\/dt>\n<dd><p>They count. The figures come from WooCommerce's own order data, so the overview is right from the first minute.<\/p><\/dd>\n<dt id=\"imported%20orders%20show%20no%20reserved%20units.\"><h3>Imported orders show no reserved units.<\/h3><\/dt>\n<dd><p>Orders imported from elsewhere often have no <code>_reduced_stock<\/code> record, because WooCommerce did not take stock for them. They are not reserved and not counted as sales.<\/p><\/dd>\n<dt id=\"which%20database%20does%20it%20need%3F\"><h3>Which database does it need?<\/h3><\/dt>\n<dd><p>MySQL or MariaDB, like WooCommerce.<\/p><\/dd>\n<dt id=\"how%20big%20a%20catalogue%20does%20it%20handle%3F\"><h3>How big a catalogue does it handle?<\/h3><\/dt>\n<dd><p>Tested with 20,000 products and variations with stock management: the overview opens in about 0.7 s with 12,000 orders in the last 60 days and in under 2 s with 52,000 (MariaDB 10.11 and MySQL 8.0). Sales of the whole catalogue are kept for ten minutes for the products list and the product screen, so these stay fast; reserved stock is always read live.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Physical, reserved and available stock, goods receipts that add \"+N\" instead of overwriting, and a reorder point from the sales rate and lead time.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/387076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=387076"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/catcodestudio"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=387076"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=387076"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=387076"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=387076"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=387076"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=387076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}