این راهنما بهترین شیوهها را برای حسابداری متنمحور با استفاده از ابزار قدرتمند، متنباز و متنمحور حسابداری، Beancount، جمعبندی میکند. این راهنما فلسفه بنیادین، نحو مقدماتی تا پیشرفته، مطالعات موردی عملی برای داراییهای پیچیده، و استراتژیهای مدیریت بلندمدت دفتر کل را پوشش میدهد.
بخش ۱: «چرا» - پایههای حسابداری هوشمند
پیش از پرداختن به «چگونه»، درک «چرا» ضروری است. حسابداری مؤثر، سنگ بنای مدیریت مالی شخصی و گامی لازم به سوی شفافیت و آزادی مالی است.
فراتر از ردیابی هزینه: مسیر شفافیت مالی
اپلیکیشنهای ساده ردیابی هزینه به شما میگویند پولتان کجا رفته است. یک سیستم حسابداری قوی این را و خیلی بیشتر به شما میگوید: تصویری کامل از سلامت مالی شما، از جمله ارزش خالص، جریان نقدی، و عملکرد سرمایهگذاریهایتان فراهم میکند. هدف اصلی مشاهدهپذیری است—به دست آوردن درکی روشن و دادهمحور از زندگی مالیتان، که شما را قادر میسازد تصمیمات آگاهانه بگیرید، ریسک را ارزیابی کنید، و به سوی اهداف بلندمدت مانند بازنشستگی حرکت کنید.
چرا دوبلانتری؟ قدرت یک سیستم متوازن
برخلاف حسابداری تکطرفه (فهرست سادهای از هزینهها)، روش دوبلانتری هر تراکنش را به عنوان جریان ارزش بین حداقل دو حساب ثبت میکند. اصل هستهای آن معادله بنیادین حسابداری است:
این سیستم تضمین میکند که کتابهای شما همیشه متوازن هستند و خطاها را به طور چشمگیری کاهش میدهد. این سیستم با تولید گزارشهای ضروری مانند ترازنامه (آنچه دارید و بدهکارید) و صورت سود و زیان (آنچه به دست آوردهاید و خرج کردهاید) تصویری کامل مالی فراهم میکند.
بخش ۲: شروع کار با Beancount
Beancount یک ابزار قدرتمند حسابداری متنمحور مبتنی بر پایتون است.
اولین نگاه شما با Fava در Beancount.io
Beancount.io محیطی قدرتمند فراهم میکند که موتور Beancount را با یک اپ موبایل (iOS، Android) و اپ وب ترکیب میکند - Fava، یک رابط وب فوقالعاده برای تجسم دفتر کل شما. نیازی به نصب نیست. وقتی از پلتفرم استفاده میکنید، مستقیماً با یک ویرایشگر متن برای فایل دفتر کل خود (مثلاً main.bean) در تعامل هستید و گزارشهای تولیدشده توسط Fava را در لحظه میبینید.
Fava متن سادهای که مینویسید را به نمودارهای تعاملی، صورتهای مالی، و فهرستهای تراکنش قابل فیلتر تبدیل میکند و دیدی روشن از گزارشهای مالیتان به شما میدهد.
یا در ترمینال با bea شروع کنید
اگر ترجیح میدهید در یک پوسته (shell) کار کنید، bea رابط خط فرمان Beancount.io است. هیچ حسابی لازم نیست: آن را با brew install bex-co/tap/bea یا uv tool install beancount-io نصب کنید، و همان فایل متنی ساده را ایجاد، اعتبارسنجی، پرسوجو و گزارش میکند. شروع سریع CLI شما را در چند دقیقه به اولین دفتر کل میرساند، و اولین ماه شما با bea یک ماه کامل را از ابتدا تا انتها میبندد.
پنج نوع حساب اصلی
Beancount از پنج نوع حساب سطح بالا استفاده میکند که ساختار دفتر کل شما را تشکیل میدهند:
| نوع حساب | توضیحات | مانده معمول |
|---|---|---|
Assets | آنچه دارید (نقد، حسابهای بانکی، سرمایهگذاریها، ملک). | مثبت |
Liabilities | آنچه بدهکارید (بدهی کارت اعتباری، وامها، رهن). | منفی |
Income | پول از کجا میآید (حقوق، پاداش، سود). | منفی |
Expenses | پول کجا میرود (غذا، اجاره، سفر، مالیات). | مثبت |
Equity | ارزش خالص شما؛ برای ماندههای اولیه استفاده میشود. | منفی |
معادله Beancount
Beancount نسخه خودش از معادله حسابداری را اعمال میکند که در آن مجموع تمام ثبتها در کل دفتر کل شما برابر صفر است:
به همین دلیل، طبق قرارداد، حسابهای Income، Liabilities و Equity مقادیر منفی دارند—آنها منابع وجوهی هستند که Assets و Expenses شما را افزایش میدهند.
بخش ۳: زبان Beancount - نحو هستهای
همه ورودیها در Beancount دستورهایی هستند که با یک تاریخ شروع میشوند.
تعریف حسابها (open) و کالاها
قبل از اینکه بتوانید از یک حساب استفاده کنید، باید آن را با دستور open اعلام کنید. همچنین میتوانید به صورت اختیاری ارزها یا «کالاهای» آن را مشخص کنید.
; YYYY-MM-DD open Account:Name [Commodity1, Commodity2, ...]
2020-01-01 open Assets:Bank:US:Chase:Checking USD
2020-01-01 open Liabilities:CreditCard:US:Discover USD
2020-01-01 open Expenses:Food:Groceries
2020-01-01 open Income:Salary:Googleکالاها میتوانند ارزهای واقعی (مثلاً USD، JPY) یا هر واحد سفارشی که تعریف میکنید، مانند مایلهای هوایی (MILES_UA) یا نماد سهام (HOOL) باشند.
ثبت اولین تراکنش شما (*)
تراکنشها رایجترین ورودی هستند. آنها با یک تاریخ، یک پرچم (* برای تراکنش کامل یا ! برای تراکنش ناقص)، یک پرداختکننده اختیاری، و یک توضیح شروع میشوند. هر خط بعدی (با دو فاصله تورفتگی) یک «ثبت» به یک حساب است.
; YYYY-MM-DD * "Payee" "Description"
; Account1 Amount Commodity
; Account2 -Amount Commodity
2024-07-28 * "Trader Joe's" "Weekly groceries"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discover -125.50 USDبرای راحتی، اگر یک تراکنش فقط دو ثبت دارد، میتوانید مبلغ را در خط دوم حذف کنید و Beancount آن را به طور خودکار محاسبه میکند.
2024-07-28 * "Trader Joe's" "Weekly groceries"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discoverترازسازی در سطح تراکنش: مهمتر از آن برای استفاده روزمره، هر تراکنش فردی نیز باید تراز شود—مجموع تمام ثبتها در یک تراکنش باید برابر صفر باشد. اگر تراکنشی تراز نشود، Beancount خطایی مانند این نشان میدهد:

