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

2 پست با برچسب "ledger"

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

انتخاب S-Corp، توضیح داده شده برای کاربران Beancount

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

این چیست، چه زمانی سود می‌دهد و چگونه می‌توان آن را به طور واضح در دفتر کل خود مدل‌سازی کرد (با مثال).

⚠️ این راهنما مختص ایالات متحده است و فقط برای آموزش است. برای شرایط خود با یک متخصص مالیات صحبت کنید.

خلاصه

  • S-corp یک وضعیت مالیاتی است که شما با IRS (از طریق فرم 2553) انتخاب می‌کنید تا سود کسب و کار به اظهارنامه‌های مالیاتی شخصی مالکان منتقل شود. یک الزام کلیدی این است که شما باید قبل از دریافت هرگونه سود به عنوان سود سهام یا توزیع، به اپراتورهای مالک حقوق W-2 معقول پرداخت کنید.
  • مهلت‌ها مهم هستند: برای یک کسب و کار موجود، باید حداکثر تا پانزدهمین روز از ماه سوم سال مالیاتی که می‌خواهید وضعیت S-corp شروع شود، ثبت نام کنید. برای انتخاب سال تقویمی 2025، 15 مارس 2025، شنبه است، بنابراین مهلت عملی روز کاری بعدی، دوشنبه، 17 مارس 2025 است.
  • چرا این کار را انجام دهیم؟ جذابیت اصلی صرفه‌جویی در مالیات خوداشتغالی است. در حالی که حقوق W-2 شما مشمول مالیات FICA است، توزیع‌ها مشمول مالیات نمی‌شوند. با این حال، این مزیت با هزینه‌های اضافی برای حقوق و دستمزد، انطباق و در برخی ایالت‌ها، مالیات اضافی در سطح نهاد همراه است.
  • در Beancount، جدا کردن دستمزدها از توزیع‌ها بسیار مهم است. شما باید بدهی‌های حقوق و دستمزد را پیگیری کنید، حسابداری ویژه بیمه درمانی را برای سهامدارانی که بیش از 2٪ از شرکت را دارند، انجام دهید و توزیع‌ها را به صراحت از طریق حساب‌های حقوق صاحبان سهام ثبت کنید.

2025-08-08-s-corp-election

انتخاب S-corp چیست؟

در هسته خود، انتخاب S-corp درخواستی است که شما به IRS برای تغییر نحوه مالیات کسب و کار خود ارائه می‌دهید. با ثبت فرم 2553، از IRS می‌خواهید که شرکت یا LLC شما را تحت زیرفصل S قانون درآمد داخلی مالیات کند. این باعث می‌شود که کسب و کار شما یک نهاد "انتقالی" باشد، به این معنی که درآمد، زیان، کسورات و اعتبارات آن مستقیماً به اظهارنامه‌های مالیاتی شخصی سهامداران منتقل می‌شود. این صرفاً یک طبقه‌بندی مالیاتی است، نه یک نوع نهاد تجاری قانونی متفاوت.

اثرات کلیدی برای یک اپراتور مالک

هنگامی که انتخاب فعال شد، نقش شما اساساً به دو قسمت تقسیم می‌شود: اکنون شما هم سهامدار و هم کارمند شرکت خود هستید.

این تمایز بسیار مهم است. غرامتی که برای کار خود دریافت می‌کنید باید به عنوان دستمزد W-2 پرداخت شود که مشمول مالیات استاندارد حقوق و دستمزد (تأمین اجتماعی و مدیکر) است. هر سود باقی مانده را می‌توان به عنوان توزیع پرداخت کرد که عموماً مشمول مالیات خوداشتغالی نیستند. IRS اصرار دارد که قبل از دریافت هرگونه توزیع، حقوق معقولی برای کار خود بپردازید.

آیا باید وضعیت S-corp را انتخاب کنید؟

ارزیابی انتخاب S-corp اغلب زمانی ارزشمند است که کسب و کار شما سود ثابت و معناداری ایجاد کند. یک قانون کلی رایج این است که وقتی سود مداوم کسب و کار شما می‌تواند به راحتی از حقوق نرخ بازار برای نقش شما پشتیبانی کند، آن را در نظر بگیرید و پس از پوشش تمام هزینه‌های اداری جدید، به اندازه کافی برای توزیع سودآور باقی بماند.

