حسابداری متنساده واژگان خود را از حسابداری دوطرفه میگیرد و چند واژه مخصوص 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} یعنی ده سهم که هر کدام به قیمت ۱۵۰ دلار خریداری شدهاند. دوبرابر کردن آکولادها عدد را به کل تبدیل میکند نه قیمت واحد، بنابراین 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 میگوید هر مبلغی را که لازم است درج کند تا تأییدیه مانده بعدی در یک حساب موفق شود، و تفاوت را به حساب دوم ثبت کند. این دستور دقیقاً برای یک کار وجود دارد: باز کردن یک دفتر کل در میانه عمر بدون بازسازی سالها تاریخچه. پد زدن فراتر از آن راهاندازی اولیه معمولاً به این معنی است که یک خطای واقعی در حال پنهانکاری است.
پرداختکننده
پرداختکننده کسی است که با او معامله کردهاید، به عنوان اولین رشته نقلقولشده در خط تراکنش نوشته میشود. ثابت نگهداشتن پرداختکنندگان — همیشه "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 میدهد و بنابراین تصمیم میگیرد که آیا تراکنش موازنه میشود یا نه. بدون دستورهای قیمت، یک پرتفوی هنوز به بهای تمامشده موازنه میشود اما نمیتوان آن را به ارزش بازار ارزیابی کرد.
2026-06-30 price VTI 271.40 USDتطبیق
تطبیق عمل اثبات اینکه دفتر شما با یک سند خارجی مانند صورتحساب بانکی یا کارگزاری موافق است. در حسابداری متنساده این کار عمدتاً مکانیکی است: برای هر تاریخ صورتحساب یک تأییدیه مانده اضافه کنید و اجازه دهید ابزار به شما بگوید که آیا اعداد مطابقت دارند. دفتری که هر ماه به تمیزی تطبیق میشود، دفتری است که میتوانید بدون ترس از آن مالیات پر کنید.
برچسبها و پیوندها
برچسبها و پیوندها دو برچسبی هستند که به تراکنشها برای گروهبندی آنها خارج از سلسلهمراتب حسابها وصل میکنید: یک برچسب با # یک تم مانند #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هنوز روی یک کلمه گیر کردهاید؟ مرکز کمک همه راهنماهای این سایت را فهرست میکند، و برگه تقلب نحو هر دستور را کنار هم قرار میدهد.