What the plugin does
- UTOPAY — cards & PayPal: cards, Apple Pay, Google Pay, PayPal, Revolut, bank transfers. The buyer pays on the UTOPAY page and returns to the “Thank you” page.
- UTOPAY — crypto: the buyer picks a coin (USDT and USDC on BNB Chain, Ethereum, Polygon, Arbitrum, Base…; ETH, BNB) right at checkout and gets an address with the exact amount.
- The order is marked paid only after the plugin re-reads the payment through the API and the amount and currency match.
- An underpaid crypto order goes On hold with a note: the money is already in your wallet, you decide what to do.
- Unpaid payments expire after 24 hours; WooCommerce cancels the order by its own stock-hold timer.
Installation
- Download the ZIP above. Do not unpack it.
- WordPress admin → Plugins → Add New → Upload Plugin → choose the file → Install Now → Activate.
- In the UTOPAY dashboard open Integration → API keys and create a test secret key
utopay_sk_test_…. - WooCommerce → Settings → Payments → UTOPAY — cards & PayPal → paste the key → tick Enable → Save. The key is checked on save.
- For crypto: in the dashboard add your wallets in Project settings → Funds & payouts, section Crypto wallets (one EVM address covers all EVM networks), then enable UTOPAY — crypto and pick the coins.
Settings
| Field | What it does |
|---|---|
| Secret key | utopay_sk_test_… for the sandbox, utopay_sk_live_… for real payments. Shared by both methods. |
| Title / Description | What the buyer sees at checkout. |
| Payment method on the UTOPAY side | Empty — the buyer chooses. Or send everyone straight to one method (Stripe, PayPal, Revolut…); if it is unavailable, the method picker is shown. |
| Coins | Crypto method only: coins offered at checkout. Enable only networks with your wallet in the dashboard. |
| Debug log | Writes requests and notifications to WooCommerce → Status → Logs, source utopay. |
Test payment
- With the test key, place an order and choose a UTOPAY method.
- The UTOPAY sandbox opens. Press the green ✅ button to simulate a payment.
- In a second and a half you are back on the “Thank you” page, the order becomes Processing with a note “UTOPAY payment ord_test_… received (test)”.
- Repeat with the red ❌ button — the order becomes Failed.
- Replace the key with
utopay_sk_live_…. Done.
How orders are confirmed
Each payment is created with its own notification URL: https://your-site/?wc-api=utopay&order_id=…&key=…. UTOPAY sends every status change there, signed with HMAC-SHA256 (the key is derived from your secret key). If your site does not answer 2xx, UTOPAY retries after 30 s, 2 min, 15 min, 1 h and 6 h.
The plugin does not trust the notification body: it requests the payment from the API and completes the order only if the payment belongs to this order and the amount and currency match. When the buyer returns to the “Thank you” page, the same check runs once more — so a local or protected site still gets its orders confirmed.
Troubleshooting
- Methods are not shown at checkout — the store currency is not supported, or the key is empty. Supported: USD EUR GBP CAD AUD NZD CHF SEK NOK DKK PLN CZK HUF TRY UAH INR JPY SGD HKD AED MYR THB PHP IDR BRL MXN COP ZAR NGN.
- “Payment could not be started: amount is below the minimum” — the order total is below the minimum of the chosen method or coin; the buyer can pick another one.
- Order stays “Pending payment” — the site must be reachable from the internet without HTTP auth, and security plugins must not block POST requests to
/?wc-api=utopay. Turn on Debug log and look forcallbacklines. - “no evm wallet…” — the coin is enabled in the plugin, but there is no wallet for its network in the dashboard.
Changelog
- 1.0.2 — shared UTOPAY core updated, no behaviour change.
- 1.0.1 — white-label API domain support (UTOPAY_API_BASE constant); default coins on EVM networks.
- 1.0.0 — first release: cards & PayPal, crypto, block checkout, HPOS, Russian translation.
SHA-256: 8a3900be6f724ca8c467fa538aeaedb9c81a6789dd59840313767688e1ffcf1b
Updated · UTOPAY integrations team