Get in touch
Payments · OpenCart

Multi PRRO Connector — fiscal receipts for OpenCart 2.3, 3.x & 4.x

Фіскалізація чеків OpenCart через Вчасно.Касу і Checkbox із резервним перемиканням: автоматичний чек за статусом замовлення, зміни за розкладом, журнал і лист покупцю. Збірки для 2.3, 3.x і 4.x. Базова версія безкоштовна; Pro додає чеки повернення на частину замовлення, повернення через API Вчасно, повтор чека з журналу і звірку змін із Z-звітом.

Download for free
Version
v1.1.0 (OpenCart 4)
v1.1.0 (OpenCart 3.x)
v1.1.0 (OpenCart 2.3)
Compatibility
OpenCart 2.3.0.x, 3.0.2 – 3.0.5.0 та 4.0.2 – 4.1.x
Platform
OpenCart
Multi PRRO Connector — fiscal receipts for OpenCart 2.3, 3.x & 4.x

What each licence includes

Feature Free Pro
An automatic fiscal receipt when an order moves into a chosen status
Two registers in one module: Vchasno.Kasa and Checkbox, with fallback switching
Opening and closing the shift on a schedule, with a Z-report on close
A receipt log with statuses, errors and a link to the receipt
UKTZED per product plus a default code
A customer email with a link to the receipt
Builds for OpenCart 2.3, 3.x and 4.x — one licence covers them all
A refund receipt for part of an order
Refunds through the Vchasno.Kasa API
Retrying a failed receipt from the log
Shift reconciliation: the Z-report against the sum of receipts

Multi PRRO Connector for OpenCart is a fiscalisation module for OpenCart 2.3, 3.x and 4.x that connects your shop to Ukrainian software cash registers (PRRO) and issues a fiscal receipt automatically when an order moves into a chosen status (for example “Processing” after an online payment). Receipts, register shifts, Z-reports and customer notifications all live in the OpenCart admin — no copying data by hand into the register’s own dashboard.

The module is completely free. Download it from the official OpenCart marketplace: opencart.com/…/extension_id=48662.

What the admin gets

General settings of Multi PRRO Connector in the OpenCart admin
General settings: auto-fiscalisation by status, primary and backup register, statuses for sale and refund receipts, and the default UKTZED code.
Connecting the Vchasno.Kasa and Checkbox registers
Connecting registers: Vchasno.Kasa and Checkbox — API key, PRRO fiscal number and a “Test connection” button for each.
The UKTZED field on an OpenCart product
The UKTZED code on the product, right next to the SKU. An empty field means the default code from the module settings.
The PRRO receipt log in the OpenCart admin
The receipt log: order, register, type, amount, fiscal number and status. Hovering over a status shows why it failed.
Register shifts and Z-reports
Register shifts: manual open/close buttons, plus a log of shifts and Z-reports right in the admin.

Registers supported

  • Vchasno.Kasa — sale receipts, opening and closing a shift with a Z-report, key validation.
  • Checkbox — sale and refund receipts, shifts, key validation.

A primary register plus a backup one: if the primary is unavailable, the receipt automatically goes through the fallback — an order will not be left unfiscalised because one service had an outage.

How it works, step by step

  1. The customer pays — by card online or cash on delivery; the module works out from your list of payment methods what to fiscalise as cash and what as card.
  2. The order moves into the trigger status (for example “Processing” after the gateway callback).
  3. The module builds the receipt — line items, shipping (optionally), UKTZED codes, skipping zero lines — and sends it to the primary register; if that stays silent, the backup takes over.
  4. The fiscal number comes back into the order and is written to the receipt log in the admin.
  5. The customer receives the receipt by email and, optionally, by SMS through TurboSMS.
  6. When an order is refunded into the refund status, the module issues a refund receipt.

What is free and what is Pro

Fiscalisation itself is free and stays that way: an automatic receipt driven by order status, two registers with fallback switching, scheduled shifts and Z-reports, the receipt log, the customer email, and UKTZED codes per product. That is what already sits in the OpenCart catalogue, and it is not going anywhere.

The Pro licence adds what a shop needs once refunds start:

  • A refund receipt for part of an order. OpenCart has no refund entity of its own, so the amount is entered directly in the log: refund one line, the shipping, or an arbitrary amount, and the module issues a separate receipt and links it to the sale receipt. Several partial refunds on one order mean several documents.
  • Refunds through the Vchasno.Kasa API. Without Pro such a receipt has to be issued by hand in the service’s dashboard.
  • Retrying a receipt from the log. The register was down or the shift had closed — one button on the row. A receipt that already went through is never sent to the PRRO twice.
  • Shift reconciliation. Each Z-report against the sum of the receipts in the log (sales minus refunds), with any discrepancy highlighted — which is exactly where you spot a receipt issued outside the shop.

What it costs

2,490 UAH — a one-off purchase. The licence is perpetual: you pay once, and updates and technical support are included in the price. One key covers one domain and its subdomains.

Moving the shop to another domain? Deactivate the licence on the old one and activate it on the new one yourself from your account.

What is under the hood

  • API keys and passwords are encrypted in the database with sodium_crypto_secretbox; a value encrypted in the admin is readable in both the catalog and the cron context.
  • An adapter architecture: a shared provider interface, a register registry and a primary → backup chain.
  • Shift control: manual buttons, auto-opening on the first sale of the day, and a schedule through the system cron — an exact HH:MM, not “once an hour” from the OpenCart scheduler.
  • Logs in the admin: receipts in one place, shifts and Z-reports in another — you can see what was issued and when without logging into the register’s dashboard.

