Monobank open API API Reference

API для отримання інформації про виписки та стан особистого рахунку. Для надання доступу потрібно пройти авторизацію у особистову кабінеті https://api.monobank.ua/ та отримати токен для персонального використання.

Якщо у вас є запитання щодо роботи API, запрошуємо до комьюніті у Telegram-групі.

Якщо у вас є сервіс і ви хочете централізовано приєднатися до API для надання послуг клієнтам, потрібно підключитися до корпоративного API, що має більше можливостей. Якщо дані клієнтів не будуть надходити на ваші сервери або ви робите сервіс для своєї родини, використання корпоративного API необов'язково. Розробка бібліотек, або програм, які будуть використовувати клієнти особисто (дані клієнта не будуть проходити черeз вузли розробника), також не потребують використання корпоративного API.

Це надасть змогу клієнтам monobank авторизуватись у вашому сервісі (наприклад у фінансовому менеджері) для надання інформації про стан рахунку, або виписки.

У разі виявлення експлуатації цього API в якості корпоративного, банк залишає за собою право накласти санкції на компанію.

API Endpoint
https://api.monobank.ua/
Request Content-Types: application/json
Response Content-Types: application/json
Schemes: https
Version: 201906

Публічні дані

Загальна інформація що надається без авторизації.

Отримання курсів валют

GET /bank/currency

Отримати базовий перелік курсів валют monobank. Інформація кешується та оновлюється не частіше 1 разу на 5 хвилин.

200 OK

Інформація про курс валют

Response Example (200 OK)
[
  {
    "currencyCodeA": 840,
    "currencyCodeB": 980,
    "date": 1552392228,
    "rateSell": 27,
    "rateBuy": 27.2,
    "rateCross": 27.1
  }
]

Клієнтські персональні дані

Інформація, що надається тільки за наявстю tokenа доступу, який клієнт може отримати в особистому кабінеті https://api.monobank.ua/

Інформація про клієнта

GET /personal/client-info

Отримання інформації про клієнта та переліку його рахунків. Обмеження на використання функції не частіше ніж 1 раз у 60 секунд.

X-Token: string
in header

Token для особистого доступу до API

200 OK

Statement list

Response Example (200 OK)
{
  "name": "string",
  "webHookUrl": "string",
  "accounts": [
    {
      "id": "kKGVoZuHWzqVoZuH",
      "balance": 10000000,
      "creditLimit": 10000000,
      "currencyCode": 980,
      "cashbackType": "UAH"
    }
  ]
}

Встановляння WebHook

POST /personal/webhook

Встановлення URL користувача, на який буде сформовано POST запит у форматі {type:"StatementItem", data:{account:"...", statementItem:{#StatementItem}}}. Якщо сервіс користувача не відповість протягом 5с на команду, сервіс повторить спробу ще через 60 та 600 секунд. Якщо на третью спробу відповідь отримана не буде, функція буде вимкнута.

The user to create.

webHookUrl: string
X-Token: string
in header

Token для особистого доступу до API

Request Example
{
  "webHookUrl": "string"
}
200 OK

ok

Виписка

GET /personal/statement/{account}/{from}/{to}

Отримання виписки за час від {from} до {to} часу в секундах в форматі Unix time Максимальний час за який можливо отримувати виписку 31 доба + 1 година (2682000 секунд) Обмеження на використання функції не частіше ніж 1 раз у 60 секунд.

X-Token: string
in header

Token для особистого доступу до API

account: string
in path

Ідентифікатор рахунку з переліку Statement list або 0 - дефолтний рахунок.

from: string
in path

Початок часу виписки.

Наприклад 1546304461

to: string
in path

Останній час виписки (якщо відсутній, буде використовуватись поточний час).

Наприклад 1546306461

Statement list

Response Example (200 OK)
[
  {
    "id": "ZuHWzqkKGVo=",
    "time": 1554466347,
    "description": "Покупка щастя",
    "mcc": 7997,
    "hold": false,
    "amount": -95000,
    "operationAmount": -95000,
    "currencyCode": 980,
    "commissionRate": 0,
    "cashbackAmount": 19000,
    "balance": 10050000
  }
]

Опис даних

UserInfo: object

Опис клієнта та його рахунків.

name: string

Ім'я клієнта

webHookUrl: string

URL для отримання інформації про нову транзакцію

accounts: object[]

Перелік доступних рахунків

object
id: string

Ідентифікатор рахунку

balance: number (int64)

Баланс рахунку в мінімальних одиницях валюти (копійках, центах)

creditLimit: number (int64)

Кредитний ліміт

currencyCode: number (int32)

Код валюти рахунку відповідно ISO 4217

cashbackType: string None, UAH, Miles

Тип кешбеку який нараховується на рахунок

Example
{
  "name": "string",
  "webHookUrl": "string",
  "accounts": [
    {
      "id": "kKGVoZuHWzqVoZuH",
      "balance": 10000000,
      "creditLimit": 10000000,
      "currencyCode": 980,
      "cashbackType": "UAH"
    }
  ]
}

StatementItems: array

Перелік транзакцій за вказанний час

object
id: string

Унікальний id транзакції

time: number (int64)

Час транзакції в секундах в форматі Unix time

description: string

Опис транзакцій

mcc: number (int32)

Код типу транзакції (Merchant Category Code), відповідно ISO 18245

hold: boolean

Статус блокування суми (детальніше у wiki)

amount: number (int64)

Сума у валюті рахунку в мінімальних одиницях валюти (копійках, центах)

operationAmount: number (int64)

Сума у валюті транзакції в мінімальних одиницях валюти (копійках, центах)

currencyCode: number (int32)

Код валюти рахунку відповідно ISO 4217

commissionRate: number (int64)

Розмір комісії в мінімальних одиницях валюти (копійках, центах)

cashbackAmount: number (int64)

Розмір кешбеку в мінімальних одиницях валюти (копійках, центах)

balance: number (int64)

Баланс рахунку в мінімальних одиницях валюти (копійках, центах)

Example
[
  {
    "id": "ZuHWzqkKGVo=",
    "time": 1554466347,
    "description": "Покупка щастя",
    "mcc": 7997,
    "hold": false,
    "amount": -95000,
    "operationAmount": -95000,
    "currencyCode": 980,
    "commissionRate": 0,
    "cashbackAmount": 19000,
    "balance": 10050000
  }
]

CurrencyInfo: array

Перелік курсів. Кожна валютна пара може мати одне і більше полів з rateSell, rateBuy, rateCross.

object
currencyCodeA: number (int32)

Код валюти рахунку відповідно ISO 4217

currencyCodeB: number (int32)

Код валюти рахунку відповідно ISO 4217

date: number (int64)

Час курсу в секундах в форматі Unix time

rateSell: number (float)
rateBuy: number (float)
rateCross: number (float)
Example
[
  {
    "currencyCodeA": 840,
    "currencyCodeB": 980,
    "date": 1552392228,
    "rateSell": 27,
    "rateBuy": 27.2,
    "rateCross": 27.1
  }
]

Error: object

errorDescription: string

Текст помилки для кінцевого користувача, для автоматичного оброблення потрібно аналізувати HTTP код відповіді (200, 404, 429 та інші)

Example
{
  "errorDescription": "string"
}