Запись налогов в Beancount (практический подход)
Налоги часто кажутся особым, сложным зверем в мире личных финансов. Но что, если бы это было не так? Что, если их можно рассматривать как любой другой поток денег в вашем реестре? Хорошие новости: можно. Рассматривая налоги как простые перемещения стоимости, ваш реестр Beancount останется чистым, легко запросимым и — самое главное — понятным.
Ниже представлен практический, без лишних усложнений шаблон, который вы можете добавить в файл 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 как федеральный подоходный налог.
- 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, но за конкретными рекомендациями всегда обращайтесь к налоговому специалисту.
Чек‑лист для быстрого старта
Готовы начать?
- ✅ Добавьте скелет счетов в ваш файл Beancount (и адаптируйте названия под вашу страну).
- ✅ Записывайте зарплаты, начиная с валового дохода и распределяя налоговые постинги.
- ✅ В конце года начисляйте любые корректировки с помощью счета‑задолженности/актива (или используйте плагин
effective_date
). - ✅ Отслеживайте возвраты как получаемые суммы и закрывайте их, когда деньги поступят.
- ✅ Запускайте приведённые выше BQL‑запросы, чтобы проверить итоги перед подачей декларации.
Делайте всё скучным, делайте всё последовательным, и ваш налоговый сезон наконец‑то станет просто ещё одной частью вашей финансовой истории — а не загадкой, которую нужно решить.