A WooCommerce plugin that fiscalizes every order on its own
Kristal So is a family company from Belgrade that sells salt and salmon, also through its WooCommerce store. We built KristalSo Fiscal Gateway, a WooCommerce fiscalization plugin for Serbia that issues a fiscal receipt for every order, together with the ERP connection and card payments, so the store runs as one system.
- Client
- Kristal So
- Stack
- WordPress, WooCommerce, PHP, V-PFR fiscalization API, certificate signing, WP-Cron, ERP integration, card payments
- Live site
- kristalso.com (opens in a new tab)
The problem
In Serbia, every sale needs a fiscal receipt, and an order from an online store is no exception.
The store needed WooCommerce to issue the receipts on its own, keep a record of each one on its order, and work with the company's ERP and card payments as one system.
What we built
We built a WooCommerce plugin that connects the store to the virtual fiscal receipt processor (V-PFR) of the Serbian Tax Administration. When a payment goes through, or an order reaches processing or completed, the plugin sends the receipt, signed with the store's certificate, and keeps the PFR number, the JID and the QR code on the order.
The receipt shows on the order confirmation page, in the order emails and in the admin, and the order list has PFR and JID columns. A refund sends a refund receipt that points to the original. Each order is sent only once, a failed attempt is retried with growing pauses, and every request is logged. Tax classes, payment methods and shipping are mapped to the codes the fiscal system expects.
Along with the plugin we connected the store to the company's ERP: products, prices and stock come from the ERP, orders and customers go back, and invoices, reports and statuses move automatically. Card payments run through the provider the store chose, built to PCI DSS requirements, with payment statuses, errors and refunds handled.
The result
Every paid order gets its fiscal receipt without anyone touching it, the store sees each receipt on the order itself, and stock and orders match the ERP.
Next project
Have something to build?
Tell us what it is. A 30-minute call is enough to know if we're the right fit.