- Beancount का उपयोग करके 10 साल तक व्यक्तिगत वित्त को सादा टेक्स्ट फ़ाइलों में रिकॉर्ड किया गया, और लगभग 45,000 पंक्तियों के डेटा तथा 10,000 लेन-देन का प्रबंधन किया गया
- हर महीने 30–45 मिनट लगाकर बैंक स्टेटमेंट CSV फ़ाइलें इम्पोर्ट कर मैन्युअल और ऑटोमेटेड तरीके से व्यवस्थित किया गया, और पठनीयता बनाए रखने के लिए उन्हें सालवार फ़ाइलों में विभाजित किया गया
- जर्मन बैंकों के लिए Python-आधारित importer लाइब्रेरी खुद विकसित की गई और Beancount के साथ जोड़ी गई; इनमें से कुछ का रखरखाव आज भी जारी है
- Beancount शुरुआती उपयोगकर्ताओं की कठिनाइयों को महसूस करते हुए शुरुआती लोगों के लिए एक परिचयात्मक गाइड लिखी गई, जिसे कम्युनिटी में सकारात्मक प्रतिक्रिया मिली
- सारा डेटा अपने लोकल डिवाइस और Git रिपॉज़िटरी में रखा जाता है, इसलिए किसी खास ऐप या सेवा की तुलना में दीर्घकालिकता और नियंत्रण अधिक है
10 साल के Beancount ledger की संरचना
- 2016 से Beancount के साथ वित्तीय डेटा प्रबंधित किया जा रहा है, और कुल 45,011 पंक्तियों की एंट्रियाँ 16
.beancountफ़ाइलों में संग्रहीत हैंmain.beancountफ़ाइल को केंद्र में रखकर सालवार फ़ाइलों कोincludeतरीके से जोड़ा गया है- कुल लेन-देन लगभग 9,895 हैं, और उनके भीतर posting (विभाजित प्रविष्टियाँ) 19,743 हैं
- कुल 1,086 account मौजूद हैं, लेकिन ये वास्तविक बैंक खाते नहीं बल्कि वर्चुअल वर्गीकरण खाते हैं
- उदाहरण: सुपरमार्केट खर्च, आय, subscription service आदि के लिए अलग-अलग account बनाए जा सकते हैं
- 507 PDF दस्तावेज़ लेन-देन से अटैच हैं, जिससे टैक्स फाइलिंग के समय संबंधित रसीदें आसानी से देखी जा सकती हैं
- सालवार posting की संख्या 2016 में 715 से बढ़कर 2023 में 2,651 हो गई, और 2023 सबसे सक्रिय वर्ष के रूप में दर्ज हुआ
मासिक प्रबंधन प्रक्रिया
- हर महीने लगभग 30–45 मिनट लगाकर बैंक स्टेटमेंट को CSV के रूप में डाउनलोड किया जाता है और फिर Beancount में इम्पोर्ट किया जाता है
- PDF की तुलना में CSV को parse करना आसान होने के कारण उसका उपयोग किया जाता है
- Python-आधारित importer CSV डेटा को Beancount फ़ॉर्मेट में बदलता है
- बदले गए लेन-देन को
.beancountफ़ाइल में जोड़ने के बाद, double-entry bookkeeping के सिद्धांत के अनुसार बैलेंस 0 होने तक समायोजित किया जाता है- कुछ का वर्गीकरण अपने आप हो जाता है, कुछ को मैन्युअल रूप से समायोजित किया जाता है
- नया साल शुरू होने पर पिछले साल के लेन-देन को
<year>.beancountफ़ाइल में स्थानांतरित किया जाता है औरmain.beancountमें शामिल करके प्रबंधित किया जाता है - सभी लेन-देन का रिकॉर्ड एक ही डायरेक्टरी के भीतर टेक्स्ट फ़ाइलों में व्यवस्थित रहता है
जर्मन बैंकों के लिए Beancount Importer का विकास
- Beancount अपने-आप बैंक स्टेटमेंट के फ़ॉर्मेट को नहीं समझता, इसलिए importer class के ज़रिए रूपांतरण की ज़रूरत होती है
- चूँकि जर्मन बैंक खाते उपयोग किए जाते हैं, इसलिए कई importer खुद विकसित किए गए
- beancount-dkb
- beancount-ing
- beancount-n26
- beancount-commerzbank (अब इसका रखरखाव बंद है)
- पहली तीन लाइब्रेरी आज भी सक्रिय रूप से maintained और उपयोग की जा रही हैं
उपयोगकर्ता से लेखक तक
- Beancount का दस्तावेज़ीकरण बहुत व्यापक है, लेकिन शुरुआती लोगों के लिए इसमें प्रवेश की बाधा अधिक है
- trial and error से सीखे गए अनुभव के आधार पर एक परिचयात्मक गाइड लिखी गई
- personalfinancespython.com पर प्रकाशित
- Beancount के आधिकारिक दस्तावेज़ों के external contributions पेज पर इसका उल्लेख है
- पाठकों की समीक्षाओं में सकारात्मक प्रतिक्रिया मिली
समापन
- सारा वित्तीय डेटा Git से version-controlled लोकल टेक्स्ट फ़ाइलों के रूप में संग्रहीत है
- डेटा अपने डिवाइस पर मौजूद है और किसी खास ऐप या सेवा पर निर्भर नहीं है
- Beancount ecosystem के टूल्स का उपयोग करके इसे स्वतंत्र रूप से विश्लेषित किया जा सकता है
- plaintext accounting का यह तरीका किसी भी ऐप से अधिक लंबे समय तक टिक सकने वाला वित्त प्रबंधन का एक मजबूत रूप है
1 टिप्पणियां
Hacker News की राय
मैं OP की किताब से पूरी तरह सहमत हूँ। मैंने अब तक जो देखा है, उसमें Beancount / plaintext accounting को समझने के लिए यह सबसे बेहतरीन शुरुआती गाइड थी
मैं भी जिंदगी भर double-entry bookkeeping को ठीक से नहीं समझ पाया था, लेकिन Martin Kleppman का "Accounting for Computer Scientists" पढ़ने के बाद जाकर बात समझ में आई। graph theory से समझाने का तरीका हैरान कर देने जितना सहज था
मैं पहले Quicken इस्तेमाल करता था, लेकिन हर बार version बदलने पर data दोबारा दर्ज करना पड़ता था, इसलिए आखिरकार GNU Cash पर चला गया। लेकिन migration की दिक्कतें वहाँ भी थीं
फिर मुझे plaintext accounting(PTA) मिला और मैंने hledger चुना (क्योंकि लगा कि Beancount में performance issues हो सकते हैं)। double-entry bookkeeping सीखने पर यह उम्मीद से ज्यादा सरल निकला।
PDF में आने वाले investment statements और payslips को मैं Python scripts से parse करता हूँ, और bank/card CSV को auto-classify करने की व्यवस्था भी बना रखी है, इसलिए ज़्यादातर चीज़ें automated हैं।
मैं महीने में लगभग एक घंटा लगाकर investment reports, budget, और tax summary बनाता हूँ।
plain text होने की वजह से format बदल जाए तब भी data सुरक्षित रहता है, और git से version control भी किया जा सकता है।
कमी बस यह है कि mobile पर काम नहीं करता, और थोड़ा technical knowledge चाहिए। लेकिन जिन लोगों के लिए पैसों का flow महत्वपूर्ण है, उनके लिए यही सही जवाब है
लेकिन Quicken का automatic sync feature अब भी सबसे बेहतर है, इसलिए उसका विकल्प ढूँढना मुश्किल है। मैं 27 accounts रोज़ check करता हूँ ताकि fraud या errors पकड़ सकूँ, और हर बार CSV डाउनलोड करके manually process करना एक बुरा सपना होगा।
ऊपर से आजकल banks OFX बंद कर रहे हैं और Intuit को बीच के hub की तरह इस्तेमाल कर रहे हैं, इसलिए इससे बाहर निकलना और मुश्किल होता जा रहा है
निजी वित्त को project build system की तरह manage करने का विचार मैंने full-fledged-hledger से सीखा
financial institutions से मिला raw data जैसा है वैसा ही store किया जाता है, scripts से उसे CSV में बदला जाता है, और फिर rule files के जरिए PTA entries में map किया जाता है।
इससे फायदा यह है कि अगर conversion logic या classification rules बदलें, तो पूरा पुराना data अपने-आप update हो जाता है।
शुरुआत में सिर्फ एक महीने के data से शुरू किया जा सकता है, और धीरे-धीरे दायरा बढ़ाया जा सकता है — जैसे Amazon order history या Paypal receipts तक शामिल करना
मैं कई सालों से Beancount इस्तेमाल कर रहा हूँ।
इस साल से मैंने भी OP की तरह साल-दर-साल file structure अपना लिया। पहले 20 लाख पंक्तियों की एक single file थी, और Emacs plugin धीमा पड़ने लगा था।
इस तरीके का फायदा यह है कि आप सब कुछ track कर सकते हैं — investments, pension, RSU, bank accounts वगैरह। यहाँ तक कि बिजली की खपत (kWh) भी model की जा सकती है।
हाल में मैं LLM का इस्तेमाल करने वाले automation tools बहुत बना रहा हूँ। उदाहरण के लिए, मैंने Claude की मदद से transaction rule engine को UI वाले app में refactor किया। पहले ऐसा काम कई दिन ले लेता
लगता है बहुत से लोग plain text और double-entry bookkeeping को आपस में गड़बड़ा रहे हैं।
Beancount दोनों को support करता है, लेकिन double-entry bookkeeping जाने बिना भी plain text accounting की जा सकती है।
फिर भी, double-entry bookkeeping ज्ञान को व्यवस्थित करने का शानदार साधन है, इसलिए मैं इसे सीखने की सलाह दूँगा।
plain text की उपयोगिता को लेकर मैं थोड़ा संशय में हूँ। यह शायद cloud dependence या vendor lock-in से बचने की प्रतिक्रिया जैसा है, लेकिन local पर free software के साथ double-entry bookkeeping करना ही काफी है।
मेरा निष्कर्ष यह है:
मैं GnuCash इस्तेमाल करता हूँ, और यह परफेक्ट तो नहीं है, लेकिन इस दर्शन के काफ़ी अनुरूप है
मैंने हाल ही में PTA शुरू किया है, और इसकी entry barrier काफ़ी ऊँची है।
पहले double-entry bookkeeping सीखनी पड़ती है, फिर ledger-cli / hledger / beancount में से एक चुनना होता है। इनके बीच फर्क सूक्ष्म हैं, इसलिए community और documentation quality ही निर्णायक बनते हैं।
उसके बाद सोचना पड़ता है कि कौन-कौन से accounts पहले import किए जाएँ, कितना पुराना data शामिल किया जाए, और automatic importers कैसे set up किए जाएँ।
hledger DSL इस्तेमाल करता है, जबकि Beancount Python का उपयोग करता है। ज़्यादातर समय manual editing में जाता है।
उसके बाद budget, tax, spouse के साथ sharing जैसी नई समस्याएँ सामने आती हैं।
लेकिन मुझे लगता है कि इन सवालों को खुद पहचानना ही PTA की असली कीमत है।
हर साल pension, insurance, internet bill, नई नौकरी के offer जैसी अनगिनत वित्तीय निर्णय लेते समय, अपनी अर्थव्यवस्था को बारीकी से समझना बहुत ताकत देता है
मैं 10 साल से ledger-cli और Emacs इस्तेमाल कर रहा हूँ, और पहले GnuCash भी इस्तेमाल कर चुका हूँ।
शुरुआती लोगों के लिए मेरी लिखी double-entry bookkeeping की पाठ्यपुस्तक भी है
मैं 2018 से PTA इस्तेमाल कर रहा हूँ, और trial-and-error से बहुत कुछ सीखा है।
commercial services कुछ चुने हुए accounts ही दिखाती हैं, लेकिन PTA से पूरे वित्तीय प्रवाह को पूरी तरह समझा जा सकता है।
उदाहरण के लिए, company से मिले shares बिककर bank account में जमा होने तक की पूरी provenance track की जा सकती है
मेरे लिए Excel spreadsheet एकदम सही tool है। मैं हर हफ्ते बस ज़रूरी numbers जोड़ देता हूँ
इसका साहित्य विरोधाभासी और जटिल है, और यहाँ तक कि accountants भी कई बार इसे अवधारणात्मक रूप से गलत समझते हैं
मैं 20 साल से एक सरल तरीके से spreadsheet में अपना वित्त संभाल रहा हूँ।
मैं महीने में लगभग 5 मिनट update करता हूँ, और सिर्फ बिजली, heating, insurance, savings जैसे मुख्य मदों को track करता हूँ।
लक्ष्य है खर्च के रुझान समझना और सालाना budget बनाए रखना। जो पैसा बचता है, उसे बस खर्च कर देता हूँ
मैं सिर्फ $100 से ऊपर के खर्च अलग से दर्ज करता हूँ ताकि बड़े खर्चों पर नज़र रहे
मैं हर महीने bank/card CSV डाउनलोड करके Python scripts से उनका analysis करता हूँ।
LLM से लिखवाए गए code से merchant-wise spending trends देखता हूँ, और एक card को सिर्फ recurring payments के लिए dedicated रखा है ताकि बदलाव आसानी से समझ आ जाएँ
मैं Beancount के लिए Fava नाम का GUI frontend सुझाऊँगा
https://beancount.github.io/fava/
यह पूरे accounts को visualize करता है, और इसका search/query interface और real-time editing feature बहुत उपयोगी हैं
यह system सच में बहुत बढ़िया लगता है, लेकिन मैं सोचता हूँ कि non-technical partner के साथ finances manage करते समय इसे कैसे अपनाया जाए।
हम YNAB इस्तेमाल करते हैं, क्योंकि उसका UI साफ-सुथरा है और collaboration आसान है। क्या Beancount में भी ऐसा interface बनाया जा सकता है?
मैं भी पहले PTA में काफ़ी डूब गया था और logs रखना शुरू किया था, लेकिन कई banks से transactions manually डाउनलोड करना बहुत झंझट वाला निकला
लोग कहते हैं automation ही जवाब है, लेकिन असल में वे यह कैसे करते हैं — क्या Plaid जैसी API इस्तेमाल करते हैं, या web scraper और PDF parser बनाते हैं?
आखिरकार मैं YNAB को साल के $130 दे रहा हूँ। spouse satisfaction भी ऊँची है, और सब कुछ अपने-आप connect हो जाता है।
शायद YNAB API से data backup लेकर PTA को साथ-साथ चलाया जा सकता है
financial industry इस मामले में बहुत पीछे है। automation बढ़ तो रही है, लेकिन अभी भी मेहनत के मुकाबले लाभ कम है
मैं पहले YNAB इस्तेमाल करता था, लेकिन duplicate transactions की समस्या बार-बार आती थी, इसलिए आखिरकार छोड़ दिया।
मैंने तीन बार reset किया, लेकिन errors आते ही रहे, इसलिए अंत में manual tracking पर लौट आया।
अब PTA कहीं ज़्यादा stable लगता है, और ऐसा महसूस होता है कि नियंत्रण मेरे हाथ में है