نقطه سربه‌سر دقیق برای موقعیت شما منحصر به فرد است و به عوامل مختلفی بستگی دارد:

  • "حقوق معقول" شما: یک کسب و کار برای کسی با مهارت‌ها و مسئولیت‌های شما در صنعت شما چه می‌پردازد؟ این رقم مبنای دستمزد W-2 شما است و تحت بررسی IRS است.
  • مالیات و هزینه‌های ایالتی: برخی از ایالت‌ها قوانین خاص خود را دارند. به عنوان مثال، کالیفرنیا 1.5٪ مالیات بر درآمد خالص S-corp به اضافه حداقل مالیات سالانه 800 دلار وضع می‌کند.
  • هزینه‌های اضافی: به یک سرویس حقوق و دستمزد نیاز خواهید داشت و هزینه بیمه بیکاری را پرداخت خواهید کرد. هزینه‌های حسابداری و تهیه مالیات شما نیز به دلیل پیچیدگی اضافه شده احتمالاً افزایش می‌یابد.
  • کسر QBI (بخش 199A): انتخاب S-corp می‌تواند بر کسر درآمد واجد شرایط کسب و کار شما تأثیر بگذارد. دستمزدهای W-2 که به خودتان پرداخت می‌کنید می‌تواند به شما در واجد شرایط شدن برای کسر کامل کمک کند یا در سطوح درآمد بالاتر به یک عامل محدودکننده تبدیل شود.

واجد شرایط بودن و زمان‌بندی

هر کسب و کاری نمی‌تواند S-corp شود. در اینجا الزامات سطح بالا آمده است:

  • باید یک شرکت داخلی یا LLC واجد شرایط باشد.
  • نمی‌تواند بیش از 100 سهامدار داشته باشد.
  • فقط می‌تواند یک کلاس سهام داشته باشد.
  • سهامداران باید افراد، تراست‌های خاص یا املاک باشند (یعنی بدون مشارکت، شرکت یا سهامداران بیگانه غیر مقیم).

زمان ثبت فرم 2553

زمان‌بندی بسیار مهم است و قوانین برای کسب و کارهای جدید در مقابل کسب و کارهای موجود کمی متفاوت است.

  • برای یک کسب و کار جدید: باید ظرف 2 ماه و 15 روز پس از اولین روز سال مالیاتی اول خود ثبت نام کنید. به عنوان مثال، اگر سال مالیاتی کسب و کار شما از 7 ژانویه شروع شود، مهلت شما 21 مارس است.
  • برای C-corp موجود (یا LLC که به عنوان C-corp مالیات می‌شود): می‌توانید در هر زمانی در طول سال مالیاتی قبل یا تا پانزدهمین روز از ماه سوم سالی که می‌خواهید انتخاب اعمال شود، ثبت نام کنید. اگر این تاریخ در آخر هفته یا تعطیلات باشد، مهلت به روز کاری بعدی منتقل می‌شود، مقرره‌ای که تحت بخش 7503 IRC اعطا شده است.

اگر مهلت را از دست دادید چه؟ نگران نباشید. IRS مسیری را برای تسکین انتخاب دیرهنگام تحت رویه درآمد 2013-30 ارائه می‌دهد. شما اغلب می‌توانید ظرف 3 سال و 75 روز از تاریخ مؤثر مورد نظر، درخواست این تسکین را ارائه دهید، مشروط بر اینکه دلیل معقولی برای ثبت نام دیرهنگام داشته باشید.

حقوق معقول: قسمتی که افراد را به دردسر می‌اندازد

این مورد بررسی‌ترین جنبه ساختار S-corp است. IRS بسیار واضح است: کارمندان سهامدار باید غرامت معقول برای خدماتی که ارائه می‌دهند قبل از اینکه هر سودی به عنوان توزیع در نظر گرفته شود، دریافت کنند.

"معقول" به چه معناست؟ هیچ مبلغ دلاری واحدی وجود ندارد. IRS و دادگاه‌ها به عوامل مختلفی نگاه می‌کنند تا تعیین کنند که آیا حقوق شما مناسب است، از جمله وظایف و مسئولیت‌های شما، زمانی که صرف کار می‌کنید، سطح تجربه شما و اینکه کسب و کارهای مشابه برای خدمات مشابه چه می‌پردازند. اگر در حالی که توزیع‌های زیادی دریافت می‌کنید، حقوق W-2 بسیار پایینی به خودتان پرداخت می‌کنید، انتظار داشته باشید که IRS از نزدیک بررسی کند. این اغلب به عنوان یک پرچم قرمز برای تلاش برای فرار از مالیات حقوق و دستمزد دیده می‌شود.

بیمه درمانی و مزایای حاشیه‌ای برای سهامداران بیش از 2٪

یک قانون خاص برای نحوه برخورد S-corp با بیمه درمانی برای سهامدارانی که بیش از 2٪ از شرکت را دارند وجود دارد. اگر S-corp حق بیمه این بیمه درمانی را پرداخت کند یا بازپرداخت کند، هزینه توسط S-corp قابل کسر است.

با این حال، ارزش آن حق بیمه نیز باید در دستمزد W-2 کارمند سهامدار لحاظ شود. در حالی که این مبلغ مشمول کسر مالیات بر درآمد فدرال است، تا زمانی که به درستی انجام شود، از مالیات تأمین اجتماعی و مدیکر (FICA) معاف است. شما باید با ارائه دهنده حقوق و دستمزد خود هماهنگ کنید تا مطمئن شوید که این مبالغ به درستی در W-2 شما گزارش شده است.

