Get in touch
  • WordPress
  • Payments
  • v1.1.6

Instalment Payments with PrivatBank, monobank and A-Bank for WooCommerce

An instalment payment plugin for WooCommerce: PrivatBank, monobank and A-Bank in one payment method, buyer's choice of bank, signature verification, reconciliation with the bank, an applications log and refunds.

Download Free
Pro · one-year licence The more sites, the less each one costs
Licence
two sites, annual
Trial
7 days, no card, one per site
Or all 173 Pro modules with All Access — 4 990 ₴ / year

The module in action — 39 sec

Clear even without sound: Ukrainian subtitles

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.

Feature Free Pro
Three banks in one payment method: PrivatBank, monobank and A-Bank ✔ ✔
A-Bank: application approved in the Abank24 app ✔ ✔
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 ✔ ✔
Test modes on both banks' public sandboxes ✔ ✔
A-Bank: delivery confirmation, cancellation and returns — ✔
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 — ✔

What it looks like

Instalments in the WooCommerce blocks checkout: bank choice and monthly amount
Blocks checkout: one method, the buyer picks the bank inside it and sees the number of payments and the monthly amount right away.
A-Bank instalments option at WooCommerce checkout
A-Bank is chosen in the same payment method: number of payments, monthly amount and the phone number for the Abank24 request.
Bank decline page in WooCommerce with a button to choose another bank
The bank declined — the buyer sees the reason and goes back to choose another bank or payment method in one click.

Key points

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, monobank or A-Bank.

What the admin gets

The payment method’s settings let you enable the banks you need. You can leave one bank, two or all three — the buyer will see exactly what you’ve enabled.

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.

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

  • 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.

Version history

v1.1.6 Current

Monobank and A-Bank show the number of payments and the monthly amount at checkout the way PrivatBank does, also without Pro; in the block checkout the figure follows the live cart total,…

v1.1.5

On sites where every language has a URL prefix (Polylang), the PrivatBank, monobank and A-Bank notifications, the checks of the waiting screen and the buyer’s return from PrivatBank landed…

v1.1.4

The “Buy a licence” button and the admin links now open the WooCommerce module page instead of the OpenCart one.

All versions (8)
v1.1.3

PrivatBank no longer rejects an application when the order has a discount (a coupon or a negative fee from another plugin).

v1.1.2

Fixed the PrivatBank programme labels in the settings: the fee payer was shown the wrong way round.

v1.1.1

Bank credentials in the settings are now encrypted with libsodium instead of XOR.

v1.1.0

A-Bank instalments added as the third bank: application approved in the Abank24 app, waiting page, status reconciliation with the bank.

v1.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…

Frequently bought with Instalment Payments with PrivatBank, monobank and A-Bank for WooCommerce

4 modules in one order — 40% cheaper than separately

“Store starter” bundle Instalment Payments with PrivatBank, monobank and A-Bank Nova Poshta Premium Mono Acquiring Telegram notifications and Viber/SMS for customers Need more — all 173 modules in All Access for 4 990 ₴.
2 490 ₴ / year instead of 4 160 UAH bought separately
Buy the bundle →

Full module description

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. The store extends no credit: the bank pays the full amount — at once, or in parts over the term with the PrivatBank PB programme (“funds over the term”).

This isn’t an “instalments button” off a banner. It’s a full cycle: signature verification of PrivatBank and monobank notifications, 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, all three 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, monobank or A-Bank. 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 one bank, two or all three — 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 (Instant Instalment) it’s the buyer; with PP (Instalment Payment) and PB (Instalment Payment with funds credited over the term) it’s the store; with IA (promotional Instant Instalment) the store and the buyer split it 50/50. 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 all banks: who, when, how many instalments, the application’s current state, and the bank’s reply.

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.

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. For A-Bank, it’s the “Plati chastynamy” agreement: a store ID, a secret key and a point of sale.

No agreement is needed for testing: PrivatBank and monobank 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. A-Bank has a test contour with a test store, but it works with the real Abank24 app, so the buyer’s number must belong to an A-Bank customer.

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.

A-Bank pays out under the terms of your “Plati chastynamy” agreement; the instalment plan becomes active once the store confirms the goods have been handed over.

Under the hood

Every PrivatBank and monobank notification’s signature is verified before the module does anything to the order — this isn’t an option that can be switched off; A-Bank notifications carry no signature and only trigger reconciliation with the bank. 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; for A-Bank — store ID, key and point of sale.

4. Turn on test mode and run an order through each bank’s test mode.

5. Turn off test mode — and you’re ready to accept payments.

Questions
about the module

Didn't find the answer? Message us on Telegram and we'll reply within a business day.

@catcode_support Setup, compatibility, activation
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 (Instant Instalment) it's the buyer; with PP (Instalment Payment) and PB (Instalment Payment, funds over the term) it's the store; with IA (promotional Instant Instalment) it's split 50/50. With monobank the store pays the commission and the buyer pays nothing extra; the bank charges the buyer a fee only if they choose more instalments than the store offers.

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.

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