Get in touch
  • WordPress
  • Payments
  • v1.2.3

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

Fiscalising WooCommerce orders through a Ukrainian PRRO: Vchasno.Kasa and Checkbox. The receipt is issued automatically by order status, with fallback between services and delivery to the customer.

Download Free
Pro · one-year licence The more sites, the less each one costs
Compatibility
WordPress 6.4+ / WooCommerce 8.0+
PHP
7.4 or newer
Version
Pro v1.2.3
Free v1.2.1 (wordpress.org)
Licence
two sites, annual
Trial
7 days, no card, one per site
Updated
September 2026
Or all 173 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
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 — ✔
Offline sales from a Checkbox register reduce website stock — ✔

What it looks like

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.

Key points

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.

Offline sales from a Checkbox register → website stock (Pro)

A shop with a counter and a website sells the same shelf twice. The jacket was rung up at the till an hour ago, yet the website still shows it in stock — and the owner finds out once an online customer has already paid.

What it costs

The free version is 0 UAH, forever and without registration. Pro is 1,490 UAH a year for two sites (your store and a staging copy): a year of updates and support.

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 — two sites

Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. For studios — keys for 5 or 25 sites, or unlimited.

Technical requirements

  • WordPress 6.4+ / WooCommerce 6.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

Version history

v1.2.3 Current September 2026

Fixed saving the order: with the module active, the “Update” button on the WooCommerce order screen did not save a status change or other edits.

v1.2.2 September 2026

Fixed return receipts through Vchasno.Kasa (Pro).

v1.2.1 September 2026

Pro updates no longer come from wordpress.org, so WordPress will not offer to replace the Pro build with the free copy that shares its plugin name.

All versions (15)
v1.2.0 September 2026

Pro: offline sales from a Checkbox register reduce website stock.

v1.1.0 August 2026

A Pro tier appeared; the free part did not change.

v1.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.

v1.0.1 August 2026

Updated Ukrainian translation; shift statuses on the “Shifts” screen became translatable.

v1.0.0 August 2026

The first public release in the WordPress.org directory.

v0.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).

v0.5.2 July 2026

A single catcodeprro_ prefix for all options, hooks, meta fields and tables.

v0.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).

v0.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.

v0.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.

v0.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…

v0.1.0 2026

The first release: 4 PRRO adapters and basic auto-fiscalisation on order status change.

Frequently bought with Catcode PRRO Connector

4 modules in one order — 40% cheaper than separately

“Store starter” bundle Catcode PRRO Connector Nova Poshta Premium Mono Acquiring Telegram notifications and Viber/SMS for customers Need more — all 173 modules in All Access for 4 990 ₴.
2 790 ₴ / year instead of 4 660 UAH bought separately
Buy the bundle →

Full module description

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.

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.

Offline sales from a Checkbox register → website stock (Pro)

A shop with a counter and a website sells the same shelf twice. The jacket was rung up at the till an hour ago, yet the website still shows it in stock — and the owner finds out once an online customer has already paid. Since 1.2.0 Pro closes that gap: every fiscalised receipt on the Checkbox register in the shop takes the same product off the WooCommerce stock, and a return receipt puts it back.

  1. In Checkbox the product code equals the SKU of the product or variation on the website. If it differs, the plugin looks the barcode up — as a SKU and as a GTIN/EAN.
  2. On the “Register → Offline sales” screen enter the cashier login and password and the licence key of the shop register (or leave them empty if it is the same register as on the Checkbox tab) and press “Connect the webhook”. The plugin registers the site address in Checkbox itself.
  3. From then on Checkbox sends every receipt to the site. The plugin checks the signature with the key Checkbox issued, takes only fiscalised sales and returns, and changes the stock.

Receipts the website issued for its own online orders are skipped — WooCommerce has already reduced stock for them. Checkbox retries deliveries for hours, but the same receipt never changes anything twice, even when copies arrive at the same moment. A product that was not found, or one without stock tracking, shows up in the log as its own line — so you know exactly which code to fix in the register.

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 catcodeprro_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 “Cash register → Settings” → the Vchasno.Kasa tab: enter the API key and the PRRO fiscal number from your Vchasno dashboard.
  3. Press “Save and test connection” — a message confirms that the connection to Vchasno.Kasa works.
  4. On the service tab set the role to “Primary register”, then on the “Receipts” tab switch on “Automatic receipts”.
  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.

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
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.

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