مدیریت تراکنشهای چندارزی (@ و @@)
Beancount در حسابداری چندارزی عالی عمل میکند.
- از
@برای تعیین قیمت تبدیل هر واحد استفاده کنید. - از
@@برای تعیین هزینه کل تبدیل استفاده کنید.
; Buying a flight in EUR with a USD card
2024-08-01 * "Lufthansa" "Flight to Berlin"
Expenses:Travel:Flights 500.00 EUR @@ 545.00 USD ; 500 EUR cost me 545 USD in total
Liabilities:CreditCard:US:Discover -545.00 USDبخش ۴: تضمین دقت - هنر تطبیق
یک روش کلیدی برای حفظ دفتر کل دقیق، تطبیق منظم است. این شامل مقایسه ماندههای دفتر کل Beancount شما با صورتهای رسمی مؤسسات مالیتان است.
خودکارسازی بررسیها با تأیید مانده (balance)
دستور balance ابزار اصلی شما برای بررسیهای خودکار است. شما تأیید میکنید که در یک تاریخ مشخص، یک حساب مانده خاصی داشته است. اگر مانده محاسبهشده با تأیید شما مطابقت نداشته باشد، Beancount خطا ایجاد میکند. این برای یافتن سریع خطاها بسیار ارزشمند است.
توجه: تأیید مانده، وضعیت حساب را در آغاز روز مشخصشده (قبل از هر تراکنش در آن روز) بررسی میکند.
; From your monthly credit card statement
2024-08-01 balance Liabilities:CreditCard:US:Discover -1432.78 USDپیوند دادن اسناد پشتیبان (document)
میتوانید به فایلهای خارجی مانند صورتهای بانکی یا رسیدها پیوند دهید و یک مسیر حسابرسیپذیر ایجاد کنید. Fava این پیوندها را قابل کلیک میکند.
2024-08-01 document Liabilities:CreditCard:US:Discover "statements/discover-2024-07.pdf"اصلاح خطاها و مقداردهی ماندهها
وقتی دفتر کل خود را شروع میکنید یا مغایرتی پیدا میکنید که نمیتوانید ردیابی کنید، باید یک تعدیل انجام دهید. روش استاندارد استفاده از یک حساب ویژه Equity است.
; Initializing a cash account when starting your ledger
2020-01-01 * "Initial Balance" "Setting up cash account"
Assets:Cash:Wallet 200.00 USD
Equity:Opening-Balances -200.00 USDحساب Equity:Opening-Balances مبالغی را نگه میدارد که از منابع ناشناخته یا خارجی وارد دفتر کل شما میشوند.
برای اصلاحات سریع که در آنها مغایرت دقیق مهم نیست، دستور pad میتواند به طور خودکار مانده یک حساب را برای رسیدن به یک تأیید balance بعدی تنظیم کند و تفاوت را به یک حساب حقوق صاحبان سهام ثبت کند. از این با احتیاط استفاده کنید، زیرا میتواند مشکلات بزرگتری را پنهان کند. تعدیلهای صریح عموماً ایمنتر هستند.
بخش ۵: الگوهای تراکنش پیشرفته و واقعبینانه
ردیابی بدهیها: مدیریت مطالبات و بدهیهای قابل پرداخت
حسابداری دوبلانتری برای ردیابی پولی که به شما بدهکارند (Assets:Receivables) یا شما بدهکارید (Liabilities:Payable) عالی است.
مثال: شما هزینه شام گروهی ۹۰ دلاری را پرداخت میکنید و دوستتان باب ۴۵ دلار سهمش را به شما بدهکار است.
۱. ثبت هزینه اولیه و مطالبه:
2024-08-05 * "Dinner Place" "Dinner with Bob"
Expenses:Food:Restaurant 45.00 USD ; Your share
Assets:Receivables:Bob 45.00 USD ; Bob owes you
Assets:Bank:US:Chase:Checking -90.00 USD۲. وقتی باب پول شما را پس میدهد:
2024-08-06 * "Bob" "Paid me back for dinner"
Assets:Bank:US:Chase:Checking 45.00 USD
Assets:Receivables:Bob -45.00 USDحساب Assets:Receivables:Bob اکنون صفر است و کتابهای شما کاملاً متوازن هستند.
داراییها در مقابل هزینهها: خرید خودرو و استهلاک
خرید بزرگ مانند خودرو یک هزینه ساده نیست؛ این تحصیل یک دارایی است که به مرور زمان ارزش خود را از دست میدهد (استهلاک).
۱. ثبت خرید به عنوان دارایی:
2023-01-15 * "Toyota Dealer" "Purchase of a new car"
Assets:Car:ToyotaCamry 30000.00 USD
Assets:Bank:US:Chase:Checking -30000.00 USD۲. ثبت استهلاک سالانه: فرض کنید تخمین میزنید خودرو سالانه ۳۰۰۰ دلار ارزش خود را از دست میدهد. در پایان سال، این را به عنوان هزینه ثبت میکنید.
2023-12-31 * "Depreciation" "Annual car value depreciation"
Expenses:Depreciation:Car 3000.00 USD
Assets:Car:ToyotaCamry -3000.00 USDپس از این ورودی، حساب Assets:Car:ToyotaCamry شما به درستی ارزش جدید خودرو (۲۷۰۰۰ دلار) را منعکس میکند و شما هزینه استفاده را به عنوان هزینه برای آن سال به درستی ثبت کردهاید.
بخش ۶: کاوش عمیق - مدلسازی داراییهای پیچیده دنیای واقعی
مطالعه موردی ۱: حسابداری املاک و مستغلات
خانه اغلب بزرگترین دارایی و بدهی شماست. در اینجا نحوه مدلسازی آن آورده شده است.
۱. ایجاد حسابها و یک کالای سفارشی:
2022-01-01 commodity HOUSE_123MAIN
name: "Property at 123 Main St"
2022-01-01 open Assets:Property:Home:123Main HOUSE_123MAIN
2022-01-01 open Liabilities:Mortgage:HomeLoan USD
2022-01-01 open Expenses:Home:Interest
2022-01-01 open Expenses:Home:PropertyTax۲. ثبت خرید: فرض کنید خانهای ۵۰۰ هزار دلاری با پیشپرداخت ۱۰۰ هزار دلاری و وام ۴۰۰ هزار دلاری خریداری میکنید.
2022-03-15 * "Settlement Company" "Purchase of 123 Main St"
Assets:Property:Home:123Main 1 HOUSE_123MAIN {500000.00 USD}
Assets:Bank:DownPayment -100000.00 USD
Liabilities:Mortgage:HomeLoan -400000.00 USD۳. ثبت پرداختهای ماهانه رهن: پرداخت ماهانه شما شامل اصل (کاهش بدهی) و سود (یک هزینه) است.
2022-04-01 * "Mortgage Bank" "Monthly Mortgage Payment"
Liabilities:Mortgage:HomeLoan 800.00 USD ; Principal
Expenses:Home:Interest 1200.00 USD ; Interest
Assets:Bank:US:Chase:Checking -2000.00 USD۴. ردیابی افزایش ارزش (سود تحققنیافته): ارزش بازار یک خانه تغییر میکند. برای ردیابی این بدون تأثیر بر ارزش خالص رسمی شما (زیرا سود تا زمان فروش تحقق نمییابد)، میتوانید از یک دستور قیمت با یک ارز «مجازی» استفاده کنید.
; The purchase price is the real cost basis
2022-03-15 price HOUSE_123MAIN 500000.00 USD
; An updated market estimate is an unrealized gain
2024-01-01 price HOUSE_123MAIN 550000.00 USD.UNREALIZEDاین به شما امکان میدهد ارزش تخمینی را در نمودارهای Fava ببینید بدون اینکه ترازنامه خود را به طور نادرست افزایش دهید.
یک دفتر کل مثال املاک زنده با ردیابی رهن، استهلاک و فروش ملک را کاوش کنید:
مطالعه موردی ۲: ردیابی واحدهای سهام محدود (RSU)
RSUها شکل رایجی از جبران خدمات با سهام هستند. حسابداری برای آنها شامل ردیابی اعطای اولیه، رویدادهای بلوغ، و کسر مالیات است.
۱. تنظیم اولیه: کالاهایی برای سهام بلوغیافته (HOOL) و بلوغنیافته (HOOL.UNVEST) ایجاد کنید، به همراه تمام حسابهایی که ورودیهای بعدی به آنها دست میزنند. اعلام همه آنها از ابتدا همان چیزی است که باعث میشود دو تراکنش زیر به تنهایی بارگذاری شوند.
2021-01-01 commodity HOOL
2021-01-01 commodity HOOL.UNVEST
2021-01-01 open Assets:Brokerage:Etrade:HOOL HOOL
2021-01-01 open Assets:Grant:Unvested HOOL.UNVEST
2021-01-01 open Income:Grant:Awards HOOL.UNVEST
2021-01-01 open Expenses:Grant:Vested HOOL.UNVEST
2021-01-01 open Income:Salary:Hooli:RSU USD
2021-01-01 open Expenses:Taxes:Federal USD
2021-01-01 open Expenses:Taxes:State USD۲. ثبت اعطای اولیه: این تراکنش انتقال کل اعطا را به یک حساب دارایی بلوغنیافته نشان میدهد. هنوز چیزی مشمول مالیات نیست، بنابراین کل ورودی به کالای ردیابی HOOL.UNVEST مخرجگذاری میشود.
2021-02-01 * "Hooli" "Initial RSU Grant"
Assets:Grant:Unvested 1000 HOOL.UNVEST
Income:Grant:Awards -1000 HOOL.UNVEST۳. ثبت رویداد بلوغ: این تراکنش کلیدی است. وقتی سهام بالغ میشوند، درآمد را شناسایی میکنید، کارفرما سهام را برای پرداخت مالیات کسر میکند و بقیه را نگه میدارید. فرض کنید ۱۰۰ سهم با قیمت ۱۵۰.۰۰ دلار بالغ میشود، بنابراین:
- جبران ناخالص: ۱۰۰ × ۱۵۰.۰۰ دلار = ۱۵،۰۰۰.۰۰ دلار
- سهام کسرشده برای مالیات: ۴۰ × ۱۵۰.۰۰ دلار = ۶،۰۰۰.۰۰ دلار (فدرال ۴,۸۰۰.۰۰ دلار + ایالتی ۱,۲۰۰.۰۰ دلار)
- سهامی که نگه میدارید: ۶۰ × ۱۵۰.۰۰ دلار = ۹،۰۰۰.۰۰ دلار از مبنای هزینه
- وجه نقد به شما: ۰.۰۰ دلار — کل مالیات کسرشده به صورت سهام پرداخت میشود
این مبالغ ورودی هستند و تطبیق مییابند: ۶،۰۰۰.۰۰ دلار مالیات به اضافه ۹،۰۰۰.۰۰ دلار سهام نگهداریشده دقیقاً ۱۵،۰۰۰.۰۰ دلار درآمد است.
2022-02-01 * "Hooli" "RSU Vesting Event"
; Ordinary income: 100 shares * $150.00
Income:Salary:Hooli:RSU -15000.00 USD
; Tax withheld, funded by 40 of the 100 shares (40 * $150.00 = $6,000.00)
Expenses:Taxes:Federal 4800.00 USD
Expenses:Taxes:State 1200.00 USD
; The 60 shares you keep, at their $150.00 vesting-day basis
Assets:Brokerage:Etrade:HOOL 60 HOOL {150.00 USD}
; Retire the 100 unvested units the grant was tracking
Assets:Grant:Unvested -100 HOOL.UNVEST
Expenses:Grant:Vested 100 HOOL.UNVESTاین تراکنش واحد و متوازن کل رویداد را مدلسازی میکند: اعطای بلوغنیافته کاهش مییابد، درآمد شناسایی میشود، مالیات کسر میشود، و ۶۰ سهم خالص بالغشده در حساب کارگزاری شما با مبنای هزینه صحیح برای محاسبات آتی سود سرمایه ظاهر میشود.
دو جزئیات ارزش کپی کردن در دفتر کل خودتان را دارند. اول، کسر را حساب به حساب بنویسید به جای اینکه اجازه دهید یک حساب ترازکننده جامع آن را جذب کند—اگر ثبتهای فدرال و ایالتی با ارزش سهام کسرشده جمع نشوند، تراکنش تراز نخواهد شد و Beancount به شما خواهد گفت. دوم، بین ثبتها خط خالی نگذارید: یک خط خالی تراکنش را پایان میدهد و Beancount یک خطای نحوی در ثبتهای بعد از آن گزارش میکند.
اگر کارفرمای شما سهام کسرشده را به جای بازپسگرفتن به قیمت بلوغ، در بازار آزاد بفروشد، فروش یک تراکنش جداگانه است—کاهش Assets:Brokerage:Etrade:HOOL در مقابل وجه نقد—و هر تفاوت بین قیمت فروش و مبنای ۱۵۰.۰۰ دلار یک سود یا زیان سرمایه کوچک است. آن را از ورودی بلوغ جدا نگه دارید.
بخش ۷: مدیریت پروژه برای دفتر کل شما
همانطور که دفتر کل شما رشد میکند، سازماندهی کلیدی میشود.
استفاده از کنترل نسخه (Git) برای ایمنسازی دادههای شما
از آنجا که دفتر کل شما یک فایل متنی است، برای کنترل نسخه با Git عالی است. این به شما تاریخچه کاملی از تمام تغییرات میدهد و شما را از حذفهای تصادفی یا اشتباهات محافظت میکند. هشدار: دادههای مالی شما بسیار حساس هستند. از یک مخزن خصوصی در خدماتی مانند GitHub/GitLab استفاده کنید یا میزبان خودتان باشید.
سازماندهی با برچسبها (#) و پیوندها (^)
Beancount دو روش برای گروهبندی تراکنشها فراتر از حسابها فراهم میکند:
- برچسبها (
#): برای رویدادها یا پروژهها استفاده کنید. میتوانید همه تراکنشهای مربوط به یک سفر خاص را فیلتر کنید، برای مثال.2024-07-20 * "هتل" "وین" #trip-europe-2024 - پیوندها (
^): برای اتصال تراکنشهای مرتبط مالی که در زمانهای مختلف رخ میدهند، مانند برداشت نقدی و کارمزد بانکی مرتبط، استفاده کنید.
یک استراتژی مقیاسپذیر برای ساختاردهی فایلهای شما (include)
یک فایل واحد و عظیم مدیریتش دشوار است. از دستور include برای تقسیم دفتر کل خود به چندین فایل استفاده کنید.
main.bean:
; Main ledger file
; Global options
option "title" "My Personal Ledger"
option "operating_currency" "USD"
; Include account declarations and other files
include "accounts.bean"
include "years/2023.bean"
include "years/2024.bean"
include "events/trip-europe-2024.bean"یک استراتژی سازمانی قوی، به ترتیب اولویت:
۱. بر اساس رویداد: یک فایل جداگانه برای یک رویداد بزرگ و مستقل ایجاد کنید (مثلاً trip-europe-2024.bean).
۲. بر اساس دسته/پرداختکننده: برای تراکنشهای بسیار منظم و تکراری مانند قبضهای آب و برق یا حقوق، آنها را در فایل خودشان گروهبندی کنید (مثلاً recurring-rent.bean).
۳. بر اساس حساب: برای تراکنشهایی که به شدت به یک حساب خاص متصل هستند (سود، کارمزد، پرداختهای کارت اعتباری)، یک فایل خاص برای حساب در نظر بگیرید.
۴. بر اساس تاریخ: برای سایر تراکنشهای عمومی، تقسیم ساده بر اساس سال (2024.bean) یا ماه (2024/07.bean) مؤثر است.
بخش ۸: نتیجهگیری
Beancount منحنی یادگیری تند ارائه میدهد اما این تلاش را با قدرت، انعطافپذیری و کنترل بینظیر بر دادههای مالیتان جبران میکند. با پذیرش اصول حسابداری دوبلانتری و ابزارهای عملی که Beancount فراهم میکند، میتوانید از ردیابی ساده هزینه به یک سیستم کامل، دقیق و روشنگر مدیریت مالی شخصی حرکت کنید. دفتر کل شما به یک دارایی دائمی، خصوصی و ارزشمند برای درک گذشته و برنامهریزی آیندهتان تبدیل میشود.
شروع کار با Beancount.io
Beancount.io یک پلتفرم مدرن مدیریت مالی مبتنی بر ابر است که سوابق تراکنشهای متنی شما را به صورتهای مالی جامع، از جمله صورت سود و زیان، ترازنامه و تراز آزمایشی تبدیل میکند. با ترکیب قابلیت اطمینان فایلهای متن ساده با ابزارهای تجسم قدرتمند، Beancount.io به شما کمک میکند کنترل دقیقی بر زندگی مالیتان حفظ کنید و در عین حال بینشهای ارزشمندی در مورد عملکرد سرمایهگذاریهای خود به دست آورید.
سفر مالی خود را با Beancount.io شروع کنید — برنامهها و قیمتهای فعلی را ببینید تا بدانید هر سطح شامل چه چیزی است.