How to install it

  1. Upload prro_connector.ocmod.zip through “Extensions → Installer”. For OpenCart 3.0.x use the prro_connector-oc3.ocmod.zip build, for 2.3 use cc_prro-oc2.ocmod.zip.
  2. OpenCart 2.3: the stock installer in that version copies files over FTP only, so the contents of the upload/ folder from the archive go into the shop root manually, and then it is “Extensions → Modules → Install”.
  3. Enable the module under “Extensions → Modules” and open its settings.
  4. On the register tab, enter the API key and the PRRO fiscal number from your Vchasno or Checkbox dashboard and press “Test connection”.
  5. In the general settings, pick the trigger status, the primary/backup register and the payment methods that count as cash.
  6. Issue a test receipt on a one-kopiyka order and check the receipt log — a row with a fiscal number should appear.

Version history

1.1.0 — August 2026
A Pro tier appeared; the free part did not change. Pro: a refund receipt for part of an order straight from the log, refunds through the Vchasno.Kasa API instead of a manual receipt in the dashboard, retrying a failed receipt, and shift reconciliation against the Z-report. Repeat fiscalisation became idempotent: a document that already went through is not sent to the register a second time, and a refund always goes through the register that issued the sale.
1.0.0 — 5 August 2026
The UKTZED code is now set on the product (previously only the default code worked). Fixed PHP 7.4 compatibility — a mixed type in the event handler meant fiscalisation did not run at all on 7.4. Fixed automatic shift control: OpenCart runs all overdue cron tasks in a single pass, which made the shift open and immediately close with a Z-report. Added a cron token for the shift endpoints, permission checks on the pages and on the “Test connection” button, and human-readable register and status names in the logs.
1.0.1 — 10 August 2026 (OpenCart 4.x and 2.3)
Fixed conversion of receipt amounts into hryvnia: the conversion branch never ran at all because of a faulty condition, so a shop with a non-hryvnia base currency issued a receipt for the base-currency number. Verified on a test stand: an order of 180 USD now produces a receipt for 7,470 UAH.
1.0.0 — 10 August 2026 (OpenCart 3.x)
The OpenCart 3.0.x build was brought up to the level of the 4.x and 2.3 ones. The UKTZED code is now set on the product: the table for it existed and the receipt read it, but there was no way to write the code — only the default one worked. Receipt amounts are converted to hryvnia at the order’s rate — previously the conversion branch never ran because of a faulty condition, so a shop with a non-hryvnia base currency issued a receipt for the base-currency number. Values from the form (register token, password, cron token) are no longer stored escaped, so “&” and quotes in keys work. The shift cron endpoints gained a token, a time check and protection against being called twice in a day. Order history notes and the customer email are now translated into the shop’s language.
1.0.0 — 9 August 2026 (OpenCart 2.3)
A separate build for OpenCart 2.3.0.0 – 2.3.0.2 with the same functionality. Receipt amounts are now converted to hryvnia at the order’s rate — a shop with a non-hryvnia base currency used to issue a receipt for the base-currency number. System cron for register shifts, and cron endpoints protected by a token.
0.4.1 — July 2026
The first public release for OpenCart: auto-fiscalisation on order status change, the Vchasno.Kasa and Checkbox registers with fallback, refund receipts, shift control (manual, scheduled, auto-open on the first sale), receipt and Z-report logs, key encryption in the database, UKTZED codes, and an email/SMS receipt for the customer. Builds for OpenCart 4.0.2 – 4.1.x and 3.0.2 – 3.0.5.0.

Frequently asked questions

Does the module touch the storefront or the checkout?

No. Everything happens in the admin and on order status change events. Your theme and checkout stay untouched.

What if the register shift is closed when an order arrives?

The module can auto-open the shift on the first sale of the day, and open or close it on a schedule through the system cron. There are manual buttons on the “Shifts” page too.

How are cash and card receipts told apart?

In the settings you list the payment methods that are treated as cash (for example cod for cash on delivery) — everything else is fiscalised as card.

Are refund receipts supported?

Yes, through Checkbox, when an order moves into the refund status. For Vchasno.Kasa refunds are currently done in the service's dashboard.

I am on OpenCart 3 or 2.3 — will it work?

Yes. There is a separate build for OpenCart 3.0.2 – 3.0.5.0 and another for 2.3.0.0 – 2.3.0.2 with the same functionality. 2.3 has no scheduler of its own, so scheduled shifts are opened by the system cron — the module shows the two ready-made URLs right in the settings.

What currency is the receipt issued in?

Always hryvnia. If the shop's base currency is not UAH, the amounts are converted at that order's rate — so the receipt matches what the customer saw on the storefront.

What is left after the module is removed?

OpenCart orders are unchanged, and every receipt and Z-report issued stays in your PRRO service's dashboard — no fiscal data is lost.

Can the module issue refund receipts?

Yes. In the free version Checkbox issues a full-amount refund receipt on the “refunded” status, while for Vchasno the order gets a reminder to do it in the dashboard. Pro issues the refund receipt itself — including for part of an order, and for Vchasno through the API.

Questions about the module?

Message us on Telegram — we reply within the working day. We will help with setup, compatibility and key activation.

@catcode_support

Not quite what you are looking for?

We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about your task and we will prepare an estimate.

Order a custom module