Как вести учет расходов по онлайн-транзакциям в Google Таблицах с помощью API банков

Как вести учет расходов по онлайн-транзакциям в Google Таблицах с помощью API банков

Вы тратите деньги — и понимаете, что не знаете, куда именно. Карты, кошельки, переводы, подписки, сервисы вроде Spotify или Яндекс.Плюс — всё это уходит в никуда. Вы пытаетесь вручную записывать траты в Excel, но забываете, пропускаете, устаете. И тут вы слышите про API банков и Google Таблицы. Звучит как что-то для программистов. Но это не так. Это просто способ автоматизировать то, что вы и так делаете — но сделать это без ручного ввода, без ошибок и без ежедневной мучительной рутины.

Я веду учет расходов так уже три года. Сначала вручную — потом с помощью скриптов в Google Таблицах, подключенных к API моих банков. Сейчас я не вношу ни одной транзакции вручную. Все приходят сами. И я знаю, сколько я потратил на еду, транспорт, интернет и даже на случайные покупки в магазине — с точностью до копейки. И да, это не требует знания кода. Покажу, как.

Почему это работает — и почему ручной учет не сработает

Ручной учет — это как пытаться заполнить таблицу, пока вы бежите по улице. Вы не можете быть последовательны. Даже если вы стараетесь, вы забудете о транзакции в 23:47, когда вы купили кофе через Apple Pay. Или не заметите, что банк списал 120 рублей за SMS-уведомление. Или не поймете, что 3000 рублей — это не «покупка в магазине», а оплата подписки, которую вы уже отменили, но банк всё ещё снимает.

API банков — это как дать банку доступ к вашему календарю. Только вместо встреч он отправляет вам список всех операций. Каждый день. Каждую минуту. Без вашего участия. Google Таблицы — это просто удобная коробка, куда эти данные приходят и автоматически сортируются. Вы не управляете процессом — вы наблюдаете за результатом.

Это не про «умный бюджет». Это про честный учет. Без фантазий. Без «я думаю, я потратил около 15 000». Только цифры, которые пришли от банка.

Что вам нужно — и что не нужно

Вам не нужен:

  • Навыки программирования (хотя немного — полезно);
  • Дорогой софт вроде YNAB или MoneyWiz;
  • Доступ к корпоративному API или тариф «для бизнеса»;
  • Специальные карты или банки — подойдут почти все.

Вам нужны:

  1. Банк, который предоставляет API (не все делают это, но многие — да);
  2. Google Аккаунт (бесплатный);
  3. Google Таблицы (бесплатные);
  4. Понимание, что вы не хотите вручную вводить траты — и готовы потратить 2–3 часа один раз, чтобы больше этого не делать.

Какие банки поддерживают API (и что делать, если ваш — нет)

В России и СНГ поддерживают API (на 2024 год):

Банк API доступен Тип доступа Частота обновления
Сбербанк Да Через «СберБизнес» или «СберБанк Онлайн» (для физлиц — через API для разработчиков) Каждые 15–60 минут
Тинькофф Да Открытый API для физлиц (требуется регистрация в разработчиках) Каждые 5–15 минут
ВТБ Да (ограниченно) Через «ВТБ Бизнес» — для физлиц доступ ограничен Раз в час
Газпромбанк Частично Только через «Газпромбанк Онлайн» с согласием Раз в 2–4 часа
Альфа-Банк Да API для физлиц — через «Альфа-Мобайл» Каждые 10 минут
Райффайзенбанк Нет (на 2024)
ПСБ (Промсвязьбанк) Нет

Если ваш банк не в списке — не отчаивайтесь. Есть обходные пути. Например, через сервисы вроде Plaid (для международных карт) или FinMap (российский аналог, работает с Тинькофф, Сбером, ВТБ). Они не дают прямой доступ к API, но позволяют экспортировать транзакции в формате CSV, который можно автоматически загружать в Google Таблицы.

Шаг за шагом: как подключить Тинькофф к Google Таблицам

