Düz Metin Muhasebesi (Plain Text Accounting, PTA)
(plaintextaccounting.org)- Plain Text Accounting (PTA), muhasebe verilerini düz metin dosyalarına kaydedip bunları Ledger, hledger, Beancount gibi komut satırı dostu araçlarla işleme yaklaşımıdır; bu site de ilgili kaynakları tek bir yerde toplayan bir portaldır
- Topluluk etkinlikleri Matrix/IRC, forum, Reddit, Lemmy, Hacker News, Mastodon, X, Bluesky gibi kanallara dağılmıştır; böylece soru, haber ve proje bazlı sohbetler farklı yollar üzerinden takip edilebilir
- Öğrenme kaynakları uygulama karşılaştırmaları, resmî belgeler, muhasebe temelleri, başlangıç rehberleri, cheat sheet'ler, cookbook'lar, SSS, slaytlar ve videolar halinde düzenlenmiştir; bu sayede PTA'yı ilk kez kullananlar da adım adım ilerleyebilir
- Uygulama ekosistemi, Ledger, Beancount ve hledger etrafında birçok uygulama ve özellik matrisi sunar; öne çıkan 3 aracın temeli sırasıyla C++/Python/Haskell'dir ve 2025~2026 sürüm kayıtları bulunur
- İçe aktarma·dönüştürme, editör eklentileri, fatura, fiyat sorgulama, raporlama, zaman kaydı, UI, iş akışı ve kütüphanelere kadar uzanan bağlantılar sayesinde düz metin muhasebe verileri farklı çalışma ortamlarına entegre edilebilir
PTA kavramı ve plaintextaccounting.org'un rolü
- Plain Text Accounting, düz metin dosyaları ve Ledger, hledger, Beancount gibi verimli, komut satırı dostu yazılımlarla defter tutma ve muhasebe yapma yaklaşımıdır
- plaintextaccounting.org, PTA topluluğunun araçlarına, belgelerine ve pratik örneklerine açılan bir portal görevi görür
- Site deposundaki güncellemeler takip edilebilir; ayrıca finansal raporlar ve destek bilgileri de sunulur
Topluluk ve tartışma kanalları
- Gerçek zamanlı sohbetler Matrix'teki
#plaintextaccounting, plaintextaccounting Matrix space ve Libera Chat'teki#plaintextaccountingIRC kanalında sürer - Tartışmalar ve haberler çeşitli açık kanallara dağılmıştır
- PTA forum
- /r/plaintextaccounting
- lemmy.world/c/plaintextaccounting
- Hacker News'te plain text accounting ile ilgili stories/comments araması
- Mastodon'da
#plaintextaccounting,#ledgercli,#hledger,#beancount - Twitter/X, Bluesky aramaları ve hashtag'ler
- Stack Exchange'te
ledger-clivehledgeretiketleri ile arama bağlantıları sunulur - Proje bazlı e-posta listeleri ve sohbetler ile
This Week In Hledgerde bağlantılanmıştır
Belgeler ve öğrenme kaynakları
- Uygulama karşılaştırmaları bölümü, PTA uygulama listesi, özellik matrisi, “Hangi PTA uygulamasını seçmeliyim?” SSS'si ve Syntax Quick Reference'ı içerir
- Uygulamaların resmî belgeleri olarak Ledger, hledger, Beancount, rustledger, Ledger(Go), Tackler ve pta belgelerine bağlantılar verilir
- Muhasebe temelleri kaynakları arasında PTA SSS'si, hledger'in Accounting basics/links bölümü, Beancount'un Double-Entry Counting Method içeriği ve “Accounting for Computer Scientists” yer alır
- Başlangıç kaynakları farklı giriş noktalarına göre ayrılmıştır
- Cheat sheet'ler, cookbook'lar, SSS, slaytlar ve video kaynakları da ayrı bölümlerde düzenlenmiştir; video bölümünde YouTube'da PTA videolarını bulmanın zor olduğuna dair bir not bulunur
Başlıca PTA uygulamaları ve özellik karşılaştırması
- PTA'ya başlarken sitede listelenen uygulamalardan birini veya birkaçını deneyebilirsiniz; genel olarak uygulamalar arasında veri migrasyonu mümkündür
- Mevcut başlıca uygulama listesinde çeşitli projeler birlikte düzenlenmiştir
- Ledger: C++, 2003'te başladı, son sürüm 2025'te, yaklaşık 245 committer, yaklaşık 5.9k stars
- Beancount: Python, 2008'de başladı, son sürüm 2026'da, yaklaşık 103 committer, yaklaşık 5.5k stars
- hledger: Haskell, 2007'de başladı, son sürüm 2026'da, yaklaşık 194 committer, yaklaşık 4.4k stars
- Transity, Ledger(Go), Abandon, zhang, Tackler, rustledger, knut, acc, ledg de mevcut listede yer alır
- Geçmişte kalmış veya etkin olmayan projeler ise placc, budget-cli, mynt, awk-pta, pta, blossom, .Net Ledger, monescript, Penny, UMM, cl-ledger olarak ayrıca düzenlenmiştir
- Ledger, hledger ve Beancount için özellik matrisi, 2024-09 itibarıyla güncellenmiştir; kullanıcı arayüzü, kurulum, yardım, giriş/çıkış formatları, komutlar, yapılandırma, genişletilebilirlik, hesap adları, bütçe, grafikler, fiyat sorgulama, sorgular ve doğrulama karşılaştırılır
- Temel farklar, araç seçiminde doğrudan etkili olan maddelere odaklanır
- CLI olarak Ledger'da
ledger, hledger'dahledger, Beancount'tabeanquerybağlantılanır - Kolay kurulum ve yapılandırma için Ledger/hledger
yes, Beancount isenoolarak gösterilir - hledger; text/html/csv/tsv/fods/beancount/sql/json çıktı formatlarını sunar
- Beancount'un doğrulaması her zaman sıkı olarak gösterilirken, Ledger ve hledger yapılandırılabilir olarak belirtilir
- CLI olarak Ledger'da
Yazılım ekosistemi
- Yapay zeka bölümünde, hledger kullanan yerel öncelikli çok modelli yapay zeka ajanı
accountant24ile hledger ve Obsidian vault üzerinde Claude Code'u ajan katmanı olarak kullanan kurulum yazısı yer alır - Alternatif dağıtım ve yapılandırma örnekleri olarak Full-fledged hledger, hledger-flow, Lazy Beancount, hledger-youtube-business, rtrLEDGER ve docker-finance listelenir
- Veri dönüştürme·içe aktarma büyük bir yer tutar; Ledger ve hledger'in yerleşik CSV dönüştürmesine ek olarak Beancount v2 import aracı,
banks2ledger,beancount-import,beancount2ledger,hledger2beancount,ledger2beancount,plaid2textve daha fazlası sıralanır- GnuCash, Intuit/QuickBooks/QIF, KMyMoney, YNAB'dan *ledger veya Beancount'a taşıma araçları da ayrı alt bölümde toplanmıştır
- Veri üretim araçları; fiyat işlemleri, amortisman, faiz, yinelenen işlemler ve sermaye kazancı/kaybı posting'leri oluşturmak için kullanılır
- Editör eklentileri Emacs, JetBrains IDE, Nano, Sublime, TextMate, Vim ve VS Code için ayrılmıştır
- Örnekler:
ledger-mode,beancount-mode,hledger-mode,vim-ledger,vim-beancount,hledger-vscode,vscode-beancount
- Örnekler:
- Biçimlendirme araçları olarak
beancount-black,beancount-black web app,hledger-fmtlistelenir - Fatura araçları arasında, hledger timedot dosyalarından fatura üreten Go aracı
kairostanıtılır
UI, raporlama, iş akışı, kütüphaneler
- Fiyat sorgulama araçları arasında Beancount'un
bean-price,hledger-stockquotes,ledger-get-prices,pricehistve Yahoo Finance tabanlı hisse/fx sorgulama araçları yer alır - Raporlama araçları; bütçe, varlık analizi, fark raporları, iç getiri oranı, grafikler, Sankey, PDF çıktısı ve sermaye kazancı hesaplamasına kadar genişler
- Zaman kaydı araçları; org, Taskwarrior hook, Toggl CSV, timeclock dönüştürme ve hledger tabanlı zaman takibi örneklerini içerir
- Terminal UI tarafında
hledger add,hledger-ui,hledger-iadd,bean-add,ledger xact,puffin,regdelgibi araçlar işlem girişi, görüntüleme ve düzenlemeyi destekler - GUI, web ve mobil UI'lar da ayrı araçlar olarak bağlantılanmıştır
- Web: fava, hledger-web, Paisa, BeanHub
- Mobil: Beancount Mobile CE, beancount-mobile, NanoLedger, cashier, cone, MoLe
- GUI: fruit-credits, Ledgera, Prudent, Surebeans vb.
- İş akışı bölümü, CSV'den hledger journal üretmeyi veya Docker tabanlı kurulumlarla geleneksel finans ve kripto finansını takip edip raporlamayı ele alır
- Kütüphaneler bölümü; Beancount parser'ı, BeanHub API, hledger-lib, hledger-web JSON API, node-hledger, pyhledger gibi PTA dosyalarını parse etme, sorgulama, raporlama ve entegrasyon için geliştirici bileşenlerini bir araya getirir
1 yorum
Hacker News yorumları
Hemen katı sınıflandırma isteyen sistemler bazı insanlara uymuyor. Eskiden çalıştığım şirkette iki aşamalı bir yöntem kullanıyorduk: önce iPhone Notes’a
-50 Alice tools,+20 Bob returned loangibi kısa notlar yazılıyor, sonra bir script tarih, anahtar kelime, karşı taraf ve iç analiz kalemlerini parse edip bunları çift taraflı muhasebe şablonuna çeviriyordu.Script’in anlayamadığı kalemler elle sınıflandırılıyor, gerekirse kural listesine ekleniyordu; Alice ile Bob’un aynı kelimeleri kullanmak zorunda kalmaması için kişi bazlı eşleştirme listeleri de vardı.
Para her el değiştirdiğinde sırada bekleyen, araba kullanan ya da sohbet eden birinin her seferinde
Cat1:cat2:cat3gibi bir formatı dolduracağını hayal etmek zor. Sonunda yine kısa notlara ya da sohbete dönmeleri veya günün sonunda değil, muhtemelen hafta sonu “hatırlayıp” doldurmaya çalışmaları daha olası.Metin tabanlı bir araçta iPhone notlarını alıp ledger formatına çeviren bir script eklemek gibi istediğiniz akışı özgürce kurabilirsiniz; bu yüzden bunu bir şikâyet olarak görmek biraz tuhaf geliyor.
Her çeyrekte banka hesabından, kredi kartından ve Zoho’dan CSV indiriyoruz; Ruby script’i not alanına bakıp bunları ledger dosyasına dönüştürüyor. Script ve çıktılar biraz elden geçirme istiyor ama %95’ten fazlası otomatikleşmiş durumda.
Ek olarak, bankadan gelen bakiyeyle uyuşup uyuşmadığı ve kalemlerin mevcut dönem içinde olup olmadığı gibi tutarlılık kontrollerini de ledger dosyasına ekliyoruz.
Serbest çalışmaya başladığım andan beri, neredeyse 20 yıldır ledger-cli kullanıyorum; kusursuz olmasa da çok memnunum. Her şey düz metin olduğu için script’lerle işleyebiliyor, VIM’de okuyabiliyor ve verileri kolayca çıkarabiliyorum.
Şu anda işlettiğim şirketlerden birinin ledger dosyası, 2016’dan bu yana işlemleri içeren 2 MB’lık bir düz metin dosyası. Hesapları/sınıfları çok ayrıntılandırmada büyük bir değer görmedim ama genel takibi yapmak için vazgeçilmez bir araç oldu.
ledger gibi araçların kullandığı çift taraflı muhasebeyi öğrenmek de keyifliydi; geriye dönüp bakınca zor değildi ve ömür boyu işe yarayacak bir beceri gibi geliyor.
Hesap/sınıflandırma stratejisi olarak, Kanada Gelir İdaresi’nin vergi beyannamesinde istediği gider sınıflarıyla hizalama yöntemini kullanıyorum. Başta barındırma giderleri, prototip/üretim giderleri gibi mantıksal sınıflar oluşturmuştum; ama yıllarca bunları CRA sınıflarına yeniden eşledikten sonra, en baştan vergi sınıflarına göre düzenlemenin yıl sonu beyanını çok daha basitleştirdiğini fark ettim.
Veri SQLite olsaydı bunu uygulamak çok daha kolay olurdu; ama o zaman da metin düzenleyiciyle doğrudan değiştirebilme avantajını kaybederdik.
LLM sayesinde düz metin muhasebesini düzenli sürdürmek çok daha kolaylaştı. Özellikle banka ekstrelerini hledger’a aktarırken manuel girişi önlemeye yardımcı oluyor.
Banka işlemlerini hledger hesaplarına eşleyen bir JSON dosyası kullanıyorum; yeni eşlemesi olmayan bir işlem varsa Python script’i Claude için bir prompt oluşturuyor. Claude hesap listesini görüp yeni işlemin eşlemesini öneriyor ve buna dayanarak hledger yevmiye kaydını döndürüyor.
Ardından başka bir script o ayın banka işlemleri için hledger yevmiye kayıtlarını temiz biçimde yazdırıyor; birkaç dakika düzeltip kesinleştiriyorum. Eskiden kırılgan regex ve koşul yığınlarına dönüşecek eşleme talimatlarını artık doğal dille yazabiliyorum.
Beancount kullanırken öğrenme sürecinden, veri içe aktarma araçları yazmaktan ve muhasebeye doğrudan dokunmaktan keyif aldım. Ama en son veri içe aktarmamın üzerinden neredeyse 1 yıl geçti; her ay yapmayı planlamıştım, fakat epey otomasyon olsa bile 30–60 dakika sürüyor ve zahmetli geliyor.
Mobil doğrulama da gerekli hale gelince tamamen vazgeçtim.
Benim de içe aktarma yapmayalı yaklaşık 1 yıl oldu; tekrar canlandırmak için aklıma gelen tek yol, birkaç güne yayarak birer aylık parçalar halinde yüklemek.
https://plaid.com/
Kişisel işlerim ve birkaç LLC’nin defter tutma/muhasebesi için ledger kullanıyorum. Terminale aşinaysanız, CLI’da rahatsanız; vim veya emacs, sed/awk temelleri ve bash/python/perl/ruby betiklemeyi sık kullanıyorsanız, ledger ve çift taraflı kayıt öğrenip buna geçmeniz şu anki yönteminizden çok daha tatmin edici olabilir.
İşlemleri hızlıca içe aktarmak için reckon işe yarıyor: https://github.com/cantino/reckon
Sorunu
includeile parçalara bölmek de iyi.bal --dcABD’deki muhasebecilere biraz tanıdık gelebilir; ama ledger’ın negatif sayıları kullanma biçimini çoğu zaman doğru anlamadıklarından, DR/CR stiline dönüştüren birkaç betik yazmak daha kolay oldu. Çalıştığım muhasebecilerin soyutlamalarla başa çıkmakta ne kadar zorlandığını görünce şaşırdımTek bir ipucu ekleyecek olsam, her şeyi bir Makefile veya benzeriyle bir araya bağlamanız olurdu. Hesap başına çok sayıda işlem dosyası bölünmüş oluyor ve doğru dosyaları dahil eden komut kolayca uzayabiliyor.
Çeşitli grafik ve özet betiklerinin doğru söz dizimini de her seferinde hatırlayamıyorum; make kullanınca
make cashflow,make balance 'A=Checking',make balance-plot 'A=retirement'gibi çağırabiliyorsunuzLedger’ı temel eğitimlerin ötesinde, daha karmaşık durumlarda etkili kullanmaya yönelik birkaç pratik reçete yazısı yazdım: https://felixcrux.com/blog/ledger-practices
Banka işlemlerini içe aktarırken önce karşı taraf adındaki hesaba atıyoruz; ardından bir betik
ledger printile karşı taraf bazında ikinci bir günlük dosyası oluşturup asıl işlemi ters çeviriyor ve geçici olarakUnknownprojesi ileUnknownkategori alt hesabına koyuyor.Sonra defter sorumlusu işlemi belirli bir faturayla eşleştirip
Project:Categoryhesabına atıyor; gerekirse tek bir ödemeyi birden fazla proje/kategoriye bölüyor. Tüm banka işlem günlükleri ve karşı taraf günlükleri dahil edildiğinde, defter kaydının tamamlanıp tamamlanmadığıledger balile kontrol edilebiliyorDüz metin muhasebe harika, ama bence birçok kişi için en büyük engel banka verilerini standart bir biçimde indirebilmek.
Bankalar CSV veya Excel’in ötesini aktif olarak desteklemeyecek; Yodlee ya da Plaid gibi veri toplama platformları da açık kaynak ya da hobi kullanıcılarına pek dostane değil.
Eskiden Wesabe(https://en.wikipedia.org/wiki/Wesabe) adlı bir şirket, masaüstünde banka senkronizasyonu yapan bir yazılım geliştirmişti. Mint.com yüzünden fiilen geri planda kaldı, ama o yaklaşım hâlâ aklımda ve açık kaynakta da mümkün görünüyor
Henüz denemedim ama bir SaaS defter tutma şirketinin banka bağlantısı sorununa birkaç gün içinde 4 saat yardım ettikten sonra buna seve seve zaman ayırırım.
İşlemleri mutabıklaştırdığım her seferinde içini göremediğim ve doğrudan düzeltemediğim bir sistemle boğuşuyorum. Artık harcadığım emeğe değip değmediğinden şüpheliyim; kullanışlı bir araç varsa CSV’yi doğrudan ele almak daha iyi olur. Bu arada o şirket bunun “sıradan bir durum” olduğunu söyleyip para iadesi de yapmadı
Lint de var; sonuçtan memnun kalırsanız betiği kaydedip istediğiniz zaman yeniden içe aktarabiliyorsunuz. Hisse senedi gibi şeyleri izlerken emtia/fiyat verisi indirmeyi de destekliyor.
Grafikler benim zevkime göre yeterince genel amaçlı değil, bu yüzden verileri başka yere aktarıyorum; ama veri girişi için harika
Bu yüzden PDF indirip veriyi çıkarıyorum; gereğinden fazla zahmetli. Makinenin kolay okuyabileceği PDF sağlamak için, işlem alanlarından 3-4 tanesini ve tarih/bakiye gibi birkaç ekstre alanını kırılgan sezgisellere ihtiyaç duymadan çıkarılabilir kılacak basit kurallara uymak yeterli.
Markalı ve insanın rahat okuyacağı PDF ile makinenin rahat okuyacağı PDF birbiriyle çelişmiyor
Bu veriyi işleyip muhasebe sistemine aktarmayı planlıyordum ama uygulamaya geçiremedim; sonra telefon bozulunca Tasker aksiyonlarını da kaybettim. Yeniden uygulayacak hevesim kalmadı
İlgili alan adı hâlâ duruyor. 2023 yazısı: https://news.ycombinator.com/item?id=36022005, 2021 yazısı: https://news.ycombinator.com/item?id=28420797, 2016 yazısı: https://news.ycombinator.com/item?id=11164330
Kavrama dair başka sözleri https://hn.algolia.com/?q=Plain+Text+Accounting adresinde daha fazla görebilirsiniz
Başkalarının düz metin muhasebe araçlarını pratikte nasıl kullandığını merak ediyorum. Harcama alışkanlıklarını anlamak ve davranış değiştirmek için mi kullanıyorlar, maliyet/gelir/net varlık takibi için mi, yoksa çekici olan düzenli sürecin kendisi mi, bilmek isterim.
Bu konuyu her gördüğümde, kendimi tamamen kaptırma isteğiyle geçmiş denemeleri sürdürememiş olmanın suçluluğu aynı anda geliyor. Şu an kişisel defterimi bir buçuk aydır güncellemediğim için suçluluk tarafı daha ağır basıyor.
Sonuçta bunu neden kullandığımdan emin olmadığım için, zaman geçtikçe işlemleri kaydetmek için kaydediyormuşum gibi hissettiriyor.
İş masrafları da benzer. Ekipman ya da servis ücretini kendi kartımla ödüyor, sonra raporlayıp nakit veya havaleyle geri alıyorum. Ancak bazı ülkelerde ya da işletmelerde bu işlemiyor.
Kişisel günlük harcamalarımı banka ve deneyimlerim sayesinde zaten biliyorum; bunun için muhasebe tutmaya gerek yok. Duygusal bir motivasyon değil, parasal bir motivasyon olması gerekiyor. Muhasebeyi bırakırsam bir arkadaşımın içki masrafları için yüzlerce dolar yakacağını ya da şirketin bir HDMI kablosunu bedavaya almış olacağını bilirsem, hiç tereddüt etmeden tutarı girerim. Kişisel muhasebenin iyi yürümemesinin nedeni, kaybedilen şeyin para değil yalnızca analiz olması.
Wise işlemlerini içe aktarma veya döviz kuru takibi gibi süreçleri otomatikleştiren birkaç betiğim de var. Ama günlük kişisel harcamalar ya da bütçe yönetimi için kullanacak kadar disiplinim yok.
Her gün dışarıda yemeğe ne kadar para harcadığımı görmek ve o tutarı endeks fonuna yatırsaydım bileşik getirinin ne olacağını hesaplamak, dışarıda yeme alışkanlığımı azaltmama çok yardımcı oldu. Müşteri alacaklarını ve gerçek nakit akışına göre/öngörülen gelire göre nakit akışını da ayrı ayrı görebiliyorum.
Tasarruf hesabı bakiyesini zihnimde “yatırım hedefi %40, hediyeler %1” gibi parçalara ayırmak, büyük bir bakiye görüp dürtüsel harcama yapmamı azalttı. Varlık artışını, kategori bazında harcama artış ve azalışlarını grafikleştiren; bu değişimin hayata net etkisinin olumlu olup olmadığına dair notları bir web sayfasına döken bir programım da var ve her yıl bir sonraki planı belirlerken kullanıyorum.
Ledger dosyasını Excel’e dönüştürüp yıllık vergi beyanı için muhasebecime gönderen bir Python betiğim de var. İş için ledger dosyasını ayrı tutuyorum; onu doğrudan elle yönetmiyorum, muhasebecinin yazılımından veriyi dışa aktarıp evde kendi hesaplarımı yapıyorum.
İş tarafında, gelir artışıyla harcamaların nasıl büyüyeceğini tahmin eden nakit akışı projeksiyonları, departman bazında harcama anomalisi tespiti, işe alımı mı yoksa pazarlama harcamasını mı artırmak gerektiği ve ROIC gibi metriklerin hesaplanması için kullanıyorum.
Çift taraflı kayıt, banka ekstrelerini içe aktarıp ledger oluşturduktan sonra muhasebe uyuşmazlıklarını yakalamaya yardımcı oluyor. İsteğe bağlı harcamalar, çalışan yan hakları ve iş girdileri gibi kullanım amaçlarına göre hesapları ayırıp ana hesaptan haftalık aktarım yapılmasını sağlayarak anormallikleri kontrol ediyorum.
Eskiden muhasebecim şeffaf davranmayıp sahte giderleri deftere işleyerek çok vergi tasarrufu sağlamış gibi göstermişti; sonunda mahkemeye gittik, büyük bir ceza ve gecikme faizi ödedim. Artık muhasebeciye güvenmiyor, mutlaka tekrar kontrol ediyorum.
Stripe, banka ekstreleri, muhasebeci defterleri vb. verileri içe aktaran çok sayıda otomasyon betiğim var; Python ile bunları birbirine karşılaştırıp uyuşmazlıkları buluyorum. Bir programcı olarak düz metin muhasebe bana iyi uyuyor ve hledger üzerinde yıllar içinde kendi sistemimi kurdum.