What the extension does
- At checkout the buyer chooses Card, Apple Pay, Google Pay, PayPal or Crypto with a coin selector, then presses Confirm and pays on the UTOPAY page.
- The order gets the paid status (default Processing) only after the payment is re-read through the API and the amount and currency match.
- If the buyer returns before the payment is confirmed (crypto still in the network), the order becomes visible with the awaiting status (default Pending) and switches to paid later.
- Underpaid crypto and amount mismatches stay in the awaiting status with a note in the order history.
- The method is hidden when the order currency is not supported or the cart has subscription products (4.x).
Installation
- Download the build for your version and unpack it: inside are utopay.ocmod.zip and README.txt.
- OpenCart 3.0 and 4.x: Extensions → Installer → Upload → choose
utopay.ocmod.zip(in 4.x also press Install next to it). Keep the file name: OpenCart 4 takes the extension code from it. - OpenCart 2.3: unpack
utopay.ocmod.zipand upload the contents of itsuploadfolder to the shop root by FTP — the 2.3 installer needs FTP settings. - Extensions → Extensions → Payments → UTOPAY → Install → Edit.
- In the UTOPAY dashboard open Integration → API keys, create a test key
utopay_sk_test_…and paste it. The key is checked on save. - For crypto add your EVM wallet in the dashboard (Project settings → Funds & payouts) and list the coins.
Settings
| Field | What it does |
|---|---|
| Secret key | utopay_sk_test_… for the sandbox, utopay_sk_live_… for real payments. |
| Payment options | Card / PayPal and crypto, card only or crypto only. |
| Crypto coins | Comma-separated tickers, e.g. bep20/usdt,erc20/usdt,polygon/usdc. |
| Card method | Empty — the buyer chooses; or straight to Stripe, PayPal, Revolut… |
| Paid order status | Set when the payment is confirmed. Default Processing. |
| Awaiting / check status | Set when the buyer returned before confirmation or crypto was underpaid. Default Pending. |
| Geo zone, status, sort order | As in any OpenCart payment method. |
Test payment
- With the test key place an order, choose UTOPAY and press Confirm order.
- In the UTOPAY sandbox press the green ✅ button.
- You land on the success page; the order is Processing with the note “UTOPAY: payment ord_test_… received (test)”.
- Replace the key with
utopay_sk_live_….
How orders are confirmed
Each payment carries its own notification URL with the order number, amount and currency, signed with your secret key. UTOPAY signs every event (HMAC-SHA256) and retries for six hours if the shop does not answer 2xx.
The extension checks both signatures, re-reads the payment through the API and changes the order only when it is paid with exactly the requested amount and currency. A paid order is never moved back.
Troubleshooting
- UTOPAY is not offered at checkout — the order currency is not supported, the key is empty, the method is disabled or the geo zone does not match.
- “amount is below the minimum” — the total is below the minimum of the method or coin; the buyer can choose another one.
- The order is missing in the admin — the buyer left before paying; OpenCart keeps such orders as “missing orders” (filter by Missing Orders).
- Order stays Pending — the shop must be reachable from the internet; check System → Maintenance → Error Logs for
UTOPAYlines.
Changelog
- 1.0.0 — first release: OpenCart 2.3 – 3.0 and 4.0 – 4.1, cards & PayPal, crypto, Russian translation.
SHA-256 (2.3 – 3.0): 75fda725c1a514f5723ea19caf8f3fae64dc7c0576b1d3eb17a43d54cc439191
SHA-256 (4.x): bc1e1f62e1da1ca9e5bb1f7c83b59e34804508d2cebc3aa46b5125856c4b65b9
Updated · UTOPAY integrations team