Instalment Payments with PrivatBank, monobank and A-Bank for WooCommerce
What each licence includes
| Feature | Free | Pro |
|---|---|---|
| Three banks in one payment method: PrivatBank, monobank and A-Bank | ✔ | ✔ |
| A-Bank: application approved in the Abank24 app | ✔ | ✔ |
| A-Bank: delivery confirmation, cancellation and returns | — | ✔ |
| The buyer chooses the bank themselves at checkout | ✔ | ✔ |
| PrivatBank: programmes II, PP, IA and PB — matching your agreement | ✔ | ✔ |
| PrivatBank: 2–25 instalments, confirmation on the bank's page | ✔ | ✔ |
| monobank: 3–25 instalments, in-app confirmation with no redirect | ✔ | ✔ |
| monobank: a waiting page brings the order to success on its own | ✔ | ✔ |
| "About N UAH a month" hint calculated from the order total | ✔ | ✔ |
| Classic checkout and blocks checkout | ✔ | ✔ |
| Compatible with HPOS — WooCommerce's separate order tables | ✔ | ✔ |
| Signature verification on every notification from both banks | ✔ | ✔ |
| Status reconciliation with the bank instead of trusting the notification | ✔ | ✔ |
| A repeated notification duplicates nothing | ✔ | ✔ |
| A paid order can't be sent to the bank a second time | ✔ | ✔ |
| Choosing the number of instalments at checkout | — | ✔ |
| PrivatBank: hold-and-capture — the bank holds, you capture | — | ✔ |
| monobank: confirmation of goods handed over, manual or by status | — | ✔ |
| monobank: full and partial refunds | — | ✔ |
| A log of applications across both banks | — | ✔ |
| Test modes on both banks' public sandboxes | ✔ | ✔ |
Instalment Payments with PrivatBank, monobank and A-Bank is a single WooCommerce payment method in which the buyer picks the bank themselves. PrivatBank takes them to its own page and offers 2–25 instalments; monobank doesn’t redirect anywhere at all — a push notification in the app, a confirmation, and the buyer is already on the thank-you page. In both cases the store receives the full amount at once.
This isn’t an “instalments button” off a banner. It’s a full cycle: signature verification on every notification, status reconciliation with the bank, a hold-and-capture flow, confirmation of goods handed over, and refunds.
Why a store needs this
Instalments are the cheapest way to raise the average order value in categories where price makes people hesitate: appliances, furniture, bicycles, tools, children’s goods. Instead of “too expensive, I’ll think about it”, the buyer sees “about 1,200 UAH a month” and buys today.
The store isn’t lending anything and takes on no risk: the bank pays out the full order amount at once, and the buyer’s ongoing payments are then a matter between the buyer and the bank.
The usual problem isn’t wanting instalments — it’s that PrivatBank and monobank have different APIs, different flows and different commission logic. So stores end up either setting up just one, or running two separate modules that don’t know about each other. Here, both banks are one payment method with one log.
What it looks like for the buyer
A single payment method, “Pay in instalments”, appears at checkout. Choosing it shows the buyer a choice of bank: PrivatBank or monobank. Next to it is a hint, “about N UAH a month”, calculated from the order total, not from a single item’s price.
PrivatBank. After placing the order, the buyer is redirected to the bank’s page, chooses the number of instalments there, and confirms. They then return to the store.
monobank. No redirect at all. The buyer gets a push notification in the monobank app and confirms there, while the store shows a waiting page that brings the order to success on its own as soon as the bank responds. To the buyer, it looks as if payment happened right on the site.
Both the classic checkout and the block-based checkout work — no separate setup is needed for blocks.

A-Bank. Like monobank, no redirect: the buyer enters a phone number, gets a request in the Abank24 app and approves it there, while the store waits on its own page and completes the order by itself. A-Bank notifications are not signed, so the plugin changes the order only based on the bank’s answer to a status request.

What the admin gets
The payment method’s settings let you enable the banks you need. You can leave just one, or both — the buyer will see exactly what you’ve enabled.
For PrivatBank, you choose the programme matching your agreement: II, PP, IA or PB. The programme determines who pays the bank’s commission: with II and IA it’s the store, with PP and PB it’s the buyer. The module doesn’t decide this for you — it simply works according to whichever programme is in your agreement.
For monobank, you set the store ID and secret key, and choose the range of instalments within 3–25.
In the Pro version, this is joined by a log of applications across both banks: who, when, how many instalments, the application’s current state, and the bank’s reply.

How it works, step by step
1. The buyer places an order and chooses a bank at checkout.
2. The module creates an application with the bank and sends the buyer wherever that bank leads: PrivatBank — to its own page; monobank — to a push notification in the app.
3. The bank sends a notification with the result. The module verifies the notification’s signature — a request from anyone else to this address changes nothing.
4. The module doesn’t take the notification at face value: it reconciles the status with the bank via a separate request, and only then updates the order.
5. The order moves to paid, the buyer sees the thank-you page, and the store receives the full amount.

Why reconciliation matters more than notifications
A bank’s notification can fail to arrive: the site was down for a minute, the host returned a 502, a firewall dropped the request. A module that relies solely on the notification leaves the order at “Awaiting payment” in that case, even though the money has already been charged.
Here it’s different. After the buyer returns (PrivatBank) or while they’re waiting (monobank), the module itself asks the bank about the application’s status. So the order closes out even when the notification got lost along the way.
A repeated notification duplicates nothing: if the bank sends the same result twice, the module processes it once. And a paid order can’t be sent to the bank a second time — an application for an already-paid order simply isn’t created.

