---
type: "product"
id: 147
url: "https://prestadev.pl/en/stock-level-update-from-a-csv-file-module-for-prestashop.html"
markdown_url: "https://prestadev.pl/en/markdown/product/147.md"
title: "CSV Stock Update Pro — import quantities into PrestaShop"
description: "Update product and combination quantities in PrestaShop from CSV. Replace or add stock levels, check the simulation, and restore quantities from the import history."
image: "https://prestadev.pl/936/stock-level-update-from-a-csv-file-module-for-prestashop.jpg"
sku: "PDCQU"
ean13: "0"
brand: "PrestaDev.pl"
price: 79.00
price_tax_excluded: 64.23
currency: "PLN"
tax_included: true
availability: "in_stock"
is_pack: false
customization_required: false
condition: "new"
categories: ["Data import and export", "Main", "PrestaShop modules", "Product and inventory management"]
language: "en"
updated: "2026-09-08"
---

# CSV Stock Update Pro — import quantities into PrestaShop

**CSV Stock Update Pro** is a PrestaShop module for bulk updating the stock levels of existing products and their combinations based on a CSV file. It allows you to replace current quantities with values from the file or add them to the current stock. Column mapping makes it possible to use datasets with different data layouts, and the selected identifier links file rows with the store catalog. Simulation, change limits, and a report with quantities before and after the update help verify the prepared import. Optional subtraction of quantities from orders in selected statuses takes them into account when calculating the result. The module also provides stock export, history with a function to restore saved quantities, as well as file downloading and import execution triggered by an external CRON.

## Description

## Key features and benefits

 - **Bulk quantity updates:** change stock levels for many items from a single file, without manually editing each product page.
- **Separate modes for products and combinations:** update products without variants or stock levels of specific variants, with recalculation of their total at the product level.
- **Matching by catalog codes:** reference, i.e. SKU, EAN13, UPC, product ID, combination ID, and MPN, if the relevant field is available in the installation.
- **Supplier column mapping:** indicate the identifier and quantity columns, ignore additional data, and use a mapping suggestion based on recognized headers.
- **Setting or adding quantities:** use a full stock listing or a file containing quantities to add, for example from a delivery.
- **Including open orders:** optionally subtract quantities from orders with selected statuses before applying values from the file.
- **Simulation before saving:** check matches, planned changes, and reasons for skipping items without changing stock levels in the catalog.
- **Configurable limits:** control percentage increases and decreases in quantity, stock zeroing, and the share of rows with no match in the store.
- **Handling negative results:** choose between saving a negative value, raising it to zero, or skipping the item.
- **CSV report and differences screen:** quantities before and after the operation, difference, identifiers, and the decision for a given row; filters and report pagination are available in the panel.
- **History and quantity restore:** access run history and revert saved changes if a stock snapshot from before the import was preserved.
- **Export of current stock levels:** CSV file for products or combinations with selection of store, identifier, and separator, taking saved column mapping into account.
- **Downloading from the supplier and settings profiles:** import files from an HTTP/HTTPS address or an FTP/FTPS server and save configurations used for different data sources.
- **Support for recurring updates:** address for an external CRON, preview of the result of the last call, and continuation of a started import.
- **Step-by-step processing of larger files:** progress bar and the ability to continue from the panel, also using a button when JavaScript is disabled.
- **Identifier index control:** information about a missing database index and a tool to add it, helpful when matching items in a larger catalog.
- **Email summary:** optional message after the update is completed, with the report as an attachment when its size allows it.

 ## How does the stock update for products and variants work?

 Product mode is used to update items without combinations. A product that has combinations is skipped in this mode and receives an appropriate entry in the report. To change variant quantities, select combination mode and match the identifiers from the file to the correct variants. After saving, the module recalculates the total product stock as the sum of the quantities of its combinations.

 - **Set stock:** if the store has 10 units and the file contains 25, the new stock level will be 25 units.
