حسابداری متنی واژگانی را از حسابداری دوبل به عاریت میگیرد و چند کلمه اختصاصی Beancount را نیز به آن اضافه میکند. این واژهنامه اصطلاحاتی را که در هنگام مطالعه این مستندات یا فایل دفترکل خود با آنها مواجه میشوید، تعریف میکند و هر یک را با یک مثال کوتاه در صورت لزوم همراه میسازد. هر مدخل پیوند مخصوص به خود را دارد، بنابراین میتوانید همتیمی خود را مستقیماً به یک تعریف ارجاع دهید.
حساب
یک حساب، یک سطل نامگذاری شده است که یک جریان از ارزش را ردیابی میکند و به صورت سلسلهمراتبی با جداکننده دونقطه تحت یکی از پنج نوع ریشه نوشته میشود: Assets (داراییها)، Liabilities (بدهیها)، Equity (سرمایه)، Income (درآمد) یا Expenses (هزینهها). این سلسلهمراتب، کل ساختار سازماندهی دفترهای شما را تشکیل میدهد — Assets:US:BofA:Checking و Expenses:Food:Restaurant به طور خودکار مرتب و خلاصه میشوند. هر حساب باید قبل از استفاده اعلام شود. برای قوانین نامگذاری به Syntax زبان Beancount مراجعه کنید.
مبنای تعهدی
حسابداری بر مبنای تعهدی، درآمد را زمانی که به دست میآید و هزینهها را زمانی که incur میشوند، صرفنظر از زمان جابجایی واقعی پول، ثبت میکند. حسابداری نقدی برعکس عمل میکند: هر دو را فقط زمانی که پول دست به دست میشود، شناسایی میکند. مبنای تعهدی تصویر真实تری از عملکرد یک دوره ارائه میدهد، به همین دلیل است که یک فاکتور ارسالشده در ماه مارس به همان ماه تعلق دارد حتی اگر مشتری در ماه مه پرداخت کند.
استهلاک
استهلاک یک پرداخت بزرگ واحد را در دورههایی که واقعاً پوشش میدهد توزیع میکند، به طوری که هر ماه سهم منصفانه خود را از هزینه تحمل کند. یک حق بیمه سالانه پرداختشده در ژانویه، هزینه تمام دوازده ماه است، نه فقط ژانویه. در Beancount شما یا ثبتهای تقسیمشده را به صورت دستی مینویسید یا با یک پلاگین آنها را تولید میکنید — به Amortize مراجعه کنید.
تأیید مانده
تأیید مانده یک دستور balance است که بیان میکند مانده یک حساب در ابتدای یک تاریخ معین چقدر باید باشد، به طوری که صورت حساب بانکی شما به یک بررسی خودکار برای دفترهای شما تبدیل میشود. اگر مانده محاسبهشده متفاوت باشد، Beancount با نمایش مبالغ مورد انتظار و واقعی با صدای بلند خطا میدهد. قرار دادن یک تأیید مانده به ازای هر حساب در هر صورت حساب، ارزانترین راه برای حفظ اعتمادپذیری یک دفترکل است.
2026-01-01 balance Assets:US:BofA:Checking 4,321.00 USDBeancount
Beancount یک سیستم حسابداری دوبل متنباز است که دفترکل آن یک فایل متنی ساده است که در هر ویرایشگر متنی ویرایش میکنید و با یک ابزار خط فرمان اعتبارسنجی میکنید. این سیستم یک نحو strict و قابل تجزیه، یک زبان پرسوجو و یک رابط وب را بدون پایگاه داده یا فرمت فایل اختصاصی ارائه میدهد. از آنجایی که دفترکل به صورت متن است، خوشبختانه در کنار کد شما در Git زندگی میکند. با مقدمهای بر Beancount شروع کنید.
زبان پرسوجوی Beancount
زبان پرسوجوی Beancount که معمولاً به صورت BQL مخفف میشود، زبانی شبیه به SQL است که برای پرسیدن سوالات از دفترکل خود استفاده میکنید. این زبان روی دستورات تجزیهشده اجرا میشود، نه یک پایگاه داده، بنابراین SELECT account, sum(position) WHERE year = 2026 بلافاصله از همان فایلی که ویرایش میکنید پاسخ میدهد. برای گرامر کامل به راهنمای زبان پرسوجو مراجعه کنید.
روش ثبت
روش ثبت، قاعدهای است که Beancount زمانی اعمال میکند که یک کاهش باید انتخاب کند کدام لاتهای موجود را کاهش دهد. گزینهها عبارتند از STRICT (شما باید خود لات را شناسایی کنید)، FIFO، LIFO، AVERAGE و NONE، که برای هر حساب در دستور open آن تنظیم میشود. روشی که انتخاب میکنید سود سرمایه تحققیافته شما را تغییر میدهد، بنابراین روشی را انتخاب کنید که حوزه مالیاتی شما انتظار دارد و آن را ثابت نگه دارید.
نمودار حسابها
نمودار حسابها، لیست کامل حسابهایی است که دفترکل شما استفاده میکند، همراه با ساختاری که آنها را سازماندهی میکند. در Beancount فایل نمودار جداگانهای وجود ندارد — مجموعه دستورات open همان نمودار حسابهای شما است. طراحی خوب آن در مراحل اولیه، بعداً در تغییر نامها صرفهجویی زیادی میکند؛ برای نقاط شروع به تنظیمات خاص صنعت مراجعه کنید.
دستور بستن
یک دستور close تاریخی را مشخص میکند که پس از آن دیگر نمیتوان از یک حساب استفاده کرد، که به این ترتیب یک حساب بانکی یا یک وام تسویهشده را بدون حذف تاریخچه آن بازنشسته میکنید. تراکنشهای گذشته همچنان معتبر و قابل گزارش هستند؛ فقط ثبتهای جدید رد میشوند. بستن حسابهای استفادهنشده با افزایش سن دفترکل، گزارشها را خوانا نگه میدارد.
2026-03-31 close Assets:US:OldBank:Checkingکالا
یک کالا هر واحد ارزشی است که دفترکل شما ردیابی میکند — یک ارز مانند USD، یک نماد سهام مانند AAPL، یک دارایی رمزارز مانند BTC، یا چیزی که خودتان اختراع میکنید مانند VACATION-DAYS. Beancount هرگز بدون اطلاع شما بین کالاها تبدیل انجام نمیدهد، بنابراین یک مقدار همیشه یک عدد همراه با کالایی است که به آن denominated است. یک دستور اختیاری commodity به شما امکان میدهد فرادادهای مانند نام یا کلاس دارایی را ضمیمه کنید.
مبنای هزینه
مبنای هزینه چیزی است که واقعاً برای یک دارایی پرداختهاید، به ارزی که با آن پرداخت کردهاید ثبت میشود و تا زمانی که آن را در اختیار دارید همراه آن حمل میشود. Beancount آن را درون آکولاد مینویسد — 10 AAPL {150.00 USD} به معنای ده سهم خریداریشده به قیمت 150 دلار هر کدام است. از آنجایی که مبنا با موقعیت حرکت میکند، سود سرمایه هنگام فروش از محاسبات به دست میآید. به مدیریت موجودی مراجعه کنید.
دستور
یک دستور یک دستورالعمل تاریخدار در یک فایل Beancount است، و دستورات تنها چیزی هستند که یک دفترکل شامل میشود. هر خطی که با یک تاریخ شروع میشود یک دستور است: open، close، balance، price، note، document، pad، event، commodity و خود تراکنش. Beancount قبل از پردازش، دستورات را بر اساس تاریخ مرتب میکند، بنابراین میتوانید آنها را به هر ترتیبی که بهتر خوانده میشوند نگه دارید.
حسابداری دوبل
حسابداری دوبل، عمل ثبت هر رویداد اقتصادی به عنوان حداقل دو ورودی مطابق است، به طوری که مبالغ همیشه به صفر برسند. پول هرگز ایجاد یا نابود نمیشود — فقط بین حسابها جابجا میشود، به همین دلیل است که این تکنیک اشتباهاتی را که یک لیست تکستونی هرگز نمیتواند، شناسایی میکند. Beancount این قانون را به شدت اجرا میکند: یک تراکنش که ثبتهای آن متوازن نیستند، یک خطا محسوب میشود، نه یک هشدار.
بودجهبندی پاکتی
بودجهبندی پاکتی، پول را برای یک هدف قبل از خرج کردن آن کنار میگذارد، به طوری که هر دسته محدودیت خود را دارد به جای اینکه برای یک مانده تجمیعشده رقابت کند. این نام از پاکتهای کاغذی گرفته شده است که مردم در روزهای حقوق آن را با پول نقد پر میکردند. در یک دفترکل متنی، شما پاکتها را با حسابهای اختصاصی یا دستورات بودجه مدلسازی میکنید — به بودجهها مراجعه کنید.
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 در بالای دفترکل خود فعال میکنید — راهنمای پلاگین پیشبینی یک مثال واقعی را مرور میکند.
ثبت
یک ثبت، یک پایه از یک تراکنش است: یک حساب، یک مبلغ و به صورت اختیاری یک هزینه یا قیمت. یک تراکنش به حداقل دو ثبت نیاز دارد و مبالغ آنها باید به صفر برسد. حداکثر یک ثبت ممکن است مبلغ خود را خالی بگذارد، در این صورت Beancount رقم متوازنکننده را برای شما محاسبه میکند.
دستور قیمت
یک دستور price نرخ ارز بین دو کالا را در یک تاریخ ثبت میکند، که این روشی است که Beancount یک دارایی را به ارزش بازار آن در گزارشها تبدیل میکند. قیمتها صرفاً دادههای مرجع هستند — آنها هرگز پول را جابجا نمیکنند و هرگز در یک تراکنش ظاهر نمیشوند. بدون آنها، یک پرتفوی همچنان به بهای تمام شده متوازن است اما نمیتوان آن را به ارزش بازار ارزشگذاری کرد.
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هنوز روی یک کلمه گیر کردهاید؟ مرکز کمک همه راهنماهای این سایت را فهرست میکند و برگه تقلب نحو هر دستور را در کنار هم قرار میدهد.