
Nova Poshta Premium — a Nova Poshta module for OpenCart 2.3, 3.x and 4.x
Nova Poshta module for OpenCart 3 and 4: branch selection in the cart, automatic waybill creation, a city cache. Pro — cash on delivery, return waybills, auto statuses, webhooks.
- Compatibility
- OpenCart 2.3.0.x, 3.0.2 – 3.0.5.0 and 4.0.2 – 4.1.x
- PHP
- 8.1 or newer
- Version
-
v1.2.29 (OpenCart 4)
v1.3.15 (OpenCart 3.x)
v1.3.12 (OpenCart 2.3) - Licence
- two sites, lifetime
- Trial
- 7 days, no card, one per site
- Updated
- 25 October 2026
The module in action — 39 sec
Clear even without sound: Ukrainian subtitles
What Free has,
and what Pro adds
The free version works with no time limit. Pro adds the rest of the features in the table.

The trial starts when you ask
A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — two sites
Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. For studios — keys for 5 or 25 sites, or unlimited.
Technical requirements
OpenCart 4.0.2 – 4.1.x (4.2+ also works) — or a separate build for OpenCart 3.0.2 – 3.0.5.0 or OpenCart 2.3.0.x
PHP 8.1+ (tested on 8.5 — protection against new deprecation warnings inside JSON endpoints); the OpenCart 2.3 build runs on PHP 5.6 and newer
MySQL 5.7+ / MariaDB 10.3+
A Nova Poshta API key — free in your account: my.novaposhta.ua → Settings → Security → API
One registered sender profile in the Nova Poshta business cabinet — most merchants already have one (without it, Nova Poshta doesn’t allow waybills to be created from any source)
Running on our test stands
OpenCart 4.1.0.3 · oc.catcode.com.ua
OpenCart 2.3.0.2 · oc23.catcode.com.ua
Version history
The «Nova Poshta delivery» block header now shows the Nova Poshta sign instead of a truck icon.
Simple checkout support.
The store no longer goes down with the Nova Poshta API.
All versions (24)
A branch list that arrives after the customer has started typing the branch number now shows up in the open menu right away.
Fixed a licence module error on the OpenCart storefront.
CatCode One Page Checkout: the widget sometimes did not appear — Nova Poshta ticked, but no city and branch selector.
The hidden address form no longer gets the dummy postcode «00000».
The order region is now set by the server.
The module now also works on the one-page checkout (CatCode One Page Checkout).
The API key and the licence key in the settings are now encrypted with AES-256 and an HMAC check instead of XOR.
Fixed creating a return waybill.
Calculating cost via the Nova Poshta API is now a separate option and is disabled by default.
Fixed a fatal error in the shipping-method calculation.
Fixed the tools in the module settings working before the first save.
Fixed city search on stores where OpenCart runs on the PDO database driver (DB_DRIVER = pdo).
Fixed city search on hosting where the PHP mbstring extension isn’t enabled.
Minor admin-panel fixes and updated screenshots.
A separate build for OpenCart 3.0.2 – 3.0.5.0 — a full port of the 4.x version (non-namespaced classes, OC3 events, a Bootstrap 3 admin panel).
Customisable checkout-block appearance.
Production-ready release: the licence is checked on the CatCode server, plain-language localisation with no jargon, a merge fix in the save handler.
Cash on delivery (BackwardDelivery + payout sync), return waybills via AdditionalServiceGeneral.save with the reason “refusal to receive”, Latin → Cyrillic transliteration of the…
City and branch cache: the np_cities + np_warehouses tables, a weekly syncCities cron, a lazy warehouse cache with a 7-day TTL.
Actual waybill creation: setting up the Counterparty sender in the admin panel + a two-step createTTN (Counterparty.save → InternetDocument.save).
First full MVP: an install hook creating database tables, a storefront picker in the cart, a draft waybill on a new order, an hourly status cron, a webhook system, API-key encryption via…
Frequently bought with Nova Poshta Premium
4 modules in one order — 40% cheaper than separately


LiqPay — Card Payments for OpenCart 2.3, 3.x and 4.x

Telegram notifications and Viber/SMS for customers for OpenCart

