Публікація

Як отримати виписку з рахунку Monobank використовуючи Monobank API

Розбираю декілька запитів для отримання виписки за рахунком через Monobank API

Як отримати виписку з рахунку Monobank використовуючи Monobank API

Вирішив витягти і збергіти у форматі CSV дані за власним рахунком. Потім ці дані можно візуалізувати у вигляді графіку і проаналізувати витрати з метою оптимізації.

Скрипт використовує NodeJS. Процес отримання даних складається з двох кроків.

Крок 1: Отримання Monobank Token

Щоб отримати токен потрібно перейти на сторінку API Монобанку і увійти, відсконував QR код через додаток монобанку.

На сторінці потрібно створити новий токен, скопіювати і далі використовувати в наступному коді.

Крок 2: Отримання ID аккаунту

1
2
3
4
5
6
7
8
9
10
11
12
import fs from 'node:fs';

const TOKEN = '<Monobank Token>';

async function getClientInfo() {
  const response = await fetch('https://api.monobank.ua/personal/client-info', {
    headers: {
      'X-Token': TOKEN
    }
  });
  return await response.json();
}

Крок 3: Отримання виписки за аккаунтом за останній тиждень

1
2
3
4
5
6
7
8
async function getAccountStatement(account, from, to) {
  const response = await fetch('https://api.monobank.ua/personal/statement/{account}/{from}/{to}'.replace('{account}', account).replace('{from}', from).replace('{to}', to), {
    headers: {
      'X-Token': TOKEN
    }
  });
  return await response.json();
}

Як користуватися?

Викликати функцію console.log(await getClientInfo()) і отримати список аккаунтів і обрати ID потрібного. Далі виконати наступну функцію console.log(await getAccountStatement('ACCOUNT_ID', new Date().getTime() - 24 * 60 * 60 * 1000 * 7, new Date().getTime()) і ви отримаєте виписку за отсанній тиждень.

Як зберегти в CSV

Наступний код збереже виписку у CSV файл data.csv.

1
2
3
4
5
6
7
try {
    const data = await getAccountStatement('ACCOUNT_ID', new Date().getTime() - 24 * 60 * 60 * 1000 * 7, new Date().getTime());
    const result = data.map((item) => `${item.time};${item.description};${item.amount};${item.balance}`).join('\n');
    fs.writeFileSync('./data.csv', result);
  } catch (error) {
    console.log(error);
  }

В ідеалі можно автоматизувати витягання виписки і формувати графік для подальшого аналізу витрат.

Публікація захищена ліцензією CC BY 4.0 .