نکات ایالتی (مثال‌ها)

وضعیت S-corp فدرال همیشه به طور مستقیم در سطح ایالت ترجمه نمی‌شود. همیشه قوانین خاص ایالت خود را بررسی کنید.

  • کالیفرنیا: S-corpها مشمول مالیات 1.5٪ بر درآمد خالص منبع کالیفرنیا خود هستند. علاوه بر این، اکثر شرکت‌ها باید هر سال حداقل 800 دلار مالیات حق امتیاز بپردازند (اگرچه برخی از استثنائات برای سال اول اعمال می‌شود).
  • نیویورک: انجام انتخابات S-corp فدرال کافی نیست. شما همچنین باید یک انتخابات جداگانه در سطح ایالت، فرم CT-6، ثبت کنید تا به عنوان یک شرکت S نیویورک در نظر گرفته شوید. عدم انجام این کار به این معنی است که شما در سطح ایالت به عنوان یک C-corp استاندارد مالیات خواهید شد.

چگونه یک S-corp را به طور واضح در Beancount مدل‌سازی کنیم

حسابداری متن ساده برای مدیریت پیچیدگی اضافه شده S-corp عالی است. در اینجا نحوه ساختار دفتر کل شما آمده است.

نمودار حساب‌های پیشنهادی (شروع کننده)

این ساختار اساسی هزینه‌های حقوق و دستمزد شما را از توزیع‌ها جدا می‌کند و حساب‌های بدهی را برای پیگیری مالیات‌هایی که بدهکار هستید ایجاد می‌کند.

; Core bank & income
1970-01-01 open Assets:Bank:Checking USD
1970-01-01 open Income:Sales USD
1970-01-01 open Income:Other USD

; Payroll expenses & liabilities
1970-01-01 open Expenses:Payroll:Wages USD
1970-01-01 open Expenses:Payroll:EmployerTaxes USD
1970-01-01 open Expenses:Benefits:HealthInsurance USD
1970-01-01 open Liabilities:Payroll:Federal:FIT USD
1970-01-01 open Liabilities:Payroll:FICA USD
1970-01-01 open Liabilities:Payroll:Medicare USD
1970-01-01 open Liabilities:Payroll:State:Withholding USD

; Equity
1970-01-01 open Equity:ContributedCapital USD
1970-01-01 open Equity:Distributions USD
1970-01-01 open Equity:RetainedEarnings USD

اجرای معمولی حقوق و دستمزد (ساده شده)

ارائه‌دهنده حقوق و دستمزد شما (مانند Gusto، ADP) حساب بانکی شما را برای دستمزد خالص و کل بدهی مالیاتی شما بدهکار می‌کند. معامله Beancount شما باید این را به دستمزد ناخالص، مالیات کارفرما و بدهی‌های مربوطه تقسیم کند.

; This transaction records a $100k annual salary, paid monthly.
2025-01-31 * "Gusto" "حقوق و دستمزد ژانویه — کارمند سهامدار"
Expenses:Payroll:Wages 8,333.33 USD ; دستمزد ناخالص
Expenses:Payroll:EmployerTaxes 637.50 USD ; FICA/Medicare سمت کارفرما
Liabilities:Payroll:Federal:FIT -1,200.00 USD ; کسر کارمند
Liabilities:Payroll:FICA -516.67 USD ; کسر کارمند
Liabilities:Payroll:Medicare -120.83 USD ; کسر کارمند
Assets:Bank:Checking -7,133.33 USD ; دستمزد خالص از بانک کسر می‌شود

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

; This represents the tax payment made by your payroll provider.
2025-02-15 * "EFTPS" "واریز مالیات حقوق و دستمزد فدرال"
Liabilities:Payroll:Federal:FIT 1,200.00 USD
Liabilities:Payroll:FICA 516.67 USD
Liabilities:Payroll:Medicare 120.83 USD
Assets:Bank:Checking -1,837.50 USD ; این مبلغ با بخش مالیاتی بدهی Gusto مطابقت دارد.

بیمه درمانی برای سهامدار بیش از 2٪

پرداخت حق بیمه را به عنوان هزینه کسب و کار ثبت کنید. می‌توانید از ابرداده‌ها برای یادآوری این نکته استفاده کنید که این باید در W-2 گزارش شود.

2025-02-01 * "BlueCross" "بیمه درمانی سهامدار (گزارش در W-2)"
Expenses:Benefits:HealthInsurance 600.00 USD ; w2: "true"
Assets:Bank:Checking -600.00 USD

توزیع مالک (نه دستمزد)

توزیع‌ها کاهش حقوق صاحبان سهام هستند، نه هزینه کسب و کار. آن‌ها را جدا از حقوق و دستمزد ثبت کنید.

2025-03-31 * "Owner Distribution" "توزیع سه ماهه اول"
Equity:Distributions 20,000.00 USD
Assets:Bank:Checking -20,000.00 USD

پیگیری مبنای سهامدار (اختیاری، اما توصیه می‌شود)

