حسابداری متن ساده واژگان خود را از حسابداری دوطرفه وام میگیرد و چند واژه مخصوص به Beancount نیز به آن میافزاید. این واژهنامه اصطلاحاتی را که هنگام خواندن این مستندات یا فایل دفتر کل خود با آنها روبهرو میشوید تعریف میکند، و در جایی که مفید باشد هرکدام با یک مثال کوتاه همراه است. هر مدخل پیوند اختصاصی خود را دارد، پس میتوانید همکارتان را مستقیماً به یک تعریف ارجاع دهید.
حساب
حساب یک سبد نامدار است که یک جریان ارزش را پیگیری میکند و بهصورت سلسلهمراتبی
جداشده با دونقطه، زیر یکی از پنج نوع ریشه نوشته میشود: Assets،
Liabilities، Equity، Income یا Expenses. این سلسلهمراتب تمام ساختار
سازماندهی دفاتر شماست — Assets:US:BofA:Checking و
Expenses:Food:Restaurant بهطور خودکار مرتب و تجمیع میشوند. هر حساب باید
پیش از استفاده تعریف شود. برای قواعد نامگذاری به
نحو زبان Beancount مراجعه کنید.
مبنای تعهدی
حسابداری تعهدی درآمد را هنگام کسب و هزینهها را هنگام تحمل ثبت میکند، صرفنظر از زمان واقعی جابهجایی نقدی. حسابداری نقدی برعکس عمل میکند: هر دو را فقط هنگام ردوبدل شدن پول شناسایی میکند. مبنای تعهدی تصویری درستتر از عملکرد یک دوره ارائه میدهد، به همین دلیل صورتحسابی که در اسفند فرستادهاید به اسفند تعلق دارد حتی اگر مشتری در اردیبهشت پرداخت کند.
استهلاک
استهلاک یک پرداخت بزرگ واحد را بر دورههایی که واقعاً پوشش میدهد توزیع میکند تا هر ماه سهم منصفانه خود از هزینه را حمل کند. حق بیمه سالانهای که در فروردین پرداخت میشود، هزینه هر دوازده ماه است، نه فقط فروردین. در Beancount یا ثبتهای تقسیمشده را دستی مینویسید یا آنها را با یک افزونه تولید میکنید — به استهلاک مراجعه کنید.
تأیید مانده
تأییدیه موجودی یک دستور balance است که بیان میکند موجودی یک حساب در آغاز
تاریخ معینی باید چه مقدار باشد، تا صورتحساب بانکی شما به یک بررسی خودکار روی
دفاترتان تبدیل شود. اگر موجودی محاسبهشده بیش از حد رواداری تأییدیه اختلاف
داشته باشد، Beancount با مبالغ مورد انتظار و واقعی بهشکلی پرسروصدا شکست
میخورد. آن رواداری یک واحد از آخرین رقم اعشاری است که نوشتهاید — 4.27 RGAGX
هر مقداری از 4.26 تا 4.28 را میپذیرد — و یک ~ پیش از واحد پول، رواداری خودتان
را تعیین میکند. پاشیدن یک تأییدیه بهازای هر حساب در هر صورتحساب، ارزانترین
راه برای قابلاعتماد نگهداشتن دفتر کل است.
2026-01-01 balance Assets:US:BofA:Checking 4,321.00 USDBeancount
Beancount یک سامانه حسابداری دوطرفه متنباز است که دفتر کل آن فایلی متنی است که در هر ویرایشگر متنی ویرایش میکنید و با یک ابزار خط فرمان اعتبارسنجی میکنید. نحو سختگیرانه و قابلتجزیه، یک زبان پرسوجو و یک رابط وب به شما میدهد، بدون پایگاه داده یا قالب فایل انحصاری. چون دفتر کل متنی است، بهخوبی در Git در کنار کد شما زندگی میکند. با معرفی Beancount شروع کنید.
زبان پرسوجوی Beancount
زبان پرسوجوی Beancount، که معمولاً با سرواژه BQL خوانده میشود، زبانی شبیه SQL
است که با آن از دفتر کل خود پرسش میکنید. این زبان روی دستورهای تجزیهشده اجرا
میشود نه روی یک پایگاه داده، بنابراین
SELECT account, sum(position) WHERE year = 2026 بلافاصله از همان فایلی که
ویرایش میکنید پاسخ میدهد. برای دستور زبان کامل،
راهنمای زبان پرسوجو را بخوانید.
روش ثبت
روش تخصیص قاعدهای است که Beancount وقتی یک کاهش باید انتخاب کند کدام انباشتهای
موجود را کاهش دهد، اعمال میکند. Beancount 3.2.3 هفت نام را میپذیرد: STRICT
(پیشفرض، که در آن خودتان انباشت را مشخص میکنید)، STRICT_WITH_SIZE، NONE،
FIFO، LIFO، HIFO و AVERAGE. آن را بهازای هر حساب در دستور open آن
تنظیم کنید، یا برای کل فایل با option "booking_method". شش مورد از این هفت
پیادهسازی شدهاند: AVERAGE تجزیه میشود، اما همان لحظه که مجبور شود کاهشی را
تخصیص دهد، خطای AVERAGE method is not supported را برمیانگیزد. روشی که
انتخاب میکنید سود سرمایه تحققیافته شما را تغییر میدهد، پس همان را برگزینید
که حوزه مالیاتیتان انتظار دارد و آن را پایدار نگه دارید.
مدیریت انباشت هر هفت مورد را روی همان انباشتها اجرا
میکند و دفتر کلی را که تحت AVERAGE شکست میخورد منتشر میکند.
نمودار حسابها
نمودار حسابها فهرست کامل حسابهایی است که دفتر کل شما استفاده میکند، همراه با
ساختاری که آنها را سازمان میدهد. در Beancount فایل نمودار جداگانهای وجود ندارد
— مجموعه دستورهای open همان نمودار حسابهای شماست. طراحی خوب آن در ابتدا،
بعدها از تغییر نامهای زیادی جلوگیری میکند؛ برای نقاط شروع به
راهاندازیهای ویژه صنعت مراجعه کنید.
دستور بستن
دستور close تاریخی را مشخص میکند که پس از آن دیگر نمیتوان از یک حساب
استفاده کرد؛ این روشی است برای بازنشستهکردن یک حساب بانکی یا وامی که تسویه
شده، بدون حذف تاریخچه آن. تراکنشهای گذشته معتبر و قابلگزارش میمانند؛ فقط
ثبتهای جدید رد میشوند. بستن حسابهای بیاستفاده، گزارشها را با کهنشدن دفتر
کل خوانا نگه میدارد.
2026-03-31 close Assets:US:OldBank:Checkingکالا
کالا هر واحد ارزشی است که دفتر کل شما پیگیری میکند — یک ارز مانند USD، یک
نماد سهام مانند AAPL، یک دارایی رمزارزی مانند BTC، یا چیزی که خودتان
ابداع میکنید مانند VACATION-DAYS. Beancount هرگز پشت سر شما بین کالاها تبدیل
انجام نمیدهد، پس یک مقدار همیشه عددی است همراه با کالایی که به آن نامگذاری
شده. یک دستور اختیاری commodity به شما امکان میدهد فرادادهای مانند نام یا
کلاس دارایی پیوست کنید.
مبنای هزینه
بهای تمامشده همان چیزی است که واقعاً برای یک دارایی پرداخت کردهاید، به واحد
پولی که با آن پرداخت کردهاید ثبت میشود و تا زمانی که مالک آن دارایی هستید
همراهش حمل میشود. Beancount آن را در آکولاد مینویسد —
10 AAPL {150.00 USD} یعنی ده سهم که هرکدام به قیمت 150 دلار acquired شدهاند.
آکولاد را دو برابر کنید تا عدد بهجای قیمت واحد، مبلغ کل شود، بنابراین
10 AAPL {{1,500.00 USD}} همان انباشت را ثبت میکند. چون بهای تمامشده همراه
موقعیت سفر میکند، سود سرمایه هنگام فروش از دل محاسبات بیرون میآید. به
مدیریت انباشت مراجعه کنید.
دستور
دستور یک دستورالعمل در فایل Beancount است، معمولاً تاریخدار، و دفتر کل از
دستورها ساخته شده است. دوازده نوع تاریخ دارند: open، close، balance،
price، note، document، pad، event، commodity، custom، query و
خود تراکنش. چند مورد تاریخ ندارند و روی فایل عمل میکنند نه روی یک روز —
option، include، plugin و جفت pushtag/poptag. Beancount دستورهای
تاریخدار را پیش از پردازش بر اساس تاریخ مرتب میکند، پس میتوانید آنها را به
هر ترتیبی که خواناتر است نگه دارید؛ دستور بدون تاریخ در همان جایی که نوشته شده
اثر میگذارد.
حسابداری دوطرفه
حسابداری دوطرفه عمل ثبت هر رویداد اقتصادی بهصورت حداقل دو مدخل متناظر است، بهطوری که وزنهایشان همیشه به صفر برسد. پول هرگز ایجاد یا نابود نمیشود — فقط بین حسابها جابهجا میشود، و به همین دلیل این تکنیک اشتباهاتی را میگیرد که یک فهرست یکستونه هرگز نمیگیرد. وزن، مقدار خودِ یک ثبت است، یا بهای تمامشده یا قیمت آن که به یک واحد پول تبدیل شده، پس دو پایه در کالاهای مختلف نیز یکدیگر را خنثی میکنند. Beancount این قاعده را سختگیرانه اعمال میکند: تراکنشی که ثبتهایش تراز نشوند یک خطاست، نه یک هشدار.
2026-03-02 * "Bank" "Buy euros"
Assets:US:BofA:EUR 100.00 EUR @ 1.08 USD
Assets:US:BofA:Checking -108.00 USDبودجهبندی پاکتی
بودجهبندی پاکتی پیش از خرجکردن، پولی را برای هدفی کنار میگذارد تا هر دسته حد خودش را داشته باشد نه اینکه برای یک موجودی مشترک رقابت کنند. نام آن از پاکتهای کاغذی گرفته شده که مردم روزگاری در روز حقوق پر از پول میکردند. در دفتر کل متن ساده، پاکتها را با حسابهای اختصاصی یا دستورهای بودجه مدلسازی میکنید — به بودجهها مراجعه کنید.
Fava
Fava رابط وب برای Beancount است: نمودارها، ترازنامهها، صورتهای سود و زیان، ویرایشگر پرسوجو و فرم ورود اطلاعات، که از فایل دفتر کل شما سرو میشود. بیشتر خواندنی است و بهصورت محلی اجرا میشود، پس نحوه دیدن دفاتر شما را تغییر میدهد بیآنکه نحوه ثبت آنها را عوض کند. beancount.io نسخه مدیریتشدهای را در کنار ابزارهای خودش میزبانی میکند؛ راهنمای ویژگیهای رابط کاربری آنچه را میتوانید در آنجا انجام دهید پوشش میدهد.
موجودی
انباشت مجموعه موقعیتهایی است که یک حساب در حال حاضر نگه میدارد، هرکدام با کالای خود و در جایی که مرتبط باشد با بهای تمامشده و تاریخ تحصیل خود. حساب کارگزاریای که سه بار یک سهام را خریده، سه انباشت جدا در یک انباشت نگه میدارد، نه یک عدد ترکیبی. جدا نگهداشتن انباشتها چیزی است که محاسبات دقیق سود را ممکن میکند.
دفتر روزنامه
ژورنال فهرست زمانی هر چیزی است که در دفاتر شما رخ داده — جریان خام تراکنشها، به ترتیب تاریخ، پیش از هر گروهبندی یا خلاصهسازی. این نمایی است که وقتی میخواهید پاسخ دهید «در اسفند واقعاً چه کردم؟» مرور میکنید. صفحه ژورنال Fava معمولاً سریعترین جا برای یافتن یک مدخل بددستهبندیشده است.
دفتر کل
دفتر کل مجموعه کامل سوابق حسابداری برای یک نهاد است، که در Beancount یعنی فایل متنی شما (بهعلاوه هر چیزی که شامل میشود). این واژه هم نام کل مجموعه حسابها است و هم نام خود فایل. چون متنی است، یک دفتر کل را میتوان مانند کد منبع diff گرفت، بازبینی کرد، شاخهزنی و ادغام کرد.
لات
انباشت یک تحصیل مشخص از یک کالا است که با بهای تمامشده و تاریخ تحصیلش مشخص میشود. خریدن یک ETF مشابه در فروردین و دوباره در شهریور دو انباشت ایجاد میکند، و فروش بعدی بهمعنای انتخاب این است که کدام انباشت را میفروشید. انباشتها دلیل آن هستند که Beancount میتواند سود تحققیافته را دقیق محاسبه کند بهجای تقریب زدن.
2026-06-15 * "Broker" "Buy VTI"
Assets:US:Broker:VTI 5 VTI {260.00 USD, 2026-06-15}
Assets:US:Broker:Cash -1,300.00 USDشرح
شرح توصیف متنآزاد این است که یک تراکنش برای چه بوده، و بهصورت دومین رشته نقلقولی در خط تراکنش نوشته میشود. برای انسانهاست: «اجاره ماهانه»، «خرید خواروبار و لوازم خانه». Beancount آن را تجزیه نمیکند، اما همان چیزی است که وقتی شش ماه بعد مدخل دیگر معنا ندارد خواهید خواند.
دستور باز کردن
دستور open یک حساب، تاریخی که از آن قابل استفاده میشود، و بهصورت اختیاری
کالاهایی که میتواند نگه دارد و روش تخصیصی که استفاده میکند را اعلام میکند.
Beancount مستلزم آن است که هر حساب پیش از نخستین ثبتش باز شود، و همین چیزی است
که جلوی یک غلط تایپی را میگیرد تا بیصدا حسابی کاملاً جدید نسازد. محدودکردن
کالاهای مجاز، دسته اشتباهات کاملاً دیگری را به خطا تبدیل میکند.
2026-01-01 open Assets:US:Broker:VTI VTI "FIFO"پد
دستور pad به Beancount میگوید هر مبلغی را که لازم است وارد کند تا تأییدیه
موجودی بعدی روی یک حساب موفق شود، و اختلاف را به حساب دومی ثبت میکند. این
دستور دقیقاً برای یک کار وجود دارد: باز کردن دفتر کل در میانه عمر آن بدون
بازسازی سالها تاریخچه. pad کردن فراتر از آن راهاندازی اولیه معمولاً یعنی یک
خطای واقعی دارد پنهان میشود.
پرداختکننده
دریافتکننده کسی است که با او معامله کردهاید، و بهصورت نخستین رشته نقلقولی در
خط تراکنش نوشته میشود. یکسان نگهداشتن دریافتکنندگان — همیشه
"Whole Foods"، هرگز گاهی "WholeFoods" — چیزی است که گزارشهای مبتنی بر
دریافتکننده و واردکنندههای خودکار را کارا میکند. Beancount دریافتکننده را
اختیاری میداند؛ یک تراکنش میتواند فقط یک شرح داشته باشد.
حسابداری متنساده
حسابداری متن ساده عمل نگهداشتن دفاتر در فایلی متنی و خوانا برای انسان، تحت کنترل نسخه، و پردازششده با ابزارهای خط فرمان متنباز است. این روش یک رابط اشارهکردن و کلیککردن را با دوام، قابلیت حسابرسی و خودکارسازی معاوضه میکند: دادههایتان از هر فروشندهای بیشتر عمر میکنند، هر تغییر یک diff قابلبازبینی است، و هر اسکریپتی میتواند آن را بخواند. Beancount، Ledger و hledger سه پیادهسازی شناختهشدهتر هستند.
افزونه
افزونه یک ماژول پایتون است که Beancount هنگام پردازش فایل شما بارگذاری میکند،
و به آن اجازه میدهد دستورها را پیش از ساخت گزارشها بیفزاید، تبدیل کند یا
اعتبارسنجی نماید. افزونهها روشی هستند که با آن پیشبینی، زمانبندیهای استهلاک
و بررسیهای سفارشی بدون تغییر زبان اصلی پیادهسازی میشوند. یک افزونه را با یک
خط مستقل plugin در بالای دفتر کل خود فعال میکنید، هرگز با یک option —
option "plugin" "…" با پیام Option 'plugin' may not be set رد میشود.
راهنمای افزونه پیشبینی یک مثال واقعی را گامبهگام
طی میکند.
ثبت
ثبت یک پایه از یک تراکنش است: یک حساب، یک مقدار، و بهصورت اختیاری بهای
تمامشده یا قیمت. چیزی که باید در یک تراکنش به صفر برسد، مقدارهای خام نیست بلکه
وزنهایشان است: یک مقدار ساده وزن خودش را دارد، 10 FUND @ 38.46 USD وزنش
384.60 USD است، و 10 FUND {384.61 USD} وزنش 3,846.10 USD است، چون آکولاد
تکی بهای یک واحد را نگه میدارد. حداکثر یک ثبت میتواند مقدارش را خالی بگذارد،
که در این صورت Beancount رقم ترازکننده را برای شما محاسبه میکند. برای قواعد
کامل وزن به دقت و رواداریها مراجعه کنید.
دستور قیمت
دستور price نرخ تبدیل بین دو کالا را در یک تاریخ ثبت میکند، و به همین روش
Beancount در گزارشها یک دارایی را به ارزش بازارش تبدیل میکند. دستور price
صرفاً داده مرجع است: هیچ پولی جابهجا نمیکند و به هیچ تراکنشی تعلق ندارد. آن را
با قیمت @ نوشتهشده درون یک ثبت اشتباه نگیرید، که محاسبه است — به
10 FUND @ 38.46 USD وزنی معادل 384.60 USD میدهد و بنابراین تعیین میکند که
تراکنش تراز میشود یا نه. بدون دستورهای price، یک پرتفوی همچنان به بهای
تمامشده تراز میشود اما نمیتوان آن را به ارزش بازار ارزشگذاری کرد.
2026-06-30 price VTI 271.40 USDقیمتهای زنده دستورهای price مدیریتشده را برای داراییهای پشتیبانیشده در دفاتر میزبانیشده فراهم میکند. قیمت خودتان برای همان تاریخ و جفتارز، از جمله جفت معکوس، برنده میشود. یک قیمت مدیریتشده در تاریخی بعدی همچنان میتواند در ارزشگذاری بعدی اعمال شود.
تطبیق
تطبیق عمل اثبات این است که دفاتر شما با یک سابقه بیرونی مانند صورتحساب بانک یا کارگزاری مطابقت دارد. در حسابداری متن ساده عمدتاً مکانیکی است: برای هر تاریخ صورتحساب یک تأییدیه موجودی اضافه کنید و بگذارید ابزار به شما بگوید که آیا اعداد مطابقت دارند. دفتر کلی که هر ماه بهطور تمیز تطبیق میشود، دفتری است که میتوانید بدون ترس مالیات آن را پر کنید.
برچسبها و پیوندها
برچسبها و پیوندها دو نشانهای هستند که به تراکنشها میچسبانید تا آنها را خارج
از سلسلهمراتب حسابها گروهبندی کنید: یک برچسب با # موضوعی مانند
#trip-japan را علامت میزند، و یک پیوند با ^ مدخلهای مرتبط مانند
^invoice-2026-014 را به هم میپیوندد. برچسبها پاسخ میدهند «همه چیز در این
دسته را به من نشان بده»؛ پیوندها پاسخ میدهند «مدخلهایی که به این رویداد واحد
تعلق دارند را نشان بده». هر دو در Fava قابل فیلتر و در BQL قابل پرسوجو هستند —
به فیلترکردن و جستوجو مراجعه کنید.
تراکنش
تراکنش یک رویداد اقتصادی تاریخدار است همراه با ثبتهایی که آن را ضبط میکنند،
و دستوری است که بیشتر از همه خواهید نوشت. یک پرچم دارد (* برای تأییدشده، !
برای نیازمند بازبینی)، یک دریافتکننده اختیاری، یک شرح، و دو یا چند ثبت که
وزنهایشان به صفر میرسد. هر چیز دیگری در فایل Beancount برای اعلام، بررسی یا
حاشیهنویسی تراکنشها وجود دارد.
2026-02-14 * "Blue Bottle" "Coffee with Dana"
Expenses:Food:Coffee 9.50 USD
Assets:US:BofA:Checking -9.50 USDهنوز روی واژهای گیر کردهاید؟ مرکز راهنما فهرست تمام راهنماهای این سایت را دارد، و برگه تقلب نحو هر دستور را کنار هم میگذارد.