Abandoned Cart Recovery for OpenCart 2.3, 3.x and 4.x
Full module description
Nova Poshta Premium is a module for OpenCart 2.3, 3.x and 4.x that connects your store to Nova Poshta in 10 minutes. The customer picks a city and branch right in the cart, and the waybill is created automatically when the order moves to the status you chose in the settings (for example, “Processing”). No third-party iframes, no rewriting the checkout, no daily copying of data into the Nova Poshta account.
How it works, step by step
- The customer on the site chooses Nova Poshta as the shipping method, searches for a city, and picks a branch.
- The order is created in your OC admin panel with the chosen branch saved against it.
- You move the order to the trigger status chosen in the module settings under “Create TTN when order status changes to” (for example, “Processing”; until a status is chosen, no waybill is created automatically).
- The module automatically calls the Nova Poshta API: it creates the recipient as a private individual (from your checkout — name and phone), then prints the waybill. The number is written to the order.
- With Premium: it polls Nova Poshta hourly for the status of every active shipment, gets the payout number for cash-on-delivery orders, and sends a webhook to your CRM/ERP on every status change.
Under the hood
- When the Nova Poshta API stops answering, your store keeps selling: cities and branches come from the saved directory, the price is Nova Poshta’s last tariff, and waybills are queued and created automatically once the API is back. On a test stand with a hung API, checkout took 46 s before this update and about 1 s after it (up to 7 s for the first buyer at the start of an outage).
- Native for OpenCart 4.x — PSR-4 namespaces, the events API, Twig. Not OCMOD, not XML mods. Compatible with future OC releases with no rewrite.
- The API key is encrypted in the database — AES-256-CBC with an HMAC check, using an encryption key derived from the store’s install path and database name. The licence key is encrypted the same way. If someone dumps the database, the key can’t be read in plain text.
- A city and branch cache with lazy refresh — a full weekly sync via cron, lazy loading of branches for requested cities (7-day TTL). Autocomplete in the checkout responds in 44 ms instead of 211 ms for a direct API call.
- A two-stage waybill creation: first Counterparty.save for the recipient (a PrivatePerson with a phone number in Nova Poshta’s format), then InternetDocument.save. Works for every sender type — private individual, sole proprietor, LLC.
- HMAC-signed webhooks with retries: 5/10/20/40 min exponential backoff, up to 4 attempts. sha256 signatures, an
X-NP-Signatureheader.
How to install
- Download
nova_poshta_premium.ocmod.zipvia Extensions → Installer in your OC admin panel. For OpenCart 3.0.x, use thenova-poshta-premium-oc3-1.3.14.ocmod.zipbuild (available in the product’s downloads); for OpenCart 2.3, usenova-poshta-premium-oc2-1.3.11.ocmod.zip. - Activate it in the list, then open the settings → click “Complete installation” (this creates the database tables, events and cron tasks).
- Paste in the API key from your Nova Poshta account, click “Test connection” — you’ll see “Connection working”.
- Choose your city and branch → load the sender profile → save.
- Done — a block for choosing Nova Poshta delivery appears in the cart.
- For Premium features: paste in the licence key from the e-mail after payment → “Activate licence”.
Questions
about the module
Didn't find the answer? Message us on Telegram and we'll reply within a business day.
Will my checkout be rewritten?
No. The module inserts its own block via an event in the footer, without changing your theme. If you ever decide to remove the module, the checkout stays exactly as it was.
What happens to the data after removing the module?
The shipment log, the city cache and already-created waybills stay in the database (in case of an audit). They can be cleared manually via SQL — see the instructions in the documentation.
Does the licence need renewing?
No. For OpenCart the licence is perpetual: one payment, and the Pro features stay with you. Only the 7-day trial ends — after it Pro switches off and the free version keeps working.
Can I move the key to another domain?
Yes. In the settings, click "Deactivate licence" on the old domain — the slot frees up, and you can paste it in on the new one.
Do I need a separate app in Nova Poshta for this module?
No. Just the API key from the standard business cabinet. It's free for every Nova Poshta customer.
Will there be support for OpenCart 4.2 / 5.0?
Yes. For now we maintain compatibility with 4.0.2–4.1.x (that's 90% of current stores). As soon as 4.2 / 5.0 reach stability, we'll add them to the test matrix. Updates are free for all customers with an active licence — no extra charges.
- 5 ★ 1
- 4 ★ 0
- 3 ★ 0
- 2 ★ 0
- 1 ★ 0
Олексій
Перший раз бачу безкоштовну версію з таким функціоналом ДЯКУЮ!!!!
Дякуємо за відгук, Олексію! Безкоштовна версія й далі отримуватиме оновлення — якщо чогось бракуватиме, напишіть у вкладці «Питання», врахуємо.
No questions yet. Ask one — we answer within 24 hours.
Not quite what you are looking for?
We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.
Order a custom module
Buying the module
—



