پرش به محتوای اصلی

1 پست با برچسب "taxes"

مشاهده همه برچسب‌ها

ثبت مالیات‌ها در Beancount (روش عملی)

· 8 دقیقه مطالعه
Mike Thrift
Mike Thrift
Marketing Manager

مالیات‌ها می‌توانند مانند موجودی خاص و پیچیده‌ای در دنیای مالی شخصی احساس شوند. اما اگر این‌گونه نبودند چه می‌شد؟ اگر می‌توانستید آنها را همانند هر جریان پول دیگری در دفتر حساب خود رفتار کنید چه می‌شد؟ خبر خوب این است: می‌توانید. با در نظر گرفتن مالیات‌ها به‌عنوان حرکات ساده ارزش، دفتر Beancount شما تمیز، آسان برای پرس‌وجو و—مهم‌ترین نکته—قابل درک خواهد بود.

در ادامه یک الگوی عملی، بدون حاشیه که می‌توانید در یک فایل Beancount شخصی یا کسب‌وکار کوچک بگنجانید، آورده شده است. این یک سیستم ساده برای مدیریت حقوق، پرداخت‌های مالیاتی و حتی آن بازپرداخت‌های مزاحمی است که به سال جدید می‌رسند. ما حساب‌های اساسی مورد نیاز را مرور می‌کنیم، مثال‌های واقعی را قدم‌به‑قدم می‌زنیم و دقیقاً پرس‌و‌جوهایی را که برای دریافت پاسخ‌ها نیاز دارید نشان می‌دهیم.

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


اصول اصلی

قبل از اینکه به کد بپردازیم، چند قانون ساده را بپذیریم. این اصول کارها را منطقی نگه می‌دارند و از سردردهای آینده جلوگیری می‌کنند.

  • «چه» را از «چه‌وقت» که پول حرکت می‌کند جدا کنید. 🗓️
    این مهم‌ترین مفهوم است. هزینه مالیاتی به سالی تعلق دارد که درآمد را کسب کرده‌اید (مثلاً ۲۰۲۴)، حتی اگر صورتحساب را در آوریل ۲۰۲۵ به IRS پرداخت کنید. اگر زمان هزینه را از زمان پرداخت نقدی جدا نکنید، گزارش‌های سال به‌سال شما به‌هم ریخته و گمراه‌کننده می‌شوند.

  • سلسله مراتب حساب‌های خود را ساده و کسل‌کننده نگه دارید. 📁
    حساب‌های خود را بر پایه نوع مالیات (مثلاً IncomeTax، SocialSecurity) به‌وضوح نام‌گذاری کنید. این کار پرس‌و‌جوهای شما را فوق‌العاده ساده می‌کند. نام حساب‌ها را با نام فروشنده یا شماره فرم‌ها مثل «W‑2» یا «1099» شلوغ نکنید؛ برای آن جزئیات از متادیتا و برچسب‌ها استفاده کنید.

  • برای تنظیمات پایان‑سال از روش تعهدی (accrual) استفاده کنید. ⚖️
    حتی برای یک دفتر شخصی، استفاده از یک ورودی تعهدی ساده در پایان سال پاک‌ترین راه برای دقیق کردن گزارش‌هاست. این به معنای شناسایی هزینه یا بازپرداخت در سال صحیح است، حتی اگر پول تا سال بعد جابه‌جا نشود. این یک گام کوچک اضافه است که بعداً شما را از انجام تمرینات ذهنی نجات می‌دهد.

  • برای خود آینده‌تان بنویسید. 🧠
    هدف شما وضوح است. فقط در صورتی جزئیات اضافی مثل سال مالیاتی را به نام حساب اضافه کنید که واقعاً پرس‌و‌جوهای شما را آسان‌تر می‌کند. از ایجاد مجموعه‌ای جدید از حساب‌ها برای هر سال (Expenses:Taxes:2024:Federal، Expenses:Taxes:2025:Federal و غیره) مگر اینکه دلیل قانع‌کننده‌ای داشته باشید، خودداری کنید. یک ساختار صاف اغلب مدیریت آسان‌تری دارد.


