- Menggunakan Beancount untuk mencatat keuangan pribadi selama 10 tahun dalam file teks biasa, mengelola sekitar 45.000 baris data dan 10.000 transaksi
- Setiap bulan meluangkan 30–45 menit untuk mengimpor file CSV rekening bank lalu merapikannya secara manual dan otomatis, serta memisahkannya per tahun agar tetap mudah dibaca
- Mengembangkan sendiri library importer berbasis Python untuk bank-bank Jerman agar terhubung dengan Beancount, dan sebagian masih dirawat hingga kini
- Karena merasakan kesulitan pemula saat mulai memakai Beancount, ia menulis panduan pengantar untuk pemula yang mendapat penilaian positif dari komunitas
- Semua data disimpan di perangkat lokal dan repositori Git miliknya, sehingga memiliki daya tahan dan kontrol yang lebih tinggi dibanding aplikasi atau layanan tertentu
Struktur ledger Beancount selama 10 tahun
- Sejak 2016, ia mengelola data keuangan dengan Beancount, dengan total 45.011 baris entri yang tersimpan dalam 16 file
.beancount
- Berpusat pada file
main.beancount, dengan file per tahun dihubungkan melalui metode include
- Total transaksi sekitar 9.895, dengan posting (pembukuan) di dalamnya berjumlah 19.743
- Ada total 1.086 account, tetapi ini bukan rekening bank nyata, melainkan account klasifikasi virtual
- Contoh: bisa membuat account per kategori detail seperti belanja supermarket, pemasukan, layanan berlangganan, dan lain-lain
- 507 dokumen PDF dilampirkan ke transaksi, sehingga kuitansi terkait dapat dicek dengan mudah saat pelaporan pajak
- Jumlah posting per tahun meningkat dari 715 pada 2016 menjadi 2.651 pada 2023, menjadikan 2023 tahun yang paling aktif
Prosedur pengelolaan bulanan
- Setiap bulan menginvestasikan sekitar 30–45 menit untuk mengunduh rekening koran bank dalam bentuk CSV lalu mengimpornya ke Beancount
- CSV dipakai karena lebih mudah diparsing dibanding PDF
- Importer berbasis Python mengubah data CSV ke format Beancount
- Setelah transaksi hasil konversi ditambahkan ke file
.beancount, data disesuaikan agar saldo menjadi 0 sesuai prinsip double-entry bookkeeping
- Sebagian diklasifikasikan otomatis, sebagian disesuaikan manual
- Saat tahun baru dimulai, transaksi tahun sebelumnya dipindahkan ke file
<year>.beancount lalu dikelola dengan menyertakannya di main.beancount
- Semua riwayat transaksi ditata sebagai file teks dalam satu direktori
Pengembangan Beancount Importer untuk bank Jerman
- Beancount pada dasarnya tidak mengetahui format rekening koran bank, sehingga perlu dikonversi melalui kelas importer
- Karena menggunakan rekening bank Jerman, ia mengembangkan sendiri beberapa importer
- Tiga library pertama masih aktif dirawat dan digunakan hingga sekarang
Dari pengguna menjadi penulis
- Dokumentasi Beancount sangat luas, tetapi hambatan masuknya tinggi bagi pemula
- Berdasarkan pengalaman yang dipelajari lewat trial and error, ia menulis buku pengantar
- Dipublikasikan di personalfinancespython.com
- Disebut di halaman external contributions dokumentasi resmi Beancount
- Mendapat respons positif dari ulasan pembaca
Penutup
- Semua data keuangan disimpan sebagai file teks lokal yang dikelola versinya dengan Git
- Data berada di perangkat miliknya sendiri dan tidak bergantung pada aplikasi atau layanan tertentu
- Dapat dianalisis secara bebas dengan memanfaatkan alat-alat dalam ekosistem Beancount
- Pendekatan plaintext accounting seperti ini merupakan bentuk pengelolaan keuangan yang kuat dan bisa bertahan lebih lama daripada aplikasi apa pun
1 komentar
Komentar Hacker News
Saya sepenuhnya setuju dengan buku OP. Ini adalah pengantar terbaik untuk memahami Beancount / plaintext accounting yang pernah saya lihat sejauh ini
Saya juga seumur hidup tidak benar-benar memahami double-entry bookkeeping, dan baru mulai paham setelah membaca Martin Kleppmann, "Accounting for Computer Scientists". Cara penjelasannya lewat teori graf terasa sangat intuitif
Dulu saya memakai Quicken, tetapi setiap kali versinya berubah saya harus memasukkan ulang data, jadi akhirnya pindah ke GNU Cash. Namun masalah migrasi tetap ada
Lalu saya menemukan plaintext accounting (PTA) dan memilih hledger (karena khawatir Beancount punya isu performa). Setelah belajar double-entry, ternyata lebih sederhana dari yang saya kira.
Saya mem-parsing laporan investasi dan slip gaji yang datang dalam bentuk PDF dengan skrip Python, dan membuat CSV bank/kartu dikategorikan otomatis, jadi sebagian besar prosesnya terotomatisasi.
Dengan investasi sekitar satu jam per bulan, saya bisa membuat laporan investasi, anggaran, dan ringkasan pajak.
Karena berbentuk plain text, datanya tetap aman meski format berubah, dan juga bisa dikontrol versinya dengan git.
Kekurangannya adalah tidak bisa dipakai di mobile, dan butuh sedikit pengetahuan teknis. Tetapi bagi orang yang peduli pada aliran uangnya, ini adalah jawaban yang tepat
Namun fitur sinkronisasi otomatis Quicken masih yang terbaik, jadi sulit digantikan. Saya memeriksa 27 akun setiap hari untuk mendeteksi penipuan atau kesalahan, dan mengunduh CSV lalu memprosesnya manual setiap saat itu seperti mimpi buruk.
Selain itu, belakangan bank-bank cenderung menutup OFX dan memakai Intuit sebagai hub perantara, jadi makin sulit untuk keluar
Saya belajar ide untuk mengelola keuangan pribadi seperti sistem build proyek dari full-fledged-hledger
Simpan data mentah dari lembaga keuangan apa adanya, ubah ke CSV dengan skrip, lalu petakan ke entri PTA memakai file aturan.
Dengan cara ini, jika logika konversi atau aturan klasifikasi diubah, seluruh data historis akan otomatis diperbarui.
Anda bisa mulai dari data satu bulan dulu lalu memperluasnya secara bertahap — misalnya sampai mencakup riwayat pesanan Amazon atau kwitansi Paypal
Saya sudah memakai Beancount selama beberapa tahun.
Mulai tahun ini saya juga beralih ke struktur file per tahun seperti OP. Sebelumnya saya punya satu file tunggal 2 juta baris, dan plugin Emacs mulai melambat.
Kelebihan pendekatan ini adalah semuanya bisa dilacak — investasi, pensiun, RSU, rekening bank, dan sebagainya. Bahkan pemakaian listrik (kWh) pun bisa dimodelkan.
Belakangan saya juga banyak membuat alat otomasi berbasis LLM. Misalnya saya merombak engine aturan transaksi dengan Claude menjadi aplikasi dengan UI. Dulu pekerjaan seperti itu akan memakan beberapa hari
Sepertinya banyak orang mencampuradukkan plain text dan double-entry bookkeeping.
Beancount mendukung keduanya, tetapi tanpa memahami double-entry pun orang tetap bisa melakukan akuntansi plain text.
Meski begitu, double-entry adalah alat yang sangat bagus untuk menata pengetahuan, jadi saya tetap merekomendasikan untuk mempelajarinya.
Saya sendiri agak ragu dengan manfaat plain text itu sendiri. Ini terlihat seperti reaksi terhadap ketergantungan cloud atau vendor lock-in, padahal melakukan double-entry dengan perangkat lunak bebas secara lokal sudah cukup.
Kesimpulan saya adalah sebagai berikut:
Saya memakai GnuCash, dan meskipun tidak sempurna, itu cukup sesuai dengan filosofi di atas
Saya baru mulai PTA belakangan ini, dan hambatan masuknya cukup tinggi.
Pertama, Anda harus belajar double-entry, lalu memilih salah satu dari ledger-cli / hledger / beancount. Perbedaannya tipis, jadi faktor penentunya biasanya komunitas atau kualitas dokumentasi.
Setelah itu Anda harus memikirkan akun mana yang ingin diimpor dulu, seberapa jauh data historis yang ingin dimasukkan, dan bagaimana mengatur importer otomatis.
hledger memakai DSL, Beancount memakai Python. Sebagian besar waktu habis untuk penyuntingan manual.
Lalu muncul pertanyaan-pertanyaan baru tentang anggaran, pajak, berbagi dengan pasangan, dan sebagainya.
Tetapi saya merasa nilai sejati PTA justru terletak pada kesadaran untuk mengajukan pertanyaan-pertanyaan ini sendiri.
Setiap tahun, saat harus membuat banyak keputusan finansial tentang pensiun, asuransi, tagihan internet, tawaran kerja baru, dan lain-lain, memahami ekonomi pribadi saya secara mendetail terasa sangat membantu
Saya sudah memakai ledger-cli dan Emacs selama 10 tahun, dan dulu juga pernah memakai GnuCash.
Sebagai bahan pengantar, saya juga punya buku teks double-entry yang saya tulis sendiri
Saya sudah memakai PTA sejak 2018, dan ada banyak pelajaran yang saya dapat lewat trial and error.
Layanan komersial biasanya hanya menampilkan sebagian akun, tetapi PTA memungkinkan Anda memahami arus seluruh keuangan secara utuh.
Misalnya, Anda bisa melacak asal-usul (provenance) seluruh proses ketika saham yang diterima dari perusahaan akhirnya dijual lalu masuk ke rekening bank
Bagi saya, spreadsheet Excel adalah alat yang sempurna. Saya hanya menambahkan angka-angka yang dibutuhkan setiap minggu
Literatur tentangnya penuh kontradiksi dan sulit dipahami, dan bahkan akuntan pun kadang salah memahami konsep dasarnya
Selama 20 tahun saya mengelola keuangan dengan cara sederhana memakai spreadsheet.
Saya memperbaruinya sekitar 5 menit per bulan, dan hanya melacak item-item inti seperti listrik, pemanas, asuransi, tabungan, dan sebagainya.
Tujuannya adalah memahami tren pengeluaran dan menjaga anggaran tahunan. Uang yang tersisa ya dibelanjakan saja
Saya hanya mencatat pengeluaran di atas $100 secara terpisah agar bisa melacak pembelian besar
Saya mengunduh CSV bank/kartu setiap bulan lalu menganalisisnya dengan skrip Python.
Dengan kode yang ditulis LLM, saya menganalisis tren pengeluaran per merchant, dan pada satu kartu saya menempatkan hanya pembayaran berulang agar perubahan lebih mudah dipantau
Saya merekomendasikan frontend GUI untuk Beancount bernama Fava
https://beancount.github.io/fava/
Sangat berguna untuk memvisualisasikan seluruh akun, serta punya antarmuka pencarian/kueri dan fitur edit real-time yang sangat membantu
Sistem ini tampak sangat keren, tetapi saya penasaran bagaimana cara mengelola keuangan bersama pasangan yang nonteknis.
Kami memakai YNAB, dan UI-nya rapi serta mudah untuk kolaborasi. Apakah antarmuka seperti itu bisa dibuat juga untuk Beancount?
Saya juga dulu sempat terobsesi dengan PTA dan mulai menyimpan log, tetapi mengunduh transaksi secara manual dari banyak bank itu terlalu merepotkan
Katanya otomasi adalah jawabannya, tetapi saya penasaran bagaimana praktik nyatanya — apakah orang memakai API seperti Plaid, atau membuat web scraper atau parser PDF?
Pada akhirnya saya membayar YNAB $130 per tahun. Pasangan saya juga sangat puas, dan semuanya terhubung otomatis.
Mungkin data dari YNAB bisa dibackup lewat API-nya lalu dijalankan paralel dengan PTA
Industri keuangan tertinggal jauh dalam hal ini. Otomasi memang makin banyak, tetapi sejauh ini efisiensinya masih rendah dibanding usaha yang dibutuhkan
Dulu saya memakai YNAB, tetapi akhirnya menyerah karena masalah transaksi duplikat terlalu sering terjadi.
Saya sudah tiga kali reset, tetapi error-nya terus muncul, jadi akhirnya kembali ke pelacakan manual.
Sekarang PTA terasa jauh lebih stabil, dan memberi rasa bahwa saya memegang kendali