Supplier Price List Import for OpenCart 2.3, 3 and 4
Оновлення цін і залишків з прайсу постачальника: Excel, CSV, XML/YML з файлу або за посиланням, націнка рівнями, план «було → стане» і відкат будь-якого запуску.
What each licence includes
| Feature | Free | Pro |
|---|---|---|
| Price list in XLSX, CSV (UTF-8 and windows-1251), XML and YML | ✔ | ✔ |
| Upload as a file or fetch automatically by URL | ✔ | ✔ |
| Automatic column detection from the price list header | ✔ | ✔ |
| Product matching by SKU, model or barcode | ✔ | ✔ |
| Tiered markup from the supplier price plus a fixed amount | ✔ | ✔ |
| Price list currency with the shop's rate or your own | ✔ | ✔ |
| Rounding to the hryvnia, to a ten, or …,99 / …,95 / …,50 | ✔ | ✔ |
| Text stock values: "in stock", "on order", "none" | ✔ | ✔ |
| Protection from suspicious price changes (percentage limit) | ✔ | ✔ |
| A "before → after" plan before writing to the catalogue | ✔ | ✔ |
| Batch processing — files with tens of thousands of rows | ✔ | ✔ |
| Products missing from the price list: zero out or disable within a manufacturer or category | ✔ | ✔ |
| Log of every change and one-click rollback of any run | ✔ | ✔ |
| Multiple suppliers with their own rules | — | ✔ |
| Automatic scheduled updates via cron | — | ✔ |
Supplier Price List Import updates prices and stock in OpenCart from a file sent by the supplier — Excel, CSV or XML/YML, from your computer or by URL. There are three builds: for OpenCart 4.0.2 – 4.1.x, 3.0.2 – 3.0.5.0 and 2.3.0.x; the functionality is identical, only the package differs.
Any supplier file
The module reads XLSX (ordinary Excel, no need to re-save as CSV), CSV in UTF-8 or windows-1251 with any delimiter, and also XML and YML — the format Rozetka, Prom and most Ukrainian distributors use for price feeds. The delimiter, encoding and format are detected automatically; the Excel sheet, the number of header rows, and the product tag in XML can be set manually if needed.
A price list can be uploaded as a file or given as a URL — the module then fetches it from the supplier’s site itself on every run.

Columns are detected on their own
The module reads the file’s header and finds the SKU, price and stock columns itself: it recognises “Артикул”, “Код товара”, “Цена закупочная”, “Наличие”, “vendorCode”, “stock_quantity” and dozens of other spellings. Any mapping can be overridden manually — the first rows of the file are shown alongside so you can see exactly what will land in the shop.
A product is matched by SKU (or MPN or model), separately by model, or by barcode (EAN, UPC, JAN, ISBN) — whichever field is actually filled in in your catalogue.
The price is calculated by your rules
The supplier’s price doesn’t land in the shop directly. It’s first converted from the price list’s currency using the shop’s rate, or a rate you specify. Then a tiered markup applies: up to 500 UAH — 40%; from 500 to 2,000 — 25%; above that — 15% plus a fixed amount, as many tiers as you need. Then rounding: to the nearest hryvnia, to the nearest ten, or to a familiar “…,99”, “…,95”, “…,50”. There’s also a price floor below which the module never goes.
Stock isn’t only numbers: “in stock”, “on order”, “none” are converted into a quantity via your own mapping table. You can multiply the stock by a coefficient, cap it at a ceiling, and automatically disable a product once stock hits zero.
Protection from a broken price list
A supplier uploads prices in kopecks by mistake, or shifts a column — and the whole catalogue goes off the rails. To stop that happening, set a percentage change limit: rows where the price changes more than allowed aren’t written, and instead appear in a separate “Suspicious change” list. You look at them and decide yourself.
Plan first, then write
The module never writes to the catalogue immediately. First it reads the file, matches it against products, and shows a full plan: how many rows were read, how many were found in the catalogue, which prices and stock levels will change — a “before → after” table for each product. Rows with unknown codes, suspicious changes, errors, and rows with no change are shown separately.
Only after your confirmation is the plan applied — in batches, so 40,000 rows don’t depend on whether a single request survives the server timeout.

