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

تنظیمات مختص صنعت

پیکربندی های مثال برای فریلنسرها، کسب و کارهای کوچک و امور مالی شخصی

در این راهنما، بررسی می‌کنیم که چگونه یک دفتر Beancount را برای نیازهای مختلف تنظیم کنیم: یک متخصص فریلنسر، یک کسب و کار کوچک بوتیک و امور مالی خانگی شخصی. هر سناریو دارای ساختارهای حساب و ملاحظات منحصر به فردی است. ما منطق پشت هر تنظیم را توضیح می‌دهیم، قطعه کد نمونه Beancount را ارائه می‌دهیم و ویژگی‌های مفیدی (مانند تگ‌های سفارشی و واردات خودکار) را که ردیابی را آسان‌تر می‌کنند، برجسته می‌کنیم. لحن آموزشی و در عین حال قابل دسترس است - چه یک توسعه‌دهنده، یک متخصص آشنا به فناوری یا یک علاقه‌مند به امور مالی باشید، این مثال‌ها به شما کمک می‌کنند Beancount را در دنیای واقعی به کار ببرید.

industry-specific-setups

فریلنسرها

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

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

  • Assets:Business:Checking - یک حساب بانکی تجاری برای تمام پرداخت‌های مشتری و هزینه‌های تجاری.
  • Assets:Business:TaxSavings - یک حساب پس انداز برای کنار گذاشتن بخشی از درآمد برای پرداخت‌های مالیاتی (زیرا هیچ کارفرمایی مالیات را برای شما کسر نمی‌کند).
  • Income:Client:Name** - حساب‌های درآمد برای پرداخت‌های مشتری. می‌توانید زیرحساب‌هایی برای هر مشتری اصلی ایجاد کنید (به عنوان مثال، Income:Client:ACME)، یا از یک حساب Income:Freelance واحد با نام مشتریان که در معاملات تگ شده اند استفاده کنید.
  • Expenses:Business:Contractors - برای پرداخت به هر پیمانکار فرعی یا کار برون سپاری شده.
  • Expenses:Business:Software (و سایر دسته‌ها مانند Travel، Supplies) - برای هزینه‌های تجاری منظم (اشتراک‌های نرم افزاری، تجهیزات، سفر به سایت‌های مشتری و غیره).
  • Equity:OwnerDraw - (اختیاری) برای ثبت انتقال سود از تجارت به خودتان شخصاً. این به متمایز کردن وجوه تجاری از وجوه شخصی هنگام پرداخت به خودتان کمک می‌کند.

منطق: این ساختار تضمین می‌کند که تمام پول‌های مرتبط با تجارت در حساب‌های اختصاصی ردیابی می‌شوند. درآمد حاصل از هر مشتری ثبت می‌شود (و این امر دیدن اینکه مشتریان برتر شما چه کسانی هستند را آسان می‌کند)، و هزینه‌ها برای کسر مالیات دسته بندی می‌شوند. کنار گذاشتن مالیات در یک حساب دارایی جداگانه (یا ثبت بدهی برای مالیات‌های معوق) از خرج کردن تصادفی پولی که به دولت پرداخت می‌شود جلوگیری می‌کند. دفتر ساده می‌ماند: اگر مشتریان جدید یا دسته‌های هزینه به دست می‌آورید، می‌توانید حساب‌های جدید اضافه کنید یا از برچسب‌ها بدون سازماندهی مجدد همه چیز استفاده کنید. یک اشتباه رایج، ترکیب معاملات شخصی و تجاری در یک حساب است. با نگهداری یک حساب جاری تجاری اختصاصی (و حساب دارایی مربوطه)، تطبیق و گزارش‌دهی تمیزتر می‌شوند. یکی دیگر از اشتباهاتی که باید از آن اجتناب کرد، فراموش کردن ثبت نقل و انتقالات نقدی برای مالیات یا برداشت مالک است - با استفاده از حساب‌هایی مانند TaxSavings و OwnerDraw، هر دلار حسابرسی می‌شود.

