Get in touch
  • OpenCart
  • Shipping
  • v1.0.1

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.

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

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
Four delivery methods in one extension: Econt to the address, Econt to an office or Econtomat, Speedy to the address, Speedy to an office or automat — for Bulgarian addresses only ✔ ✔
Fixed price, free from an order subtotal, free-shipping coupon, weight limit per method, optional geo zone ✔ ✔
Office or automat selection on the stock OpenCart 4, 3 and 2.3 checkout and on CatCode One Page Checkout: search in Cyrillic and Latin (Sofia = София), the buyer's city first ✔ ✔
Per courier — "offices and automats", "offices only" or "automats only" ✔ ✔
The office panel shows only with its own method; the module never reads or rewrites the buyer's address fields ✔ ✔
No office — the server does not let the order through: OpenCart 4 on the payment and confirm steps, OpenCart 3 and 2.3 on the shipping, payment and confirm steps ✔ ✔
The office becomes the order's shipping address (with the office's region) only for that courier's office method; the buyer's address book stays untouched ✔ ✔
Courier offices in the module's own table, refreshed daily — the checkout never waits for the courier API ✔ ✔
Waybill from the order page: weight, cash on delivery in EUR, declared value, check before paying, PDF label, status, cancel, office changed by hand ✔ ✔
Waybills for orders with another shipping method too — pick the courier on the order page ✔ ✔
Econt: sender from the e-Econt profile, authorised person for companies, Saturday delivery; Speedy: contract object or drop-off office, service from the account ✔ ✔
Phone field in the waybill panel for orders without a phone; OpenCart 4 is warned and gets the phone switched on at checkout in one click ✔ ✔
E-mail to the buyer with the waybill number and the tracking link, a line in the order history of their account ✔ ✔
Waybill list under Sales with filters ✔ ✔
A Speedy office that takes no payments is marked in the list; cash on delivery to it is refused at checkout ✔ ✔
Courier passwords stored encrypted (AES-256 + HMAC) ✔ ✔
Module languages: English, български ✔ ✔
Parcels in one waybill 1 as configured
Live courier tariff at checkout: EUR → shop currency at its rate, % and fixed markup, rounding, fallback to the fixed price — ✔
Waybill created by itself when the order reaches the chosen status — ✔
Bulk actions in the waybill list: create, print labels (one PDF or a ZIP), refresh statuses — ✔
Hourly status sync into the order history, with an order status on delivery — ✔

What it looks like

Bulgaria Couriers methods on CatCode One Page Checkout in OpenCart 4.1 with an Econtomat chosen
CatCode One Page Checkout on OpenCart 4.1: four methods of two couriers with prices in euro. Econt to an office is chosen — below the method, the panel of the chosen Econtomat with its address and a “Change” link. Offices come from Econt’s official test environment.
Stock OpenCart 3 checkout: Econt to an office and the offices of the buyer's city
Stock OpenCart 3.0.5.0 checkout, “Delivery Method” step: Econt to an office is chosen — the list starts with the offices of the buyer’s city, search in Cyrillic or Latin. Until an office is chosen, the module says “Choose the Econt office or Econtomat to continue” and does not let the buyer on.
Bulgaria Couriers settings: four delivery methods with price, weight limit and office filter
“Delivery methods” tab: each method has its own checkout title, a fixed price or the live courier tariff (Pro), a free-shipping threshold, a weight limit and, for office methods, “offices and automats / offices only / automats only”.

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

v1.0.1 OC 4.x Current 26 September 2026

The office list without a query shows the offices of the buyer’s region again on the PDO database driver.

v1.0.0 First release September 2026

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

“Store starter” bundle Bulgaria Couriers: Econt & Speedy Nova Poshta Premium LiqPay Telegram notifications and Viber/SMS for customers Need more — all 144 modules in All Access for 4 990 ₴.
3 490 ₴ lifetime instead of 5 860 UAH bought separately
Buy the bundle →

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

  1. Setup. Accounts of the couriers you need, “Save and check the connection”, office download, then methods and prices on the “Delivery methods” tab.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Status. “Refresh status” asks the courier; with Pro statuses sync hourly — via the OpenCart 4 cron or the cron URL from the settings.
  7. 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

  1. 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 the upload/ folder from cc_bgcourier-oc2.ocmod.zip to the store root (FTP or the hosting file manager) — the 2.3 Installer does not copy files without FTP set up.
  2. Extensions → Extensions → Shipping → Bulgaria Couriers (Econt, Speedy) → “Install”, then “Edit”.
  3. 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.
  4. Fill in the account of each courier you switch on, press “Save and check the connection” and “Download offices”.
  5. On the “Delivery methods” tab switch on the methods you need and set prices, the free-shipping threshold and the weight limit.
  6. Place a test order to an office and create the waybill from the order page.
  7. 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.

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

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