Сүрөттөө
Ni Stock Import Export is a WooCommerce stock import and export tool. Update stock quantities for many WooCommerce products and variations at once using a CSV spreadsheet, without editing products one by one, and without risking the wrong product being changed.
The plugin is built around one safe workflow: download your current stock, change the quantities, upload the file, review exactly what will change, and confirm. Nothing in your store changes until you confirm.
Each row is matched by product ID and verified against its SKU, so a row can never update a different product. If stock changes after you review the preview (for example, because an order comes in), that product is reported as a conflict instead of being overwritten.
Features
- Download current stock as a CSV file, filtered by product type and category, with or without variations.
- Edit in Excel, Google Sheets or any spreadsheet app. Only the
stock_quantitycolumn needs to change. - Upload with drag & drop. The file is checked before anything else happens.
- Validation of the file format, template version, columns, product IDs, SKUs and quantities, with a clear explanation for every rejected row.
- Preview of changes against your current WooCommerce stock: current stock, new stock and the difference for each product, with search, filters and pagination.
- Explicit confirmation before any stock is updated.
- Conflict detection: a product whose stock changed after the preview is not overwritten.
- Background processing in batches, so large files do not time out. Progress is shown live and the import continues if you leave the page.
- Cancel an import at any time, and resume an import that stopped (for example after a server interruption).
- Import history with the outcome of every import and downloadable error and conflict reports.
- Simple products, variable products (stock managed on the parent) and individual variations.
How It Works
- Download Current Stock. Go to Ni Stock Import Export Download Stock and click Download CSV.
- Open the CSV in Excel or Google Sheets.
- Change only
stock_quantity. Leave every other column as it is. - Save as CSV (in Excel: File Save As CSV UTF-8).
- Upload the CSV on Ni Stock Import Export Import Stock.
- Review the preview. You see every change, every row that cannot be imported and why.
- Confirm the stock update. Only now is WooCommerce stock changed.
Nothing changes during upload, validation or preview.
The uploaded quantity is the final stock (“set stock to 50”), not an adjustment (“add 50”).
Usage
Download. Choose a product type (or all), a category (or all) and whether to include variations, then click Download CSV.
Import. Drag the edited CSV onto the upload area (or click Choose CSV File) and click Validate & Preview. The file is checked in the background; large files show a progress bar.
Review. The preview shows how many rows are valid, changed, unchanged and rejected. Only changed rows are listed by default; use the filter to see increases, decreases or unchanged rows. Rejected rows are listed separately and can be downloaded as a CSV error report.
Confirm. Click Confirm & Update Stock and confirm in the dialog. Stock is updated in batches with live progress. You can cancel at any time; products already updated keep their new stock.
Result and history. After the update you see how many products were updated, skipped, in conflict or failed. Every import is listed under Import History, where you can reopen its details and reports.
CSV Format
The downloaded file starts with a template line (nistimex_template_version,1.0) followed by a header row and one row per product or variation.
product_id(identity, do not edit): the WooCommerce product or variation ID, used to find the product.sku(identity, do not edit): the product’s SKU, used to verify the row matches the product.product_name(informational): for your reference only; changes are ignored.product_type(informational): simple, variable or variation.parent_id(informational): for variations, the ID of the variable product.stock_quantity(editable): the new stock quantity, as a whole number. Leave it empty to keep the current stock.stock_status(informational): in stock, out of stock or on backorder; WooCommerce updates it automatically.manage_stock(informational):yes,no, orparent(the variation’s stock is managed on its parent product row).backorders(informational): the product’s backorder setting.
Rows with an empty stock_quantity are left unchanged. Rows for products that do not manage stock, and variations whose stock is managed by the parent, can only be left empty.
Import Workflow
Upload Validate Review Confirm Complete.
- Upload: only
.csvfiles are accepted. The file is stored privately and deleted as soon as it has been read. - Validate: each row is checked against WooCommerce: the product must exist, its SKU must match exactly, its stock must be managed at that level, and the quantity must be a whole number. Duplicate product IDs or SKUs are rejected.
- Review: changes are calculated against the stock in WooCommerce now, not the stock in the downloaded file.
- Confirm: you confirm in a dialog that states how many products will change.
- Complete: each product is updated only if its stock still matches the preview. Otherwise it is reported as a conflict.
Security
- Only users with the Manage WooCommerce capability can use the plugin.
- Every action is protected against cross-site request forgery (nonces) and checked for permission on the server.
- Uploaded files:
.csvonly, type- and content-checked, size-limited, stored under a random name in a protected folder, never executed, and deleted after validation. - Products are identified by product ID and verified by SKU. Product names in the file are never used to identify products.
- Stock is written with a compare-and-set update and WooCommerce’s own stock functions, so stock status, the product lookup table and WooCommerce hooks stay in sync.
- Privacy: the plugin does not send any data to external servers. It has no tracking or telemetry.
Requirements
- WordPress 6.5 or later
- WooCommerce 8.0 or later (tested up to 11.1)
- PHP 7.4 or later (tested with 7.4, 8.1 and 8.2)
- MySQL/MariaDB with permission to create tables (two tables store import history)
Limits: there is no limit on the number of products or imports. The upload size is limited to 20 MB or your server’s upload limit, whichever is smaller (roughly 250,000 rows). The download is generated in a single request. In our tests, 50,000 products downloaded in under 2 minutes with about 115 MB of PHP memory; much larger catalogs, or slower servers with strict time limits, may need per-category downloads. See the FAQ.
Орнотуу
- Install and activate WooCommerce (version 8.0 or later).
- In WordPress, go to Plugins Add New, search for “Ni Stock Import Export”, then install and activate it. Or upload the plugin folder to
/wp-content/plugins/and activate it on the Plugins screen. - Go to Ni Stock Import Export in the admin menu.
Users need the Manage WooCommerce capability (Administrators and Shop Managers).
FAQ.KG
-
Can I upload an Excel (.xlsx) file?
-
No. The free version accepts CSV only. In Excel, use File Save As CSV UTF-8 (Comma delimited).
-
Excel changed my SKUs. What should I do?
-
Excel turns numeric SKUs into numbers:
00123becomes123and long numbers such as1234567890123become1.23457E+12. Such rows are rejected (never applied to the wrong product) with an explanation. To keep SKUs intact, import the CSV in Excel with Data From Text/CSV and set theskucolumn to Text, or format the column as Text before editing. Google Sheets: File Import Upload and untick “Convert text to numbers, dates, and formulas”. -
Can I change product prices?
-
No. This plugin only updates stock quantities.
-
Can I create or delete products?
-
No. Rows for products that do not exist are rejected, and no product is ever created or deleted.
-
What happens if I leave stock_quantity empty?
-
The existing stock remains unchanged.
-
Does the quantity add to the current stock?
-
No. The quantity is the final stock. If the current stock is 20 and you enter 50, the stock becomes 50.
-
What happens if a SKU in the file was changed?
-
The row is rejected because the product ID and SKU no longer match. Nothing is updated for that row.
-
What happens if stock changes after I preview the import?
-
That product becomes a conflict: its current stock is kept and it is listed in the result and the conflict report. Download a fresh stock CSV to review it again.
-
Can I update variations?
-
Yes. Each variation has its own row. If a variation’s stock is managed by its parent product (
manage_stockisparent), change the quantity on the parent product’s row instead. -
What happens to rows with errors?
-
They are skipped and listed with the reason. All valid rows can still be imported.
-
Can I stop an import?
-
Yes. Click Cancel Import on the progress screen. Products already updated keep their new stock; the rest are left unchanged and marked as skipped.
-
The import stopped or shows “Stalled”. What do I do?
-
Open the import (from Import History) and click Resume Import. It continues where it stopped; products already updated are recognised and not changed twice.
-
The download stops or the file is incomplete for a very large catalog.
-
The CSV is generated in one request. If your server stops long requests, download by category or product type and import the files one after another.
-
Does deleting the plugin delete my import history?
-
No. Import history is kept so it is not lost if you reinstall. To remove it permanently, add
define( 'NISTIMEX_REMOVE_ALL_DATA', true );towp-config.phpbefore deleting the plugin. Products and stock are never touched. -
Does the plugin send my data anywhere?
-
No. All processing happens on your server.
Сын-пикирлер
There are no reviews for this plugin.
Contributors & Developers
“Ni Stock Import Export” is open source software. The following people have contributed to this plugin.
МүчөлөрүTranslate “Ni Stock Import Export” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Өзгөртүүлөр
1.0.2
- All code names, options, database tables and hooks now use the unique prefix
nistimex.
1.0.1
- A product whose stock changed after the preview is always reported as a conflict and never overwritten (an unused, non-configurable policy option was removed).
- Permission checks now run before any request data is read.
1.0.0
- Download current stock as CSV (simple products, variable products, variations; filter by type and category).
- Import stock from CSV: upload, validation by product ID + SKU, preview against current stock, explicit confirmation.
- Batched background updates with live progress, conflict detection (compare-and-set), cancel and resume.
- Import history, import details, and downloadable error, conflict and result reports.
