Get in touch
  • OpenCart
  • Shipping
  • v1.2.29

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.

Download Free
Pro · lifetime licence The more sites, the less each one costs
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
Or all 173 Pro modules with All Access — 4 990 ₴ / year

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.

Feature Free Pro
Connects to Nova Poshta with an API key ✔ ✔
City search and branch selection in the cart ✔ ✔
A local city and branch cache — instant autocomplete ✔ ✔
Real-time rate calculation by weight and order value ✔ ✔
Automatic waybill creation on an order-status change ✔ ✔
A shipment log in the admin panel ✔ ✔
Ukrainian and English localisations, Latin → Cyrillic transliteration of the recipient's name ✔ ✔
Customisable cart-block appearance — accent colour, rounding, theme (auto/light/dark) ✔ ✔
Cash on delivery — automatically adds BackwardDelivery to the waybill, syncs payouts from Nova Poshta into orders — ✔
One-click return waybill (via AdditionalServiceGeneral) — ✔
Auto-updating statuses — an hourly cron syncs shipment statuses from Nova Poshta with no input from you — ✔
Webhook notifications on status change (HMAC-SHA256, retries with exponential backoff) — for CRM/ERP/Slack integration — ✔
Multiple sender warehouses (multi-warehouse) — chosen automatically by zone/product category — ✔

What it looks like

Nova Poshta Premium — choosing the city and branch at the OpenCart checkout
The buyer picks the city and branch right in the checkout. The choice stays visible in the fields themselves, with no extra strips.
Nova Poshta Premium — the branch list with the chosen branch highlighted
Clicking a filled field opens every branch of the city with the chosen one highlighted. Start typing a number and the list narrows.
Nova Poshta Premium — module settings in the OpenCart admin
Basic Nova Poshta delivery works without a licence: API key, sender city and branch, automatic waybill creation.

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

Version history

v1.2.29 OC 4.x v1.3.15 OC 3.x v1.3.12 OC 2.3 Current 25 October 2026

The «Nova Poshta delivery» block header now shows the Nova Poshta sign instead of a truck icon.

v1.3.14 OC 3.x v1.3.11 OC 2.3 23 October 2026

Simple checkout support.

v1.2.28 OC 4.x v1.3.13 OC 3.x v1.3.10 OC 2.3 6 October 2026

The store no longer goes down with the Nova Poshta API.

All versions (24)
v1.2.27 OC 4.x v1.3.12 OC 3.x v1.3.9 OC 2.3 24 September 2026

A branch list that arrives after the customer has started typing the branch number now shows up in the open menu right away.

v1.2.26 OC 4.x v1.3.11 OC 3.x v1.3.8 OC 2.3 24 September 2026

Fixed a licence module error on the OpenCart storefront.

v1.2.25 OC 4.x 23 September 2026

CatCode One Page Checkout: the widget sometimes did not appear — Nova Poshta ticked, but no city and branch selector.

v1.2.23 OC 4.x 23 September 2026

The hidden address form no longer gets the dummy postcode «00000».

v1.2.22 OC 4.x v1.3.9 OC 3.x v1.3.6 OC 2.3 23 September 2026

The order region is now set by the server.

v1.2.19 OC 4.x v1.3.7 OC 3.x v1.3.4 OC 2.3 22 September 2026

The module now also works on the one-page checkout (CatCode One Page Checkout).

v1.3.6 OC 3.x v1.3.3 OC 2.3 21 September 2026

The API key and the licence key in the settings are now encrypted with AES-256 and an HMAC check instead of XOR.

v1.2.17 OC 4.x v1.3.1 OC 3.x v1.3.1 OC 2.3 14 August 2026

Fixed creating a return waybill.

v1.2.16 OC 4.x v1.2.8 OC 3.x 3 August 2026

Calculating cost via the Nova Poshta API is now a separate option and is disabled by default.

v1.2.7 23 July 2026

Fixed a fatal error in the shipping-method calculation.

v1.2.5 20 July 2026

Fixed the tools in the module settings working before the first save.

v1.2.4 17 July 2026

Fixed city search on stores where OpenCart runs on the PDO database driver (DB_DRIVER = pdo).

v1.2.3 17 July 2026

Fixed city search on hosting where the PHP mbstring extension isn’t enabled.

v1.2.2 9 July 2026

Minor admin-panel fixes and updated screenshots.

v1.2.1 29 June 2026

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

v1.2.0 23 June 2026

Customisable checkout-block appearance.

v1.1.0 24 May 2026

Production-ready release: the licence is checked on the CatCode server, plain-language localisation with no jargon, a merge fix in the save handler.

v1.0.c–f May 2026

Cash on delivery (BackwardDelivery + payout sync), return waybills via AdditionalServiceGeneral.save with the reason “refusal to receive”, Latin → Cyrillic transliteration of the…

v1.0.b May 2026

City and branch cache: the np_cities + np_warehouses tables, a weekly syncCities cron, a lazy warehouse cache with a 7-day TTL.

v1.0.a May 2026

Actual waybill creation: setting up the Counterparty sender in the admin panel + a two-step createTTN (Counterparty.save → InternetDocument.save).

v0.7 May 2026

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

“Store starter” bundle Nova Poshta Premium LiqPay Telegram notifications and Viber/SMS for customers Abandoned Cart Recovery Need more — all 173 modules in All Access for 4 990 ₴.
3 790 ₴ lifetime instead of 6 260 UAH bought separately
Buy the bundle →

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

  1. The customer on the site chooses Nova Poshta as the shipping method, searches for a city, and picks a branch.
  2. The order is created in your OC admin panel with the chosen branch saved against it.
  3. 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).
  4. 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.
  5. 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-Signature header.

How to install

  1. Download nova_poshta_premium.ocmod.zip via Extensions → Installer in your OC admin panel. For OpenCart 3.0.x, use the nova-poshta-premium-oc3-1.3.14.ocmod.zip build (available in the product’s downloads); for OpenCart 2.3, use nova-poshta-premium-oc2-1.3.11.ocmod.zip.
  2. Activate it in the list, then open the settings → click “Complete installation” (this creates the database tables, events and cron tasks).
  3. Paste in the API key from your Nova Poshta account, click “Test connection” — you’ll see “Connection working”.
  4. Choose your city and branch → load the sender profile → save.
  5. Done — a block for choosing Nova Poshta delivery appears in the cart.
  6. 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.

@catcode_support Setup, compatibility, activation
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.

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