# PrivatBank + Krokul CRM

Yes. Krokul CRM integrates with PrivatBank through the bank API for business (Autoclient). With a token the client issues, Krokul reads the account statement, finds the company by the payer EDRPOU code and turns the open expected payment into an actual one. The accountant only sorts out the unmatched receipts.

**Status:** Via API and webhooks.

## What your team gets

### A receipt from the statement closes the plan

Several times an hour, Krokul reads `/api/statements/transactions/interim` and takes incoming transactions with TRANTYPE C. By the payer EDRPOU code in AUT_CNTR_CRF, it finds the company, and by the SUM amount and the OSND purpose, it picks the open expected payment of that company deal. The plan becomes an actual payment dated DAT_OD, and the deal feed shows which bank payment brought the money.

### One transaction gives exactly one payment

The bank advises identifying a payment by the REF and REFN pair. Krokul stores this pair as the external key of the payment and checks it before every write, so reading the same statement again creates no second payment.

### Unmatched receipts wait for the accountant

If the payer EDRPOU code is not found among companies or the amount matches no plan, the transaction goes to the «Unmatched receipts» list. The accountant picks the deal by hand, and Krokul remembers the EDRPOU code for that company, so the next payment from the same payer lands on its own.

### A partial payment from the statement

When the client has paid part of the invoice, Krokul records an actual payment for the SUM of the transaction and keeps the rest of the plan open. The manager sees on the deal card how much is still due.

### An event for accounting after a receipt

Each actual payment from the statement fires the Krokul webhook `payment.received`, and when receipts cover the deal invoice in full, Krokul sends `invoice.paid` once. An accounting program or a team chat can listen to these events.

## What moves between PrivatBank and Krokul

| PrivatBank | Krokul | Direction | When |
|---|---|---|---|
| Statement transaction (TRANTYPE C): SUM, OSND, DAT_OD | Actual deal payment | PrivatBank → Krokul | Krokul polls `/api/statements/transactions/interim` on a schedule |
| Payer EDRPOU code AUT_CNTR_CRF | Deal company | PrivatBank → Krokul | While the transaction is matched |
| REF and REFN pair | External key of the payment | PrivatBank → Krokul | After the payment is recorded |
| Transaction with no match | «Unmatched receipts» list | PrivatBank → Krokul | When no company or plan is found |
| Final statement (`/final`) | Check of the payments for the previous day | PrivatBank → Krokul | Once a day |

## How to connect today

### Your own flow through the Krokul API and webhooks

1. In Privat24 for business, open Accounting and reports → Integration (Autoclient), click Connect an app, choose API and copy the token. For legal entities, the service is available on the Business Comfort and Business PRO plans.
2. In Krokul, create an API key with scopes for payments and companies. Your flow reads the open plans of a company through `payment/api-readList` with `openPlans: true`.
3. Record an incoming statement transaction as an actual payment through `payment/api-create` with the deal `cardUuid`, and store the REF and REFN pair on the payment through `externalRef/api-set`, so a repeated read gives no second payment.
4. Subscribe a webhook to `payment.received` and `invoice.paid`, so accounting or a team chat gets the event. Each delivery carries the `x-crm-signature` header, which you check with your secret.

### For integrators

Payments from the statement are also available through the Krokul public API. The `payment/api-readList` route with `openPlans: true` returns the open plans of a company, and an `externalRef` external key keeps the link between an EDRPOU code and a company. The `payment.received` and `invoice.paid` events arrive as signed webhooks with a delivery log. You can test your own matching code on a demo company in the sandbox.

[API documentation](https://app.krokul.com/api/v1/docs)

## Questions and answers

### What can Krokul do with a PrivatBank account?

Only read the statement through the Autoclient API with the token you issued. Krokul creates no payments, and a deleted token stops the statement reads.

### How fast does a PrivatBank payment appear on the deal?

A few minutes after the transaction appears in the bank interim statement. Krokul polls the statement on a schedule and keeps to the bank advice of at most one request per second.

### What does Krokul do with a payment it could not match?

Krokul puts it in «Unmatched receipts». The accountant picks the deal by hand, and Krokul remembers the payer for next time.

### Can I record payments from the statement by hand?

Yes. In the payment register, the accountant marks the expected payments seen in the statement and records them with the «Actuals from statement» button.

## Limits

Krokul works with PrivatBank only through the bank API and within the rights of the token the client issued. It reads the statement and creates no payments. The bank sends no events about new transactions and advises at most one request per second, so Krokul polls the statement on a schedule.

## Related services

- [monobank](https://krokul.com/en/integrations/monobank/index.md)
- [LiqPay](https://krokul.com/en/integrations/liqpay/index.md)
- [NovaPay](https://krokul.com/en/integrations/novapay/index.md)
- [WayForPay](https://krokul.com/en/integrations/wayforpay/index.md)
- [Opendatabot](https://krokul.com/en/integrations/opendatabot/index.md)

[Payments and banks (Ukraine)](https://krokul.com/en/integrations/category/payments-ua/index.md)

PrivatBank and Privat24 are trademarks of their owner. Krokul is not affiliated with PrivatBank.

Updated: 2026-10-15

---

App: https://app.krokul.com/ · API: https://app.krokul.com/api/v1/docs
