
iPay.ua for OpenCart — card, Apple Pay and Google Pay payments
iPay.ua module for OpenCart 2.3, 3.x and 4.x: card, Apple Pay and Google Pay payments, order status reconciled through the iPay API, underpayment protection. Pro — payment log, refunds, pre-authorisation, payment links.
- Compatibility
- OpenCart 2.3.0.x, 3.0.x and 4.0.2 – 4.1.x
- PHP
- 7.0 or newer
- Version
-
v1.0.3 (OpenCart 4)
v1.0.2 (OpenCart 3.x)
v1.0.2 (OpenCart 2.3) - Licence
- two sites, lifetime
- Trial
- 7 days, no card, one per site
- Updated
- 26 October 2026
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.
What it looks like

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 2.3.0.x, 3.0.x or 4.0.2 – 4.1.x; PHP 7.0+ for 2.3, and for 3.x and 4.x whatever version your OpenCart requires.
PHP cURL and SimpleXML extensions, outbound HTTPS requests from the server.
A contract with iPay.ua: merchant ID (mch_id) and signing key (sign_key). iPay issues sandbox test credentials together with the contract.
Cart currency — Ukrainian hryvnia (UAH).
iPay configures the notification address on its side: the module shows a ready URL that you send to iPay support once. The address must be reachable from outside, without basic-auth.
Version history
A purchased licence for OpenCart now works without expiry.
23 September 2026.
Stored access keys are now encrypted with AES-256-CBC and HMAC instead of the old XOR obfuscation, which some hosting antivirus scanners flagged and deleted.
All versions (4)
For OpenCart 2.3, 3.x and 4.x.
Frequently bought with iPay.ua for OpenCart
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

LiqPay — Card Payments for OpenCart 2.3, 3.x and 4.x

Telegram notifications and Viber/SMS for customers for OpenCart
Full module description
CatCode iPay is a payment module for iPay.ua for OpenCart 2.3, 3.x and 4.x. The customer pays by card, Apple Pay or Google Pay on the secure iPay page, and the order in your store moves to “Paid” by itself. The module takes the status not from what a notification claims, but from the iPay API’s answer to your own keys, so nobody can fake a payment with a request to your site.
What the customer sees
At checkout it’s a regular payment method, “Card, Apple Pay, Google Pay (iPay.ua)”. The customer confirms the order, the module creates a payment in iPay and takes them to the payment page showing the amount in hryvnias and your store name. The page opens in the store language: Ukrainian, Russian or English.
After paying, iPay returns the customer to the store. If the payment went through, they land on the “Order placed” page. If not, the items stay in the cart with a hint on top to try again or choose another method. The cart neither disappears nor gets duplicated.
The method is shown only for carts in hryvnias. If the customer switches the store currency to dollars or euros, the payment method hides: iPay would charge the same figure in hryvnias.
What the admin gets
- One-click key check. The module makes a service request to iPay and tells you whether the merchant ID and signing key are accepted. No payment is created.
- Separate order statuses for “awaiting payment”, “paid”, “funds blocked”, “payment failed” and “refund”.
- Order history with the iPay payment number and the masked card. Underpayment is visible at once: “paid 3969.85 UAH instead of 3979.85 UAH — needs checking”, and such an order doesn’t move to paid.
- Payment log (Pro): all iPay payments in one list, with the iPay status next to the order status. The “Reconcile”, “Refund”, “Capture” and “Release hold” buttons are right there.
How it works, step by step
- The customer confirms an order paid with iPay. The module creates a payment with a PaymentCreate request: amount in kopecks, the description “Payment for order No. …”, return addresses, page language. The order gets the “awaiting payment” status.
- The customer pays on the iPay page by card, Apple Pay or Google Pay.
- iPay sends a notification to your site. The module finds its order by the payment number and asks iPay for the real status with a Status request, using its own keys.
- The module compares the paid amount with the order total. If everything matches, the order becomes “Paid”, and the payment number and card are written to the history.
- The customer returns to the store. The module asks for the status once more: if the notification didn’t arrive, the order is closed here. A repeated notification doesn’t become a duplicate in the history.
- If iPay has enabled pre-authorisation for you, the funds are first only blocked. In Pro they are captured automatically as soon as a manager moves the order to a paid status. Or manually from the log: “Capture” or “Release hold”.
Under the hood
iPay signs requests and notifications like this: a salt plus an HMAC-SHA512 of the salt with the merchant key. That signature doesn’t cover the message body. So the module takes nobody at their word: the notification signature is checked, but the order is changed only by the answer to a Status request that the module itself sends to iPay with your keys. A forged or intercepted notification can at most make the module check the status one more time.
Then come the safeguards we usually find missing in other payment modules. A late notification won’t roll a paid order back. Pressing “Back” after paying won’t create a second payment. An order that has already moved past status 0 won’t go to the bank with the old amount. Underpayment won’t become a payment. A full refund on the payment day goes as a reversal, later as a refund. Partial refunds are counted cumulatively, and you can’t go over the remaining balance.
The signing key is stored encrypted in the database. The OpenCart core isn’t patched: in 4.x and 3.x everything works through standard events, and in 2.3 also without ocmod edits. The payment table and settings stay when the module is uninstalled, so you won’t lose the history.
How to install
- OpenCart 4.x: Extensions → Installer → upload
cc_ipay.ocmod.zipand click “Install”. Then Extensions → Payments → “iPay.ua — оплата карткою (CatCode)” → “Install” → “Edit”. - OpenCart 3.x: Extensions → Installer → upload
cc-ipay-oc3-1.0.1.ocmod.zip, then Extensions → Payments → iPay → “Install”. - OpenCart 2.3: the stock 2.3 installer requires FTP, so it’s easier to unpack the contents of the
upload/folder fromcc-ipay-oc2-1.0.1.ocmod.zipinto the store root. Then Extensions → Payments → iPay → “Install”. - Enter the merchant ID and signing key, click “Check keys”, save and send the notification URL to iPay support.
- To start, enable the “Sandbox” and make a test payment with the card
3333 3333 3333 3331.
Questions
about the module
Didn't find the answer? Message us on Telegram and we'll reply within a business day.
Do I need a license to accept payments?
No. Payments, notifications, the amount check and the sandbox work in the free version without limits.
The order is stuck in "awaiting payment" although the money was charged. What's wrong?
Most often the notification doesn't get through: the address isn't set up in iPay, or it's blocked by a firewall, Cloudflare or basic-auth. A customer who returns to the store closes the order themselves, and in Pro you just click "Reconcile" in the log.
Do Apple Pay and Google Pay work?
Yes, on the iPay payment page, if they are enabled in your contract. The iPay sandbox doesn't have them — cards only.
Can I refund part of the amount?
In Pro, yes, from the payment log. iPay enables partial refunds for a merchant on request; if they aren't enabled, the module shows iPay's response and doesn't change the order.
What is pre-authorisation?
Funds are first only blocked on the card and captured after the order is confirmed. iPay switches the mode on at its side; the module sets a separate status, and in Pro captures the funds automatically or with a button.
Do I have to renew the license every year?
No. For OpenCart the license is perpetual: one payment.
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
—
