Перейти к основному содержимому

Одна запись с тегом "taxes"

Посмотреть все теги

Запись налогов в Beancount (практический подход)

· 7 минут чтения
Mike Thrift
Mike Thrift
Marketing Manager

Налоги часто кажутся особым, сложным зверем в мире личных финансов. Но что, если бы это было не так? Что, если их можно рассматривать как любой другой поток денег в вашем реестре? Хорошие новости: можно. Рассматривая налоги как простые перемещения стоимости, ваш реестр Beancount останется чистым, легко запросимым и — самое главное — понятным.

Ниже представлен практический, без лишних усложнений шаблон, который вы можете добавить в файл Beancount для личных или небольших бизнес‑операций. Это простая система для обработки зарплат, налоговых платежей и даже назойливых возвратов, переходящих в новый год. Мы расскажем о необходимых счетах, пройдем через реальные примеры и покажем точные запросы, которые нужно выполнить, чтобы получить нужные ответы.

2025-08-25-recording-taxes-in-beancount


Основные принципы

Прежде чем погрузиться в код, согласуем несколько простых правил. Эти принципы делают всё логичным и предотвращают будущие головные боли.

  • Разделяйте «что это» и «когда движется наличность». 🗓️
    Это самое важное понятие. Налоговый расход относится к году, в котором вы заработали доход (например, 2024), даже если вы оплачиваете его в IRS в апреле 2025 года. Если не отделять момент возникновения расхода от момента выплаты, ваши годовые отчёты будут путаными и вводящими в заблуждение.

  • Делайте иерархию счетов простой и скучной. 📁
    Назовите счета чётко, исходя из типа налога (например, IncomeTax, SocialSecurity). Это делает запросы невероятно простыми. Не захламляйте имена счетов названиями поставщиков или номерами форм, вроде «W‑2» или «1099»; используйте метаданные и теги для этих деталей.

  • Применяйте начисление для корректировок в конце года. ⚖️
    Даже в личном реестре использование простого начисления в конце года — самый чистый способ сделать отчёты точными. Это значит признавать расход или возврат в правильном году, даже если деньги переместятся только в следующем. Это один небольшой дополнительный шаг, который спасёт вас от умственных гимнастик позже.

  • Пишите для своего будущего «я». 🧠
    Цель — ясность. Добавляйте детали, такие как налоговый год, к имени счета только если это действительно упрощает запросы. Избегайте создания нового набора счетов каждый год (Expenses:Taxes:2024:Federal, Expenses:Taxes:2025:Federal и т.д.), если только у вас нет убедительной причины. Плоская структура обычно легче в управлении.


Минимальный скелет счетов

Вот базовый набор счетов, с которого можно начать. Эта структура ориентирована на США, но вы легко адаптируете названия под налоговую систему своей страны. Просто вставьте эти директивы open в ваш файл Beancount.

; --- US Federal Income & Payroll Taxes ---
; Для удержаний из вашей зарплаты
2024-01-01 open Expenses:Taxes:Federal:IncomeTax:Withheld USD
; Для оценочных платежей или счетов, которые вы платите напрямую
2024-01-01 open Expenses:Taxes:Federal:IncomeTax:Payments USD
; Для возвратов налогов, которые вы получаете
2024-01-01 open Expenses:Taxes:Federal:IncomeTax:Refunds USD

; Ваши взносы в FICA
2024-01-01 open Expenses:Taxes:Federal:SocialSecurity USD
2024-01-01 open Expenses:Taxes:Federal:Medicare USD

; --- Другие распространённые налоги ---
; Для налогов с продаж/использования, которые вы платите при покупках
2024-01-01 open Expenses:Taxes:Sales USD

; --- Счета для корректировок в конце года (опционально, но рекомендуется!) ---
; Временный счёт‑задолженность для налогов, которые вы должны, но ещё не оплатили
2024-01-01 open Liabilities:AccruedTaxes:Federal:Income USD
; Временный счёт‑актив для возврата, который вам полагается, но ещё не получен
2024-01-01 open Assets:Tax:Receivable USD

Эта настройка отделяет удержанные налоги от прямых платежей и возвратов, делая очевидным, куда ушли ваши деньги. Счета Liabilities и Assets — наше секретное оружие для точной отчётности в конце года.


Пример 1: Зарплатный чек

Запишем типичный чек, где налоги удерживаются автоматически. Ключ — сначала зафиксировать валовой доход, а затем показать, как он разделился между налогами и наличными, которые действительно попали на ваш счёт.

2025-07-15 * "Employer Inc." "Salary for first half of July"
Income:Work:Salary -6,000.00 USD
Expenses:Taxes:Federal:IncomeTax:Withheld 1,200.00 USD
Expenses:Taxes:Federal:SocialSecurity 372.00 USD
Expenses:Taxes:Federal:Medicare 87.00 USD
Assets:Cash:Checking 4,341.00 USD

Эта одна транзакция рассказывает всю историю:

  • Вы заработали $6 000 валового дохода.
  • $1 200 из них отправлены в IRS как федеральный подоходный налог.
  • 372ушливSocialSecurity,372 ушли в Social Security, 87 — в Medicare.
  • Оставшиеся $4 341 — это ваша чистая зарплата.

Совет: Вы можете добавить метаданные из вашего расчётного листа (например, pay_period_end: "2025-07-15") к транзакции для удобного аудита.


Пример 2: Подача декларации (проблема перехода года)

Ситуация, которая ставит людей в тупик: апрель 2025 г., вы подаёте декларацию за 2024 год и обнаруживаете, что после всех удержаний вам ещё нужно доплатить $3 000.