مبنای سهامدار شما تعیین می‌کند که آیا توزیع‌ها معاف از مالیات هستند یا خیر و آیا می‌توانید ضررهای تجاری را از اظهارنامه شخصی خود کسر کنید. در حالی که محاسبه رسمی در اظهارنامه مالیاتی شما انجام می‌شود، می‌توانید تخمین را در Beancount با استفاده از یک زیرحساب حقوق صاحبان سهام اختصاصی یا ابرداده‌ها پیگیری کنید. شما این را سالانه با برنامه K-1 که از S-corp دریافت می‌کنید، تطبیق می‌دهید.

یادداشتی در مورد کسر QBI (بخش 199A)

مالکان مشاغل انتقالی، از جمله S-corpها، ممکن است واجد شرایط کسر 20 درصدی از درآمد واجد شرایط کسب و کار (QBI) خود باشند. با این حال، برای مالیات دهندگانی که درآمدشان بالاتر از آستانه معینی است، این کسر می‌تواند توسط مبلغ دستمزد W-2 که کسب و کار پرداخت می‌کند محدود شود. این یک تعامل پیچیده ایجاد می‌کند: پرداخت حقوق معقول برای S-corp الزامی است و همین دستمزدها می‌توانند بر کسر QBI شما تأثیر بگذارند - گاهی اوقات به آن کمک می‌کند، گاهی اوقات آن را محدود می‌کند. این یک حوزه کلیدی برای مدل‌سازی با متخصص مالیات شما است.

پس از انتخاب، چه چیزی از نظر عملیاتی تغییر می‌کند؟

تغییر به S-corp چند لایه اداری اضافه می‌کند:

  • اجرای حقوق و دستمزد: شما باید به طور رسمی حقوق و دستمزد را اجرا کنید، همراه با کسر مالیات، پرداخت مالیات کارفرما، ثبت نام‌های سه ماهه و W-2های پایان سال.
  • ثبت فرم 1120-S: این اظهارنامه مالیاتی سالانه شرکت S است. شما همچنین یک برنامه K-1 برای هر سهامدار صادر خواهید کرد که سهم آن‌ها از نتایج مالی شرکت را به تفصیل بیان می‌کند.
  • رسیدگی صحیح به بیمه درمانی سهامدار: اطمینان حاصل کنید که حق بیمه برای مالکان بیش از 2٪ در دستمزد W-2 آن‌ها لحاظ می‌شود.
  • رعایت قوانین ایالتی: از هرگونه انتخابات S-corp در سطح ایالت یا مالیات سطح نهاد (مانند CA و NY) مطلع باشید.

اشتباهات رایج برای اجتناب

  • انتخاب دیرهنگام یا نامعتبر: مهلت‌ها را دوباره بررسی کنید و مطمئن شوید که همه سهامداران مورد نیاز فرم 2553 را امضا می‌کنند. اگر آن را از دست دادید، تسکین را تحت Rev. Proc. 2013-30 بررسی کنید.
  • حقوق نامعقول: وسوسه نشوید که به خودتان حقوق مصنوعی پایینی بپردازید. بر اساس نقش و داده‌های بازار، مستند کنید که چرا غرامت شما معقول است.
  • ترکیب دستمزد و توزیع: این معاملات را در دفاتر خود تمیز و جدا نگه دارید. توزیع‌ها حقوق و دستمزد نیستند.
  • نادیده گرفتن الزامات ایالتی: فراموش کردن انتخابات ایالتی یا عدم پرداخت مالیات سطح نهاد می‌تواند منجر به جریمه و سردردهای انطباق شود.

چک لیست سریع

  • تأیید کنید که واجد شرایط هستید و صرفه‌جویی مالیاتی بالقوه بیشتر از هزینه‌های جدید است.
  • مهلت ثبت فرم 2553 را در تقویم علامت بزنید (و قانون آخر هفته/تعطیلات را به خاطر داشته باشید).
  • یک سرویس حقوق و دستمزد راه‌اندازی کنید و یک حقوق معقول و مستند را تعیین کنید.
  • برنامه‌ریزی کنید که توزیع‌ها را فقط پس از پرداخت حقوق و هزینه‌های کسب و کار دریافت کنید.
  • الزامات ثبت نام و مالیات خاص S-corp ایالت خود را بررسی و رعایت کنید.
  • دفتر کل Beancount خود را با حساب‌های لازم برای حقوق و دستمزد، بدهی‌ها و حقوق صاحبان سهام به‌روز کنید.

Beancount S-Corp Starter (قالب خنثی)

