Get in touch
  • OpenCart
  • Payments
  • v1.0.3

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.

Download Free
Pro · lifetime licence The more sites, the less each one costs
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
Or all 178 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
Card, Apple Pay and Google Pay payments on the secure iPay.ua page ✔ ✔
Order status only from the iPay Status API answer: a forged notification changes nothing ✔ ✔
Underpayment protection: the amount from iPay is checked against the order total ✔ ✔
The order closes even if the notification never arrived — when the customer returns to the store ✔ ✔
A repeated notification doesn't duplicate the order history entry ✔ ✔
Sandbox and a one-click key check ✔ ✔
Separate statuses for awaiting payment, paid, funds blocked, declined and refunded ✔ ✔
The payment method hides for carts not in hryvnias ✔ ✔
Ukrainian and English localisation of the admin panel and storefront ✔ ✔
Payment log with the iPay status next to the order status — ✔
Refunds from the admin panel, full and partial — ✔
Capture and release of pre-authorisation, automatic capture when the order is confirmed — ✔
Payment link for an order from the admin panel — ✔
One-click payment status reconciliation — ✔

What it looks like

iPay.ua at OpenCart checkout
The payment step in OpenCart: the customer sees iPay as a regular payment method with a single “Proceed to payment” button. The screenshots show the Ukrainian interface of the demo store.
iPay module settings for OpenCart
Settings: merchant ID and signing key separately for live mode and the sandbox, a “Check keys” button, a ready notification URL, the store name on the payment page and the payment link lifetime.
Order history with an iPay payment
Order history: awaiting payment, funds blocked, confirmed by a manager and captured automatically — every step is recorded with the payment number.

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

v1.0.3 OC 4.x v1.0.2 OC 3.x v1.0.2 OC 2.3 Current 26 October 2026

A purchased licence for OpenCart now works without expiry.

v1.0.2 OC 4.x

23 September 2026.

v1.0.1 18.09.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)
v1.0.0 First release

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

“Store starter” bundle iPay.ua Nova Poshta Premium LiqPay Telegram notifications and Viber/SMS for customers Need more — all 178 modules in All Access for 4 990 ₴.
3 590 ₴ lifetime instead of 5 960 UAH bought separately
Buy the bundle →

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

  1. 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.
  2. The customer pays on the iPay page by card, Apple Pay or Google Pay.
  3. 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.
  4. 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.
  5. 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.
  6. 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

  1. OpenCart 4.x: Extensions → Installer → upload cc_ipay.ocmod.zip and click “Install”. Then Extensions → Payments → “iPay.ua — оплата карткою (CatCode)” → “Install” → “Edit”.
  2. OpenCart 3.x: Extensions → Installer → upload cc-ipay-oc3-1.0.1.ocmod.zip, then Extensions → Payments → iPay → “Install”.
  3. OpenCart 2.3: the stock 2.3 installer requires FTP, so it’s easier to unpack the contents of the upload/ folder from cc-ipay-oc2-1.0.1.ocmod.zip into the store root. Then Extensions → Payments → iPay → “Install”.
  4. Enter the merchant ID and signing key, click “Check keys”, save and send the notification URL to iPay support.
  5. 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.

@catcode_support Setup, compatibility, activation
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.

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