
Bulgaria Couriers: Econt & Speedy for OpenCart — delivery to the address, to an office and to an automat
Econt and Speedy in one shipping module for OpenCart 4, 3 and 2.3 stores in Bulgaria: delivery to the address, to an office and to an automat (Econtomat, Speedy APT), office selection on the stock checkout and on One Page Checkout, waybills, labels, tracking and cash on delivery. Pro — the live courier tariff, automatic and bulk waybills.
- Compatibility
- OpenCart 4.0.2.0+ and 4.1.x (tested on 4.1.0.3 with the PDO database driver and on 4.0.2.3) · OpenCart 3.x (tested on 3.0.5.0) · OpenCart 2.3.0.2 · PHP 7.0+ (tested on 7.0 and 8.3) · stock checkout and CatCode One Page Checkout
- Version
-
v1.0.1 (OpenCart 4)
v1.0.0 (OpenCart 3.x)
v1.0.0 (OpenCart 2.3) - Licence
- one site, lifetime
- Trial
- 7 days, no card, one per site
- Updated
- 26 September 2026
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.
What it looks like

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 — one site
Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. If our server is unreachable, Pro keeps working for 14 more days. For studios — keys for 5 or 25 sites, or unlimited.
Technical requirements
OpenCart 4.0.2.0+ and 4.1.x (tested on 4.1.0.3 and 4.0.2.3; mysqli and PDO database drivers), 3.x (tested on 3.0.5.0) or 2.3.0.2.
PHP 7.0+ — whatever your OpenCart version needs (tested on 7.0 and 8.3). The cURL extension; ZipArchive for bulk labels of both couriers.
Courier accounts: Econt (e-Econt), Speedy (Web API). Switch on one or both.
The buyer’s phone at checkout — both couriers need it.
The EUR currency in the shop with a current rate — for the live tariff and cash on delivery.
Cron: on OpenCart 4 the built-in scheduler (System → Maintenance → Cron Jobs) or the cron URL; on OpenCart 3 and 2.3 the cron URL from the settings once an hour. Without cron the offices are refreshed with the button.
A postcode in the buyer’s address — recommended for delivery to the address: the courier finds the place by it.
Module languages: English and Bulgarian.
Version history
The office list without a query shows the offices of the buyer’s region again on the PDO database driver.
For OpenCart 4.x, 3.x and 2.3: Econt + Econtomats, Speedy + automats; office selection on the stock checkout and on CatCode One Page Checkout; waybills, labels, tracking, cash on delivery,…
Frequently bought with Bulgaria Couriers: Econt & Speedy for OpenCart
4 modules in one order — 40% cheaper than separately


Nova Poshta Premium — a Nova Poshta module for OpenCart 2.3, 3.x and 4.x

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

