Catcode PRRO Connector — fiscal receipts (Vchasno.Kasa, Checkbox) for WooCommerce
Автоматична фіскалізація чеків у WooCommerce через Вчасно.Касу і Checkbox з резервним перемиканням: чек за статусом замовлення, зміни за розкладом, лист і SMS покупцю, джерело KeyCRM. Базова версія безкоштовна; Pro додає чеки повернення для часткових повернень, повернення через API Вчасно, повтор чека з журналу і звірку змін із Z-звітом.
What each licence includes
| Feature | Free | Pro |
|---|---|---|
| An automatic fiscal receipt when an order moves into a chosen status | ✔ | ✔ |
| Two PRRO services in one plugin: 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 CSV export | ✔ | ✔ |
| A receipt link on the order, plus an email and SMS to the customer | ✔ | ✔ |
| KeyCRM as an order source | ✔ | ✔ |
| HPOS compatible | ✔ | ✔ |
| A refund receipt for every partial refund | — | ✔ |
| Refunds through the Vchasno.Kasa API | — | ✔ |
| Retrying a failed receipt straight from the log | — | ✔ |
| Shift reconciliation: the Z-report against the sum of receipts | — | ✔ |
Catcode PRRO Connector is a fiscalisation plugin for WooCommerce that links your shop to Ukrainian software cash registers (PRRO) and issues a fiscal receipt automatically the moment an order moves into a chosen status (for example “processing” after a LiqPay or Monobank payment). One plugin covers several PRRO services with fallback between them, manages the register shift and sends the receipt to the customer by email and SMS.
The plugin is completely free. Download it from the WordPress.org directory.
What the admin gets





Supported PRRO services
- Vchasno.Kasa — full support: sale receipts, shift control, connection testing.
- Checkbox — an adapter built to the public API documentation.
You can assign a primary service and a backup (fallback): if the primary does not answer, the receipt automatically goes through the spare.
How it works, step by step
- The customer pays through any gateway — LiqPay, Monobank, WayForPay and so on.
- The gateway moves the order into “processing” with its callback.
- The plugin catches the status change (
woocommerce_order_status_changed) and sends the receipt data to the PRRO; if the register shift is closed, it opens the shift first and retries. - The PRRO returns a fiscal number — it is written into an order note and into the receipt log.
- The customer gets the receipt: an email with a link to the PDF and, optionally, an SMS through TurboSMS.
- Accounting takes the log of receipts with PDF/HTML links through the CSV export.
Separately: an “Issue receipt” button on the order screen, a list of payment methods fiscalised as cash (cash on delivery with Nova Poshta or Ukrposhta), shipping included in the receipt, skipping zero lines, and a UKTZED code per product plus a default one.
The KeyCRM source
Since version 0.5.0 the plugin fiscalises more than WooCommerce orders: it pulls paid orders from KeyCRM (an aggregator for Rozetka, Prom, Instagram and your own sites) and issues receipts for them through the same PRRO services. The menu is “Register → KeyCRM orders”: API key, polling interval, trigger, a run log, and an optional write-back of the receipt link into the KeyCRM order. Each order is fiscalised exactly once.

What is free and what is Pro
Fiscalisation itself is free and stays that way: an automatic receipt driven by order status, two services with fallback switching, scheduled shifts, the receipt log, the email and SMS to the customer, and a test mode. That is what is already given away in the WordPress.org directory, and it is not going anywhere.
The Pro licence adds what a shop needs once refunds start:
- A refund receipt for every partial refund. Refund one line out of three, only the shipping or an arbitrary amount — the plugin issues a separate receipt for exactly what came back and links it to the sale receipt.
- 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, or “retry all failed”. A receipt that already went through is never sent to the PRRO again.
- Shift reconciliation. Each Z-report against the sum of the receipts in the log (sales minus refunds), with the discrepancy highlighted — exactly where you spot a receipt issued outside the shop.




