iPay.ua for WooCommerce — card payments via internet acquiring
Accept card payments in WooCommerce through iPay.ua: secure payment page, automatic confirmation with status double-check, background reconciliation, sandbox. Pro — refunds, pre-authorisation, fiscal receipts and a payment log.
What each licence includes
| Feature | Free | Pro |
|---|---|---|
| Visa / Mastercard card payments on the secure iPay.ua page | ✔ | ✔ |
| Automatic order confirmation: every notification is double-checked with a Status request to iPay.ua | ✔ | ✔ |
| Paid amount checked against the order total — underpayment doesn't go through | ✔ | ✔ |
| Status reconciliation on the customer's return and in the background every 10 minutes | ✔ | ✔ |
| Protection against double payment and a repeat payment via the "Back" button | ✔ | ✔ |
| Sandbox at sandbox-checkout.ipay.ua and a one-click credentials check | ✔ | ✔ |
| Payment page language follows the site language, store name, payment link lifetime | ✔ | ✔ |
| Classic and block WooCommerce checkout, HPOS compatible | ✔ | ✔ |
| Refunds from the order screen: Reversal on the payment day, full and partial Refund | — | ✔ |
| Pre-authorisation: capture on "Completed", release on "Cancelled" | — | ✔ |
| Fiscal receipts (PRRO) through iPay.ua with a link in the order | — | ✔ |
| Payment log with the iPay.ua status and one-click reconciliation | — | ✔ |
iPay.ua for WooCommerce is a payment plugin that accepts card payments through iPay.ua internet acquiring (Checkout API). The customer goes to the secure iPay.ua page, pays with a Visa or Mastercard card, and the order in your store confirms itself. The plugin doesn’t take a notification at its word: for every one it separately asks iPay.ua for the payment status and checks the amount, so nobody can “pay” an order with a forged request.
The base version is free. Accepting payments, automatic confirmation, background status reconciliation and the sandbox work without a license and with no time limit. Pro adds refunds from the order screen, capturing and releasing pre-authorised payments, fiscal receipts through iPay.ua and a payment log.
What the customer sees


If the payment fails, the customer clicks “Return to the site” and lands on the order payment page with an explanation and the option to try again or pick another method. The order isn’t lost.
What the admin gets



