Monobank moves the money — the CRM never touches a card and never charges anything. Its job is different and no less important: hear from the bank that a particular invoice was paid, and put that fact on a particular order so your manager sees it without opening the acquiring cabinet. Every confirmation is checked against a cryptographic signature, so a forged "paid" does not get through. A redelivered webhook never creates a second payment.
How it works
Signed webhook
Monobank sends the invoice status with an x-sign header. The CRM reads the raw request body and verifies the ECDSA signature against your merchant's public key — otherwise it accepts nothing.
Payment on the order
A payment record is created with amount, currency, method and status, linked to the order by the invoice reference.
Order status
The order moves to "Confirmed" if it is still "Pending" and the payments cover the order total.
Your team is told
A successful payment produces one bell notification and push for the owner and managers — exactly one, even if the bank redelivered it.
Payments journal
Every payment from every provider in one list with search, filters and link state. You can see what was paid for even when no order exists yet.
Partial payment is visible
The invoice shows a derived state — unpaid, partial or paid — based on actual payments in the order's currency.
Where responsibility ends
Exactly what the CRM does, and what stays with Monobank and your store. These boundaries matter: a payment integration that promises more than it does is the most expensive kind of misunderstanding.
- The CRM accepts
- signed invoice status webhooks; Monobank does not send the expired status by webhook, so whoever created the invoice tracks that
- The CRM records
- invoice id, status, the actual amount and currency; the invoice reference → the order's externalId
- The CRM may change
- "Pending" → "Confirmed", and only for a successful payment that covers the order in the right currency
- The CRM creates
- an invoice when a manager presses "Payment link" on an order or invoice — Monobank hosts the payment page, and the link stays payable for a day
- The CRM never does
- cancelling invoices, refunds, split payments, charging a card or storing card data
- Currencies
- Hryvnia, plus dollar and euro — the currency comes from the numeric ISO-4217 code in the webhook, and amounts are converted from minor units
A payment that found no order is not lost
The most common failure of payment integrations: the money arrived, the system cannot tell what to attach it to, and simply discards the event.
- If the invoice reference matches no order, the payment is still stored — in Commerce → Payments, marked as unlinked.
- A manager opens it and either links it to an existing order or creates a new order from it, with the buyer and amount already known.
- The reverse route works from the order too: pick an existing unlinked payment from the list.
- A payment can be registered by hand — for cash or a bank transfer that never went through acquiring at all.
- A redelivered webhook creates no duplicate: the record is idempotent on the invoice id.
The account check is diagnostics, not a barrier
The callback works the moment the merchant token is saved: a correctly signed event from Monobank authenticates itself, so demanding "pass a test first" would be an artificial obstacle between you and a real payment. If you want it, the connection test performs a safe read and shows which account the token belongs to, changing nothing in the CRM.
Setup
- 1
Add the Monobank adapter
Paste the merchant token from your Monobank Acquiring cabinet. The webhook address appears on the created adapter's page. The token is stored encrypted.
- 2
Pass the address in webHookUrl
Your store adds that address to the webHookUrl field of every invoice-create request — the official API describes no global merchant webhook. Put the CRM order's externalId in merchantPaymInfo.reference: that is how the payment finds its order.
- 3
Verify with a real payment
Run one genuine payment. It should appear in the journal and on the order, and your team should get the notification.
Frequently asked
How do I connect Monobank to the CRM?
Add the Monobank adapter under Settings → Integrations, paste the merchant token from your acquiring cabinet and copy the webhook address. Your store then passes that address in the webHookUrl field when creating an invoice — and payments start appearing in the CRM.
Do I need a separate test before accepting real payments?
No. A signed event from Monobank authenticates itself, so webhooks are accepted as soon as the token is saved. The connection test is available as diagnostics but is not a precondition.
Does the CRM store card data?
No. The card number and CVV never reach the CRM and are never stored. Only the amount, currency, status and invoice id are kept — enough to reconcile the payment against the order.
How does the CRM find the right order?
By the invoice reference field: your store puts the order's externalId there, and the CRM looks for an order with exactly that identifier inside your workspace. A webhook cannot reach another workspace's orders.
What if the reference does not match?
The payment is not discarded. It is stored in the payments journal as unlinked, and a manager links it to an existing order or creates a new one from it.
Does the CRM create invoices or issue refunds?
An invoice, yes — when you ask for one: the "Payment link" button on an order or invoice raises a Monobank invoice and returns a link for the manager to send the buyer. Refunds, invoice cancellation and any charges stay with Monobank and your store; the CRM does none of them.
Can other providers be accepted the same way?
Yes. LiqPay, WayForPay and Hutko connect the same way and write into the same payments journal — each with its own signature scheme, exactly as that provider's official documentation requires.
Commonly connected together
LiqPay
BetaA payment confirmed on LiqPay's side raises one team alert and updates a matching order in the CRM.
Learn moreWayForPay
AvailableThe CRM verifies each payment result, alerts your team, and links the payment to an existing order. Without a match, it remains in a clear reconciliation queue.
Learn moreHutko
AvailableAfter every payment, the CRM records the result, alerts your team, and either attaches the payment to an existing order or keeps it in a clear reconciliation queue.
Learn moreRozetka
BetaUkraine's largest marketplace: orders arrive in the CRM on their own, statuses and stock go back to the seller cabinet, and buyer questions become leads with an owner and a next step.
Learn moreProm.ua
AvailableOrders, payments and delivery arrive on their own. Buyer questions become leads you answer straight from the CRM, without opening the Prom cabinet.
Learn moreBeta: Beta: available to connect today; the channel’s capabilities are still being refined.
Connect Monobank
Acquiring payments land on their orders by themselves — and the ones that find no order wait in the journal instead of disappearing.
Start free