Products missing from the price list
If a supplier no longer carries an item, it can be automatically zeroed out by stock, disabled, or both. The rule applies only within the chosen manufacturer or category — that’s exactly why one supplier’s partial price list doesn’t disable the whole catalogue.
Log and rollback
Every run is stored: when, from which file, how many rows were read and how many products were updated. All changes are recorded field by field — old and new price, old and new stock — so any run can be rolled back with one click to the values it had before. This isn’t “restore a database backup” — it’s an exact rollback of precisely the products the import touched.
Automatic updates on a schedule
A supplier profile with a price-list URL can be put on a schedule — hourly, every 6 hours, daily or weekly. The module fetches the file itself, calculates prices by your rules and updates the catalogue; the result of each run stays in history with the same rollback available. The run happens at a cron URL with a secret token, so no one else can trigger the import.
What’s included in the licence
The licence is issued for one domain and is perpetual. A single purchase covers all three OpenCart branches — 2.3.0.x, 3.0.2 – 3.0.5.0 and 4.0.2 – 4.1.x — so moving the shop to a new version costs nothing extra. The code is open, ionCube isn’t required, and no core files are changed.
The free version is fully functional: it reads the same formats, shows the same plan and the same log, but updates up to 50 rows per run and manages one supplier with no schedule.
Technical requirements
OpenCart 2.3.0.x, 3.0.2 – 3.0.5.0 or 4.0.2 – 4.1.x, PHP 7.0 – 8.3, the zip and xml extensions enabled, cURL for downloading a price list by URL. Installation is standard: Admin → Extensions → Installer → Upload, then activation in the list of modules.
Why a shop needs this
A supplier’s price list is almost always someone else’s Excel file with arbitrary columns, arriving once a week and slightly different each time. Reconciling such a file with the catalogue by hand takes hours and ends up with pricing mistakes.
The module takes over this work: it recognises the columns itself, calculates prices by your rules, and shows a plan of changes before anything is written.
How it works, step by step
1. You hand over the supplier’s file — exactly as it arrived.
2. The module detects the columns itself: SKU, name, price, stock.
3. The price is calculated by your rules: markup, rounding, separate coefficients per category.
4. You get a plan: what will change, by how much and for how many products — and only then do you trigger the write.
5. Products missing from the price list are handled by a separate rule: zero out stock, hide, or leave untouched.
Price
The licence costs 1,790 UAH, for one domain. The licence is perpetual: you pay once, with no annual fees.
Under the hood
A snapshot is taken before writing, so any run can be rolled back — this is exactly the insurance against a broken price list a supplier sent with zeros instead of prices.
Import runs in batches, so a large file doesn’t bring the shop down with a timeout, and on a schedule it can run overnight without you needing to be there.
How to install
1. Upload the archive via “Extensions → Installer” and install the module.
2. Upload one price list and check that the columns were detected correctly.
3. Set the price rules and behaviour for products outside the price list.
4. Look over the plan of changes, and only then trigger the write.
Version history
1.0.0 — import of price lists in any supplier format, automatic column detection, price calculation rules, a preview plan of changes, handling of products outside the price list, log and rollback of a run, scheduled import, builds for OpenCart.
Frequently asked questions
Do I need to convert Excel to CSV?
No. The module reads .xlsx directly, including formulas (it takes the calculated value) and multiple sheets.
The supplier sends the price list in windows-1251 — will it come out garbled?
No, the encoding is detected automatically, and can be set manually if needed.
What happens if there's a mistake in the price list and prices are 100 times too low?
Turn on the percentage change limit — such rows won't be written, they'll land in the "Suspicious change" list for review.
Can an import be rolled back?
Yes. Every run stores the old and new values for each field; a rollback restores exactly the products that import touched.
Does the module create new products?
No, it updates prices and stock for existing ones. This is a deliberate choice: creating product cards without descriptions and images damages the catalogue and SEO.
Can the price list update automatically every day?
Yes, in Pro: give it the price list URL and a schedule, and the module fetches the file and updates the catalogue on its own.
Does one licence cover both 3.x and 4.x?
Yes, the licence includes builds for 2.3, 3.x and 4.x — moving the shop to a different version costs nothing extra.
Questions about the module?
Message us on Telegram — we reply within the working day. We will help with setup, compatibility and key activation.
No reviews yet. Be the first — right below.
Leave a review
Reviews are moderated before publication, which usually takes up to 24 hours.
No questions yet. Ask one — we answer within 24 hours.
Ask a question
We usually reply within 24 hours during working hours.
Buying the module
—