
EasyPay for OpenCart — Card, Apple Pay and Google Pay Payments
EasyPay module for OpenCart 2.3, 3.x and 4.x: card, Apple Pay and Google Pay, order status verified through the EasyPay API, underpayment protection, test mode without a contract. Pro — payment journal, refunds, status sync, unpaid order reminders and a payment timer.
- 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 extension, outgoing HTTPS requests from the server.
The site is reachable from the internet over HTTPS so EasyPay notifications can get through (no basic auth).
Cart currency — Ukrainian hryvnia (UAH).
An EasyPay contract for real payments: your EasyPay manager issues the PartnerKey, ServiceKey and SecretKey. Test mode needs no keys.
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 EasyPay 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 EasyPay is an EasyPay payment module for OpenCart 2.3, 3.x and 4.x. The customer pays with a Visa/Mastercard card, Apple Pay or Google Pay on the secure EasyPay page, and the order in your store moves to a paid status by itself. EasyPay sends a signed notification, the module checks the signature, separately asks EasyPay for the payment status and matches the amount. Only then is the order marked as paid, so a payment can’t be faked with a request to your site.
What the customer sees
At checkout it’s a regular payment method, “Card, Apple Pay, Google Pay (EasyPay)”. The customer confirms the order and clicks “Proceed to payment”. The module creates an order in EasyPay and opens the payment page.
After payment EasyPay sends the customer back to the store. If the payment went through, they land on the “Your order has been placed” page. If not, the order gets a failed payment status with the bank’s reason, the items go back into the cart, and a hint to try again appears at the top. The new attempt goes to EasyPay under a new number, so there are no duplicates.
The module is shown only for a cart in hryvnias. If the customer switches the store currency to dollars or euros, the payment method hides: EasyPay accepts UAH only.
What the admin gets
- “Check keys” sends a signed service request to EasyPay. The module names the error precisely: the SecretKey doesn’t match (EasyPay rejects the signature) or EasyPay doesn’t know the ServiceKey. You find out about a problem in the admin, not from a customer.
- Separate order statuses for “awaiting payment”, “paid”, “failed payment” and “refunded”, on the “Order statuses” tab.
- Order history with the EasyPay transaction number and the bank’s decline reason. An underpayment is visible at once: “paid 3552.18 UAH with an order total of 3553.18 UAH — needs checking”, and such an order doesn’t move to paid.
- Payment journal (Pro): every EasyPay payment in one list — order total, paid, refunded, the EasyPay state next to the order status, transaction number and card. The “Sync” and “Refund” buttons are right there.
How it works, step by step
- The customer confirms an order with EasyPay payment. The module creates an order in EasyPay: attempt number, amount, description, notification URL and return pages. Every request is signed with your SecretKey. The order gets the “awaiting payment” status.
- The customer pays on the EasyPay page with a card, Apple Pay or Google Pay.
- EasyPay sends a notification to your site. The module checks the signature: an unsigned or forged request is rejected and the order stays as it was.
- The module asks EasyPay for the status of that payment itself, with an orderState request. The notification body is only needed to find the order.
- The amount is matched against the order total. If everything matches, the order becomes paid and the transaction number is written to its history. If less was paid, the order stays under review with a note.
- The customer returns to the store and the module checks the status once more. If the notification was late, the order is closed here. A repeated notification doesn’t create a duplicate history entry.
Under the hood
- Signatures both ways: base64(SHA-256) of the SecretKey and the request body; notifications are verified with a constant-time comparison. The SecretKey is stored encrypted in the database and never shown in the form.
- The status comes from EasyPay (orderState), not from the notification. The module recognises a bank decline even when EasyPay returns it together with an error block, and writes the reason to the order history.
- Unique attempt numbers: the order number plus a random suffix. A declined old attempt won’t touch an order that is already paid, and a paid old attempt is still counted even if the customer opened a new one.
- Safeguards: a late notification won’t roll back a paid order, “Back” after payment won’t create a second payment, an underpayment won’t count as paid, a repeated notification won’t duplicate the record.
- Refunds (Pro) are cumulative: a negative amount, garbage or an amount above the balance is cut off before any request to EasyPay, and after a full refund the order gets the “Refunded” status.
- No OpenCart core patches: in 4.x the module installs as a regular extension, in 3.x and 2.3 without ocmod edits. The payments table stays when the module is uninstalled, so you won’t lose the history.
How to install
- OpenCart 4.x: Extensions → Installer → upload
cc_easypay.ocmod.zipand click “Install”. Then Extensions → Payments → “EasyPay — card, Apple Pay, Google Pay” → “Install” → “Edit”. - OpenCart 3.x: Extensions → Installer → upload
cc_easypay-oc3-1.0.1.ocmod.zip, then Extensions → Payments → EasyPay → “Install”. - OpenCart 2.3: the stock 2.3 installer needs FTP, so it’s easier to unpack the contents of the
upload/folder fromcc_easypay-oc2-1.0.1.ocmod.zipinto the store root. Then Extensions → Payments → EasyPay → “Install”. - To test, turn on “Test mode” and take an order through to the EasyPay payment page.
- For real payments turn test mode off, enter the PartnerKey, ServiceKey and SecretKey, click “Check keys” and save. The module sends the notification URL with every payment itself.
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 take payments?
No. Payments, notifications, amount matching and test mode all work in the free version without limits.
Do I need a contract with EasyPay?
For real payments, yes. For testing, test mode with EasyPay's public test merchant is enough, and it's a single switch.
The customer paid, but the order is still "awaiting payment".
Check that the site is reachable from the internet over HTTPS and that "Check keys" shows success. Even without a notification the order picks up its status when the customer returns to the store. In Pro, just click "Sync" in the journal.
Can I refund part of the amount?
In Pro, yes, from the payment journal: several partial refunds, and the rest with one button.
Do card details pass through my site?
No. The card is entered on the EasyPay page, your server only receives a signed notification, and the module takes the status from EasyPay.
Do I have to renew the license every year?
No. For OpenCart the license is perpetual: you pay once.
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
—