- **Add to stock:** with 10 units in the store and a value of 25 in the file, the result will be 35 units.
- **Subtract open orders:** in set mode, with a value of 25 in the file and 4 units in orders covered by the selected statuses, the result will be 21 units.

 The examples assume correct matching and no blocking by limits; in the first two, order subtraction is disabled. The subtraction option uses orders from the target store and does not support matching by MPN. With shared catalog codes, you can update the first match or all matched items.

 ## CSV file from the warehouse or wholesaler

 The basic layout contains an identifier and a quantity. You can set the separator, including a tab, specify whether a header is present, and assign other column positions. The data preview makes it easier to verify the mapping, and a suggestion recognized from headers requires confirmation. The file should be prepared in UTF-8; the reader removes the BOM marker and supports fields in quotation marks.

 Example for a semicolon separator, identification by reference, and header skipping enabled:

 ```
code;quantity
SKU-001;25
SKU-002;0
SKU-003;8
```

 Quantities are saved as integers. A value of `3,9` or `3.9` will be read as 3, and `-3,9` as -3. Empty or non-numeric values are skipped with information in the report. A valid value of 0 means a proposal to set zero in stock-setting mode and is still subject to the configured limits.

 ## Change control and import rollback

 Simulation is enabled by default in the update launch form. Limits allow you to skip a blocked item or reject the import after analysis performed before saving. Percentage increase and decrease are evaluated against the positive stock level currently existing in the store. A separate threshold can stop the import when the share of correctly read rows without a useful match in the store reaches the configured value.

 The report shows decisions regarding the data, and the history stores information about the file, store, mode, and run results. With snapshot saving enabled, the restore function recreates previous quantities for items covered by the snapshot. The number of preserved runs can be configured; by default, it is 10. Restoring writes the quantities from before the import, so it may overwrite later changes resulting from orders, manual edits, or subsequent updates.

 ## File downloading and automatic stock updates

 The file can be uploaded manually or downloaded from a public HTTP/HTTPS address or an FTP/FTPS server. SFTP is available if it is supported by the cURL library on the store server. Downloading requires the cURL extension and a source available at a public address; private network addresses are rejected.

 After automation is enabled, the module provides an address secured with a secret token. The call frequency is set in an external CRON schedule. The next call continues an active import; if no run has been started, you can download a new file and perform the update, only download the file, or start importing an already saved file. Status checking is also available.

 Supplier profiles save, among other things, the separator, mapping, identifier, quantity mode, limits, and download source. They are stored separately for the target store. They do not include the supplier password or the CRON token, so changing a profile requires checking the current password in the automation settings.

 ## Working in multistore and the module scope

 - **Store selection:** import and export have a target store setting. If a store group shares stock, the update applies to its shared resource, which also affects the other stores using those quantities. The current module settings are shared across the installation.
- **Updating the existing catalog:** the module does not create products or combinations and does not import prices, descriptions, images, or new identification codes. There is no function for automatically zeroing all items not present in the file.
- **File format and size:** CSV files and TXT files with a CSV structure are accepted, without direct XLSX or XML import. The module limit is 32 MiB; the manual upload limit may be lower due to server settings.
- **Continuing work:** with step-by-step import started in the panel, subsequent steps require the page to remain open, manual continuation, or CRON calls. Closing the tab does not start a separate background process.
- **Cooperation with stock add-ons:** batch saving does not trigger the `actionUpdateQuantity` hook and does not create `stock_mvt` stock movement entries. Add-ons that require these events need separate compatibility verification.
- **Declared compatibility for version 2.0.0:** PrestaShop from 1.7.6.0 to the 9.x series; the module documentation indicates PHP 7.0–8.5. The PHP version must also meet the requirements of the PrestaShop version in use.

 ## Workflow with the module

 1. Select the store, update type, identifier, and the method of applying quantities.
2. Upload or download the file, check the separator and header, then save the column mapping.
3. Set limits, snapshot saving, and optionally subtract quantities from selected order statuses.
4. Run the simulation and review the summary and the differences report.
5. After verifying the data, run the update with simulation disabled, and check the result in the history.

 ###
Link to the module demo:

 **Admin panel demo:**
