Plain Text Accounting (PTA)
(plaintextaccounting.org)- Plain Text Accounting (PTA) एक तरीका है जिसमें accounting data को plain text files में दर्ज किया जाता है और Ledger, hledger, Beancount जैसे command-line-friendly tools से process किया जाता है; यह site संबंधित resources को एक जगह जुटाने वाला portal है
- Community activity Matrix/IRC, forums, Reddit, Lemmy, Hacker News, Mastodon, X, Bluesky आदि में बंटी हुई है, इसलिए सवालों, news और project-specific conversations को कई रास्तों से follow किया जा सकता है
- Learning resources में app comparisons, official documentation, accounting basics, beginner guides, cheatsheets, cookbooks, FAQ, slides और videos व्यवस्थित हैं, ताकि PTA पहली बार इस्तेमाल करने वाले लोग भी step-by-step शुरू कर सकें
- App ecosystem Ledger, Beancount और hledger के इर्द-गिर्द कई implementations और feature matrix देता है; ये तीन प्रमुख tools क्रमशः C++/Python/Haskell पर आधारित हैं और इनके 2025~2026 release records मौजूद हैं
- Import/conversion, editor plugins, invoicing, price lookup, reporting, time tracking, UI, workflows और libraries तक जुड़ाव है, इसलिए plain text accounting data को अलग-अलग work environments से जोड़ा जा सकता है
PTA की अवधारणा और plaintextaccounting.org की भूमिका
- Plain Text Accounting bookkeeping और accounting करने का तरीका है, जिसमें plain text files और Ledger, hledger, Beancount जैसे efficient command-line-friendly software का उपयोग होता है
- plaintextaccounting.org PTA community के tools, documents और practical examples तक जाने वाले portal की भूमिका निभाता है
- Site repository updates लिए जा सकते हैं, और financial reports व sponsorship guidance भी साथ में दी जाती है
Community और discussion channels
- Real-time conversations Matrix के
#plaintextaccounting, plaintextaccounting Matrix space और Libera Chat के#plaintextaccountingIRC channel से जुड़ी हैं - Discussions और news कई public channels में फैले हुए हैं
- PTA forum
- /r/plaintextaccounting
- lemmy.world/c/plaintextaccounting
- Hacker News पर plain text accounting से संबंधित stories/comments search
- Mastodon पर
#plaintextaccounting,#ledgercli,#hledger,#beancount - Twitter/X, Bluesky search और hashtags
- Stack Exchange में
ledger-cliऔरhledgertags व search links दिए गए हैं - Project-specific mailing lists और chats, साथ ही
This Week In Hledgerभी लिंक किए गए हैं
Documentation और learning resources
- App comparison resources में PTA apps list, feature matrix, “कौन-सा PTA app चुनना चाहिए” FAQ और Syntax Quick Reference शामिल हैं
- Apps की official documentation के रूप में Ledger, hledger, Beancount, rustledger, Ledger(Go), Tackler और pta documentation लिंक हैं
- Accounting basics resources में PTA FAQ, hledger के Accounting basics/links, Beancount का Double-Entry Counting Method, “Accounting for Computer Scientists” आदि शामिल हैं
- Introductory resources शुरुआती बिंदुओं के हिसाब से बांटे गए हैं
- Cheatsheets, cookbooks, FAQ, slides और video resources भी अलग sections में व्यवस्थित हैं; video section में note है कि YouTube पर PTA videos ढूंढना मुश्किल है
प्रमुख PTA apps और feature comparison
- PTA शुरू करते समय site पर सूचीबद्ध apps में से एक या अधिक को try किया जा सकता है, और आम तौर पर apps के बीच data migration संभव है
- Current major apps list में कई projects साथ में व्यवस्थित हैं
- Ledger: C++, 2003 में शुरू, 2025 में last release, लगभग 245 committers, लगभग 5.9k stars
- Beancount: Python, 2008 में शुरू, 2026 में last release, लगभग 103 committers, लगभग 5.5k stars
- hledger: Haskell, 2007 में शुरू, 2026 में last release, लगभग 194 committers, लगभग 4.4k stars
- Transity, Ledger(Go), Abandon, zhang, Tackler, rustledger, knut, acc, ledg आदि भी current list में शामिल हैं
- पुराने या inactive projects placc, budget-cli, mynt, awk-pta, pta, blossom, .Net Ledger, monescript, Penny, UMM, cl-ledger आदि के रूप में अलग से व्यवस्थित हैं
- Ledger, hledger और Beancount का feature matrix 2024-09 तक updated है, और user interface, installation, help, input/output formats, commands, settings, extensibility, account names, budgets, charts, price lookup, queries, validation आदि की तुलना करता है
- Representative differences उन items पर केंद्रित हैं जो tool choice पर सीधे असर डालते हैं
- CLI में Ledger का
ledger, hledger काhledger, Beancount काbeanqueryजुड़ा है - Easy installation और setup के लिए Ledger/hledger को
yes, Beancount कोnoदिखाया गया है - hledger text/html/csv/tsv/fods/beancount/sql/json output formats देता है
- Beancount की validation हमेशा strict दिखाई गई है, जबकि Ledger और hledger को configurable दिखाया गया है
- CLI में Ledger का
Software ecosystem
- AI section में hledger इस्तेमाल करने वाला local-first multimodel AI agent
accountant24, और hledger व Obsidian vault में Claude Code को agent layer के रूप में इस्तेमाल करने वाली setup post शामिल है - Alternative distributions/configurations के रूप में Full-fledged hledger, hledger-flow, Lazy Beancount, hledger-youtube-business, rtrLEDGER, docker-finance व्यवस्थित हैं
- Data conversion/import बड़ा हिस्सा है; Ledger और hledger के built-in CSV conversion के अलावा Beancount v2 के import tools,
banks2ledger,beancount-import,beancount2ledger,hledger2beancount,ledger2beancount,plaid2textआदि सूचीबद्ध हैं- GnuCash, Intuit/QuickBooks/QIF, KMyMoney, YNAB से *ledger या Beancount में migrate करने वाले tools भी अलग sub-sections में व्यवस्थित हैं
- Data generation tools price transactions, depreciation, interest, recurring transactions, capital gains/loss postings आदि बनाने के काम आते हैं
- Editor plugins Emacs, JetBrains IDE, Nano, Sublime, TextMate, Vim और VS Code के लिए बांटे गए हैं
- उदाहरण:
ledger-mode,beancount-mode,hledger-mode,vim-ledger,vim-beancount,hledger-vscode,vscode-beancount
- उदाहरण:
- Formatting tools के रूप में
beancount-black,beancount-black web app,hledger-fmtसूचीबद्ध हैं - Invoicing tool के रूप में hledger timedot files से invoices generate करने वाला Go tool
kairosपेश किया गया है
UI, reporting, workflow, libraries
- Price lookup tools में Beancount का
bean-price,hledger-stockquotes,ledger-get-prices,pricehist, Yahoo Finance-आधारित stock price और exchange rate lookup tools आदि शामिल हैं - Reporting tools budgets, asset analysis, variance reports, internal rate of return, charts, Sankey, PDF output, capital gains calculation आदि तक extend होते हैं
- Time tracking tools में org, Taskwarrior hook, Toggl CSV, timeclock conversion और hledger-based time tracking examples शामिल हैं
- Terminal UI
hledger add,hledger-ui,hledger-iadd,bean-add,ledger xact,puffin,regdelआदि के जरिए transaction entry, lookup और editing support करता है - GUI, web और mobile UI भी अलग tools के रूप में लिंक हैं
- Web: fava, hledger-web, Paisa, BeanHub
- Mobile: Beancount Mobile CE, beancount-mobile, NanoLedger, cashier, cone, MoLe
- GUI: fruit-credits, Ledgera, Prudent, Surebeans आदि
- Workflow section CSV से hledger journals generate करने या Docker-based setup से traditional finance और cryptocurrency finances को track/report करने वाली configurations cover करता है
- Libraries section Beancount parser, BeanHub API, hledger-lib, hledger-web JSON API, node-hledger, pyhledger आदि जैसे development components को जुटाता है, जो PTA files को parse, query, report और integrate करते हैं
1 टिप्पणियां
Hacker News की राय
तुरंत सख्त वर्गीकरण मांगने वाले सिस्टम कुछ लोगों के लिए सही नहीं बैठते। जिस कंपनी में मैं पहले काम करता था, वहाँ हम 2-स्टेप तरीका इस्तेमाल करते थे: पहले iPhone Notes में
-50 Alice tools,+20 Bob returned loanजैसे छोटे नोट लिखते, और बाद में एक script date, keyword, counterparty और internal analytics items को parse करके उन्हें double-entry bookkeeping template में बदल देती थीजिन items को script समझ नहीं पाती थी, उन्हें manual classify करते और जरूरत होने पर rules list में जोड़ देते थे। Alice और Bob को एक जैसी vocabulary इस्तेमाल करने की जरूरत न पड़े, इसलिए हर व्यक्ति के लिए mapping list रखी जाती थी
पैसे आते-जाते समय कोई लाइन में खड़ा हो, drive कर रहा हो, या बातचीत में हो, और हर बार
Cat1:cat2:cat3जैसा format भरेगा—यह कल्पना करना मुश्किल है। आखिर में लोग शायद फिर छोटे memo या chat पर लौट जाएंगे, या दिन के अंत में नहीं बल्कि शायद weekend पर “याद करके” भरने की कोशिश करेंगेText-based tool हो तो iPhone memo लेकर उसे ledger format में बदलने वाली script जोड़ने जैसे मनचाहे workflow आप स्वतंत्र रूप से बना सकते हैं, इसलिए इसे शिकायत की तरह देखना थोड़ा अजीब लगता है
हर quarter bank accounts, credit cards और Zoho से CSV download करते हैं, और Ruby script memo field देखकर ledger file में convert कर देती है। script और output में थोड़ा-थोड़ा adjustment करना पड़ता है, लेकिन 95% से ज्यादा automation हो जाता है
bonus के तौर पर, ledger file में consistency checks भी जोड़ते हैं, जैसे bank से मिले balance से match हो रहा है या items current period के अंदर हैं या नहीं
self-employed होने के समय से लगभग 20 सालों से ledger-cli इस्तेमाल कर रहा हूँ, और यह perfect नहीं है फिर भी बहुत संतुष्ट हूँ। सब कुछ plain text है, इसलिए scripts से process कर सकता हूँ, VIM में पढ़ सकता हूँ, और data आसानी से निकाल सकता हूँ
अभी चल रही मेरी एक company की ledger file 2016 के बाद की transactions वाली 2MB की plain text file है। accounts/categories को बहुत ज्यादा granular बनाने में मुझे बहुत value नहीं दिखी, लेकिन overall tracking के लिए यह indispensable tool रहा है
ledger जैसे tools में इस्तेमाल होने वाली double-entry bookkeeping सीखना भी मजेदार था, और पीछे मुड़कर देखें तो मुश्किल नहीं था; यह जिंदगी भर काम आने वाली skill लगती है
account/category strategy के लिए मैं Canada Revenue Agency द्वारा tax return में मांगी जाने वाली expense categories से align करने का तरीका इस्तेमाल करता हूँ। शुरुआत में मैंने hosting costs, prototype/manufacturing costs जैसी logical categories बनाई थीं, लेकिन कई साल CRA categories में remap करते हुए समझ आया कि शुरू से ही tax categories के हिसाब से रखना year-end filing को बहुत आसान बना देता है
अगर data SQLite में होता तो यह बहुत आसानी से implement हो जाता, लेकिन फिर text editor से सीधे edit करने का फायदा खो जाता
LLM की वजह से plain text accounting को लगातार करते रहना कहीं आसान हो गया है। खासकर bank statements को hledger में import करते हुए manual input से बचने में मदद मिलती है
मैं bank transactions को hledger accounts से map करने वाली JSON file इस्तेमाल करता हूँ, और अगर कोई transaction बिना नई mapping के हो तो Python script Claude के लिए prompt generate करती है। Claude account list देखकर नए transaction की mapping suggest करता है, और उसके आधार पर hledger journal entry लौटाता है
इसके बाद एक और script उस महीने की bank transactions की hledger entries साफ-सुथरे रूप में output करती है, और कुछ मिनट edit करके finalize कर देता हूँ। mapping instructions, जो पुराने तरीके से fragile regex और conditionals का ढेर बन जाते, अब natural language में लिखे जा सकते हैं
Beancount इस्तेमाल करते हुए learning process, data import tools लिखना, और accounting को खुद handle करने का अनुभव मुझे अच्छा लगा। लेकिन आखिरी बार data import किए लगभग 1 साल हो गया है। हर महीने करने का सोचा था, पर automation काफी होने के बावजूद 30–60 मिनट लगते हैं और झंझट लगता है
जब mobile confirmation भी जरूरी हो गया, तो बस छोड़ दिया
मुझे भी import किए करीब 1 साल हो गया है, और इसे फिर से चालू करने के लिए मुझे बस यही तरीका सूझता है कि कई दिनों में एक-एक महीने का data upload करते हुए छोटे हिस्सों में बाँट दूँ
https://plaid.com/
निजी और कई LLCs की bookkeeping/accounting के लिए ledger का इस्तेमाल करता/करती हूँ। अगर आप terminal के आदी हैं, CLI अच्छी तरह चलाते हैं, vim या emacs, sed/awk की बुनियादी समझ रखते हैं, और bash/python/perl/ruby scripting अक्सर करते हैं, तो ledger और double-entry bookkeeping सीखकर उस पर shift करना, आपके मौजूदा तरीके की तुलना में कहीं ज़्यादा संतोषजनक हो सकता है
transactions को जल्दी import करने के लिए reckon उपयोगी है: https://github.com/cantino/reckon
समस्या को
includeसे छोटे हिस्सों में बाँटना भी अच्छा है।bal --dcअमेरिकी accountants को थोड़ा परिचित लग सकता है, लेकिन वे अक्सर ledger के negative numbers इस्तेमाल करने के तरीके को ठीक से नहीं समझते, इसलिए DR/CR style में बदलने वाली कुछ scripts लिख देना ज़्यादा आसान लगा। जिन accountants से पाला पड़ा, वे abstractions को कितनी खराब तरह संभालते थे, यह देखकर हैरानी हुईअगर एक tip और जोड़नी हो तो वह यह है कि सब कुछ Makefile या किसी मिलती-जुलती चीज़ से बाँधकर रखें। account के हिसाब से transaction files अक्सर बहुत बँटी होती हैं, और सही files include करने वाला command आसानी से लंबा हो जाता है
अलग-अलग graphs और summary scripts की सही syntax भी हर बार याद नहीं रहती, लेकिन make इस्तेमाल करने पर
make cashflow,make balance 'A=Checking',make balance-plot 'A=retirement'जैसे call किए जा सकते हैंbasic tutorial से आगे, ज़्यादा जटिल परिस्थितियों में Ledger को प्रभावी ढंग से इस्तेमाल करने की practical recipes पर मैंने कई लेख लिखे हैं: https://felixcrux.com/blog/ledger-practices
bank transactions import करते समय पहले उन्हें counterparty के नाम वाले account में assign करता/करती हूँ, फिर एक script
ledger printसे counterparty-wise दूसरी journal file बनाती है, original transaction को reverse करती है और उसे अस्थायी रूप सेUnknownproject औरUnknowncategory sub-accounts में डाल देती हैइसके बाद bookkeeper transactions को किसी खास invoice से match करता/करती है और
Project:Categoryaccount में assign करता/करती है; ज़रूरत हो तो एक single payment को कई projects/categories में बाँटता/बाँटती है। सभी bank transaction journals और counterparty journals include करने परledger balसे जाँचा जा सकता है कि bookkeeping पूरी हुई या नहींplain text accounting शानदार है, लेकिन मेरे हिसाब से कई लोगों के लिए सबसे बड़ी बाधा bank data को standard format में download करना है
banks CSV या Excel से आगे कुछ support करने के लिए सक्रिय नहीं होंगे, और Yodlee या Plaid जैसे data aggregation platforms open source या hobby users के लिए friendly नहीं हैं
पहले Wesabe(https://en.wikipedia.org/wiki/Wesabe) नाम की एक company ने desktop पर bank sync करने वाला software बनाया था। Mint.com की वजह से वह लगभग बाहर हो गई, लेकिन वह approach अब भी याद आती है और open source में भी संभव लगती है
अभी इसे आज़माया नहीं है, लेकिन एक SaaS bookkeeping company की bank connection समस्या में कई दिनों में 4 घंटे मदद करने के बाद, मैं खुशी से इस पर समय लगाने को तैयार हूँ
हर बार transactions reconcile करते समय ऐसे system से लड़ना पड़ता है जिसके अंदर झाँक भी नहीं सकते और जिसे खुद ठीक भी नहीं कर सकते। अब संदेह होने लगा है कि लगाया गया effort इसके लायक है या नहीं, और अगर कोई ठीक-ठाक tool हो तो CSV को सीधे संभालना बेहतर होगा। वैसे उस company ने इसे “normal thing” बताते हुए refund भी नहीं दिया
linting भी है, और result पसंद आए तो script save करके कभी भी फिर से import कर सकते हैं। stocks जैसी चीज़ें track करने के लिए commodity price download भी support करता है
charts मेरे taste के हिसाब से पर्याप्त general-purpose नहीं हैं, इसलिए data को कहीं और export करता/करती हूँ, लेकिन data entry के लिए यह शानदार है
इसलिए PDF download करके data extract करता/करती हूँ, लेकिन यह ज़रूरत से ज़्यादा painful है। machine-readable PDF देने के लिए बस ऐसे सरल rules follow करने होंगे जिनसे transaction fields के 3–4 fields और date/balance जैसे कुछ statement fields कमजोर heuristics के बिना निकाले जा सकें
branded और human-readable PDF तथा machine-readable PDF आपस में conflict नहीं करते
योजना थी कि उस data को process करके accounting system में डालूँ, लेकिन कर नहीं पाया/पाई, और बाद में phone खराब हो गया तो Tasker actions भी खो गए। फिर से implement करने का मन नहीं बचा
संबंधित domain अभी भी वैसा ही है। 2023 का लेख: https://news.ycombinator.com/item?id=36022005, 2021 का लेख: https://news.ycombinator.com/item?id=28420797, 2016 का लेख: https://news.ycombinator.com/item?id=11164330
concept के दूसरे mentions https://hn.algolia.com/?q=Plain+Text+Accounting पर और देखे जा सकते हैं
यह जानने की उत्सुकता है कि दूसरे लोग plain text accounting tools को असल में कैसे इस्तेमाल करते हैं। क्या वे इन्हें खर्च की आदतें समझने और व्यवहार बदलने के लिए इस्तेमाल करते हैं, लागत·आय·net worth track करने के लिए, या फिर व्यवस्थित प्रक्रिया अपने-आप में आकर्षक लगती है
जब भी यह विषय दिखता है, पूरी तरह इसमें डूब जाने की इच्छा और पुराने प्रयासों को लगातार न निभा पाने का अपराधबोध—दोनों साथ आते हैं। अभी तो डेढ़ महीने से अपना personal ledger अपडेट नहीं किया है, इसलिए अपराधबोध वाला हिस्सा ज्यादा बड़ा है
आखिर में, मुझे पक्का नहीं है कि मैं इसे क्यों इस्तेमाल कर रहा हूं, इसलिए समय बीतने पर transactions दर्ज करना सिर्फ दर्ज करने के लिए दर्ज करने जैसा लगने लगता है
काम के खर्च भी ऐसे ही हैं। उपकरण या service का खर्च अपने card से pay करता हूं और बाद में report करके cash या transfer से वापस लेता हूं। हालांकि कुछ देशों या businesses में यह तरीका काम नहीं करता
निजी रोजमर्रा के खर्चों के बारे में bank और अनुभव से पहले ही पता चल जाता है, इसलिए accounting तक जाने की जरूरत नहीं। भावनात्मक motive नहीं, financial motive होना चाहिए। अगर पता हो कि accounting छोड़ने पर कोई दोस्त शराब के बिल में सैकड़ों dollars उड़ा देगा या company एक HDMI cable मुफ्त में ले जाएगी, तो बिना हिचक रकम enter कर देता हूं। personal accounting ठीक से न चलने की वजह यह है कि नुकसान पैसे का नहीं, सिर्फ analysis का होता है
Wise transactions import करने या exchange rates track करने जैसी प्रक्रियाओं को automate करने वाली कुछ scripts भी हैं। लेकिन daily personal खर्च या budget management में इसे इस्तेमाल करने लायक discipline नहीं है
रोज बाहर खाने पर कितना बेकार खर्च हुआ, यह देखना और अगर वही रकम index fund में डालता तो compounding से क्या परिणाम होता—यह calculate करना, बाहर खाने की आदत कम करने में बहुत मददगार रहा। customer receivables और actual cash flow·expected income based cash flow को अलग-अलग भी देख सकता हूं
savings account balance को मन में “investment goal 40%, gifts 1%” की तरह बांटकर देखने से बड़ा balance देखकर impulsively खर्च कर देने की घटनाएं कम हुईं। asset growth, category-wise खर्च में बढ़ोतरी·कमी के charts बनाता हूं, और उन बदलावों का जीवन पर net effect कैसा रहा यह notes के साथ webpage में dump करने वाला program भी है, जिसे हर साल अगली planning तय करते समय इस्तेमाल करता हूं
ledger file को Excel में convert करके accountant को annual tax filing के लिए भेजने वाली Python script भी है। business ledger file अलग रखता हूं, उसे सीधे manually manage नहीं करता; accountant software से data export करके घर पर अपनी calculations करता हूं
business में इसे revenue बढ़ने पर खर्च कैसे बढ़ेंगे इसका cash flow forecast, department-wise spending outliers detect करने, hiring बढ़ानी है या marketing spend बढ़ाना है, और ROIC जैसे metrics calculate करने में इस्तेमाल करता हूं
double-entry bookkeeping bank statements import करके ledger generate करने और फिर accounting mismatches पकड़ने में मदद करती है। discretionary spending, employee benefits, business input costs जैसे use-wise accounts अलग करता हूं और main account से हर हफ्ते deposit करवाकर anomalies check करता हूं
पहले एक accountant ने transparent तरीके से बताए बिना fake expenses books में चढ़ा दिए थे, जिससे tax बहुत बचा हुआ दिखा, लेकिन बाद में court जाना पड़ा और भारी fine व late penalties देनी पड़ीं। अब accountant पर भरोसा नहीं करता और जरूर double-check करता हूं
Stripe, bank statements, accountant books आदि import करने वाली बहुत सारी automation scripts हैं, और Python से उन्हें आपस में reconcile करके mismatches ढूंढता हूं। programmer होने के नाते plain text accounting मुझे अच्छी तरह suit करती है, और hledger के ऊपर मैंने कई सालों में अपना खुद का system बना लिया है