;
; Beancount S-Corp Starter (قالب خنثی)
; Generated: 2025-08-09
; ---
; نحوه استفاده از این:
; 1) "TODO" را جستجو کنید و ایالت (های) خود، ارائه دهنده حقوق و دستمزد، EIN و نام بانک های خود را پر کنید.
; 2) دستمزد و توزیع مالک را جدا نگه دارید.
; 3) با ارائه دهنده حقوق و دستمزد خود هماهنگ کنید تا بیمه درمانی سهامدار >2% را در W-2 (جعبه 1) گزارش دهید.
; 4) اگر در ایالت دیگری هستید، نمونه های CA/NY را حذف یا تطبیق دهید.
;
; یادداشت:
; - این یک الگوی حسابداری است، نه مشاوره مالیاتی.
; - فرض می شود ارز عملیاتی USD است. در صورت لزوم تغییر دهید.
;

option "title" "دفتر کل S-Corp"
option "operating_currency" "USD"
commodity USD

; === حساب ها (از 2025-01-01 باز است. تاریخ ها را در صورت لزوم تنظیم کنید) ==================
2025-01-01 open Assets:Bank:Checking USD ; TODO: به بانک خود تغییر نام دهید (به عنوان مثال، Assets:Bank:Chase:Operating)
2025-01-01 open Assets:Bank:Savings USD
2025-01-01 open Assets:AccountsReceivable USD
2025-01-01 open Assets:PrepaidExpenses USD

2025-01-01 open Liabilities:CreditCard:Corporate USD
2025-01-01 open Liabilities:Payroll:Federal:FIT USD
2025-01-01 open Liabilities:Payroll:Federal:FICA USD
2025-01-01 open Liabilities:Payroll:Federal:Medicare USD
2025-01-01 open Liabilities:Payroll:Federal:FUTA USD
2025-01-01 open Liabilities:Payroll:State:Withholding USD ; TODO: تغییر نام ایالت (به عنوان مثال، CA، NY)
2025-01-01 open Liabilities:Payroll:State:Unemployment USD
2025-01-01 open Liabilities:Payroll:Local USD

2025-01-01 open Equity:ContributedCapital USD
2025-01-01 open Equity:Distributions USD
2025-01-01 open Equity:RetainedEarnings USD
2025-01-01 open Equity:OpeningBalances USD

2025-01-01 open Income:Sales USD
2025-01-01 open Income:Other USD

2025-01-01 open Expenses:COGS USD
2025-01-01 open Expenses:Payroll:Wages USD
2025-01-01 open Expenses:Payroll:EmployerTaxes:FICA USD
2025-01-01 open Expenses:Payroll:EmployerTaxes:Medicare USD
2025-01-01 open Expenses:Payroll:EmployerTaxes:FUTA USD
2025-01-01 open Expenses:Payroll:EmployerTaxes:State USD
2025-01-01 open Expenses:Benefits:HealthInsurance USD
2025-01-01 open Expenses:Benefits:HSA USD
2025-01-01 open Expenses:Benefits:Retirement:Match USD
2025-01-01 open Expenses:Taxes:State:S-Corp USD ; به عنوان مثال، مالیات سطح نهاد 1.5٪ CA
2025-01-01 open Expenses:Taxes:State:Franchise USD ; به عنوان مثال، حداقل مالیات حق امتیاز 800 دلاری CA
2025-01-01 open Expenses:Professional:Payroll USD
2025-01-01 open Expenses:Professional:Accounting USD
2025-01-01 open Expenses:Professional:Legal USD
2025-01-01 open Expenses:BankFees USD
2025-01-01 open Expenses:Software USD
2025-01-01 open Expenses:Office USD
2025-01-01 open Expenses:Meals USD
2025-01-01 open Expenses:Travel USD
2025-01-01 open Expenses:Insurance:GeneralLiability USD

; === مثال: سرمایه گذاری مالک =================================================
2025-01-02 * "Owner" "سرمایه گذاری اولیه"
Assets:Bank:Checking 25,000.00 USD
Equity:ContributedCapital -25,000.00 USD

; === مثال: پرداخت مشتری =====================================================
2025-01-15 * "Stripe" "دریافت اشتراک ژانویه"
Assets:Bank:Checking 12,000.00 USD
Income:Sales -12,000.00 USD

; === مثال: حقوق و دستمزد ماهانه (کارمند سهامدار واحد) ========================
; اعداد برای تعادل کامل انتخاب شده اند. اعداد FIT/State را با واقعیت خود تطبیق دهید.
; دستمزد ناخالص: 8,333.33 | کارمند FIT: 1,200.00 | کسر ایالتی: 300.00
; کارمند FICA (6.2%): 516.67 | کارمند Medicare (1.45%): 120.83
; کارفرما FICA: 516.67 | کارفرما Medicare: 120.83
; دستمزد خالص: 6,195.83
2025-01-31 * "Gusto" "حقوق و دستمزد ژانویه — کارمند سهامدار"
Expenses:Payroll:Wages 8,333.33 USD
Expenses:Payroll:EmployerTaxes:FICA 516.67 USD
Expenses:Payroll:EmployerTaxes:Medicare 120.83 USD
Liabilities:Payroll:Federal:FIT -1,200.00 USD
Liabilities:Payroll:Federal:FICA -1,033.34 USD ; کارمند + کارفرما
Liabilities:Payroll:Federal:Medicare -241.66 USD ; کارمند + کارفرما
Liabilities:Payroll:State:Withholding -300.00 USD
Assets:Bank:Checking -6,195.83 USD

