Get in touch
Payments · WordPress

Catcode PRRO Connector — fiscal receipts (Vchasno.Kasa, Checkbox) for WooCommerce

Автоматична фіскалізація чеків у WooCommerce через Вчасно.Касу і Checkbox з резервним перемиканням: чек за статусом замовлення, зміни за розкладом, лист і SMS покупцю, джерело KeyCRM. Базова версія безкоштовна; Pro додає чеки повернення для часткових повернень, повернення через API Вчасно, повтор чека з журналу і звірку змін із Z-звітом.

Download for free
Version
v1.1.0
Compatibility
WordPress 6.4+ / WooCommerce 8.0+
Platform
WordPress
Catcode PRRO Connector — fiscal receipts (Vchasno.Kasa, Checkbox) for WooCommerce

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

Vchasno.Kasa register settings
Connecting a register: role (primary or backup), API key, PRRO fiscal number, tax group — and a “Save and test connection” button that calls the API straight away.
Automatic receipt issuing and the trigger status
The “Receipts” tab: which order status issues a receipt, what to do with refunds, and whether to send the receipt to the customer.
The receipt log with statuses and fiscal numbers
The log: the status of every receipt, the fiscal number, the error text if the register refused, a link to the PDF and a CSV export.
Register shifts and Z-reports
The register shift opens and closes on a schedule (cron) with a Z-report on close, plus auto-opening if a receipt arrives into a closed shift.
A fiscal receipt on the order screen
On the order itself: a box with the fiscal number, the service that issued it and a link to the receipt.

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

  1. The customer pays through any gateway — LiqPay, Monobank, WayForPay and so on.
  2. The gateway moves the order into “processing” with its callback.
  3. 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.
  4. The PRRO returns a fiscal number — it is written into an order note and into the receipt log.
  5. The customer gets the receipt: an email with a link to the PDF and, optionally, an SMS through TurboSMS.
  6. 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.

KeyCRM orders → PRRO: settings and the run log
The “Register → KeyCRM orders” screen: connecting with an API key, the fiscalisation trigger and the polling run log.

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.
Fiscal receipts and refunds on a WooCommerce order
The order screen: the sale receipt, the fiscal number and a separate receipt for each refund (Pro).
The PRRO receipt log with a retry for a failed receipt
The receipt log: the status of every attempt, the register’s error text and a “Retry” button (Pro).
Shift reconciliation: the Z-report against the sum of receipts in the log
Shift reconciliation: the Z-report against the sum of the receipts in the log — a discrepancy shows up immediately (Pro).
The Pro licence and trial period in the fiscalisation plugin
The Pro licence: a 7-day trial switches on right in the admin.

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_fiscalize hook — for your own integrations after a successful receipt.

How to install it

  1. Install it from the WordPress.org directory, or upload it under “Plugins → Add New → Upload Plugin”, and activate.
  2. Go to “Register → Settings” → the Vchasno.Kasa tab: enter the API key and the PRRO fiscal number from your Vchasno dashboard.
  3. Press “Test connection” — it should answer OK.
  4. On the “General” tab pick the primary service and switch on “Issue receipts automatically”.
  5. Test it on a one-kopiyka order through “Register → Test” → “Issue receipt”.
  6. 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.

@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