اسکلت حسابی حداقل

در اینجا یک مجموعه پایه‌ای از حساب‌ها برای شروع آورده شده است. این ساختار متمرکز بر ایالات متحده است، اما می‌توانید به‌راحتی نام‌ها را برای سیستم مالیاتی کشور خود تطبیق دهید. فقط این دستورات open را در فایل Beancount خود بگذارید.

; --- مالیات‌های فدرال درآمد و حقوقی ایالات متحده ---
; برای پولی که از حقوق شما کسر می‌شود
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 سلاح مخفی ما برای نگه داشتن گزارش‌های پایان‑سال دقیق هستند.


مثال ۱: حقوق

بیایید یک حقوق معمولی را ثبت کنیم که مالیات‌ها به‌صورت خودکار کسر می‌شوند. کلید این است که ابتدا درآمد ناخالص را ثبت کنید، سپس نشان دهید که چگونه به‌صورت مالیات و پولی که واقعاً به حساب بانکی‌تان می‌رسد تقسیم شده است.

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

این تراکنش واحد تمام داستان را می‌گوید:

  • شما ۶,۰۰۰ دلار درآمد ناخالص کسب کردید.
  • ۱,۲۰۰ دلار از آن به IRS برای مالیات فدرال درآمدی ارسال شد.
  • ۳۷۲ دلار به Social Security و ۸۷ دلار به Medicare رفت.
  • باقی‌مانده ۴,۳۴۱ دلار همان مبلغی است که به‌دست آوردید.

نکته حرفه‌ای: می‌توانید متادیتاهای استب‌استوب خود (مانند pay_period_end: "2025-07-15") را به تراکنش اضافه کنید تا ردپای حسابرسی آسان‌تری داشته باشید.


مثال ۲: پر کردن اظهارنامه (مشکل عبور سال)

سناریویی که مردم را سردرگم می‌کند این است: در آوریل ۲۰۲۵، شما در حال پر کردن مالیات ۲۰۲۴ خود هستید. پس از تمام کسرهای خود، متوجه می‌شوید که هنوز باید ۳,۰۰۰ دلار اضافه پرداخت کنید.

چگونه این را ثبت کنید؟ می‌خواهید هزینه به‌سوی ۲۰۲۴ محاسبه شود، اما پرداخت نقدی در ۲۰۲۵ انجام می‌شود. دو روش عالی برای این کار وجود دارد.

گزینه A: تعهدی دو‑مرحله‌ای دستی

این روش صرفاً با Beancount است، بدون نیاز به افزونه. یک فرآیند واضح دو‑مرحله‌ای است.

مرحله ۱: شناسایی هزینه در پایان سال مالیاتی.
در آخرین روز ۲۰۲۴، یک ورودی «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

اکنون صورت سود و زیان ۲۰۲۴ شما این هزینه ۳,۰۰۰ دلاری را نشان می‌دهد.

مرحله ۲: ثبت پرداخت نقدی وقتی رخ می‌دهد.
در آوریل ۲۰۲۵، وقتی واقعاً پول را به 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

گزارش‌های ۲۰۲۴ شما درست هستند و جریان نقدی ۲۰۲۵ نیز صحیح است. این همان الگو برای بازپرداخت هم کار می‌کند—فقط به جای حساب تعهدی از Assets:Tax:Receivable استفاده کنید.

گزینه B: خودکارسازی با افزونه

اگر ترجیح می‌دهید پرداخت را در یک تراکنش واحد بنویسید، افزونهٔ جامعه‌ای به نام beancount_reds_plugins.effective_date می‌تواند کمک کند. این افزونه به شما اجازه می‌دهد «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