Я покажу на примере Тинькофф — самый простой и надежный путь. Если у вас другой банк — принцип тот же, только вход в API немного другой.

  1. Зарегистрируйтесь в разработчиках Тинькофф
    Зайдите на developer.tinkoff.ru, нажмите «Регистрация». Используйте тот же логин и пароль, что и в приложении. Подтвердите email.
  2. Создайте приложение
    В личном кабинете разработчика нажмите «Создать приложение». Выберите тип — «Физическое лицо». Назовите его «Учет расходов» и укажите любой URL (например, https://example.com). Нажмите «Создать».
  3. Скопируйте ключи
    После создания вы увидите два ключа: API-ключ и Секретный ключ. Скопируйте их — они понадобятся позже. Никому не передавайте! Это как пароль от вашей карты.
  4. Создайте Google Таблицу
    Откройте sheets.google.com и создайте новую таблицу. Назовите её «Расходы — Тинькофф».
  5. Откройте редактор скриптов
    В меню таблицы выберите «Расширения» → «Apps Script». Откроется редактор кода. Удалите всё, что там есть.
  6. Вставьте скрипт
    Вставьте этот код (он работает для Тинькофф, если у вас есть доступ к API):
// Настройки
const API_KEY = 'ВАШ_API_КЛЮЧ';
const SECRET_KEY = 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ';
const ACCOUNT_ID = 'ВАШ_СЧЕТ_НА_САЙТЕ_ТИНЬКОФФ'; // Можно найти в URL приложения

function fetchTransactions() {
  const url = 'https://api.tinkoff.ru/v1/transactions';
  const headers = {
    'Authorization': 'Bearer ' + API_KEY,
    'Content-Type': 'application/json'
  };
  
  const options = {
    'method': 'get',
    'headers': headers
  };
  
  const response = UrlFetchApp.fetch(url, options);
  const data = JSON.parse(response.getContentText());
  
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const transactions = data.transactions;
  
  // Очистим таблицу (кроме заголовков)
  sheet.clearContents();
  sheet.appendRow(['Дата', 'Сумма', 'Категория', 'Описание', 'Категория (авто)']);
  
  transactions.forEach(transaction => {
    const date = new Date(transaction.date).toLocaleDateString('ru-RU');
    const amount = transaction.amount;
    const description = transaction.description;
    const category = transaction.category || 'Неизвестно';
    
    // Автоматическое определение категории (простой пример)
    let autoCategory = 'Неизвестно';
    if (description.includes('Кофе') || description.includes('Starbucks')) autoCategory = 'Еда и напитки';
    if (description.includes('Яндекс.Плюс') || description.includes('Spotify')) autoCategory = 'Подписки';
    if (description.includes('Аэрофлот') || description.includes('РЖД')) autoCategory = 'Транспорт';
    
    sheet.appendRow([date, amount, category, description, autoCategory]);
  });
}
  1. Настройте триггер
    В редакторе скриптов нажмите на значок часов (триггеры) → «+ Добавить триггер». Выберите функцию fetchTransactions, тип — «Время», частота — «Каждый час». Сохраните.
  2. Запустите вручную
    Нажмите на значок ▶️ (выполнить) в редакторе скриптов. Первый раз вас попросят разрешить доступ — согласитесь. Через пару минут в таблице появятся транзакции.

Всё. Теперь каждые 60 минут ваша таблица обновляется. Никаких ручных вводов. Только транзакции, которые реально прошли по вашей карте.

Как автоматически распределить траты по категориям

Вы не хотите видеть «Оплата в магазине» — вы хотите видеть «Продукты», «Аптека», «Кофе».

В скрипте выше я показал простой пример: если в описании есть «Кофе» — помечаем как «Еда и напитки». Это работает. Но не идеально. Вот как сделать лучше.

Создайте на отдельном листе таблицы (назовите его «Категории») такую таблицу:

Ключевое слово Категория
Кофе Еда и напитки
Starbucks Еда и напитки
Яндекс.Плюс Подписки
Spotify Подписки
Аэрофлот Транспорт
РЖД Транспорт
МТС Связь
Сбербанк Банковские услуги
Аптека Здоровье
Дом.ру ЖКХ

Теперь замените в скрипте блок с автодетекцией на этот:

function getCategory(description) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Категории');
  const data = sheet.getDataRange().getValues();
  
  for (let i = 1; i < data.length; i++) {
    const keyword = data[i][0];
    const category = data[i][1];
    if (description.includes(keyword)) {
      return category;
    }
  }
  return 'Неизвестно';
}

А в основной функции замените строку с autoCategory на:

const autoCategory = getCategory(description);

Теперь система сама сопоставляет описание транзакции с вашими правилами. Добавили новую подписку — добавили ключевое слово в таблицу «Категории» — и через час она автоматически попадает в нужную группу.

Частые ошибки — и как их избежать

  • Не сохраняете ключи. Если вы потеряете API-ключ — вам нужно создавать новое приложение. И заново настраивать всё. Сохраните ключи в защищённом месте: в пароль-менеджере (Bitwarden, 1Password) или в зашифрованном файле на диске.
  • Используете один скрипт для нескольких банков. Не пытайтесь объединить Сбер и Тинькофф в одном скрипте. У них разные API, разные форматы данных. Это приведёт к каше. Лучше сделайте отдельную таблицу для каждого банка.
  • Забываете про комиссии и переводы. API показывает все транзакции — включая переводы на другую карту, переводы на кошелёк, оплату через QR-код. Не игнорируйте их. Это тоже ваши расходы. Если вы переводите 10 000 рублей другу — это не «доход», это «расход».
  • Не проверяете, что данные приходят. Иногда API временно не работает. Убедитесь, что в таблице появляются новые строки хотя бы раз в день. Если нет — проверьте триггер и логи в редакторе скриптов (вкладка «Выполнение»).
  • Думаете, что автоматизация — это «всё сделает за меня». Нет. Вы всё ещё должны проверять категории. Если вы купили лекарства в аптеке, но система пометила как «Еда» — исправьте вручную. Потом добавьте «Аптека» в список ключевых слов. Система учится на ваших правках.