ویژگی های Beancount برای برجسته کردن: تگ‌ها و فراداده‌ها برای فریلنسرها بسیار مفید هستند. به عنوان مثال، ممکن است تراکنش‌ها را با یک شماره پروژه یا فاکتور تگ کنید، یا از یک فیلد فراداده برای یادداشت نام مشتری استفاده کنید اگر تصمیم دارید از حساب‌های درآمد جداگانه برای هر مشتری استفاده نکنید. این کار فیلتر یا پرس و جو از تراکنش‌ها را برای یک مشتری یا پروژه خاص آسان می‌کند (به عنوان مثال، جمع کردن تمام هزینه‌های تگ شده با #ProjectX). علاوه بر این، واردکننده‌های خودکار Beancount می‌توانند ورود داده‌ها را ساده کنند - به عنوان مثال، می‌توانید یک واردکننده برای صورتحساب‌های بانکی یا کارت اعتباری خود تنظیم کنید تا تراکنش‌ها را به دفتر خود وارد کنید، سپس فقط نام حساب هزینه یا درآمد مناسب را اضافه کنید. این امر در زمانی که تراکنش‌های کوچک زیادی دارید (مانند اشتراک‌های نرم‌افزاری یا هزینه‌های سفر) در زمان صرفه‌جویی می‌کند.

قطعه کد نمونه دفتر فریلنسر

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

1970-01-01 open Assets:Business:Checking
1970-01-01 open Assets:Business:TaxSavings
1970-01-01 open Income:Client:ACME
1970-01-01 open Expenses:Business:Contractors
1970-01-01 open Expenses:Business:Software

; درآمد مشتری - پرداخت برای یک فاکتور
2025-08-15 * "پرداخت فاکتور از شرکت ACME"
invoice: "INV-2025-08-15"
Assets:Business:Checking 5000 USD
Income:Client:ACME -5000 USD

; هزینه منظم - به عنوان مثال اشتراک نرم افزار برای تجارت
2025-08-05 * "اشتراک GitHub"
Expenses:Business:Software 15 USD
Assets:Business:Checking - 15 USD

; هزینه پیمانکار - پرداخت به یک پیمانکار فرعی برای کمک
2025-08-20 * "پرداخت پیمانکار - Jane Doe"
Expenses:Business:Contractors 2000 USD
Assets:Business:Checking -2000 USD

; کسر مالیات - انتقال پول به پس انداز مالیاتی
2025-08-31 * "کنار گذاشتن مالیات Q3"
Assets:Business:TaxSavings 1500 USD
Assets:Business:Checking -1500 USD #مالیات

بیایید آنچه در حال وقوع است را تجزیه و تحلیل کنیم:

  • ما حساب‌های لازم را در بالا باز می‌کنیم (با تاریخ شروع). این به طور دقیق برای Beancount مورد نیاز نیست (حساب‌ها در اولین استفاده در صورت باز نشدن ایجاد می‌شوند)، اما اعلام آنها تمرین خوبی است. حساب‌های Assets:Business:Checking و Assets:Business:TaxSavings موجودی USD را نگه می‌دارند. حساب‌های درآمد و هزینه را می‌توان بدون ارز در دستورالعمل باز گذاشت زیرا ارزهای تراکنش (USD در این مورد) را به ارث می‌برند.
  • پرداخت فاکتور از مشتری: در 2025-08-15، یک تراکنش درآمد، پرداخت 5000 دلاری مشتری برای یک فاکتور را ثبت می‌کند. ما Income:Client:ACME را بستانکار می‌کنیم (درآمد با مقدار منفی در دفترداری دوبل افزایش می‌یابد) و حساب جاری را بدهکار می‌کنیم. یک فیلد فراداده invoice: "INV-2025-08-15" برای یادداشت شماره فاکتور درج شده است - این اختیاری است اما نشان می‌دهد که چگونه می‌توانید اطلاعات اضافی را به یک تراکنش پیوست کنید. همچنین می‌توانید این تراکنش را با #ACME یا #client-ACME برای فیلتر کردن سریع تگ کنید. اگر چندین مشتری داشتید، ممکن است از یک حساب عمومی Income:Clients استفاده کنید و به جای ایجاد زیرحساب‌های زیاد، به چنین فراداده یا فیلد Payee برای تمایز مشتریان تکیه کنید.
  • هزینه تجاری (نرم افزار): در 2025-08-05، ما یک هزینه 15 دلاری برای اشتراک GitHub (شاید برای مخازن خصوصی یا سایر خدمات) ثبت می‌کنیم. پست به Expenses:Business:Software می‌رود و حساب جاری تجاری را کاهش می‌دهد. هزینه‌های مکرر کوچک مانند این را می‌توان تگ کرد (به عنوان مثال، ما #مالیات را در تراکنش مالیاتی زیر اضافه کردیم؛ به طور مشابه ممکن است هزینه‌های خاصی را به عنوان #مکرر برچسب بزنید اگر ماهانه رخ می‌دهند، و غیره). در این مورد، نام حساب خود (Software) آن را روشن می‌کند.
  • پرداخت پیمانکار: در 2025-08-20، فریلنسر به یک پیمانکار فرعی (Jane Doe) 2000 دلار پرداخت کرد. این به عنوان یک هزینه در Expenses:Business:Contractors و پول نقد از حساب جاری ثبت می‌شود. می‌توانید نام پیمانکار را در توضیحات (همانطور که ما انجام دادیم) یا به عنوان یک فیلد فراداده (به عنوان مثال، contractor: "Jane Doe") درج کنید. این یک مسیر حسابرسی از اینکه به چه کسی و چرا پرداخت کرده‌اید را حفظ می‌کند (در صورت نیاز به جزئیات در هنگام ثبت مالیات یا بودجه‌بندی مفید است).
  • انتقال پس انداز مالیاتی: در 2025-08-31، فریلنسر 1500 دلار از حساب جاری اصلی به یک حساب پس انداز مالیاتی اختصاصی منتقل می‌کند. ما این تراکنش را با #مالیات برای دید تگ کرده‌ایم. این یک هزینه نیست (شما فقط پول خود را جابجا می‌کنید)، بنابراین بین دو حساب دارایی جابجا می‌شود. با انجام این کار هر ماه یا هر سه ماه یکبار، بودجه‌ای برای پوشش مالیات‌های تخمینی جمع آوری می‌کنید. وقتی زمان پرداخت واقعی مالیات به دولت فرا می‌رسد، یک هزینه (به عنوان مثال، Expenses:Taxes) و کسری از حساب TaxSavings (یا جاری) ثبت می‌کنید. یک اشتباه رایج این است که این انتقال را به عنوان یک هزینه در گزارش‌های خود در نظر بگیرید - به یاد داشته باشید، این یک هزینه نیست، فقط یک تخصیص احتیاطی است. فقط پرداخت واقعی مالیات به سازمان امور مالیاتی / سازمان مالیاتی یک هزینه است (یا کاهش بدهی مالیاتی که انباشته شده است اگر آن را به این روش پیگیری کنید).

خلاصه: دفتر Beancount یک فریلنسر بر سادگی و وضوح تاکید دارد. تمام درآمدها و خروجی‌های مرتبط با تجارت به طور روشمند ثبت می‌شوند. با استفاده از نام حساب‌های معنادار و برچسب‌ها/فراداده‌های گاه به گاه، می‌توانید گزارش‌هایی را به ازای هر مشتری یا به ازای هر دسته هزینه به راحتی ایجاد کنید (به عنوان مثال، کل درآمد به ازای هر مشتری، کل هزینه صرف شده برای پیمانکاران در سال جاری و غیره). این تنظیم مقیاس پذیر است - می‌توانید مشتریان جدید یا دسته‌های هزینه را با تکامل کسب و کار خود اضافه کنید. با ویژگی‌هایی مانند واردات خودکار (برای وارد کردن تراکنش‌های بانکی) و برچسب‌گذاری سفارشی برای پروژه‌ها یا فاکتورها، Beancount می‌تواند سربار حسابداری را برای فریلنسرها تا حد زیادی کاهش دهد و در عین حال تصویری واضح از امور مالی در هر زمان ارائه دهد.

کسب و کارهای کوچک

در مرحله بعد، یک کسب و کار کوچک بوتیک تجارت الکترونیک را در نظر بگیرید - به عنوان مثال، یک فروشگاه آنلاین که کالاهای دست ساز می‌فروشد. این سناریو پیچیدگی‌هایی مانند مدیریت موجودی، بهای تمام شده کالای فروش رفته (COGS) و رسیدگی به پردازشگرهای پرداخت آنلاین را اضافه می‌کند. Beancount می‌تواند این موارد را با یک ساختار حساب متفکرانه و روش ثبت تراکنش تطبیق دهد. ما از موردی استفاده خواهیم کرد که در آن کسب و کار محصولات موجود در انبار را پیگیری می‌کند، فروش‌ها را از طریق یک پلتفرم آنلاین (مانند Shopify با Stripe برای پرداخت‌ها) ثبت می‌کند و هزینه‌های معمول تجاری را ثبت می‌کند.

حساب‌های کلیدی برای یک کسب و کار تجارت الکترونیک بوتیک: علاوه بر حساب‌های بانکی و هزینه‌های اساسی، دفتر یک کسب و کار خرده فروشی شامل حساب‌هایی برای ردیابی موجودی و جریان‌های فروش خواهد بود:

  • Assets:Bank:Checking - حساب جاری کسب و کار (برای پرداخت به تامین کنندگان، هزینه‌های عملیاتی و دریافت نقل و انتقالات از پردازشگرهای پرداخت).
  • Assets:Stripe:Balance (یا Assets:PayPal، و غیره) - یک حساب تسویه برای وجوه جمع آوری شده از طریق پرداخت‌های آنلاین که هنوز به بانک نرسیده اند. به عنوان مثال، هنگامی که یک مشتری از طریق Stripe پرداخت می‌کند، ممکن است پول قبل از واریز به بانک شما به صورت دسته‌ای در یک حساب Stripe بنشیند.
  • Assets:Inventory:Product** - حساب‌های موجودی برای محصولات شما. می‌توانید با هر محصول (یا دسته ای از محصولات) به عنوان یک کالا در Beancount رفتار کنید تا مقادیر موجود را ردیابی کنید. به عنوان مثال، Assets:Inventory:Widgets ممکن است مقدار اقلام "Widget" موجود در انبار را که به قیمت تمام شده ارزیابی شده اند، نگه دارد.
  • Income:Sales - ثبت درآمد حاصل از فروش محصول. در صورت داشتن کانال‌های متعدد، می‌توانید از زیرحساب‌ها برای کانال‌های فروش مختلف استفاده کنید (به عنوان مثال، Income:Sales:Online در مقابل Income:Sales:InStore)، اما ما آن را با یک حساب درآمد فروش ساده نگه می‌داریم.
  • Expenses:COGS - بهای تمام شده کالای فروش رفته، برای گرفتن مبنای بهای تمام شده اقلام موجودی هنگام فروش. این حساب به طور موثر نشان می‌دهد که موجودی فروخته شده در یک دوره برای شما (به عنوان صاحب کسب و کار) چقدر هزینه داشته است. این یک جزء کلیدی برای محاسبه سود ناخالص است.
  • Expenses:Fees - برای هزینه‌های پردازش پرداخت و هزینه‌های پلتفرم (هزینه‌های Stripe، هزینه‌های Shopify، هزینه‌های PayPal و غیره را می‌توان در اینجا ثبت کرد). در صورت تمایل می‌توانید این را به حساب‌های دقیق‌تری تقسیم کنید (به عنوان مثال، Expenses:Fees:Stripe و Expenses:Fees:Shopify)، اما یک حساب ممکن است برای تمام هزینه‌های تراکنش کافی باشد.
  • Expenses:Operating - هزینه‌های تجاری عمومی که مستقیماً به COGS مرتبط نیستند، مانند بازاریابی، میزبانی وب، نرم افزار، لوازم حمل و نقل و غیره. اینها را می‌توان به زیرحساب‌ها تقسیم کرد (به عنوان مثال، Expenses:Marketing، Expenses:WebHosting، Expenses:Shipping) برای تجزیه و تحلیل مراکز هزینه مختلف.
  • Liabilities:SalesTax - (اختیاری، در صورت لزوم) اگر کسب و کار نیاز به جمع آوری مالیات فروش یا مالیات بر ارزش افزوده بر روی فروش داشته باشد، این حساب بدهی مالیات‌های جمع آوری شده اما هنوز به دولت پرداخت نشده را ردیابی می‌کند. هر فروش سپس بخش مالیات را به این حساب تقسیم می‌کند. این تضمین می‌کند که مالیات‌های جمع آوری شده به عنوان درآمد محاسبه نمی‌شوند و برای پرداخت به مقامات مالیاتی اختصاص داده شده اند.
  • Equity:OwnerEquity - (اختیاری) نشان دهنده سرمایه گذاری مالک و سود انباشته است. هنگامی که کسب و کار شروع شد، هر گونه بودجه اولیه توسط مالک در اینجا بستانکار می‌شود (با بدهکار شدن بانک یا موجودی در صورت مشارکت نقدی یا موجودی). همچنین، اگر مالک سود برداشت کند (توزیع)، این را می‌توان در برابر این حساب حقوق صاحبان سهام ثبت کرد. این ترازنامه را متعادل نگه می‌دارد، اما برای عملیات روزمره، اغلب وارد بازی نمی‌شود.

منطق: این تنظیم جریان کالاها و پول را جدا می‌کند. خرید موجودی در ابتدا در ترازنامه (به عنوان دارایی) و نه بلافاصله به عنوان هزینه ثبت می‌شود. تنها زمانی که محصولات را می‌فروشید، هزینه آنها (COGS) را صرف می‌کنید و درآمد را با هزینه مربوطه برای محاسبه سود مناسب مطابقت می‌دهید. درآمد حاصل از فروش با قیمت فروش ناخالص ثبت می‌شود، در حالی که هزینه‌ها به طور جداگانه ثبت می‌شوند تا بتوانید هم درآمد ناخالص و هم هزینه‌های پرداخت شده (و در نتیجه درآمد خالص) را مشاهده کنید. استفاده از یک حساب تسویه مانند Assets:Stripe:Balance به تطبیق سپرده‌ها کمک می‌کند - پول از Stripe به صورت یکجا به بانک شما منتقل می‌شود و می‌توانید آن نقل و انتقالات را بدون سردرگمی ثبت کنید. یک اشتباه رایج برای صاحبان فروشگاه‌های جدید، غفلت از ثبت صحیح موجودی است - به عنوان مثال، هزینه‌یابی تمام خرید موجودی بلافاصله. این ممکن است برای ردیابی جریان نقدی خوب باشد، اما سود شما را مخدوش می‌کند: در ماه‌هایی که انبار می‌کنید، سود کمتری خواهید داشت و در ماه‌هایی که می‌فروشید، سود بیشتری خواهید داشت، حتی اگر موجودی قبلاً خریداری شده باشد. با استفاده از یک حساب دارایی موجودی و COGS، هزینه را با فروش همسو می‌کنید. یکی دیگر از اشتباهات، عدم احتساب هزینه‌ها یا بازپرداخت‌ها است که می‌تواند باعث شود مانده بانکی یا Stripe شما با درآمد ثبت شده شما مطابقت نداشته باشد. ما با ثبت صریح هزینه‌ها و استفاده از حساب دارایی Stripe برای ردیابی آنچه Stripe بدهکار است یا پرداخت کرده است، از آن جلوگیری می‌کنیم.

ویژگی های Beancount برای برجسته کردن: ردیابی موجودی در Beancount از توانایی خود برای رسیدگی به کالاها و هزینه‌ها استفاده می‌کند. هر محصول می‌تواند یک نماد کالا باشد (به عنوان مثال، WIDGET)، که به شما امکان می‌دهد هم مقدار و هم هزینه واحد را ثبت کنید. هنگامی که اقلام را می‌فروشید، منطق موجودی Beancount (FIFO به طور پیش فرض) می‌تواند به طور خودکار هزینه مناسب را از دسته‌های موجودی شما انتخاب کند. این را در مثال خواهیم دید. همچنین می‌توانید از فراداده یا پیوندها برای مرتبط کردن فروش‌ها و ورودی‌های COGS مربوطه استفاده کنید (به عنوان مثال، استفاده از همان شماره سفارش در هر دو تراکنش، یا یک برچسب مشترک مانند #order1001 در فروش و کاهش موجودی، که پرس و جو یا دوبار بررسی اینکه هر فروش یک ورودی COGS مطابق دارد را آسان می‌کند). علاوه بر این، واردات خودکار می‌تواند در اینجا کمک کند: می‌توانید از یک اسکریپت برای وارد کردن داده‌های فروش از گزارش‌های پرداخت Shopify یا Stripe استفاده کنید، یا صورتحساب‌های بانکی خود را وارد کنید تا تراکنش‌های هزینه و پرداخت‌ها را دریافت کنید. خودکارسازی این وظایف ورود داده‌های تکراری به این معنی است که زمان بیشتری را صرف تجزیه و تحلیل و زمان کمتری را صرف تایپ اعداد می‌کنید.

قطعه کد نمونه دفتر کسب و کار کوچک

در زیر یک نمونه متراکم Beancount برای کسب و کار تجارت الکترونیک بوتیک ما آورده شده است. ما خرید موجودی، ثبت فروش (با کسر هزینه پردازشگر پرداخت) و ثبت بهای تمام شده کالای فروش رفته برای آن فروش را نشان می‌دهیم. در عمل، شما هزینه‌های دیگری (مانند هزینه‌های پلتفرم، هزینه‌های تبلیغات و غیره) را نیز به طور مشابه با مثال هزینه نشان داده شده ثبت می‌کنید. ما USD را به عنوان ارز و محصولی به نام "Widget" را که به عنوان یک کالا در انبار پیگیری می‌کنیم، فرض می‌کنیم.

1970-01-01 open Assets:Bank:Checking
1970-01-01 open Assets:Stripe:Balance
1970-01-01 open Assets:Inventory:Widgets WIDGET
1970-01-01 open Income:Sales
1970-01-01 open Expenses:COGS
1970-01-01 open Expenses:Fees

; خرید موجودی (50 واحد ویجت با هزینه 10 دلار برای هر واحد)
2025-03-10 * "خرید 50 ویجت از SupplierCo"
Assets:Inventory:Widgets 50 WIDGET {10 USD}
Assets:Bank:Checking -500 USD

; فروش به مشتری (سفارش شماره 1001 از طریق فروشگاه آنلاین، 2 ویجت فروخته شد)
2025-04-05 * "سفارش فروش شماره 1001 (2x ویجت از طریق Shopify)"
Assets:Stripe:Balance 58 USD ; پرداخت خالص دریافت شده پس از هزینه ها
Expenses:Fees 2 USD ; هزینه پردازش (Stripe)
Income:Sales -60 USD ; درآمد برای 2 ویجت (@ 30 دلار برای هر کدام)

; بهای تمام شده کالای فروش رفته برای فروش بالا (2 ویجت با هزینه 10 دلار برای هر کدام)
2025-04-05 * "COGS برای سفارش شماره 1001 (2x ویجت)"
Expenses:COGS 20 USD
Assets:Inventory:Widgets -2 WIDGET {10 USD}

در اینجا چیزی است که گام به گام اتفاق می افتد:

  • باز کردن حساب‌ها: ما حساب جاری، حساب مانده Stripe، یک حساب موجودی برای ویجت‌ها (اعلام شده با کالای WIDGET برای ردیابی واحدها) و حساب‌های درآمد و هزینه اصلی (فروش، COGS، هزینه‌ها) را باز می‌کنیم. با اعلام Assets:Inventory:Widgets WIDGET، سیگنال می‌دهیم که این حساب مقادیر کالای "WIDGET" را نگه می‌دارد. این تضمین می‌کند که Beancount می‌داند که واحدهای کالا را در آنجا انتظار داشته باشد و می‌توانیم هزینه را به آن واحدها پیوست کنیم.

  • خرید موجودی: در 2025-03-10، ما موجودی می‌خریم - 50 واحد ویجت از یک تامین کننده با قیمت 10 دلار برای هر کدام، که در مجموع 500 دلار هزینه دارد. این تراکنش Assets:Inventory:Widgets را با 50 WIDGET {10 USD} بدهکار می‌کند. این بدان معناست که 50 واحد کالای WIDGET، که هر کدام هزینه ثبت شده 10 USD دارند، به حساب موجودی اضافه می‌شود. اعتبار Assets:Bank:Checking -500 USD است (هزینه نقدی). توجه داشته باشید که ما مستقیماً یک حساب هزینه را در اینجا لمس نکردیم. ما خرید را به عنوان دارایی موجودی سرمایه گذاری می‌کنیم. اکنون ترازنامه ما 50 ویجت دارد که در مجموع به ارزش 500 دلار در انبار است. (اگر می‌خواستید یک گزارش ترازنامه اجرا کنید، حساب موجودی 50 واحد WIDGET را با ارزش 500 دلار نشان می‌دهد.)

  • ثبت فروش (سفارش شماره 1001): در 2025-04-05، ما یک فروش 2 ویجت را از طریق فروشگاه آنلاین خود ثبت می‌کنیم. توضیحات شامل یک شماره سفارش برای وضوح است. این تراکنش شامل سه پست است:

    • Assets:Stripe:Balance 58 USD: پولی که از فروش دریافت شده است، اما در حال حاضر در Stripe است (خالص هزینه‌ها). فرض کنید مشتری در مجموع 60 دلار پرداخت کرده است. Stripe 2 دلار کارمزد دریافت کرده است و 58 دلار اکنون در حساب Stripe ما است (که بعداً به بانک ما منتقل می‌شود). ما 58 دلار را به عنوان دارایی در Stripe ثبت می‌کنیم.
    • Expenses:Fees 2 USD: هزینه 2 دلاری به عنوان یک هزینه تجاری ثبت می‌شود. این تضمین می‌کند که صورت سود و زیان ما این هزینه را منعکس می‌کند و دارایی Stripe ما به اضافه هزینه با هم برابر با کل پرداخت مشتری است.
    • Income:Sales -60 USD: ما 60 دلار درآمد حاصل از فروش را ثبت می‌کنیم. (حساب‌های درآمد با اعتبارات افزایش می‌یابند، از این رو مقدار منفی در نماد Beancount).

    پس از این تراکنش، اثر خالص این است: Income:Sales 60 دلار افزایش یافته است، 58 دلار دارایی اضافی (دریافتنی از Stripe) و 2 دلار هزینه برای کارمزد. اگر Stripe بعداً 58 دلار را به حساب ما واریز کند، ما یک انتقال ساده مانند Assets:Bank:Checking 58 USD / Assets:Stripe:Balance -58 USD را در تاریخ پرداخت ثبت می‌کنیم - این دارایی را از حساب Stripe به بانک منتقل می‌کند و هیچ تاثیری بر درآمد یا هزینه ندارد (فقط دارایی‌ها را تغییر می‌دهد). ما این انتقال را در بالا نشان نداده ایم، اما یک گام مهم در دفترداری واقعی است تا حساب Stripe خود را پس از انتقال همه چیز به 0 دلار نگه دارید.

  • ثبت COGS برای فروش: همچنین در 2025-04-05، ما یک تراکنش جداگانه برای ثبت بهای تمام شده 2 ویجت فروخته شده داریم. ما Expenses:COGS 20 USD را بدهکار و Assets:Inventory:Widgets -2 WIDGET {10 USD} را بستانکار می‌کنیم. کاری که این کار انجام می‌دهد این است که 2 واحد را از انبار حذف می‌کند (هر کدام هزینه 10 دلاری داشتند که قبلاً ثبت شده بود، بنابراین در مجموع 20 دلار). ما {10 USD} را مشخص می‌کنیم تا به Beancount بگوییم از کدام لات هزینه را بکشیم - در این مورد، با لات اضافه شده در 2025-03-10 مطابقت دارد. اکنون حساب موجودی 48 ویجت باقیمانده و هزینه مرتبط 480 دلار خواهد داشت. 20 دلار به هزینه COGS منتقل می‌شود که در صورت سود و زیان ظاهر می‌شود و سود ناخالص را با هزینه آن کالاها کاهش می‌دهد. (اگر این را ثبت نمی‌کردیم، درآمد ما در مقایسه با هزینه‌ها بیشتر از حد بیان می‌شد.) ما از یک تراکنش جداگانه برای وضوح استفاده می‌کنیم، اما ترکیب فروش و COGS در یک تراکنش چند خطی نیز امکان پذیر است. برخی ترجیح می‌دهند آنها را به صورت نشان داده شده برای خوانایی و تطبیق تقسیم کنند (می‌توانید به وضوح هر ورودی COGS را به یک سفارش مرتبط کنید). یک عمل خوب این است که اطمینان حاصل کنید که هر فروش یک ورودی COGS مطابق دارد زمانی که موجودی درگیر است - از دست دادن یکی به این معنی است که تعداد موجودی شما خاموش است. یک اشتباه که باید از آن اجتناب کرد این است که فراموش کنید موجودی را برای فروش حذف کنید، که باعث می‌شود ترازنامه شما سهام خیالی داشته باشد و هزینه‌های شما کمتر از حد بیان شود. استفاده از ویژگی‌های موجودی Beancount (نماد هزینه {}) کمک می‌کند تا اگر سعی کنید واحدهای بیشتری از آنچه در دست دارید را حذف کنید، متوجه شوید (نرم افزار در این مورد خطا می‌دهد).

خلاصه: یک کسب و کار کوچک با استفاده از Beancount می‌تواند یک سیستم حسابداری به طرز شگفت انگیزی قوی را حفظ کند. با ساختاربندی حساب‌ها برای ردیابی جایی که پول است، از کجا می آید و چگونه هزینه‌ها جریان می‌یابند، تصویری دقیق از سودآوری به دست می‌آورید. مثال ما نشان داد که چگونه موجودی و فروش را مدیریت کنید. شما به طور مشابه تراکنش‌های دیگری مانند پرداخت قبض اینترنت (Expenses:Operating:Internet در مقابل Assets:Bank:Checking)، دریافت وام یا سرمایه گذاری (Assets:Bank در مقابل Liabilities:Loan یا Equity:OwnerEquity) یا پرداخت مالیات فروش (Liabilities:SalesTax در مقابل Assets:Bank هنگام پرداخت) را ثبت می‌کنید. نکته کلیدی ثبات است: هر نوع تراکنش را با همان الگو ثبت کنید و Beancount حساب‌ها را متعادل نگه می‌دارد. با ویژگی‌هایی مانند واردات خودکار داده (به عنوان مثال، وارد کردن هزینه‌های Stripe ماهانه یا تراکنش‌های بانکی) و برچسب‌ها/پیوندهای سفارشی (برای مرتبط کردن تراکنش‌های مرتبط مانند فروش و بازپرداخت)، سیستم می‌تواند هم انعطاف پذیر و هم کارآمد باشد. نتیجه یک دفتر سازماندهی شده است که می‌تواند با رشد کسب و کار مقیاس بندی شود - می‌توانید حساب‌های موجودی محصول جدید، دسته‌های هزینه جدید یا جریان‌های درآمد اضافی (مثلاً یک بازار آنلاین جدید) را بدون بازسازی کل سیستم اضافه کنید.

امور مالی شخصی

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

حساب‌های کلیدی برای امور مالی شخصی: دفتر امور مالی شخصی معمولاً شامل انواع حساب‌های دارایی، بدهی، درآمد و هزینه خواهد بود:

  • Assets:Bank:Checking - حساب جاری اصلی شما برای سپرده‌های درآمد و پرداخت صورتحساب.
  • Assets:Bank:Savings - حساب پس انداز برای صندوق اضطراری یا اهداف خاص. (ممکن است چندین حساب پس انداز یا سرمایه گذاری داشته باشید - هر کدام می‌توانند یک حساب دارایی باشند).
  • Assets:Cash - اگر از پول نقد برای هزینه‌ها استفاده می‌کنید، ممکن است یک حساب نقدی برای ردیابی برداشت‌ها و هزینه‌های نقدی داشته باشید.
  • Assets:Investments:Broker** - حساب‌های سرمایه گذاری، مانند کارگزاری، بازنشستگی 401(k)/IRA و غیره. اینها ممکن است بیشتر بر اساس انواع سرمایه گذاری تجزیه شوند یا فقط به عنوان یک حساب به ازای هر موسسه جمع شوند. به عنوان مثال، Assets:Investments:VanguardIRA یا Assets:Investments:Robinhood. ردیابی سرمایه گذاری‌ها ممکن است شامل کالاهایی برای سهام یا صندوق‌ها نیز باشد، اما اگر این خیلی مفصل است، می‌توانید به سادگی مشارکت‌ها و مانده حساب‌ها را ردیابی کنید.
  • Liabilities:CreditCard:Name** - یک حساب به ازای هر کارت اعتباری (به عنوان مثال، Liabilities:CreditCard:Visa یا با نام بانک). تمام خریدهای روی کارت در اینجا ثبت می‌شوند (با یک هزینه برابر)، و پرداخت‌ها به کارت انتقالاتی هستند که این بدهی را کاهش می‌دهند.
  • Liabilities:Loan:Name** - هر گونه وام (وام دانشجویی، وام مسکن، وام خودرو) را می‌توان با یک حساب بدهی پیگیری کرد. شما مانده اصلی را ثبت می‌کنید و هر پرداخت را با تقسیم سود (هزینه) و اصل (کاهش بدهی) ثبت می‌کنید. این یک جنبه پیشرفته است، اما برای یک تصویر کامل مالی مهم است.
  • Income:Salary (و/یا Income:Bonus، Income:Interest، و غیره) - برای ثبت چک‌های حقوق، پاداش‌ها، درآمد بهره، سود سهام و غیره. حساب‌های درآمد به شما امکان می‌دهند کل درآمد خود را از منابع مختلف ببینید. (اگر چک حقوق شما قبلاً مالیات کسر شده باشد، ممکن است سپرده خالص را به عنوان درآمد در حساب جاری ثبت کنید، یا درآمد ناخالص و کسورات مالیاتی را به عنوان هزینه یا بدهی ثبت کنید - رویکردهای مختلفی وجود دارد، اما بسیاری فقط حقوق خالص را به عنوان درآمد برای سادگی در دفاتر شخصی ثبت می‌کنند.)
  • Expenses: معمولاً متعدد هستند که به دسته‌های معنادار برای شما تقسیم می‌شوند. به عنوان مثال: Expenses:Housing:Rent، Expenses:Food:Groceries، Expenses:Food:DiningOut، Expenses:Utilities:Electricity، Expenses:Entertainment، Expenses:Travel، Expenses:Taxes، Expenses:Misc - هر دسته‌ای که منعکس کننده عادت‌های خرج کردن شما باشد. شما می‌توانید به همان اندازه که دوست دارید دقیق یا کلی باشید. سلسله مراتب حساب به جمع آوری کمک می‌کند (به عنوان مثال، Expenses:Food هم مواد غذایی و هم غذا خوردن در بیرون را جمع می‌کند). روال معمول این است که یک سلسله مراتب برای گروه‌های اصلی (مسکن، غذا، حمل و نقل، مراقبت‌های بهداشتی و غیره) داشته باشید.
  • Equity:Opening-Balances - برای مقداردهی اولیه مانده حساب‌ها هنگام شروع دفتر خود استفاده می‌شود (به طوری که تمام دارایی‌ها منهای بدهی‌ها برابر با ارزش خالص اولیه شما باشد که در حقوق صاحبان سهام ثبت شده است). پس از شروع، ممکن است از Equity:Retained-Earnings یا مشابه آن نیز برای نشان دادن سود خالص انباشته شده استفاده کنید (اگرچه در امور مالی شخصی، معمولاً فقط اجازه می‌دهید درآمد منهای هزینه‌ها به ارزش خالص تبدیل شود). حساب‌های حقوق صاحبان سهام در روز به روز کمتر دیده می‌شوند اما اط