Get in touch
Import/Export

Supplier Price List Import for OpenCart 2.3, 3 and 4

Оновлення цін і залишків з прайсу постачальника: Excel, CSV, XML/YML з файлу або за посиланням, націнка рівнями, план «було → стане» і відкат будь-якого запуску.

Download for free
Version
v1.0.0 (OpenCart 4)
v1.0.0 (OpenCart 3.x)
v1.0.0 (OpenCart 2.3)
Compatibility
OpenCart 2.3.0.x, 3.0.2 – 3.0.5.0 та 4.0.2 – 4.1.x
Supplier Price List Import for OpenCart 2.3, 3 and 4

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.

Automatic detection of price list columns: SKU, price, stock
Price list columns are detected automatically, with the first rows of the file shown alongside

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.

Import plan with a 'before → after' table before writing to the catalogue
Import plan: how many rows were found, which prices and stock levels will change

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.

@catcode_support

Not quite what you are looking for?

We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about your task and we will prepare an estimate.

Order a custom module