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

پیکربندی‌های خاص هر حوزه فعالیت

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

در این راهنما، نحوه شخصی‌سازی دفتر کل 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 برای برجسته کردن: برچسب‌ها (Tags) و فراداده‌ها (Metadata) برای فریلنسرها بسیار مفید هستند. به عنوان مثال، می‌توانید تراکنش‌ها را با شماره پروژه یا صورت‌حساب برچسب‌گذاری کنید، یا از یک فیلد فراداده برای ثبت نام مشتری استفاده کنید (اگر ترجیح می‌دهید برای هر مشتری حساب درآمد جداگانه نسازید). این کار فیلتر کردن یا پرس‌وجوی تراکنش‌ها برای یک مشتری یا پروژه خاص را آسان می‌کند (مثلاً جمع کل هزینه‌های برچسب‌گذاری شده با #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 * "Invoice payment from ACME Corp"
invoice: "INV-2025-08-15"
Assets:Business:Checking 5000 USD
Income:Client:ACME -5000 USD

; هزینه معمول – به عنوان مثال اشتراک گیت‌هاب برای کسب‌وکار
2025-08-05 * "GitHub Subscription"
Expenses:Business:Software 15 USD
Assets:Business:Checking - 15 USD

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

; کسر مالیات – انتقال پول به پس‌انداز مالیاتی
2025-08-31 * "Set aside Q3 taxes"
Assets:Business:TaxSavings 1500 USD
Assets:Business:Checking -1500 USD #tax

بیایید آنچه در حال رخ دادن است را بررسی کنیم:

  • ما حساب‌های لازم را در بالا (با تاریخ شروع) افتتاح (open) می‌کنیم. این کار در Beancount الزامی نیست (اگر حساب‌ها افتتاح نشوند، در اولین استفاده ایجاد می‌شوند)، اما اعلام آن‌ها تمرین خوبی است. حساب‌های Assets:Business:Checking و Assets:Business:TaxSavings موجودی‌های USD را نگه می‌دارند؛ حساب‌های درآمد و هزینه را می‌توان بدون ارز در دستور open رها کرد زیرا آن‌ها ارزهای تراکنش (در این مورد USD) را به ارث می‌برند.
  • پرداخت صورت‌حساب از مشتری: در تاریخ ۲۰۲۵-۰۸-۱۵، یک تراکنش درآمدی، پرداخت ۵۰۰۰ دلاری مشتری برای یک صورت‌حساب را ثبت می‌کند. ما حساب Income:Client:ACME را بستانکار می‌کنیم (در حسابداری دوطرفه، درآمد با مقدار منفی افزایش می‌یابد) و حساب جاری را بدهکار می‌کنیم. یک فیلد فراداده invoice: "INV-2025-08-15" برای ثبت شماره صورت‌حساب گنجانده شده است – این کار اختیاری است اما نشان می‌دهد چگونه می‌توانید اطلاعات اضافی را به یک تراکنش پیوست کنید. همچنین می‌توانید این تراکنش را با #ACME یا #client-ACME برای فیلتر کردن سریع برچسب‌گذاری کنید. اگر چندین مشتری داشتید، ممکن است از یک حساب کلی Income:Clients استفاده کنید و برای تمایز مشتریان به جای ایجاد حساب‌های فرعی زیاد، به این فراداده‌ها یا فیلد پرداخت‌کننده (Payee) تکیه کنید.
  • هزینه کسب‌وکار (نرم‌افزار): در تاریخ ۲۰۲۵-۰۸-۰۵، ما یک هزینه ۱۵ دلاری برای اشتراک GitHub ثبت می‌کنیم (شاید برای مخازن خصوصی یا خدمات دیگر). ثبت در حساب Expenses:Business:Software انجام می‌شود و از حساب جاری کسب‌وکار کسر می‌گردد. هزینه‌های مکرر کوچک مانند این را می‌توان برچسب‌گذاری کرد (مثلاً ما برچسب #tax را به تراکنش مالیاتی زیر اضافه کردیم؛ به همین ترتیب می‌توانید هزینه‌های خاصی را به عنوان #recurring برچسب بزنید اگر ماهانه رخ می‌دهند و غیره). در این مورد، خود نام حساب (Software) موضوع را روشن می‌کند.
  • پرداخت به پیمانکار: در تاریخ ۲۰۲۵-۰۸-۲۰، فریلنسر ۲۰۰۰ دلار به یک پیمانکار فرعی (Jane Doe) پرداخت کرد. این به عنوان هزینه در Expenses:Business:Contractors و خروج نقدینگی از حساب جاری ثبت می‌شود. می‌توانید نام پیمارنکار را در شرح تراکنش (مانند کاری که ما انجام دادیم) یا به عنوان یک فیلد فراداده (مثلاً contractor: "Jane Doe") ذکر کنید. این کار یک دنباله حسابرسی از اینکه به چه کسی و چرا پول پرداخت کرده‌اید باقی می‌گذارد (مفید برای جزئیات زمان اظهارنامه مالیاتی یا بودجه‌بندی).
  • انتقال پس‌انداز مالیاتی: در تاریخ ۲۰۲۵-۰۸-۳۱، فریلنسر ۱۵۰۰ دلار از حساب جاری اصلی به یک حساب اختصاصی پس‌انداز مالیاتی منتقل می‌کند. ما این تراکنش را با برچسب #tax برای دید بهتر مشخص کرده‌ایم. این یک هزینه نیست (شما فقط پول خودتان را جابه‌جا می‌کنید)، بنابراین بین دو حساب دارایی انجام می‌شود. با انجام این کار به صورت ماهانه یا فصلی، مبالغی را برای پوشش مالیات‌های تخمینی جمع‌آوری می‌کنید. زمانی که وقت پرداخت واقعی مالیات به دولت برسد، یک هزینه (مثلاً Expenses:Taxes) و کسر از حساب پس‌انداز مالیاتی (یا جاری) را ثبت می‌کنید. یک اشتباه رایج این است که این انتقال را در گزارش‌های خود به عنوان هزینه در نظر بگیرید – به یاد داشته باشید، این هزینه نیست، بلکه فقط یک تخصیص پیشگیرانه است. تنها پرداخت واقعی مالیات به سازمان امور مالیاتی یک هزینه خواهد بود (یا کاهش بدهی مالیاتی انباشته اگر آن را به آن صورت ردیابی کنید).

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

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

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

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

  • Assets:Bank:Checking – حساب جاری کسب‌وکار (برای پرداخت به تأمین‌کنندگان، هزینه‌های عملیاتی و دریافت انتقالی‌ها از پردازشگرهای پرداخت).
  • Assets:Stripe:Balance (یا Assets:PayPal و غیره) – یک حساب واسط برای وجوه جمع‌آوری‌شده از طریق پرداخت‌های آنلاین که هنوز به حساب بانکی واریز نشده‌اند. به عنوان مثال، وقتی مشتری از طریق Stripe پرداخت می‌کند، پول ممکن است قبل از واریز دسته‌ای به بانک، در حساب Stripe باقی بماند.
  • Assets:Inventory:*Product*** – حساب‌های موجودی برای محصولات شما. می‌توانید با هر محصول (یا دسته‌بندی محصولات) در Beancount به عنوان یک کالا (Commodity) برخورد کنید تا تعداد موجود در انبار را ردیابی نمایید. به عنوان مثال، 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 – (اختیاری، در صورت لزوم) اگر کسب‌وکار نیاز به جمع‌آوری مالیات بر فروش یا مالیات بر ارزش افزوده (VAT) داشته باشد، این حساب بدهی، مالیات‌های جمع‌آوری‌شده را که هنوز به دولت پرداخت نشده است، ردیابی می‌کند. در هر فروش، بخش مالیات از مبلغ کل جدا شده و در این حساب قرار می‌گیرد. این امر تضمین می‌کند که مالیات‌های جمع‌آوری‌شده به عنوان درآمد محسوب نشوند و برای پرداخت به مراجع مالیاتی کنار گذاشته شوند.
  • Equity:OwnerEquity – (اختیاری) نشان‌دهنده سرمایه‌گذاری مالک و سود انباشته است. زمانی که کسب‌وکار شروع به کار کرد، هرگونه بودجه اولیه توسط مالک در اینجا بستانکار می‌شود (با یک بدهکار به حساب بانک یا موجودی کالا، اگر وجه نقد یا کالا آورده باشند). همچنین، اگر مالک سودی را برداشت کند (برداشت سود)، آن مورد می‌تواند در مقابل این حساب سرمایه ثبت شود. این کار ترازنامه را متوازن نگه می‌دارد، اما برای عملیات روزمره، چندان مورد استفاده قرار نمی‌گیرد.

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

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

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

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

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

; خرید موجودی کالا (۵۰ واحد ویجت با قیمت تمام شده ۱۰ دلار برای هر کدام)
2025-03-10 * "خرید ۵۰ عدد ویجت از شرکت تأمین‌کننده"
Assets:Inventory:Widgets 50 WIDGET {10 USD}
Assets:Bank:Checking -500 USD

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

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

در ادامه فرآیند را مرحله به مرحله بررسی می‌کنیم:

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

  • خرید موجودی کالا: در تاریخ ۲۰۲۵-۰۳-۱۰، ما موجودی کالا می‌خریم – ۵۰ واحد ویجت از یک تأمین‌کننده به قیمت ۱۰ دلار برای هر کدام، که در مجموع ۵۰۰ دلار هزینه دارد. این تراکنش حساب Assets:Inventory:Widgets را با 50 WIDGET {10 USD} بدهکار می‌کند. این به این معنی است که ۵۰ واحد از کالای WIDGET، هر کدام با هزینه ثبت شده ۱۰ دلار، به حساب موجودی اضافه می‌شوند. طرف بستانکار Assets:Bank:Checking -500 USD است (خروجی نقد). توجه داشته باشید که ما در اینجا مستقیماً با یک حساب هزینه درگیر نشدیم؛ ما خرید را به عنوان دارایی موجودی کالا سرمایه‌ای کردیم. اکنون ترازنامه ما دارای ۵۰ ویجت به ارزش کل ۵۰۰ دلار در موجودی است. (اگر گزارش ترازنامه را اجرا کنید، حساب موجودی ۵۰ واحد WIDGET به ارزش ۵۰۰ دلار را نشان می‌دهد).

  • ثبت یک فروش (سفارش شماره ۱۰۰۱): در تاریخ ۲۰۲۵-۰۴-۰۵، ما فروش ۲ ویجت را از طریق فروشگاه آنلاین خود ثبت می‌کنیم. شرح تراکنش برای شفافیت شامل شماره سفارش است. این تراکنش شامل سه ثبت (Posting) است:

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

    پس از این تراکنش، اثر خالص به این صورت است: حساب Income:Sales مبلغ ۶۰ واحد افزایش یافته، یک دارایی اضافی ۵۸ دلاری (مطالبات از Stripe) ایجاد شده و ۲ دلار هزینه برای کارمزد ثبت شده است. اگر Stripe بعداً ۵۸ دلار را به بانک ما واریز کند، ما یک انتقال ساده مانند Assets:Bank:Checking 58 USD / Assets:Stripe:Balance -58 USD را در تاریخ پرداخت ثبت می‌کنیم – این کار دارایی را از حساب Stripe به بانک منتقل می‌کند، بدون اینکه بر درآمد یا هزینه تأثیری داشته باشد (فقط جابجایی دارایی‌ها). ما این انتقال را در بالا نشان نداده‌ایم، اما این یک مرحله مهم در دفترداری واقعی است تا حساب Stripe خود را پس از انتقال همه مبالغ، روی ۰ دلار نگه دارید.

  • ثبت بهای تمام شده (COGS) برای فروش: همچنین در تاریخ ۲۰۲۵-۰۴-۰۵، ما یک تراکنش مجزا برای ثبت هزینه ۲ ویجت فروخته شده داریم. ما حساب Expenses:COGS 20 USD را بدهکار و حساب Assets:Inventory:Widgets -2 WIDGET {10 USD} را بستانکار می‌کنیم. کاری که این دستور انجام می‌دهد، حذف ۲ واحد از موجودی کالا است (هر کدام دارای هزینه ۱۰ دلاری بودند که قبلاً ثبت شده بود، بنابراین در مجموع ۲۰ دلار). ما {10 USD} را مشخص می‌کنیم تا به Beancount بگوییم از کدام دسته هزینه (Cost Lot) برداشت کند – در این مورد، با دسته‌ای که در ۲۰۲۵-۰۳-۱۰ اضافه کردیم مطابقت دارد. اکنون در حساب موجودی کالا ۴۸ ویجت باقی می‌ماند و هزینه مرتبط با آن ۴۸۰ دلار خواهد بود. مبلغ ۲۰ دلار به حساب هزینه COGS منتقل می‌شود که در صورت سود و زیان ظاهر شده و سود ناخالص را به میزان هزینه آن کالاها کاهش می‌دهد. (اگر این را ثبت نمی‌کردیم، درآمد ما نسبت به هزینه‌ها بیش از حد واقعی نشان داده می‌شد). ما برای شفافیت از یک تراکنش مجزا استفاده می‌کنیم، اما امکان ترکیب فروش و COGS در یک تراکنش چندخطی نیز وجود دارد. برخی برای خوانایی و رفع مغایرت، تقسیم آن‌ها را به شکلی که نشان داده شده ترجیح می‌دهند (شما می‌توانید به وضوح هر ثبت COGS را به یک سفارش متصل کنید). ما همچنین شماره سفارش را در شرح تراکنش تکرار کردیم تا به راحتی ببینیم که این ثبت COGS مربوط به سفارش شماره ۱۰۰۱ است. یک تمرین خوب این است که اطمینان حاصل کنید هر فروش دارای یک ثبت COGS متناظر در هنگام درگیری موجودی کالا است – حذف نکردن آن به این معنی است که تعداد موجودی شما اشتباه خواهد بود. یکی از اشتباهاتی که باید از آن اجتناب کرد، فراموش کردن کسر موجودی برای یک فروش است که باعث می‌شود ترازنامه شما دارای موجودی واهی (Phantom Stock) باشد و هزینه‌های شما کمتر از واقع نشان داده شود. استفاده از ویژگی‌های موجودی کالا در 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*** – حساب‌های سرمایه‌گذاری مانند کارگزاری، حساب‌های بازنشستگی (401k/IRA) و غیره. این‌ها می‌توانند به تفکیک نوع سرمایه‌گذاری خرد شوند یا فقط به عنوان یک حساب برای هر موسسه ثبت شوند. برای مثال، Assets:Investments:VanguardIRA یا Assets:Investments:Robinhood. ردیابی سرمایه‌گذاری‌ها ممکن است شامل کالاها (Commodities) برای سهام یا صندوق‌ها نیز باشد، اما اگر این کار بیش از حد جزئی است، می‌توانید صرفاً واریزی‌ها و مانده حساب را ردیابی کنید.
  • 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 یا مشابه آن برای نشان دادن سود خالص انباشته استفاده کنید (اگرچه در امور مالی شخصی، معمولاً اجازه می‌دهید درآمد منهای هزینه‌ها در ارزش خالص جاری شود). حساب‌های سرمایه در فعالیت‌های روزمره کمتر دیده می‌شوند اما برقراری معادله حسابداری را تضمین می‌کنند.

منطق: ساختار امور مالی شخصی درباره ثبت زندگی مالی شما در یک سیستم منسجم است. هر حساب بالا برای جداسازی انواع مختلف امور مالی عمل می‌کند تا بتوانید به سوالاتی پاسخ دهید مانند "این ماه چقدر برای غذا خرج کردم؟" (با جمع زدن *:Expenses:Food)، "چقدر بدهی برایم باقی مانده است؟" (با نگاه به حساب‌های Liabilities) یا "ارزش خالص من چقدر است؟" (دارایی‌ها منهای بدهی‌ها). یک مزیت بزرگ حسابداری دوطرفه در اینجا، دقت است: برای مثال، وقتی ۱۰۰ دلار هزینه خواروبار را با کارت اعتباری پرداخت می‌کنید، آن را هم به عنوان یک هزینه و هم به عنوان افزایش بدهی ثبت می‌کنید. بعداً، وقتی صورت‌حساب کارت اعتباری را پرداخت می‌کنید، انتقالی از بانک به کارت ثبت می‌کنید – این کار بدهی را تسویه می‌کند اما هزینه خواروبار را دو بار محاسبه نمی‌کند (زیرا قبلاً ثبت شده بود). یک اشتباه رایج بدون سیستم دوطرفه این است که پرداخت کارت اعتباری را خودش به عنوان یک هزینه در نظر بگیرید، که عملاً آن ۱۰۰ دلار را دو بار محاسبه می‌کند. Beancount بر اساس طراحی خود از این اتفاق جلوگیری می‌کند. اشتباه دیگری که باید از آن اجتناب کرد، عدم تطبیق حساب‌هاست: با Beancount، می‌توانید از دستورات تایید مانده (balance assertions) یا دستور balance استفاده کنید تا مطمئن شوید، برای مثال، مانده حساب جاری شما در دفتر حسابداری با صورت‌حساب واقعی بانک مطابقت دارد. این کار باعث شناسایی ورودی‌های مفقود شده یا تکراری می‌شود.

ویژگی‌های Beancount برای برجسته کردن: برای امور مالی شخصی، وارد کردن خودکار داده‌ها (automated imports) به دلیل حجم بالای تراکنش‌ها بسیار مفید است. می‌توانید از فریم‌ورک واردکننده Beancount یا اسکریپت‌های جامعه کاربری برای وارد کردن تراکنش‌های بانکی، صورت‌حساب‌های کارت اعتباری و حتی تراکنش‌های سرمایه‌گذاری از منابع CSV، OFX یا API استفاده کنید. این یعنی زمان کمتری را صرف تایپ دستی هر خرید قهوه می‌کنید. برچسب‌های (tags) سفارشی برای بخش‌بندی داده‌ها به روش‌هایی که حساب‌ها ممکن است نتوانند، مفید هستند. برای مثال، تمام هزینه‌های مربوط به تعطیلات را با #vacation2025 برچسب‌گذاری کنید، فارغ از اینکه مربوط به پرواز، هتل یا رستوران باشند – سپس می‌توانید به راحتی هزینه کل آن تعطیلات را گزارش بگیرید. یا اگر نیاز دارید موارد مشمول کسر مالیات را برای مراجعات بعدی ردیابی کنید، برخی هزینه‌ها را به عنوان #deductible برچسب‌گذاری کنید. همچنین می‌توانید قبض‌های تکراری را برچسب‌گذاری کنید (مثلاً #monthly) تا همه اشتراک‌ها و هزینه‌های ثابت خود را به صورت سالانه بررسی کنید. از متادیتا (Metadata) می‌توان برای پیوست کردن یادداشت‌ها یا رسیدها استفاده کرد (مثلاً receipt: "path/to/file.jpg" برای ذکر اینکه تصویر رسید ذخیره شده را دارید، یا category: "Work Expense" در صورتی که موارد قابل بازپرداخت را ردیابی می‌کنید). انعطاف‌پذیری برچسب‌ها و متادیتا به این معنی است که می‌توانید سیستم را با نیازهای ردیابی شخصی خود بدون ایجاد ده‌ها حساب اضافی تطبیق دهید.

نمونه قطعه کد دفتر کل امور مالی شخصی

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

1970-01-01 open Assets:Bank:Checking
1970-01-01 open Liabilities:CreditCard:Visa
1970-01-01 open Expenses:Food:Coffee
1970-01-01 open Expenses:Housing:Rent
1970-01-01 open Assets:Investment:401k

; نمونه هزینه روزانه (قهوه با کارت اعتباری)
2025-09-10 * "Starbucks Coffee"
Expenses:Food:Coffee 5.50 USD
Liabilities:CreditCard:Visa -5.50 USD #daily

; قبض ماهانه دوره‌ای (اجاره پرداخت شده از حساب جاری)
2025-09-01 * "Apartment Rent September"
Expenses:Housing:Rent 1200 USD
Assets:Bank:Checking -1200 USD #recurring

; واریز به حساب بازنشستگی (انتقال از حساب جاری به سرمایه‌گذاری 401k)
2025-09-15 * "401(k) Contribution"
Assets:Investment:401k 500 USD
Assets:Bank:Checking -500 USD #retirement

بیایید این تراکنش‌ها را تفسیر کنیم:

  • افتتاح حساب‌ها: ما حساب جاری، یک حساب کارت اعتباری ویزا، یک حساب هزینه قهوه (به عنوان نمونه‌ای از زیرمجموعه هزینه‌های خوراک)، یک حساب هزینه اجاره و یک حساب سرمایه‌گذاری 401k را افتتاح می‌کنیم. در یک دفتر کل واقعی، شما تمام حساب‌هایی را که قصد استفاده از آن‌ها را دارید (پس‌انداز، سایر دسته‌بندی‌های هزینه، درآمد و غیره) باز می‌کنید. ما در اینجا فقط موارد مورد نیاز برای این قطعه کد را آورده‌ایم.
  • هزینه روزانه – قهوه: در تاریخ 2025-09-10، خرید یک قهوه به مبلغ 5.50 دلار ثبت شده است. این هزینه در دسته Expenses:Food:Coffee طبقه‌بندی می‌شود و چون با کارت اعتباری ویزا پرداخت شده است، حساب Liabilities:CreditCard:Visa را بستانکار (افزایش بدهی) می‌کنیم. برچسب #daily برای نشان دادن این است که این یک مورد هزینه روزمره بوده است – شاید بعداً بخواهید تمام هزینه‌های اختیاری روزانه را فیلتر کنید. توجه داشته باشید که پس از این، حساب کارت اعتباری موجودی 5.50 دلاری را نشان می‌دهد (به این معنی که شما 5.50 دلار به ویزا بدهکار هستید). اگر برای این قهوه نقد پرداخت کرده بودید، تراکنش به جای آن حساب Assets:Cash را بستانکار می‌کرد (کاهش نقدینگی در دسترس). اگر خرید با کارت بانکی (دهبیت) بود، حساب Assets:Bank:Checking بستانکار می‌شد. سازوکار مشابه است، فقط حساب‌ها متفاوت هستند.
  • قبض دوره‌ای – اجاره: در تاریخ 2025-09-01، پرداخت اجاره ماهانه 1200 دلاری را ثبت می‌کنیم. این مبلغ از حساب جاری خارج می‌شود (بستانکار کردن Assets:Bank:Checking) و در دسته Expenses:Housing:Rent طبقه‌بندی می‌گردد. ما آن را با #recurring برچسب‌گذاری کردیم تا مشخص شود این یک قبض تکرارشونده است. در یک دفتر کل کامل، ممکن است هر ماه ورودی مشابهی داشته باشید. (Beancount قابلیت داخلی برای تراکنش‌های دوره‌ای خودکار ندارد، اما می‌توانید با اسکریپت‌ها یا به سادگی با کپی-پیست کردن در هر ماه به این هدف برسید. برچسب‌ها کمک می‌کنند تا بعداً مطمئن شوید ماهی را از قلم نینداخته‌اید یا مجموع اجاره یک سال را به سرعت محاسبه کنید.) برخی کاربران از ویژگی تراکنش‌های دوره‌ای (periodic transaction) از طریق چارچوب واردکننده Beancount برای تولید خودکار این‌ها استفاده می‌کنند، اما این یک استفاده پیشرفته است که خارج از بحث فعلی ماست. نکته کلیدی این است که این تراکنش به وضوح نشان می‌دهد پول شما کجا رفته است – هزینه‌ای برای مسکن – و موجودی بانک شما کاهش یافته است. یک نکته برای دقت: اگر هزینه‌ها را تقسیم می‌کنید یا هم‌خانه دارید، ممکن است فقط بخشی از اجاره را پرداخت کنید؛ در آن صورت، می‌توانید تراکنش را به سهم خود و سهمی که شخص دیگری پرداخت می‌کند تقسیم کنید (احتمالاً سهم دیگران را به عنوان Income:Reimbursements ثبت می‌کنید اگر آن‌ها پول را به شما برگردانند). در مورد ساده ما، ما کل مبلغ را پرداخت می‌کنیم.
  • واریزی بازنشستگی: در تاریخ 2025-09-15، مبلغ 500 دلار از حساب جاری به یک حساب سرمایه‌گذاری 401(k) منتقل می‌شود. این یک هزینه نیست، بلکه انتقال دارایی از یک شکل (نقد) به شکل دیگر (صندوق بازنشستگی) است. تراکنش حساب Assets:Investment:401k را بدهکار و حساب Assets:Bank:Checking را بستانکار می‌کند. برای شفافیت، برچسب #retirement را به آن می‌زنیم. پس از این، موجودی حساب جاری شما 500 واحد کاهش می‌یابد و موجودی حساب 401k شما در دفتر کل به میزان معادل 500 دلار افزایش می‌یابد (بسته به نحوه پیگیری سرمایه‌گذاری، ممکن است متعاقباً با آن پول نقد واحدهای صندوق مشترک بخرید – که این تراکنش دیگری در حساب سرمایه‌گذاری خواهد بود، مثلاً خرید X سهم از یک صندوق به قیمت Y، که در آن نقدینگی از دارایی 401k خارج می‌شود). در یک دفتر کل شخصی ابتدایی، ممکن است به سادگی با 401k مانند یک حساب پس‌انداز رفتار کنید و موجودی آن را به صورت دوره‌ای به‌روزرسانی کنید یا واریزی‌ها را به این صورت ثبت کنید و شاید از قیمت‌های روز برای رشد سرمایه استفاده کنید. نکته مهم این است که این تراکنش یک انتقال (transfer) است، نه یک هزینه – این در حال ساختن دارایی‌های شماست. بسیاری از ابزارهای بودجه‌بندی واریزی‌های بازنشستگی را به عنوان "هزینه" حساب می‌کنند (چون از حساب جاری شما خارج می‌شود)، اما در اصطلاح حسابداری، این فقط جابجایی پول از یک جیب به جیب دیگر است. این تمایز به شما کمک می‌کند نرخ پس‌انداز را در مقابل هزینه‌کرد درک کنید.

اگر تراکنشی برای پرداخت صورت‌حساب کارت اعتباری داشتیم، شبیه به انتقال پول از حساب جاری (Checking) به بدهی کارت اعتباری (CreditCard) می‌بود (مثلاً Liabilities:CreditCard:Visa 100 USD / Assets:Bank:Checking -100 USD). این کار موجودی کارت اعتباری را دوباره پایین می‌آورد (شاید به صفر، اگر آن را به طور کامل پرداخت کنید) و موجودی بانک شما را به همان میزان کاهش می‌دهد، بدون اینکه اثری روی حساب‌های هزینه داشته باشد – زیرا شما قبلاً هزینه‌ها را در زمان خرید ثبت کرده‌اید. به یاد داشتن مدیریت کارت‌های اعتباری به این روش برای ردیابی دقیق امور مالی شخصی حیاتی است. شما می‌توانید پرداخت را نیز برچسب‌گذاری کنید (برخی از #cc-payment یا موارد مشابه استفاده می‌کنند) یا برای شفافیت، دوره صورت‌حساب را در توضیحات قید کنید.

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


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