Open a Nova Poshta office in a store where waybills are created by hand, and see how much time one invoice takes. The manager transfers the customer's full name, phone number, city, department from the order, weighs it, writes down the declared value. Three to four minutes per package, if they don't make any mistakes. And they make mistakes regularly: one confused digit in the phone number, and the customer doesn't receive an SMS, the package sits until it's returned, you pay for return delivery. With twenty shipments a day, such "minor routine" eats up two hours of work time daily, and that's not even counting fixing errors.
OpenCart out of the box doesn't even see this problem. It knows about fixed rates, weight-based delivery, and a few other abstract methods written for the Western market about fifteen years ago. Nova Poshta, Ukrposhta, or Rozetka aren't there and never will be. So the question isn't "whether to install a module," but which one exactly: a toy that draws the carrier's name on checkout, or a tool that closes the entire delivery workflow cycle.
What does a "full-featured" delivery module actually mean
There are plenty of free "Nova Poshta for OpenCart" modules on the internet. Nine out of ten do one thing: show a dropdown list of cities and departments, often from a static file that was last updated who knows when. The customer selects a department that closed half a year ago, and the store accepts the order as if nothing happened.
A full-featured module closes the entire chain:
- Calculate delivery cost and time through API directly on checkout, with live rates, not a "by agreement" figure.
- Select city and department from an up-to-date database that updates automatically via cron.
- Create a waybill in one click from the order card: the module itself pulls the customer's name, phone, address, weight, declared value.
- Print waybills and labels in batches without logging into the carrier's office.
- Automatic tracking: the package arrived at the department, the order status changed, the customer received a notification. Without human involvement.
Next, I'll review three modules from the opencartcode.com marketplace that work exactly this way: Nova Poshta API, Ukrposhta API and ROZETKA Delivery. All three from one developer, on a shared architecture, so they configure and behave equally predictably.
Nova Poshta API: the deepest integration of the three
The "Nova Poshta API" module has been developed the longest and is functionally the thickest of the three. The customer at checkout gets all three delivery types: department, parcel locker, and courier to address, with search by city and department by name, address, or number. Cost is calculated via API, so the figure on checkout matches what the customer will actually pay, including packaging and cash on delivery. The estimated delivery time in days is shown separately.
For the manager, the main action happens in the order. A button next to the order opens a waybill form that the module fills in itself: recipient, phone, city, department, weight, dimensions, declared value. All that's left for the person is to look it over and click "create". After that, registers are available, downloading waybills and labels as PDF in batches for multiple orders, a list of all waybills right in the admin with filters by shipment date, type, and number.
There are small details that show the module was written for real shipments, not screenshots: automatic packaging type detection, dimension tolerances, department filtering by weight and size (so a customer with a washing machine in their cart doesn't select a parcel locker), automatic checking of the contact person in the recipient database with creation of a new one if needed.
Cron tasks close the routine: updating references, cities, and departments on schedule, tracking shipments with order status changes and sending notifications using your multilingual templates with order, product, and waybill macros. A separate nice bonus for those working with OCTemplates: there's automatic or convenient manual SMS sending right from the orders page, and the templates additionally output links and waybill information from these modules both to the customer and administrator in orders. Reminders about uncollected packages are here too, and that's direct money: each return from a department costs you return delivery.
Current version 4.1.1 from July 17, 2026.
Ukrposhta API: where the economics work out better
Ukrposhta is often discounted, and unjustly so. For stores with light and cheap goods, it's mathematically more profitable: accepts packages from 250 grams, doesn't count volumetric weight (only actual weight plus longest side), and a network of 11,000+ points reaches places other carriers don't. Plus Ukrposhta itself gives a 5% discount on shipments to those working through API, so the module on regular shipments pays for itself fairly quickly.
The "Ukrposhta API" module gives the customer four delivery options: Express and Standard, each to a department or courier to address. Department search works both by city name and by postal code, which is more natural for Ukrposhta. Cost calculation goes through API, and in case of its unavailability, a backup tariff calculation is provided, which can be configured manually. A small thing, but it's exactly these small things that save checkout when the carrier's API goes down.
Work with waybills is structured the same as in the Nova Poshta module: auto-filling the form from the order, downloading recipient data by phone number, PDF documents, cash on delivery with the option to choose the transfer method, tracking via cron with status changes and notifications.
One thing that people stumble on when configuring: Ukrposhta issues not one key but three (eCom Bearer, StatusTracking Bearer, and User token), and the module asks for all of them. This is a feature of Ukrposhta itself, not the module, but be prepared that getting API access from the national operator will take longer than installing the module itself.
Current version 2.3.1 from July 15, 2026.
ROZETKA Delivery: a fresh channel worth trying
The youngest of the three integrations, and the service itself is the youngest: the Rozetka network has over 400 departments. But the terms for partners shipping from their own sites are aggressive: fixed 49 UAH for delivery, free parcel storage at Rozetka store for 10 days, and free return to pickup point if the customer refuses. For comparison: other carriers charge return tariff for uncollected parcels.
The "ROZETKA Delivery" module implements all the API functionality that Rozetka opened at the time of publication: waybills with creation, deletion, return, and archiving, labels for printing, tracking with status changes, directories with choice of carriers whose departments to show customers.
An honest limitation you should know about before buying: delivery to departments only. There's no courier or address delivery in this integration, the customer selects city and department. For most products this is enough, but if your model relies on courier delivery, Rozetka will be a supplement to Nova Poshta, not a replacement.
Current version 1.2.0 from July 18, 2026.
Pitfalls to know about before installation
ionCube Loader. All three modules are encoded and require ionCube Loader version 5.0 or higher. On normal hosting this is a matter of one checkbox in the control panel or is already enabled, but on cheap plans the extension might be cut off. Check phpinfo() before buying, not after.
max_input_vars. The modules have huge configuration forms: delivery methods, cron-status dependencies, notification templates. If PHP has the default limit max_input_vars = 1000, some fields will silently disappear when saving, and you'll be hunting for "disappearing settings" without understanding what's wrong. For OpenCart I keep a minimum of 10000, and not just for these modules.
Cron needs to be really configured. Auto-tracking, status changes, and department database updates work through cron commands with a security key. You install the module and don't add tasks to the scheduler — you get an ordinary delivery calculator without automation. A classic mistake: a person buys a module for tracking, and tracking "somehow doesn't work".
Custom checkouts and templates. Modules are compatible with all templates, but the wording "additional adaptation to the checkout module may be required" wasn't written for decoration. If checkout is heavily modified, budget for adaptation (on the marketplace it costs $13.50) right away.
Who doesn't need these modules
If you have three to five orders a week, the manager creates waybills by hand in two minutes, and automation won't save anything here. Likewise, modules are unnecessary for stores that sell exclusively through marketplaces or operate on pickup only. The breakeven point starts where shipments are daily: then the manager's time, errors in waybills, and uncollected packages turn into real numbers that the module eliminates.
Price, license, demo
Each module costs $29 (regular price $40, currently 28% discount, saving $11). License for one domain with all subdomains, including test sites, so you won't have to pay separately for a dev copy. The price includes lifetime updates and one year of technical support. Installation with configuration ($9) and adaptation to your template and checkout ($13.50) are available for an additional fee.
Before buying, don't be lazy to click around the live demo at shipping.oc-max.com: the admin login and password are demo / demo, both settings and the waybill creation form and the list of waybills are available. Fifteen minutes in the demo will tell you more than any description.
Checklist before launch
- Check for ionCube Loader 5.0+ and cURL library on the hosting
- Raise
max_input_varsto 10000 - Get API keys: Nova Poshta key from the business account; for Ukrposhta — eCom Bearer, StatusTracking Bearer, and User token; Rozetka partner access
- Install the module
- Download references, regions, cities, and departments through the database section
- Fill in sender parameters: contact person, city, sending department
- Configure default shipment parameters: weight, dimensions, declared value, description with macros
- Add cron tasks for database updates and tracking, specify the security key
- Set up dependencies between shipment and order statuses, email/SMS templates
- Create a test order and walk it through from checkout to waybill and label printing
- Check the display of delivery methods in your checkout on mobile