; === مثال: واریز مالیات حقوق و دستمزد (EFTPS و ایالت) =================================
2025-02-15 * "EFTPS" "واریز حقوق و دستمزد فدرال (FIT، FICA، Medicare)"
Liabilities:Payroll:Federal:FIT 1,200.00 USD
Liabilities:Payroll:Federal:FICA 1,033.34 USD
Liabilities:Payroll:Federal:Medicare 241.66 USD
Assets:Bank:Checking -2,475.00 USD

2025-02-16 * "STATE DOR" "کسر حقوق و دستمزد ایالت"
Liabilities:Payroll:State:Withholding 300.00 USD
Assets:Bank:Checking -300.00 USD

; === مثال: بیمه درمانی برای سهامدار >2% =================================
; با حقوق و دستمزد هماهنگ کنید تا کل حق بیمه سالانه در W-2 جعبه 1 لحاظ شود.
; خود حق بیمه در اینجا قابل کسر است. در صورت رسیدگی صحیح، SS/Medicare را از آن کسر نکنید.
2025-02-01 * "BlueCross" "بیمه درمانی سهامدار (گنجاندن W-2 توسط حقوق و دستمزد انجام می شود)"
Expenses:Benefits:HealthInsurance 600.00 USD ; w2: "true"
Assets:Bank:Checking -600.00 USD

; === مثال: توزیع مالک (نه دستمزد) =======================================
2025-03-31 * "Owner Distribution" "توزیع سه ماهه اول"
Equity:Distributions 20,000.00 USD
Assets:Bank:Checking -20,000.00 USD

; === مثال های ایالتی (در صورت عدم کاربرد حذف/ویرایش کنید) =================================
; حداقل مالیات حق امتیاز کالیفرنیا (نه همیشه سال اول؛ قوانین را بررسی کنید)
2025-04-15 * "California FTB" "مالیات سالانه حق امتیاز"
Expenses:Taxes:State:Franchise 800.00 USD
Assets:Bank:Checking -800.00 USD

; مالیات سطح نهاد 1.5٪ S-Corp کالیفرنیا (مثال پرداخت برآورد)
2025-06-15 * "California FTB" "برآورد مالیات S-Corp"
Expenses:Taxes:State:S-Corp 1,500.00 USD
Assets:Bank:Checking -1,500.00 USD

; انتخابات S جداگانه نیویورک (CT-6) تأثیر مستقیمی بر دفتر کل ندارد. یادداشت نگهدارنده مکان.
2025-01-05 note Equity:RetainedEarnings "انتخابات S نیویورک (CT-6) ثبت شد — فقط یادداشت حسابداری (بدون ورودی)"

; === ردیابی مبنا (اختیاری — یادداشت خارج از کتاب) =====================================
2025-12-31 note Equity:RetainedEarnings "انتقال مبنا: +سرمایه 25,000 +درآمد 60,000 -توزیع 20,000 = مبنای پایان 65,000 (با K-1 تطبیق دهید)"

; === نکات واردات (CSV از Gusto/ADP) =============================================
; - برای CSV های ثبت حقوق و دستمزد Gusto، ستون ها را ترسیم کنید:
; دستمزد ناخالص -> Expenses:Payroll:Wages
; کارمند FIT/FICA/Medicare -> Liabilities:Payroll:Federal:FIT/FICA/Medicare (منفی)
; کسر ایالتی -> Liabilities:Payroll:State:Withholding (منفی)
; کارفرما FICA/Medicare/FUTA/SUTA -> Expenses:Payroll:EmployerTaxes:* (مثبت) و
; اگر CSV شما مالیات کارفرما را به عنوان مبالغ بدهی فهرست می کند، آنها را به صورت Liabilities:* (منفی) منعکس کنید،
; سپس با پرداخت های EFTPS/ایالت خود تسویه کنید.
; دستمزد خالص -> Assets:Bank:Checking (منفی، با تاریخ پرداخت مطابقت دارد)
; - بیمه درمانی پرداخت شده توسط شرکت:
; پرداخت فروشنده -> Expenses:Benefits:HealthInsurance (مثبت) / بانک (منفی)؛
; اطمینان حاصل کنید که حقوق و دستمزد شامل حق بیمه سالانه در W-2 جعبه 1 برای سهامدار >2% است.
;
; نکات:
; - توزیع ها را از حساب های حقوق و دستمزد دور نگه دارید.
; - از برچسب هایی مانند #payroll #distribution برای فیلتر کردن در Fava استفاده کنید.
; - زیرحساب های بانکی جداگانه را برای کنار گذاشتن مالیات (فدرال/ایالت) در نظر بگیرید.

مزیت فنی Beancount در مقایسه با Ledger، hledger و GnuCash

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

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