What it costs
The free version is 0 UAH, forever and without registration. Pro is 1,490 UAH a year for one domain: a year of updates and support. Before buying you can switch on a 7-day trial right in the admin — no card and no auto-renewal.
Technical requirements
- WordPress 6.4+ / WooCommerce 8.0+ (HPOS compatible, tested up to WC 10.7)
- PHP 7.4+
- A PRRO registered with the tax authority — through the dashboard of your chosen service (Vchasno.Kasa, Checkbox)
- An API key from the PRRO service dashboard, with the VAT rate configured there
What is under the hood
- API keys and passwords are encrypted in the database — sodium_crypto_secretbox, with an HMAC stream cipher fallback when the libsodium extension is unavailable. Secrets are never printed back into form HTML.
- An adapter architecture: a shared provider interface plus a separate adapter for each PRRO service, and a primary → fallback chain.
- Duplicate protection — the fiscal number is checked against the database, retrying failed receipts never creates a second one; coupons are handled so that sum(line items) matches the total.
- The customer’s phone number is normalised to E.164 (+380…) before being sent to the PRRO.
- The
mpc_after_fiscalizehook — for your own integrations after a successful receipt.
How to install it
- Install it from the
WordPress.org directory, or upload it under “Plugins → Add New → Upload Plugin”, and activate. - Go to “Register → Settings” → the Vchasno.Kasa tab: enter the API key and the PRRO fiscal number from your Vchasno dashboard.
- Press “Test connection” — it should answer OK.
- On the “General” tab pick the primary service and switch on “Issue receipts automatically”.
- Test it on a one-kopiyka order through “Register → Test” → “Issue receipt”.
- A “success” row with a real fiscal number appears under “Register → Receipts” — you are done.
Version history
- 1.1.0 — August 2026
- A Pro tier appeared; the free part did not change. Pro: a refund receipt for every WooCommerce refund, including partial ones and arbitrary amounts; refunds through the Vchasno.Kasa API instead of a manual receipt in the dashboard; retrying one or all failed receipts straight from the log; shift reconciliation — the Z-report against the sum of receipts. Repeat fiscalisation is now idempotent: a receipt that already went through is not sent to the PRRO a second time.
- 1.0.2 — August 2026
- Upgrading from builds before 1.0.0 now migrates the receipt log, the shift log and the KeyCRM order map into the renamed tables. Without this the logs looked empty after an upgrade, and since duplicate protection reads the receipt table, an order that already had a receipt could get a second fiscal one. Uninstalling now removes the plugin’s own tables (the handler still held their old names). The internal version constant was stuck at 1.0.0, which stopped the upgrade routine from running.
- 1.0.1 — August 2026
- Updated Ukrainian translation; shift statuses on the “Shifts” screen became translatable.
- 1.0.0 — August 2026
- The first public release in the WordPress.org directory.
- 0.5.3 — July 2026
- Escaping for all output: the receipt link and extra text in the plain-text email, generated form elements and badges on the settings page (wp_kses with an explicit allow-list of tags). Sanitising the KeyCRM API key on read, and an English readme for the WordPress.org directory.
- 0.5.2 — July 2026
- A single
catcodeprro_prefix for all options, hooks, meta fields and tables. Admin styles and scripts moved into assets/ and enqueued through wp_enqueue_*. The non-working Cashalot/SmartPOS adapters were removed. The plugin was renamed to “Catcode PRRO Connector”. - 0.5.0 — July 2026
- A built-in KeyCRM source: fiscalising paid orders from Rozetka/Prom/Instagram through the KeyCRM Open API (the “Register → KeyCRM” menu). Each order is fiscalised exactly once; a run log; a 60 req/min limit and 429 handling.
- 0.4.0 — 2026
- A new settings screen: one wizard instead of tabs, a “working / needs attention” status box, and a “Save and test connection” button. Fixed the Checkbox API base URL (api.checkbox.in.ua); Checkbox moved back into advanced settings.
- 0.3.x — 2026
- Automatic register shift control on a schedule (cron twice a day), auto-opening the shift when a receipt arrives, and manual buttons on the “Shifts” page. Settings tabs, secret protection in forms, logger fixes.
- 0.2.x — 2026
- Real Vchasno.Kasa endpoints, a coupon fix (sum(items) == total), duplicate receipt protection, UKTZED codes, phone normalisation, an “Issue receipt” button, CSV export, an email receipt template, and TurboSMS.
- 0.1.0 — 2026
- The first release: 4 PRRO adapters and basic auto-fiscalisation on order status change.
Frequently asked questions
What do I need in Vchasno.Kasa before starting?
Register a PRRO with the tax authority through the Vchasno dashboard, set the VAT rate (VAT-exempt for a sole trader on the simplified system, or 20% for VAT payers) and open a shift — without an open shift the API returns an error. That said, the plugin can open the shift itself, on a schedule or on the first sale.
Does the plugin break the checkout or the theme?
No. It works only in the admin and on order hooks — it adds nothing to the storefront or the checkout.
Can I issue refund receipts?
Yes. In the free version Checkbox issues a full-amount refund receipt, while for Vchasno an order with the “refunded” status gets a reminder to issue the receipt in the dashboard. Pro issues the refund receipt itself — including partial refunds (one line, shipping only or an arbitrary amount) and, for Vchasno, through the API.
Who controls the VAT rate on the receipt?
For Vchasno it is the PRRO dashboard (the plugin does not send VAT in the payload). For Checkbox/Cashalot you can set a UKTZED code in the product editor.
What amount goes onto the receipt — with or without the acquirer's fee?
The full order amount, as the customer paid it. That is required by the Ukrainian cash register law.
What is left after the plugin is removed?
WooCommerce orders are unchanged — fiscal numbers stay in the order notes, and receipts already issued live in your PRRO service's dashboard.
Questions about the module?
Message us on Telegram — we reply within the working day. We will help with setup, compatibility and key activation.
No reviews yet. Be the first — right below.
Leave a review
Reviews are moderated before publication, which usually takes up to 24 hours.
No questions yet. Ask one — we answer within 24 hours.
Ask a question
We usually reply within 24 hours during working hours.
Buying the module
—