
LiqPay — Card Payments for OpenCart 2.3, 3.x and 4.x
Free LiqPay module for OpenCart 3 and 4: Visa/Mastercard payment on the LiqPay page, auto-confirmation via signed webhook. Pro adds a log, holds, refunds.
- Compatibility
- OpenCart 2.3.0.x, 3.0.2 – 3.0.5.0 and 4.0.2 – 4.1.x
- PHP
- 7.4 or newer
- Version
-
v1.0.9 (OpenCart 4)
v1.1.4 (OpenCart 3.x)
v1.1.4 (OpenCart 2.3) - Licence
- two sites, lifetime
- Trial
- 7 days, no card, one per site
- Updated
- 26 October 2026
The module in action — 43 sec
Clear even without sound: Ukrainian subtitles
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.

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
OpenCart 3.0.2 – 3.0.5.0 (the liqpay-oc3-1.1.2.ocmod.zip build) or 4.0.2 – 4.1.x (the liqpay.ocmod.zip build)
PHP 7.4+
LiqPay public and private key — from your LiqPay account; testing requires a separate pair of sandbox_ keys
OpenCart 2.3.0.x — a separate build, liqpay-oc2-1.1.2.ocmod.zip, runs on PHP 5.6 and newer
Version history
A purchased licence for OpenCart now works without expiry.
Cancellation and bank refusal: when the buyer presses “Cancel payment” on the LiqPay page or the bank declines, the cart stays, the buyer sees a clear message, and the order moves to…
OpenCart 4.1: the bank was sent the total of an earlier render. 4.1 begins editOrder() with addHistory(config_void_status_id), so an order that has not been placed yet is set to “Voided”…
All versions (6)
Fixed an underpayment issue: a callback for an amount less than the order total is no longer stored as a successful payment.
Fixed a checkout conflict on OpenCart 4.0.2.x.
First public release.
Frequently bought with LiqPay
4 modules in one order — 40% cheaper than separately


Nova Poshta Premium — a Nova Poshta module for OpenCart 2.3, 3.x and 4.x

Telegram notifications and Viber/SMS for customers for OpenCart

Abandoned Cart Recovery for OpenCart 2.3, 3.x and 4.x
Full module description
LiqPay for OpenCart is a payment module that accepts card payments (Visa/Mastercard, Apple Pay and Google Pay) through the secure LiqPay payment page. Once the customer pays, LiqPay sends a signed serviceUrl webhook, the module verifies the SHA1 signature and moves the order to the correct status itself. There’s no manual “paid or not” reconciliation — the status only changes once the money has actually gone through.
How it works — step by step
- At checkout the customer chooses “Card payment (LiqPay)” and confirms the order.
- The module builds a signed request and redirects the customer to the secure LiqPay payment page — card, Apple Pay or Google Pay. Card details are entered on LiqPay’s side and never reach your store.
- After payment, LiqPay sends a serviceUrl webhook to the
extension/liqpay/payment/liqpay.callbackroute. The module verifies the SHA1 signature against the raw request body and sets the order to the chosen “paid” status. - When the customer returns to the store, the status is additionally reconciled via the Status API — the order is only completed if the transaction genuinely succeeded.
- With Pro: under the two-stage scheme, funds are only held (AUTH), and captured (SETTLE) automatically once you move the order to the “paid” status. Refunds — full or partial — are issued from the payment log.
Installation
- Admin panel → Extensions → Installer → upload
liqpay.ocmod.zipand click “Install”. - Admin panel → Extensions → Payment → find LiqPay and click “+” (this creates the module’s table, event and permissions).
- Click “Edit”: enable the module, enter the keys from your LiqPay account. For testing, leave “Test mode” on and enter a pair of keys with the
sandbox_prefix. - There’s no need to register a webhook URL in your LiqPay account — the module passes it with every payment.
Under the hood
- The signature is verified against the raw request body — OpenCart HTML-escapes POST data, so the webhook reads `php://input` directly; otherwise the signature wouldn’t match.
- Double payment verification: a signed webhook plus a Status API reconciliation when the customer returns.
- Idempotency — a repeated webhook doesn’t change the status a second time and doesn’t downgrade an already-confirmed order.
- The private key is encrypted with a key derived from the store’s path and database name — settings copied to another site won’t decrypt.
LiqPay is a trademark of JSC CB “PrivatBank”. This module is an independent integration and is not affiliated with LiqPay or PrivatBank.
Questions
about the module
Didn't find the answer? Message us on Telegram and we'll reply within a business day.
What do I need to connect it?
The public and private keys from your LiqPay account. Enter them in the payment method settings in the OpenCart admin panel — and your store accepts cards.
Is the order confirmed automatically?
Yes. LiqPay sends a signed webhook to the serviceUrl, the module verifies the HMAC-MD5 signature and moves the order to the paid status only once the payment has actually gone through.
Does the module work on OpenCart 3?
Yes, two builds are included: one for OpenCart 3.0.2 – 3.0.5.0 and one for 4.0.2 – 4.1.x.
How does Pro differ from the free version?
Free accepts payments and confirms orders automatically. Pro adds a payment log with status reconciliation, two-stage payment, and refunds straight from the admin panel.
Are you affiliated with LiqPay or PrivatBank?
No, this is an independent CatCode module built on the public LiqPay API. There is no affiliation with LiqPay or PrivatBank.
No reviews yet. Be the first.
No questions yet. Ask one — we answer within 24 hours.
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
Buying the module
—