با استفاده از یک گزارش مقایسه‌ای دقیق، مشخصات فنی Beancount را در مقابل رقبای متن‌باز محبوب آن، Ledger-CLI، hledger و GnuCash، تجزیه و تحلیل می‌کنیم.

2025-07-22-مزیت-فنی-beancount-بررسی-عمیق-عملکرد-api-پایتون-و-جامعیت-داده‌ها-در-مقایسه-با-ledger-hledger-و-gnucash


سرعت و عملکرد: معیارهای کمی 🚀

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

  • Beancount: استفاده در دنیای واقعی نشان می‌دهد که می‌تواند دفاتر کل با صدها هزار تراکنش را تقریباً در ۲ ثانیه بارگیری و پردازش کند. استفاده از حافظه متوسط است. تجزیه حدود ۱۰۰ هزار تراکنش، متن منبع را با استفاده از تنها ده‌ها مگابایت رم به اشیاء درون حافظه تبدیل می‌کند.
  • آزمایش فشار ۱ میلیون تراکنش: معیاری با استفاده از یک دفتر کل مصنوعی با ۱ میلیون تراکنش، ۱۰۰۰ حساب و ۱ میلیون ورودی قیمت، تفاوت‌های معماری قابل توجهی را نشان داد:
    • hledger (Haskell): با موفقیت یک تجزیه و گزارش کامل را در ~۸۰.۲ ثانیه انجام داد و ~۱۲۴۶۵ تراکنش در ثانیه را پردازش کرد و ~۲.۵۸ گیگابایت رم استفاده کرد.
    • Ledger-CLI (C++): این فرآیند پس از ۴۰ دقیقه بدون تکمیل شدن خاتمه یافت، احتمالاً به دلیل یک رگرسیون شناخته شده که باعث استفاده بیش از حد از حافظه و CPU با دفاتر کل بسیار پیچیده می‌شود.
    • Beancount: اگرچه در آن آزمایش خاص ۱ میلیون گنجانده نشده است، منحنی عملکرد آن نشان می‌دهد که این کار را به طور موثر انجام می‌دهد. علاوه بر این، Beancount نسخه ۳ آینده، با هسته جدید C++ و API پایتون، انتظار می‌رود که بهبود دیگری در توان عملیاتی ارائه دهد.
  • GnuCash (C/Scheme): به عنوان یک برنامه GUI که کل مجموعه داده‌های خود را در حافظه بارگیری می‌کند، عملکرد با اندازه به طور قابل توجهی کاهش می‌یابد. باز کردن یک فایل XML ~۵۰ مگابایتی (که نشان دهنده بیش از ۱۰۰ هزار تراکنش است) ۷۷ ثانیه طول کشید. تغییر به backend SQLite این زمان را به ~۵۵ ثانیه بهبود بخشید.

نتیجه‌گیری: Beancount عملکرد استثنایی ارائه می‌دهد که به طور قابل پیش‌بینی مقیاس‌پذیر است، ویژگی مهمی برای مدیریت داده‌های بلندمدت. از افت عملکرد مشاهده شده در Ledger و تأخیر محدود به رابط کاربری GnuCash جلوگیری می‌کند.


معماری داده‌ها: متن ساده در مقابل پایگاه داده‌های مات 📄

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

  • فشرده و کارآمد: یک فایل Beancount با ۱۰۰۰۰۰ تراکنش تنها ~۸.۸ مگابایت است. این فشرده‌تر از فایل معادل Ledger (~۱۰ مگابایت) است، تا حدی به این دلیل که سینتکس Beancount اجازه می‌دهد تا مقدار نهایی تراز در یک تراکنش استنباط شود و افزونگی کاهش یابد.
  • اجرای ساختاری: Beancount دستورالعمل‌های YYYY-MM-DD open Account را الزامی می‌کند. این رویکرد منظم از ایجاد حساب‌های جدید و نادرست به دلیل اشتباهات تایپی در نام حساب جلوگیری می‌کند - یک مشکل رایج در سیستم‌هایی مانند Ledger و hledger که حساب‌ها را به صورت خودکار ایجاد می‌کنند. این ساختار داده‌ها را برای دستکاری برنامه‌نویسی قابل اعتمادتر می‌کند.
  • آماده برای کنترل نسخه: یک دفتر کل متن ساده کاملاً برای کنترل نسخه با Git مناسب است. شما یک تاریخچه کامل و قابل حسابرسی از هر تغییر مالی که انجام می‌دهید، دریافت می‌کنید.
  • مقایسه با GnuCash: GnuCash به طور پیش‌فرض از یک فایل XML فشرده شده با gzip استفاده می‌کند، جایی که داده‌ها طولانی هستند و در برچسب‌هایی با GUID برای هر موجودیت پیچیده شده‌اند. در حالی که backendهای SQLite، MySQL و PostgreSQL را ارائه می‌دهد، این داده‌ها را از دستکاری و نسخه‌سازی متن ساده و مستقیم انتزاع می‌کند. ویرایش XML خام امکان‌پذیر است اما بسیار دشوارتر از ویرایش یک فایل Beancount است.

