canonical: https://jentic.com/apis/monobank.ua/monobank

# Monobank Ua Monobank Open API

Monobank is a leading Ukrainian neobank, and its public Open API lets personal-account holders pull their own banking data and receive transaction webhooks. The five endpoints cover live currency rates, the bank's open-key sync, client profile and account list, statement extraction across an account window, and webhook registration for real-time transactions. Authentication is the X-Token header, issued per personal user from the Monobank app.

## For AI agents

Read a Ukrainian Monobank user's accounts, pull statement transactions, and receive transaction webhooks for personal finance and PFM use cases.

## Scope

Does not initiate payments, transfers, or card management, and does not expose corporate accounts - use for read-only personal Monobank data and transaction webhooks only.

## Capabilities

- Pull live currency rates for the Ukrainian hryvnia against world currencies via `/bank/currency`
- Retrieve the authenticated client's profile, accounts, and jars in one call to `/personal/client-info`
- Extract historical transactions for a specific account between two timestamps via `/personal/statement`
- Register a webhook on `/personal/webhook` so Monobank pushes new transactions to your endpoint in real time
- Fetch the bank's open public key from `/bank/sync` to verify webhook payload signatures

## Use cases

### Personal Finance Dashboard

An individual builds a personal finance dashboard that pulls accounts and jars from `/personal/client-info` and statement entries from `/personal/statement` to show spending categories, savings goal progress, and net worth in UAH. Because the X-Token is per-user, the dashboard runs entirely on behalf of one Monobank customer.

Example prompt: Pull every transaction from account acc_main between 2026-05-01 and 2026-05-31 and group totals by merchant category.

### Real-Time Transaction Webhooks

Rather than polling `/personal/statement`, an app registers a webhook on `/personal/webhook` so Monobank delivers each new transaction as it happens. Combined with the bank's public key from `/bank/sync`, the receiver can verify the signature on every payload before processing it, enabling instant push notifications and rule-based automations.

Example prompt: Register https://example.com/mono/webhook as the webhook URL and confirm Monobank accepted the registration.

### UAH FX Monitoring

GET `/bank/currency` returns Monobank's published rates for the Ukrainian hryvnia against world currencies. A monitoring script can pull this on a schedule, write rates to a time series, and alert when UAH-USD or UAH-EUR moves beyond a threshold, useful for traders, exporters, and remittance senders watching the local currency.

Example prompt: Pull current Monobank rates and return the UAH-USD buy and sell rates.

### AI Agent Personal Banking

A personal AI assistant uses Jentic to discover Monobank's five operations and runs them with a vault-stored X-Token to answer questions like 'how much did I spend on groceries this month' or 'what is my hryvnia savings rate' without exposing the token to the model. Webhook events feed back into the agent so it can react to incoming transactions.

Example prompt: Search Jentic for 'pull my Monobank transactions', load the schema for GET `/personal/statement/{account}/{from}/{to}`, and execute it for account 0 over the past week.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/bank/currency` | Get current currency rates |
| GET | `/bank/sync` | Get the bank's open public key |
| GET | `/personal/client-info` | Get client profile and accounts |
| POST | `/personal/webhook` | Register a transaction webhook |
| GET | `/personal/statement/{account}/{from}/{to}` | Get an account statement |

## Key resources

- **Public Bank Data** — Currency rates and the bank's open public key for signature verification
- **Personal Client Info** — Authenticated client profile, accounts, and jars
- **Statement** — Account-level transaction history within a time window
- **Webhook** — Real-time delivery of new transactions to a registered URL

## Why Jentic

- **Setup:** Wiring Monobank by hand means issuing a personal X-Token, sending it in the X-Token header on every call, and staying inside its per-token rate limit while you page through Unix-timestamp statement windows. Through Jentic you install once, import the Monobank Open API from the API Directory, store the X-Token once, and your agent calls it.
- **Permission scoping:** This spec is read-only personal data plus a webhook registration, so limit the agent to the operations it needs, such as fetching client info or reading a statement window. You choose the operations it may call, so registering a webhook is not included unless you add it.
- **Credential handling:** Your Monobank X-Token is stored once, encrypted, by your own Jentic One instance and injected into the X-Token header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'pull my Monobank transactions' or 'check today's currency rates', and Jentic returns the matching Monobank operation with its input schema, including the account id and Unix-timestamp window that `/personal/statement` requires, so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Revolut Business API** — European fintech with multi-currency business accounts and transactions
- **Nordigen (GoCardless Bank Account Data) API** — Pan-European bank account data aggregator covering hundreds of banks
- **TrueLayer API** — Open banking platform for UK and European bank account data and payments
- **Plaid API** — Pair non-Ukrainian bank account data via Plaid alongside Monobank

## FAQ

### What authentication does the Monobank Open API use?

Monobank uses an X-Token header issued per personal user from the Monobank mobile app. Through Jentic the X-Token is stored encrypted in the vault and attached to each request at execution so the raw token never enters the agent's context.

### Can I pull historical transactions with the Monobank API?

Yes. Call GET `/personal/statement/{account}/{from}/{to}` with the account id and Unix timestamps for the window. Monobank limits the window to roughly 31 days per call, so longer ranges should be split into multiple requests.

### What are the rate limits for the Monobank API?

Monobank rate-limits personal API calls aggressively. Statement requests are limited to about one per minute per token and currency rates to about one per minute globally; HTTP 429 is returned if the limit is exceeded.

### How do I register a transaction webhook through Jentic?

Search Jentic for 'register a Monobank webhook', load the schema for POST `/personal/webhook`, and execute it with the public HTTPS URL that should receive transaction events. Verify each incoming payload using the public key from GET `/bank/sync.`

### Does the Monobank API give access to other people's accounts?

No. The X-Token is tied to the issuing personal user, so the API can only read that user's accounts, jars, and statements. There is no business or partner mode in this open API.

### How do I get current UAH currency rates?

GET `/bank/currency` returns Monobank's current published rates for the Ukrainian hryvnia against world currencies. The endpoint does not require an X-Token but is heavily rate-limited, so cache the response for at least a minute.

### Can I limit what my agent is allowed to do with the Monobank Open API?

Yes. Because you run Jentic One yourself, your own rules decide which of the five Monobank operations the agent may call and which credentials it may use. For a read-only personal finance case you can allow just GET `/personal/client-info` and GET `/personal/statement` while withholding POST `/personal/webhook`, so the agent can read accounts and statements but cannot register a webhook. The per-user X-Token stays under your control and is only attached to the operations you have permitted.