- “Check credentials” — the plugin sends a signed status request for a non-existent payment. iPay.ua confirms valid credentials and rejects invalid ones, and no payment is created.
- Sandbox at sandbox-checkout.ipay.ua with the test cards from the iPay.ua documentation — you test the integration before real money moves.
- Notification URL is shown at the bottom of the settings — send it once to your iPay.ua manager, because iPay.ua configures the notification address on its side.
- Order status after payment is your choice: “Processing” or straight to “Completed”.
How it works, step by step
- At checkout the customer picks “Card payment (iPay.ua)” and places the order.
- The plugin creates a payment in iPay.ua (PaymentCreate) with the amount in kopecks, the description “Order No. …”, a unique ext_id and return links. The request is signed with your key using HMAC-SHA512.
- The customer pays on the secure iPay.ua page. Card data never passes through your site.
- iPay.ua sends a notification. The plugin checks the signature and then makes a separate Status request to iPay.ua for the real payment state — and only then updates the order. The amount from iPay.ua is compared with the order total: if less was paid, the order goes “On hold” with a note.
- The customer returns to the store — the status is checked once more, so “Order received” only appears when the money has actually arrived.
- Background reconciliation every 10 minutes picks up payments whose notification never arrived: for example, while iPay.ua hasn’t yet connected your notification URL.
- With Pro refunds are made right from the order screen: on the payment day as a cancellation (Reversal), on later days as a refund (Refund), full or partial.
Pricing
890 UAH — a one-year license. A year of updates, support and all Pro features.
You can take a longer term straight away — the longer it is, the cheaper it works out per year:
- 1 year — 890 UAH
- 2 years — 1,690 UAH (−5%, 845 UAH per year)
- 3 years — 2,350 UAH (−12%, 783 UAH per year)
- 4 years — 2,920 UAH (−18%, 730 UAH per year)
- 5 years — 3,340 UAH (−25%, 668 UAH per year)
No auto-charges: renewal is manual, and reminders arrive by email. When the term expires, only the Pro features switch off, and accepting payments keeps working.
One key covers one domain. If you move the store, deactivate the license on the old domain and activate it on the new one.
Trial first, payment after. A free 7-day Pro trial is switched on with a button in the plugin settings, no card required. The trial never starts by itself: a fresh install is a clean Free version.
Requirements
- WooCommerce 6.0+ with the classic or block checkout, HPOS compatible
- WordPress 6.2+ · PHP 7.4+
- Store currency — Ukrainian hryvnia (UAH). With any other currency the payment method hides itself, so the customer is never charged the wrong amount.
- A contract with iPay.ua and Checkout API credentials: mch_id and sign_key. Sandbox test credentials are also issued by iPay.ua.
- For pre-authorisation — pre-authorisation mode enabled for your merchant in iPay.ua. For fiscal receipts — a cashier and a cash register connected in iPay.ua. For refunds on later days — access to Refund, which iPay.ua grants on request.
Under the hood
- A notification is only a trigger. The Checkout API signature covers only the “salt”, not the notification body, so the plugin never takes the status from the request body: the order changes only on iPay.ua’s answer to a Status request. An intercepted and altered notification pays for nothing.
- Double-payment protection. The notification, the customer’s return and the background reconciliation can arrive in the same second — an atomic lock guarantees a single “payment received” note and a single stock reduction. The “Back” button after paying doesn’t create a second payment.
- Final statuses never roll back: a late “failed” response won’t turn a paid order into an unpaid one.
- The signing key is stored encrypted in the database, and re-saving the settings doesn’t corrupt it, even when the key contains special characters.
- The fiscal receipt adds up to the kopeck: lines are built from order line totals with discounts, shipping and fees, and the rounding difference is accounted for explicitly.
- Safe XML parsing with no external entities and no network requests.
- A Pro gate that doesn’t brick the store: when the trial or license ends, only the Pro features stop, and accepting payments keeps working.
How to install
- Plugins → Add New → Upload Plugin: choose
ipay-ua-for-woocommerce-1.0.0.zipand activate it. - Open WooCommerce → Settings → Payments → iPay.ua.
- For testing, enable “Sandbox” and enter the test Merchant ID and signing key from iPay.ua. Save and click “Check credentials”.
- Copy the notification URL from the bottom of the settings page and send it to your iPay.ua manager.
- For real payments, disable the sandbox, enter the live Merchant ID and signing key, save and check the credentials again.
- For Pro: paste the license key from the email you get after payment into the license field, or start the 7-day trial.
Version history
- 1.0.0 — September 2026
- First release: iPay.ua payment creation with a redirect to the payment page, HMAC-SHA512 signed requests, notifications double-checked through Status, reconciliation on the customer’s return and in the background every 10 minutes, underpayment and double-payment protection, sandbox and credentials check, classic and block checkout, HPOS, Ukrainian translation. Pro: refunds (Reversal / Refund, partial), pre-authorisation with capture and release, fiscal receipts through iPay.ua, payment log.
Frequently asked questions
Do I need a contract with iPay.ua?
Yes. iPay.ua issues both live and test credentials (mch_id and sign_key).
Which currencies are supported?
Ukrainian hryvnia. If the store currency is different, the iPay.ua payment method isn't shown, so the customer is never charged the wrong amount.
The customer paid, but the order is still "Pending payment".
Background reconciliation will pick up the payment within 10 minutes. If it keeps happening, check that iPay.ua has connected the notification URL from the plugin settings.
Does card data pass through my site?
No. The card is entered on the iPay.ua page, and the plugin double-checks every payment notification with a request to iPay.ua.
What if I don't want to pay for Pro?
Accepting payments, automatic confirmation, background reconciliation and the sandbox are free with no time limit.
Questions about the module?
Message us on Telegram — we reply within the working day. We will help with setup, compatibility and key activation.
No reviews yet. Be the first — right below.
Leave a review
Reviews are moderated before publication, which usually takes up to 24 hours.
No questions yet. Ask one — we answer within 24 hours.
Ask a question
We usually reply within 24 hours during working hours.
Buying the module
—