نتیجه‌گیری: فرمت داده‌های Beancount فقط متن نیست. این یک زبان خوش‌تعریف است که وضوح را به حداکثر می‌رساند، صحت را تضمین می‌کند و به طور یکپارچه با ابزارهای توسعه‌دهنده مانند git و grep ادغام می‌شود.


ویژگی بی‌نظیر: یک API پایتون واقعی و معماری افزونه 🐍

این مزیت فنی تعیین‌کننده Beancount است. این یک برنامه یکپارچه نیست، بلکه یک کتابخانه با یک API پایتون پایدار و درجه یک است. این تصمیم طراحی، امکانات نامحدود اتوماسیون و ادغام را فراهم می‌کند.

  • دسترسی مستقیم برنامه‌نویسی: می‌توانید داده‌های دفتر کل خود را مستقیماً در پایتون بخوانید، جستجو کنید و دستکاری کنید. به همین دلیل است که توسعه‌دهندگان مهاجرت می‌کنند. همانطور که یک کاربر اشاره کرد، ناامیدی از تلاش برای اسکریپت نویسی در برابر پیوندهای داخلی ضعیف مستند Ledger با Beancount از بین می‌رود.
  • خط لوله افزونه: بارگذار Beancount به شما امکان می‌دهد توابع پایتون سفارشی را مستقیماً در خط لوله پردازش وارد کنید. این امکان تبدیل‌ها و اعتبارسنجی‌های دلخواه را در جریان داده‌ها هنگام بارگیری فراهم می‌کند - به عنوان مثال، نوشتن یک افزونه برای اعمال این که هر هزینه از یک فروشنده خاص باید دارای یک برچسب خاص باشد.
  • چارچوب واردکننده قدرتمند: فراتر از جادوگران واردات CSV دست و پا گیر حرکت کنید. با Beancount، شما اسکریپت‌های پایتون را برای تجزیه صورت‌های مالی از هر منبع (OFX، QFX، CSV) می‌نویسید. ابزارهای جامعه مانند smart_importer حتی از مدل‌های یادگیری ماشین برای پیش‌بینی و اختصاص خودکار حساب‌های ارسال استفاده می‌کنند و ساعت‌ها طبقه‌بندی دستی را به یک فرآیند چند ثانیه‌ای و یک فرمان تبدیل می‌کنند.
  • نحوه مقایسه دیگران:
    • Ledger/hledger: قابلیت توسعه در درجه اول خارجی است. شما داده‌ها را به/از فایل اجرایی منتقل می‌کنید. در حالی که آنها می‌توانند JSON/CSV خروجی دهند، شما نمی‌توانید منطق را به حلقه پردازش اصلی آنها بدون تغییر منبع C++/Haskell تزریق کنید.
    • GnuCash: قابلیت توسعه از طریق یک منحنی یادگیری شیب‌دار با Guile (Scheme) برای گزارش‌های سفارشی یا از طریق پیوندهای پایتون (با استفاده از SWIG و کتابخانه‌هایی مانند PieCash) که با موتور GnuCash تعامل دارند، انجام می‌شود. این قدرتمند است اما کمتر از رویکرد کتابخانه بومی Beancount مستقیم و "پایتونیک" است.

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


فلسفه: یک کامپایلر دقیق برای امور مالی شما 🤓

منحنی یادگیری Beancount نتیجه مستقیم فلسفه اصلی آن است: داده‌های مالی شما یک زبان رسمی است و باید صحیح باشد.

تجزیه‌کننده Beancount مانند یک کامپایلر دقیق عمل می‌کند. اعتبارسنجی نحوی و منطقی قوی انجام می‌دهد. اگر یک تراکنش تراز نشود یا یک حساب باز نشده باشد، از پردازش فایل خودداری می‌کند و یک خطای توصیفی با شماره خط برمی‌گرداند. این یک ویژگی است، نه یک اشکال. تضمین می‌کند که اگر فایل شما "کامپایل" شود، داده‌های زیرین از نظر ساختاری سالم هستند.

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

Beancount برای چه کسانی مناسب است؟

بر اساس این تجزیه و تحلیل فنی، Beancount انتخاب بهینه برای موارد زیر است:

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

اگر به دنبال عملکرد خام C++ برای گزارش‌های استاندارد هستید، Ledger یک رقیب است. برای مقیاس‌پذیری استثنایی در یک الگوی برنامه‌نویسی تابعی، hledger چشمگیر است. برای یک رابط کاربری گرافیکی غنی از ویژگی با حداقل تنظیمات، GnuCash عالی است.

اما اگر می‌خواهید یک سیستم مدیریت مالی واقعاً قوی، خودکار و عمیقاً سفارشی بسازید، Beancount پایه فنی برتری را ارائه می‌دهد.