Как это записать? Нужно, чтобы расход учитывался в 2024 году, а платёж наличными произошёл в 2025 году. Ниже два отличных способа.

Вариант A: Ручное двухшаговое начисление

Чистый Beancount, без плагинов. Ясный двухшаговый процесс.

Шаг 1: Признать расход в конце налогового года.
Последний день 2024 г. — создаём запись «true‑up». Деньги ещё не движутся; мы лишь признаём расход и «паркуем» его во временном счёте‑задолженности.

2024-12-31 * "Federal income tax true-up for 2024"
Expenses:Taxes:Federal:IncomeTax:Payments 3,000.00 USD
Liabilities:AccruedTaxes:Federal:Income -3,000.00 USD

Теперь ваш отчёт о доходах за 2024 год правильно показывает этот расход.

Шаг 2: Записать денежный платёж, когда он произойдёт.
В апреле 2025 г., когда вы действительно отправляете деньги в IRS, очищаем задолженность.

2025-04-15 * "IRS" "Payment for 2024 tax return"
Liabilities:AccruedTaxes:Federal:Income 3,000.00 USD
Assets:Cash:Checking -3,000.00 USD

Ваши отчёты за 2024 год корректны, а денежный поток за 2025 год тоже. Идеально! Тот же шаблон работает в обратную сторону для возврата — просто используйте Assets:Tax:Receivable вместо счета‑задолженности.

Вариант B: Автоматизация с плагином

Если хотите объединить платёж в одну транзакцию, существует отличный плагин сообщества beancount_reds_plugins.effective_date. Он позволяет задать «эффективную дату» для отдельной строки.

Сначала включите плагин в главном файле Beancount:

plugin "beancount_reds_plugins.effective_date"

Затем можно написать одну запись; плагин автоматически разобьёт её на две части.

; Одна запись; плагин делает остальное
2025-04-15 * "IRS" "Payment for 2024 tax return"
Assets:Cash:Checking -3,000.00 USD
Expenses:Taxes:Federal:IncomeTax:Payments 3,000.00 USD
effective_date: 2024-12-31

Здесь денежная часть записана 15 апреля 2025 г., а расход ретроспективно применяется к 31 декабря 2024 г. Результат тот же, что и в варианте A, но рабочий процесс иной.


Что насчёт налога с продаж?

Для большинства личных реестров налог с продаж прост. Если вы его не возмещаете, просто выделяйте его как отдельный расход при покупке.

2025-07-19 * "Local Grocery Store"
Expenses:Groceries 12.32 USD
Expenses:Taxes:Sales 1.28 USD
Assets:Cash:Checking -13.60 USD

Так вы легко отслеживаете, сколько тратите на налог с продаж в течение года. Если вы ведёте бизнес с НДС, понадобится более формальная система со счётами‑пассивами и‑активами, но принцип тот же.


Запросы, которые вы действительно будете выполнять

Вся идея этой структуры — упростить получение ответов. Ниже несколько запросов BQL, показывающих вашу налоговую картину.

1. Каков мой общий федеральный подоходный налог за 2024 год?

SELECT cost(sum(position))
WHERE account "Expenses:Taxes:Federal:IncomeTax"
AND date >= 2024-01-01 AND date < 2025-01-01;

2. Как эта сумма разбивается между удержаниями, платежами и возвратами?

SELECT account, cost(sum(position))
WHERE account "Expenses:Taxes:Federal:IncomeTax"
AND date >= 2024-01-01 AND date < 2025-01-01
GROUP BY account
ORDER BY account;

3. Есть ли у меня непогашенные налоговые долги или получаемые суммы? (Полезно проверить свою работу!)

SELECT account, units(sum(position))
WHERE account "Liabilities:AccruedTaxes" OR account "Assets:Tax"
GROUP BY account
ORDER BY account;

Если запрос возвращает ненулевые балансы, значит у вас есть начисления, которые ещё не погашены.


Быстрый FAQ

  • Нужны ли мне счета по каждому году, типа Expenses:Taxes:2024?
    Скорее всего, нет. Метод начисления (или плагин) сохраняет плоскую структуру счётов чистой и читаемой. Создавайте годовые счета только если они действительно упрощают ваши запросы.

  • Может ли Beancount рассчитывать мои налоги автоматически?
    Не напрямую, но он может подготовить данные. Некоторые продвинутые пользователи пишут скрипты, которые передают результаты BQL в налоговое программное обеспечение — удобно для оценки обязательств в течение года.

  • Это налоговый совет?
    Нет. Это лишь шаблон бухгалтерского учёта для организации данных. Бухгалтерия sound, но за конкретными рекомендациями всегда обращайтесь к налоговому специалисту.


Чек‑лист для быстрого старта

Готовы начать?

  1. Добавьте скелет счетов в ваш файл Beancount (и адаптируйте названия под вашу страну).
  2. Записывайте зарплаты, начиная с валового дохода и распределяя налоговые постинги.
  3. В конце года начисляйте любые корректировки с помощью счета‑задолженности/актива (или используйте плагин effective_date).
  4. Отслеживайте возвраты как получаемые суммы и закрывайте их, когда деньги поступят.
  5. Запускайте приведённые выше BQL‑запросы, чтобы проверить итоги перед подачей декларации.

Делайте всё скучным, делайте всё последовательным, и ваш налоговый сезон наконец‑то станет просто ещё одной частью вашей финансовой истории — а не загадкой, которую нужно решить.