در اینجا بخش نقدی در ۱۵ آوریل ۲۰۲۵ ثبت می‌شود، اما بخش هزینه به‌صورت بازگشتی به ۳۱ دسامبر ۲۰۲۴ اعمال می‌شود. همان نتیجهٔ گزینه A را با جریان کاری متفاوت به‌دست می‌آورید.


مالیات فروش چه می‌شود؟

برای اکثر دفاتر شخصی، مالیات فروش ساده است. اگر آن را بازپس نمی‌گیرید، فقط در هنگام خرید به‌عنوان هزینهٔ جداگانه تقسیم کنید.

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

این کار به‌راحتی به شما نشان می‌دهد در طول سال چه مقدار برای مالیات فروش هزینه می‌کنید. اگر کسب‌وکاری دارید که با VAT سروکار دارد، از یک سیستم رسمی‌تر با حساب‌های پرداختی و دریافتنی استفاده می‌کنید، اما اصل همان است.


پرس‌و‌جوهایی که واقعاً اجرا می‌کنید

کلید این ساختار این است که به‌دست آوردن پاسخ‌ها آسان باشد. در اینجا چند پرس‌و‌جوی BQL برای دیدن تصویر مالیاتی شما آورده شده است.

۱. کل مالیات فدرال درآمدی من برای ۲۰۲۴ چقدر بود؟

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

۲. آن مجموع چگونه بین کسرهای مالیاتی، پرداخت‌ها و بازپرداخت‌ها تقسیم می‌شود؟

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;

۳. آیا بدهی‌های مالیاتی یا دریافتنی‌های معوقی دارم؟ (برای بررسی کارتان مفید است!)

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

اگر این پرس‌و‌جو مقادیر غیرصفر برگرداند، به این معناست که تعهداتی دارید که هنوز تسویه نشده‌اند.


پرسش‌های سریع

  • آیا واقعاً به حساب‌های سالانه مثل Expenses:Taxes:2024 نیاز دارم؟
    احتمالاً نه. روش تعهدی (یا افزونه) ساختار حسابی صاف و خوانا را حفظ می‌کند. فقط در صورتی حساب‌های سالانه بسازید که برای پرس‌و‌جوهای خاص شما مفید باشد.

  • آیا Beancount می‌تواند مالیات‌های من را محاسبه کند؟
    به‌صورت مستقیم نه، اما می‌تواند داده‌ها را آماده کند. برخی کاربران پیشرفته اسکریپت‌هایی می‌نویسند تا نتایج پرس‌و‌جوی BQL را به نرم‌افزارهای محاسبه مالیات بفرستند؛ این کار برای برآورد بدهی در طول سال بسیار مفید است.

  • آیا این مشاورهٔ مالیاتی است؟
    نه. این فقط یک الگوی حسابداری برای سازماندهی داده‌هاست. حسابداری صحیح است، اما برای مشاورهٔ خاص به وضعیت خود حتماً با یک متخصص مالیاتی مشورت کنید.


چک‌لیست آماده برای استفاده

آماده‌اید تا شروع کنید؟

  1. اسکلت حسابی را به فایل Beancount خود اضافه کنید (و نام‌ها را برای کشور خود تطبیق دهید).
  2. حقوق‌ها را ثبت کنید؛ ابتدا درآمد ناخالص را بنویسید و سپس مالیات‌ها را جدا کنید.
  3. در پایان سال، هر تعهدی را با استفاده از حساب تعهدی/دارایی ثبت کنید (یا از افزونهٔ effective_date استفاده کنید).
  4. بازپرداخت‌ها را به‌عنوان دریافتنی‌ها پیگیری کنید و وقتی پول رسید، حساب را پاک کنید.
  5. پرس‌و‌جوهای BQL بالا را اجرا کنید تا مجموعها را پیش از پر کردن اظهارنامه بررسی کنید.

ساده، منسجم و ثابت بمانید؛ و فصل مالیاتی شما در نهایت فقط بخشی دیگر از داستان مالی شما خواهد بود—نه معمایی برای حل.