Что выбрать — в зависимости от вашей ситуации

Вот как выбрать подход, исходя из того, кто вы:

  • Вы — начинающий, боитесь кода
    Используйте FinMap. Он подключается к Тинькофф и Сберу, экспортирует транзакции в CSV, и вы можете настроить автоматическую загрузку в Google Таблицы через «Приложения» → «Импорт данных из CSV». Это проще, чем скрипты, но чуть медленнее.
  • Вы — управляете несколькими картами
    Создайте отдельную таблицу для каждой карты. Используйте один и тот же скрипт, но с разными ключами. Так вы не запутаетесь в данных. Не пытайтесь всё в одну таблицу — это будет кошмар.
  • Вы — фрилансер с несколькими источниками дохода
    Добавьте в таблицу столбец «Тип операции»: «Доход» или «Расход». В скрипте добавьте проверку: если сумма > 0 — помечайте как «Доход». Это позволит сразу видеть чистый баланс.
  • Вы — не доверяете API
    Используйте ручной экспорт из мобильного приложения банка. В Тинькофф и СберБанк можно экспортировать транзакции за месяц в CSV. Загружайте его в таблицу вручную раз в неделю. Это не автоматически, но надёжно. И лучше, чем ничего.

Как лучше сделать — практические рекомендации

  • Начните с одного банка. Не пытайтесь сразу подключить все. Тинькофф — лучший выбор. Он открытый, документированный и стабильный.
  • Создайте отдельную таблицу только для расходов. Не смешивайте с доходами, сбережениями или инвестициями — это усложнит анализ.
  • Добавьте в таблицу формулу для подсчёта общих расходов: =SUMIF(D:D, "Еда и напитки", B:B) — где D — категория, B — сумма. Так вы сразу видите, сколько вы тратите на еду.
  • Поставьте в таблице фильтр по дате — чтобы видеть только последние 30 дней. Это поможет не теряться в данных.
  • Каждый месяц делайте «ревью»: смотрите, какие категории не распознаются. Добавляйте ключевые слова. Через 3 месяца система будет работать с точностью 95%.
  • Не забывайте про резервные копии. Google Таблицы автоматически сохраняют историю — но если вы случайно удалите таблицу, восстановить можно только 30 дней. Скачайте копию в Excel раз в месяц — на всякий случай.

Итог: что делать прямо сейчас

Если вы читаете это — значит, вы устали от ручного учёта. Вы хотите знать, куда уходят деньги. Не «примерно», а точно.

Вот что делать:

  1. Проверьте, поддерживает ли ваш банк API (см. таблицу выше). Если да — переходите к шагу 2. Если нет — скачайте FinMap и подключите его.
  2. Создайте Google Таблицу. Назовите её «Расходы — [Ваш банк]».
  3. Создайте лист «Категории» и заполните его 10–15 ключевыми словами: кофе, аптека, Яндекс.Плюс, МТС, РЖД и т.д.
  4. Зарегистрируйтесь как разработчик в вашем банке (Тинькофф — самый простой), получите ключи.
  5. Скопируйте скрипт из этой статьи, вставьте его в Apps Script, настройте триггер на обновление каждые 60 минут.
  6. Запустите скрипт вручную. Подождите 10 минут. Убедитесь, что транзакции появились.
  7. Проверьте, правильно ли распределены категории. Исправьте ошибки. Добавьте новые ключевые слова.
  8. Повторяйте шаг 6 раз в месяц. Через 3 месяца вы перестанете думать о учёте — и начнёте жить.

Это не про технологии. Это про контроль. Вы больше не будете спрашивать себя: «Сколько я потратил на еду на этой неделе?». Вы просто откроете таблицу — и увидите цифру. Без сомнений. Без паники. Без ручного ввода.

Начните с одного банка. Протестируйте. Убедитесь, что работает. Потом — добавьте второй. Через полгода вы будете удивляться, как жили без этого.

Информация в статье носит ознакомительный характер. Подключение API банков требует согласия на обработку персональных данных и может быть ограничено условиями вашего банка. Перед настройкой убедитесь, что вы понимаете риски и соблюдаете правила безопасности. При сомнениях — проконсультируйтесь с финансовым специалистом или в поддержке вашего банка.

Platejigid.ru