Free version and Pro
The free version is a fully working payment method: both banks, the buyer’s choice of bank, the monthly-payment hint, both the classic and blocks checkout, signature verification, reconciliation with the bank, duplicate protection, test modes. There are no time limits and no ads in the admin.
Pro adds what a store with high volume and returns can’t do without:
— choosing the number of instalments right at checkout, before the buyer even reaches the bank;
— a hold-and-capture flow for PrivatBank: the bank holds the amount, and you capture it once the goods have actually shipped;
— confirmation of goods handed over for monobank — by button or automatically on a chosen order status;
— full and partial refunds for monobank straight from the admin;
— a log of applications across both banks with their replies.
Pricing
A Pro licence costs 990 UAH, for one domain. The licence is annual: once it ends, the module keeps accepting payments — only updates and support stop arriving. We don’t promise “forever”: bank APIs change, and a payment module without updates is only a matter of time before checkout breaks.
What’s needed from the bank
An agreement is required. For PrivatBank that’s “Instalment Payment” or “Instant Instalment” — the bank issues a store ID and password. For monobank, it’s the “Purchase in Instalments” agreement, under which a store ID and secret key are issued.
No agreement is needed for testing: both banks have public sandboxes, and the module has test modes for them. So you can run the whole checkout, notifications and reconciliation before signing anything, and approach the bank with an already-working store.
When the store gets paid
PrivatBank pays out the order amount once the application is approved, under your programme’s terms.
monobank charges the first instalment and pays the store the full amount right after approval. The instalment plan itself becomes active once the store confirms the goods have been handed over — in Pro this is done by a button in the log or automatically on a chosen order status.
Technical requirements
WordPress 6.2 or newer, WooCommerce, PHP 7.4 or newer. HTTPS is mandatory — without it, the banks won’t accept the address for notifications.
The module is compatible with HPOS (WooCommerce’s separate order tables) and works with both the legacy storage and the new one. Blocks checkout is supported on equal footing with the classic one.
Under the hood
Every notification’s signature is verified before the module does anything to the order — this isn’t an option that can be switched off. Keys are stored encrypted in the database.
Only a result reconciled with the bank changes the order status. A notification, to the module, is a signal to “go and check”, not a command to “mark as paid”.
The module doesn’t touch other payment methods and doesn’t override checkout: it registers as an ordinary WooCommerce payment gateway and lives alongside the rest.
How to install
1. Upload the archive via “Plugins → Add New → Upload Plugin” and activate it.
2. WooCommerce → Settings → Payments → “Pay in Instalments”.
3. Enable the banks you need and enter the credentials: for PrivatBank — store ID, password and programme; for monobank — store ID and secret key.
4. Turn on test mode and run an order through both banks’ sandboxes.
5. Turn off test mode — and you’re ready to accept payments.
Version history
1.1.0 — A-Bank instalments added as the third bank: application approved in the Abank24 app, waiting page, status reconciliation with the bank. An A-Bank notification only triggers reconciliation, so a forged request cannot mark an order paid. Pro adds delivery confirmation, cancellation and returns for A-Bank. The phone field is now separate for each bank.
1.0.0 — first release. PrivatBank (programmes II, PP, IA, PB, 2–25 instalments) and monobank (3–25 instalments, in-app confirmation with no redirect) as one payment method, buyer’s choice of bank, monthly-payment hint, both classic and blocks checkout, signature verification, status reconciliation with the bank, protection against duplicates and against resending an already-paid order, test modes on both banks’ sandboxes, HPOS compatibility. In Pro — choosing the number of instalments at checkout, a hold-and-capture flow for PrivatBank, confirmation of handover and refunds for monobank, a log of applications.
Frequently asked questions
Is a separate agreement with the bank required?
Yes. For PrivatBank — the "Instalment Payment" or "Instant Instalment" agreement (the bank issues a store ID and password); for monobank — the "Purchase in Instalments" agreement (store ID and secret key). No agreement is needed for the test modes: both banks have public sandboxes.
How does monobank differ from PrivatBank at checkout?
PrivatBank redirects the buyer to its own page. monobank doesn't redirect anywhere: the buyer gets a push notification in the app, while the store shows a waiting page that brings the order to success on its own as soon as the bank responds.
When does the store get paid for monobank?
Right after the application is approved — the bank charges the first instalment and the full amount is paid to the store. The instalment plan becomes active once the store confirms the goods have been handed over: by a button in the log, or automatically on a chosen order status.
Who pays the bank's commission?
For PrivatBank it depends on the programme: with II and IA it's the store, with PP and PB it's the buyer. With monobank the store always pays the commission — the buyer pays no interest.
What happens if a bank's notification doesn't arrive?
The module doesn't rely on notifications: after the buyer returns (PrivatBank) or while waiting (monobank), it asks the bank about the application's state itself, so a paid order won't stay stuck at "awaiting payment".
Can a notification be faked to get an order marked "paid"?
No. PrivatBank signs notifications with the store's password, monobank with HMAC-SHA256 using the secret key. A notification with an invalid signature is rejected with a 400 code and changes nothing.
Does it work with the blocks checkout?
Yes. Choosing the bank, the number of instalments and the monobank phone field all work in both the classic checkout and the blocks checkout.
Does it work with amounts over 50,000 UAH?
For PrivatBank — no, that's the bank's own limit, and the module simply doesn't show that bank. monobank has no upper limit; the ceiling is set by the bank for the specific buyer.
How does A-Bank work and what do I need?
Like monobank: the buyer enters a phone number and approves the request in the Abank24 app while the store waits on its own page. You need an A-Bank instalments contract; the bank issues a store ID, a secret key and a point of sale.
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
—