Записване на данъци в 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 за федерален данък върху дохода.
- 372 към 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 г. правилно показва този разход от 3 000 $.
Стъпка 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"
След това можете да напишете една транзакция. Приставката автоматично ще я раздели зад кулисите, за да направи отчетите точни.
; One entry; the plugin handles the rest
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;
Ако това запитване върне ненулеви баланси, означава, че имате начислени задължения, които още не сте уредили.
Бързи ЧЗВ
-
Наистина ли ми трябват сметки за всяка година като
Expenses:Taxes:2024
?
Вероятно не. Методът за начисляване (или приставката) поддържа плоска структура, чиста и четлива. Създавайте годишни сметки само ако смятате, че ще улесни вашите конкретни заявки. -
Може ли Beancount да изчисли данъците ми автоматично?
Не директно, но може да подготви данните. Някои напреднали потребители пишат скриптове, които подават резултатите от BQL към софтуер за данъчно изчисление – полезно за оценка на задълженията през годината. -
Това ли е данъчен съвет?
Не. Това е модел за водене на книги, който организира вашите данни. Счетоводството е стабилно, но винаги се консултирайте с данъчен професионалист за съвет, специфичен за вашата ситуация.
Вашият готов за използване контролен списък
Готови ли сте да започнете?
- ✅ Добавете скелета на сметките към вашия Beancount файл (и адаптирайте имената за вашата страна).
- ✅ Записвайте заплатите, като започнете с брутния доход и разделите данъците.
- ✅ В края на годината начислете корекции за плащания или възстановявания, използвайки сметка за задължения/вземания (или използвайте приставката
effective_date
). - ✅ Следете възстановявания като вземания и ги изчиствайте, когато парите пристигнат.
- ✅ Изпълнете горепосочените BQL запитвания, за да проверите тоталите преди подаване.
Дръжте всичко просто, последователно и вашият данъчен сезо н най-накрая ще се чувства като още една част от вашата финансова история – не като мистерия, която трябва да се решава.