Title: Ni Stock Import Export
Author: Anzar Ahmed
Published: <strong>October 13, 2026</strong>
Last modified: October 13, 2026

---

Search plugins

![](https://ps.w.org/ni-stock-import-export/assets/banner-772x250.png?rev=3744793)

![](https://s.w.org/plugins/geopattern-icon/ni-stock-import-export_c7cbd4.svg)

# Ni Stock Import Export

 By [Anzar Ahmed](https://profiles.wordpress.org/anzia/)

[Download](https://downloads.wordpress.org/plugin/ni-stock-import-export.1.0.2.zip)

 * [Details](https://wordpress.org/plugins/ni-stock-import-export/#description)
 * [Reviews](https://wordpress.org/plugins/ni-stock-import-export/#reviews)
 *  [Installation](https://wordpress.org/plugins/ni-stock-import-export/#installation)
 * [Development](https://wordpress.org/plugins/ni-stock-import-export/#developers)

 [Support](https://wordpress.org/support/plugin/ni-stock-import-export/)

## Description

**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_quantity`
   column 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

 1. **Download Current Stock.** Go to _Ni Stock Import Export  Download Stock_ and 
    click _Download CSV_.
 2. **Open the CSV** in Excel or Google Sheets.
 3. **Change only `stock_quantity`.** Leave every other column as it is.
 4. **Save as CSV** (in Excel: _File  Save As  CSV UTF-8_).
 5. **Upload the CSV** on _Ni Stock Import Export  Import Stock_.
 6. **Review the preview.** You see every change, every row that cannot be imported
    and why.
 7. **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`, or `parent` (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 `.csv` files 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: `.csv` only, 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.

## Installation

 1. Install and activate WooCommerce (version 8.0 or later).
 2. 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.
 3. Go to _Ni Stock Import Export_ in the admin menu.

Users need the _Manage WooCommerce_ capability (Administrators and Shop Managers).

## FAQ

### 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: `00123` becomes `123` and long numbers such
as `1234567890123` become `1.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 the `sku` column 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_stock` is `parent`), 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 );` to `wp-config.php` before deleting
the plugin. Products and stock are never touched.

### Does the plugin send my data anywhere?

No. All processing happens on your server.

## Reviews

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.

Contributors

 *   [ Anzar Ahmed ](https://profiles.wordpress.org/anzia/)

[Translate “Ni Stock Import Export” into your language.](https://translate.wordpress.org/projects/wp-plugins/ni-stock-import-export)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/ni-stock-import-export/),
check out the [SVN repository](https://plugins.svn.wordpress.org/ni-stock-import-export/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/ni-stock-import-export/)
by [RSS](https://plugins.trac.wordpress.org/log/ni-stock-import-export/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 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.

## Meta

 *  Version **1.0.2**
 *  Last updated **6 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [export](https://wordpress.org/plugins/tags/export/)[import](https://wordpress.org/plugins/tags/import/)
   [inventory](https://wordpress.org/plugins/tags/inventory/)[stock](https://wordpress.org/plugins/tags/stock/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/ni-stock-import-export/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/ni-stock-import-export/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/ni-stock-import-export/reviews/)

## Contributors

 *   [ Anzar Ahmed ](https://profiles.wordpress.org/anzia/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/ni-stock-import-export/)