Telegram notifications and Viber/SMS for customers for OpenCart
Full module description
Bulgaria Couriers: Econt & Speedy for OpenCart is a shipping module for stores in Bulgaria on OpenCart 4, 3 and 2.3. The country’s two largest couriers in one extension: Econt with its offices and Econtomats and Speedy with its offices and APT automats. The buyer picks delivery to the address, to an office or to an automat right at checkout, and the manager creates the waybill, prints the label and sees the parcel status on the order page without opening the couriers’ portals. For WooCommerce there is a separate version — Bulgaria Couriers for WooCommerce — a separate plugin with the same couriers.
What you need. A business account with each courier you switch on: Econt — the e-Econt user and password; Speedy — the Web API user and password. Honestly about testing: Econt was tested live on Econt’s official test environment (demo.econt.com); Speedy — against its official Web API documentation on a test server, because Speedy has no public test environment and gives test access to customers only. Try it on your own Speedy account in the 7-day Pro trial — if the courier answers differently from its documentation, we fix it promptly.
What the buyer sees
The buyer sees the methods of both couriers you switched on, with prices. Choosing delivery to an office opens a panel under the method: the list starts with the offices of their city, the search works in Cyrillic and Latin by city, street or office name (“Sofia” finds “София”). Switching to delivery to the address hides the panel, and their own address stays theirs: the module never writes the office address into the buyer’s fields. Each courier keeps its own chosen office, so switching between Econt and Speedy mixes nothing up.
Try to check out with an office method and no office — the server refuses with an explanation (“Please choose the Econt office or Econtomat.”). On OpenCart 4 that is the payment and confirm step, on OpenCart 3 and 2.3 already the shipping step. While there is no office, the order confirm block on the page is held back with a note that the office is missing. An office chosen earlier never gets into an order with another shipping method. For a Speedy office that takes no payments, the module refuses cash on delivery.
What the admin gets
Settings — Extensions → Extensions → Shipping → Bulgaria Couriers (Econt, Speedy). Tabs for the methods, the two couriers, “Shipments”, “Automation” and “Licence”.
- Four methods in one shipping extension: Econt to the address, Econt to an office or Econtomat, Speedy to the address, Speedy to an office or automat. Shown only for Bulgarian addresses (and, if you wish, only in a chosen geo zone).
- Method price — fixed in the shop’s default currency, free from a products subtotal, the free-shipping coupon works as usual, weight limit per method.
- Currency. Courier tariffs and cash on delivery are in euro (BGN for an old account in leva). If the shop lacks that currency, the settings page warns you: without it amounts are taken 1:1.
- Courier offices in your database. “Download offices” fetches each courier’s offices and automats, then the cron refreshes them daily. The buyer searches your database instead of waiting for the courier API.
- “Save and check the connection” checks the account: for Econt it takes the sender address from the e-Econt profile, for Speedy the contract objects and services.
- Passwords are stored encrypted and never printed in the settings page HTML.
- Phone. Both couriers need the buyer’s phone. OpenCart 4 does not ask for it by default — the module warns about that and switches on “Telephone display” and “Telephone required” in one click.
- The Bulgaria Couriers panel on the order page: weight, number of parcels (more than one with Pro), cash on delivery for the payment methods you ticked, declared value, check before paying, creating the waybill.
- PDF label (Speedy — A4 or A6, Econt — its own PDF), status refresh and cancel — buttons in the same panel.
- Change the office by hand if the buyer asks — by the office code.
- A waybill for any order: even if the buyer chose another delivery, pick the courier in the panel.
- An order without a phone gets a phone field in the panel: it is saved to the order together with the waybill.
- The buyer gets an e-mail with the waybill number and the courier’s tracking link, and a line in the order history of their account.
- Waybill list under Sales: orders with courier, office and parcel state.
- Pro: bulk actions — create waybills for the ticked orders, print all labels at once (one PDF or a ZIP), refresh statuses.
- Pro: automation — the waybill is created by itself when the order reaches the chosen status; statuses are checked hourly, changes go into the order history, and a delivered order can get a chosen status.
How it works — step by step
- Setup. Accounts of the couriers you need, “Save and check the connection”, office download, then methods and prices on the “Delivery methods” tab.
- Checkout. A buyer with a Bulgarian address sees the methods of the couriers you switched on. For an office method they pick the office in the panel; with Pro the price comes from the courier tariff and is recalculated after the office and the payment method (cash on delivery) are chosen.
- Server check. With an office method, checkout without an office does not go through. For a Speedy office without payments, an order with cash on delivery does not go through either.
- Order. The office is written to the order on the server only if the shipping method is that courier’s office method: the order’s shipping address becomes the office address, the region the office’s region. The buyer’s address book stays theirs.
- Waybill. The manager creates it on the order page (with Pro — automatically on a chosen status or in bulk from the list) and prints the label. The buyer gets an e-mail with tracking.
- Status. “Refresh status” asks the courier; with Pro statuses sync hourly — via the OpenCart 4 cron or the cron URL from the settings.
- Cancel. A waybill the courier has not picked up yet is cancelled from the order page.
Under the hood
- The office lives on the server only. The picker script never reads or writes the buyer’s address fields. The office goes into the session per courier (the code only, the data comes from the module table), and into the order only when the shipping method is that courier’s office method; otherwise the link is cleared.
- The no-office check sits on saving the payment method and on confirm in OpenCart 4; on the shipping, payment and confirm step events in OpenCart 3; on the same steps via a modification (install.xml) that the module registers by itself in OpenCart 2.3.
- A live tariff without surprises (Pro). If the courier answers zero, an error or not within a few seconds, the method shows your fixed price, not “free”. The price in the method list is the one that goes into the order.
- One library for three builds, PHP 7.0-compatible code. Own tables for offices, order links, waybills and service data.
- Passwords — AES-256-CBC with HMAC, no XOR.
- A Pro gate that does not brick: when the trial ends only the Pro features stop; delivery and waybills keep working.
- Uninstall removes events and cron jobs; the module tables and a copy of the settings stay for a reinstall.
How to install
- OpenCart 4: Extensions → Installer → upload
cc_bgcourier.ocmod.zip(do not rename the archive) and press “Install”. OpenCart 3: Extensions → Installer →cc_bgcourier-oc3.ocmod.zip, then Extensions → Modifications → “Refresh”. OpenCart 2.3: copy the contents of theupload/folder fromcc_bgcourier-oc2.ocmod.zipto the store root (FTP or the hosting file manager) — the 2.3 Installer does not copy files without FTP set up. - Extensions → Extensions → Shipping → Bulgaria Couriers (Econt, Speedy) → “Install”, then “Edit”.
- OpenCart 2.3: Extensions → Modifications → “Refresh”. The module registers its modification itself, and the settings page shows a yellow reminder until “Refresh” is pressed — without it the office check at checkout does not work.
- Fill in the account of each courier you switch on, press “Save and check the connection” and “Download offices”.
- On the “Delivery methods” tab switch on the methods you need and set prices, the free-shipping threshold and the weight limit.
- Place a test order to an office and create the waybill from the order page.
- For Pro: paste the licence key from the e-mail after payment or press “Try Pro free for 7 days” on the “Licence” tab. On OpenCart 3 and 2.3 add the cron URL from the “Automation” tab to the hosting cron, once an hour.
Questions
about the module
Didn't find the answer? Message us on Telegram and we'll reply within a business day.
Do I need contracts with the couriers?
Yes, a business account with each courier you switch on: Econt — the e-Econt user and password (ee.econt.com); Speedy — the Web API user and password Speedy gives its contract customers. Couriers can be switched on one at a time.
Which accounts was the module tested with?
Econt — live on Econt's official test environment (demo.econt.com): profile, offices and Econtomats, tariffs, waybills to the address and to an Econtomat with cash on delivery, PDF, status, cancel. Speedy was tested against its official Web API documentation on a test server that answers like Speedy: Speedy has no public test environment and gives test accounts to customers only. The module has not yet run on a live Speedy account. Courier errors are shown in the courier's own words.
The office method does not show at checkout.
It shows once the courier's offices are downloaded ("Download offices" in the settings) and the buyer's address is in Bulgaria. Check the method's weight limit and the geo zone too.
In which currency is cash on delivery?
In euro — Bulgaria pays in EUR since 01.01.2026, and Econt's test environment already requires EUR. For an account still set up in leva there is "Courier currency" = BGN in the settings. If the shop lacks the currency, the settings page warns you.
The waybill is refused: "The order has no phone number".
The couriers need the buyer's phone, and OpenCart 4 does not ask for it by default. The settings page has a button that switches on "Telephone display" and "Telephone required"; for an order already placed the phone is typed in the waybill panel.
Is the licence yearly?
No. For OpenCart it is one payment, a perpetual licence, and one licence covers all three builds: 4.x, 3.x and 2.3. Delivery methods, office selection, waybills, labels, tracking and cash on delivery stay free with no time limit.
No reviews yet. Be the first.
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
—