[https://moduly-prestashop.eu/csvquantityupd/admin-dev](https://moduly-prestashop.eu/csvquantityupd/admin-dev)

**Front office demo:**
[https://moduly-prestashop.eu/csvquantityupd](https://moduly-prestashop.eu/csvquantityupd)

## Features

| Feature | Value |
| --- | --- |
| Prestashop 9.x support | Yes |
| Support for Prestashop 8.x | Yes |
| Prestashop 1.7.x support | Yes |
| Prestashop 1.6.x support | Yes |
| PrestaShop 1.5x support | Yes |
| Module translations | EN |
| Free updates (1 year) | Yes |
| Easy Installation | Yes |

## Variants

| Variant | SKU | Price | Availability | Variant ID |
| --- | --- | --- | --- | --- |
| License type / update: Full version / lifetime license | ` PDCQU-FULL ` | 79.00 | ` in_stock ` | ` 480 ` |
| License type / update: Update only (extend access for another 12 months) | ` PDCQU-UPD ` | 39.50 | ` in_stock ` | ` 481 ` |

## Categories

- Data import and export
- Main
- PrestaShop modules
- Product and inventory management

## Questions and answers

### What is the CSV Stock Update Pro module used for?

Language: en

CSV Pro Stock Update updates the quantities of existing products and combinations in PrestaShop based on a CSV file. It supports setting stock levels, adding quantities, column mapping, simulation, change limits, history, restoring saved stock levels, and export. The file can be uploaded manually or fetched from a supplier, and the import can be run via an external CRON.

### What file format does the stock importer accept?

Language: en

The basic file has two columns: identifier and quantity, separated by semicolons by default. The separator can be changed, including to a tab, and you can enable or disable skipping the first row as a header. Fields in quotation marks and UTF-8 with BOM removal are supported. Manual upload accepts CSV and TXT extensions, but the content must have a CSV structure. There is no direct import of XLSX, XML, or JSON data.

### Can I use the supplier file with a different order and additional columns?

Language: en

Yes. Mapping allows you to indicate the identifier column and the quantity column and ignore the remaining data. The mapping screen shows a sample of the file and may suggest an assignment based on the recognised headers. The suggestion requires confirmation. The module uses a single quantity column; it does not automatically sum several stock columns.

### Which identifiers does the module use to find products and variants?

Language: en

Available are the reference, i.e. the SKU code, EAN13, UPC, and product ID, and for combinations also the combination ID. MPN is offered when the corresponding field exists in the database of the given installation. In combination mode, the reference, EAN13, UPC, and MPN are read from the combination. The identifier is used to locate the item; the import does not change the code in the catalogue.

### How do I update stock levels for products with combinations?

Language: en

You should select the combinations mode and match the file to the variant identifiers. The module saves their quantities and then recalculates the total stock of combinations at the product level. In products mode, an item with combinations is skipped and indicated in the report. A product ID in combinations mode may match several variants, so the result also depends on whether the update is set to apply to the first or all matches.

### What happens when several catalogue entries have the same identifier?

Language: en

You can choose to update the first match or all matched items. In the first option, additional matches are listed in the report as skipped. The setting applies to both products and combinations in the selected import mode. If one quantity is to be assigned to one variant, the file should contain an identifier that allows it to be indicated unambiguously.

### What is the difference between setting the stock level and adding quantity?

Language: en

Setting replaces the current quantity with the value from the file: 10 units in the store and 25 in the CSV gives 25 units. Adding increases the stock level: the same data gives 35 units. In add mode, a negative value can reduce the quantity. The examples assume order deduction is disabled and there is no blocking by limits; a negative result is subject to a separate policy set in the module.

### How does the module handle duplicate rows in a single CSV file?

Language: en

In add mode, a repeated occurrence of the same item for which a change has already been accepted in a given run is skipped so that the quantity is not added a second time. Therefore, the module does not sum subsequent delivery rows for the same product or variant. In set mode, a later row that meets the update conditions may overwrite an earlier value. Repeated occurrences are taken into account in the run data.

### Can fractional quantities be imported, for example 3.9?

Language: en

The parser accepts both decimal points and decimal commas, but stores whole units only, truncating the fractional part toward zero. Values such as 3.9 and 3,9 mean 3 units, and -3.9 means -3. Spaces and apostrophes within the number are also removed, so 1 234 is read as 1234. The module does not store fractional stock quantities.

### Will an empty or incorrect quantity field reset the product to zero?

Language: en

No. An empty or non-numeric quantity causes the row to be skipped and an entry to be made in the report. Rows without an identifier or without the required columns are also skipped. A valid number 0 is a separate case: in set mode, it means a new stock level equal to zero, provided the active limits allow it.

### What are the options for handling negative stock?

Language: en

You can save a negative result, raise it to zero, or skip the item. The policy is applied to the calculated result, i.e. after taking into account the set or add mode and any possible subtraction of orders. Values exceeding the range of the quantity field in the database are rejected. Allowing a negative result in the importer itself does not change the out-of-stock sales settings in PrestaShop.

### How does subtracting quantities from open orders work?

Language: en

When this option is enabled, the module sums the quantities from order items in the target store whose current status belongs to the indicated list. It matches them according to the selected identifier and subtracts them from the number in the CSV before setting or adding the quantity. When setting the stock level, with a value of 25 in the file and 4 units in the selected orders, the result is 21. The statuses must be selected to match the order workflow and the meaning of the supplier's data, so as not to subtract again quantities already included in the file.

### Does the deduction of open orders work with MPN?

Language: en

No. The order item data used by the module does not contain MPN, so this function will not match the quantity to be deducted by it. To use order deduction, you need to select another supported identifier. If the import is to remain based on MPN, order deduction must be disabled.

### Can I check the import without changing the stock levels in the store?

Language: en

Yes. The simulation goes through the data and prepares a summary and a report of planned changes, matches, blocks, and skips. It does not save new quantities in the catalogue, but it may create a report and a history entry. In the manual run form, it is enabled by default. To save stock levels, you need to run the update with the simulation disabled.

### What stock status change limits can be set?

Language: en

Percentage increase and decrease limits are available, as well as a lock preventing the stock level from being reset to zero once it reaches at least the specified number of units. The percentage limits apply to the existing positive stock level; they do not restrict an increase from zero in this way. A value of 0 disables the given limit. The handling of a negative result and the threshold for rows not matched to the store are configured separately.

### When does the mismatched rows threshold stop the update?

Language: en

The module performs an analysis before saving and checks the proportion of correctly read rows without a useful match to the target store. This includes unknown identifiers and relevant matching cases outside the selected store. The import is stopped when this proportion reaches or exceeds the configured threshold. A value of 0 disables the check; erroneous CSV rows are not included in the basis for this percentage.

### Does the limit skip a single row, or does it stop the entire import?

Language: en

It depends on the selected reaction mode. Skipping leaves blocked items unchanged and allows the remaining rows to be applied. Stopping the entire run uses pre-save analysis: detecting a violation of an active limit rejects the import before the quantity is changed. The threshold for mismatched rows works independently of this choice. Stopping at the analysis stage does not guarantee an automatic rollback of the entire file in the event of a later failure, because the actual save is performed in batches.

### Are products not present in the file automatically set to zero?

Language: en

No. The module does not have a function to reset all products or combinations omitted from the file. To set zero, you must provide a row with the appropriate identifier and quantity 0 in stock-setting mode, taking limits into account. After changing a combination, the sum of their quantities is recalculated at the product level.

### What information does the stock import report contain?

Language: en

The CSV report contains the decision and its reason, the row number, identifier, product and combination ID, quantity before the operation, quantity after the operation, and the difference. For situations in which the before or after value cannot be indicated, the corresponding fields remain empty. In the panel, the report can be viewed on the differences screen with filters and pagination. The summary distinguishes, among other things, between changes, no change, unknown identifiers, incorrect rows, and blocks.

### What can I check in the update history?

Language: en

The history shows, among other things, the date, file name, run mode, target store, import scope, selected identifier, and result counters. It distinguishes between simulations and completed updates. From the entries, you can open available reports and, if a snapshot of previous quantities has been preserved, use the restore function. Deleting a history entry also removes the related data needed to undo it.

### How can I undo the saved quantity changes?

Language: en

Snapshot saving must be enabled before import. If the previous quantities are still available, their restoration can be initiated from the history. The module records the values from before the given run for the items covered by it and recalculates the total stock levels of combinations. The number of retained runs is configurable; by default, it is 10. Simulation and import without a saved snapshot do not provide such a rollback.

### Will the restore keep the stock status changes made after the import?

Language: en

No. Restoring saves the quantities from the snapshot and does not subtract only the difference introduced by the import. It may therefore overwrite later stock changes resulting from sales, manual editing, or another import. It does not restore stock rows deleted later; missing items are counted as not restored. The function is not a backup of the entire store.

### Does the module download stock files directly from the supplier?

Language: en

Yes. HTTP/HTTPS and FTP/FTPS as well as SFTP are available, if supported by cURL on the store server. You can provide the address or server, path, and login details if required. Downloading requires the cURL extension; sources pointing to private or local addresses are rejected. The integration consists of downloading a CSV file, not supporting any warehouse API.

### How do I run cyclical stock synchronisation via CRON?

Language: en

You need to configure the file source, enable automation, and add calls to the module address to an external CRON schedule. The module does not create a server-side schedule on its own. The default call downloads the file and starts the actual update, and if an import is already in progress, it continues the started run. The secret can be passed in the address or in the X-Pdcsvqu-Token header; the panel allows you to change it and shows the result of the last call.

### Can CRON only download the file or check the status?

Language: en

Yes. When there is no active import, action=fetch retrieves the file without starting a new update, and action=run starts the import of the already saved file. action=status returns the status without starting the import. The remaining actions first continue the ongoing run. The profile parameter allows you to specify a saved profile belonging to the current target store.

### What is the CSV file size limit?

Language: en

The module limit is 32 MiB, i.e. 33,554,432 bytes, both for manual upload and file download. When uploading, the effective limit may be lower due to server configuration. In the panel, files with a size of at least 512 KiB, i.e. 524,288 bytes, are directed to staged processing. The panel also indicates the absence of an index for the selected identifier and provides a tool to add it. With a large file, the absence of such an index may block the analysis required by the limits until the index is added or the settings are changed.

### Can I close the browser tab during a large import?

Language: en

The step-by-step import started in the panel performs subsequent steps as long as the page remains open. After closing the tab, you can return to the panel and continue the saved process; a manual continue button is also available. An active import can also be continued by CRON. Simply closing the tab does not ensure background operation, and a save failure may leave a partially completed import visible in the history.

### What are supplier profiles used for?

Language: en

A profile saves a named set of settings, including the separator, header, column mapping, identifier, quantity mode, limits, export settings, and the download source with login. Loading a profile replaces the corresponding current settings, including limits. Profiles are stored separately for the target store. They do not save the uploaded file, the store selection, the supplier password, or the CRON secret.

### Do the profiles automatically switch the passwords of different providers?

Language: en

No. The password is stored in the current automation settings and does not belong to the profile. After changing the provider, the login details should be checked; profiles do not provide automatic switching of separate passwords. When CRON is called with a profile, the module checks whether the current password matches the information saved with the profile and may refuse to download the file if the data does not match.

### Does the module send an update report by email?

Language: en

Yes, after enabling notifications. The message is sent after the update has been completed, not after the simulation. You can specify the recipient's address or leave the field empty to use the store's email address. An available report smaller than 2 MiB is attached as a CSV; a report of at least 2 MiB must be downloaded from the panel linked in the message. Sending uses the PrestaShop mail configuration.

### Can I export current stock levels to CSV?

Language: en

Yes. The export includes a selection of products or combinations, shop, identifier, and separator. The generated file contains the header, identifier, and quantity in the positions resulting from the saved mapping; the remaining places in this layout remain empty. Items without a value for the selected identifier are omitted. The product export may also include the total stock levels of products with combinations; for subsequent updates of individual variants, the export and import of combinations are used.

### How can I re-import a file exported by the module?

Language: en

The separator, mapping, identifier, item type, and shop must match, and header skipping must be enabled. If the goal is to restore quantities from an export, stock setting must be selected and order subtraction disabled; adding would increase current quantities by the numbers from the file. Active limits may still block changes. A CSV export does not replace a snapshot of a specific run or a full database backup.

### How does the module work in PrestaShop multistore?

Language: en

You can indicate the target import store and the store whose data is to be exported. With separate stock levels, the save applies to the selected store. If the group shares stock levels, the module saves the group's shared stock, which affects stores using the same quantities. The module's current configuration is shared across the installation, while supplier profiles are saved separately for the target store.

### Can re-importing a file with the same name be blocked?

Language: en

Yes. In manual file handling, you can disable permission for a repeated name. The module checks the history of actual imports for the target store; simulations and entries originating from CRON do not constitute the basis for this block. This is a file name check, not a comparison of its contents. Thanks to this, CRON can handle the supplier's recurring files with a fixed name.

### Does the import create stock movements and trigger other modules that react to quantity changes?

Language: en

Bulk save does not create stock\_mvt entries and does not trigger the actionUpdateQuantity hook. The module updates the available quantity, recalculates the physical quantity taking into account the existing reserved quantity and the sum of combinations. It cannot be assumed that the import will trigger notifications or integrations of other add-ons expecting this very hook or stock movement. This is not a warehouse documents system.

### Does the module create new products or update prices and descriptions?

Language: en

No. It works on existing products and combinations and updates their quantities. It does not create new product pages or variants and does not import prices, discounts, descriptions, photos, or identification codes. If, for an existing item, a stock entry is missing in the target shop scope, it may create such an entry; this does not mean creating a product.

### Why is the older report or the restore button no longer available?

Language: en

Reports and exports older than 30 days are deleted during the file cleanup performed by the module; the currently selected source file is excluded from this cleanup. Restore snapshots have a separate retention policy defined by the number of most recent runs. Therefore, the history entry itself does not guarantee the availability of the report and previous quantities. Uninstalling the module removes its files and history data, but does not revert the saved product states.

### Which versions of PrestaShop and PHP does the module documentation indicate?

Language: en

Version 2.0.0 declares compatibility with PrestaShop from 1.7.6.0 to the 9.x series, and the documentation indicates PHP 7.0–8.5. PHP must also be matched to the requirements of the specific PrestaShop version; the stated ranges do not mean that any store version can be combined with any PHP version. Downloading from the supplier requires cURL, and SFTP additionally requires support for this protocol. Manual handling of the module takes place in the administration panel and requires permissions to edit product statuses.


## Customer reviews

- Average rating: 5.00/5
- Public reviews: 3
- Source: iqitreviews
