plaintextaccounting.org
Plain Text Accounting (PTA)
Plain text accounting is a way of doing
bookkeeping and accounting with plain text files and scriptable,
command-line-friendly software, such as Ledger, hledger, or
Beancount.
Welcome! This site collects the PTA community's tools, docs and
practices. It is maintained by Simon Michael (hledger project leader,
PTA fan) and contributors like you. Join the chat, or send
an edit (here's the contributors'
README). 
On this page:
News &
discussion
Videos
Articles & blog
posts
Docs: Accounting - PTA
app official docs - PTA app
comparisons - Cheatsheets - Introductory docs - Presentations
Software: PTA apps - Editor
plugins - Data
import/conversion - Price fetching -
Data generation - Formatting - Reporting -
Time logging - UI,
console - UI, curses - UI, GUI - UI, web - UI, mobile - Library - Utilities - API
Elsewhere:
Newcomer
FAQ: What is this - Objections and concerns
Cookbook:
Getting
Started - General usage - Accounting
situations
News & discussion
Chat Matrix
~100, IRC
~50, Plain
Text Accounting space on Matrix
Mail lists app-specific mail lists
Mastodon #plaintextaccounting
Twitter #plaintextaccounting,
#ledgercli,
#hledger, #beancount, @LedgerTips
Reddit /r/plaintextaccounting
Hacker News stories,
comments
Stack Exchange ledger-cli
tag, ledger-cli
search, hledger
tag, hledger
search
Other This Week
In Hledger, plaintextaccounting.org
issues, plaintextaccounting.org
changes
Videos
Articles & blog posts
A partial list, contributions welcome
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
2006
Docs
Accounting
PTA app official docs
Ledger | hledger | Beancount | Ledger in Go | Tackler | pta
PTA app comparisons
Cheatsheets
Introductory docs
Presentations
Cookbook
- Cookbook more docs:
FAQs, examples, how-tos
Software
PTA apps
To do Plain Text Accounting, choose one of the apps below. Generally
it's relatively easy to migrate data from one to another.
Editor plugins
Helpers which make your text editor or IDE more aware of PTA apps and
file formats. These often also work well for PTA apps other than the one
they are named for.
Atom language-ledger, ledger
Emacs beancount-mode,
hledger-mode,
ledger-mode
IntelliJ Ledger
Plugin
Nano scopatz/nanorc
Sublime sublime-ledger-syntax
TextMate Ledger.tmbundle
VIM vim-ledger, vim-beancount,
hledger-vim, cmp-beancount
VS Code hledger-vscode, ledger,
vscode-beancount
Data import/conversion
Additional helper tools complementing the PTA apps, by category.
- Ledger
and hledger have CSV
conversion built in. Also:
- bean-identify, bean-extract, bean-file - Beancount built-in
tools
- banks2ledger -
CSV to *ledger converter
- beancount-import web
app/framework for converting various formats to beancount (python)
- beancount-ynab
Import YNAB4 (legacy desktop-based version) into beancount
- beancount-ynab5
Import YNAB5 (cloud-based version) transactions into beancount
- buchhaltung
CSV/FinTS/HBCI/OFX to *ledger conversion/deduplication (haskell)
- Costflow convert one line
message to beancount/*ledger format
- csv2beancount CSV
to beancount converter (clojure)
- CSV2Ledger CSV to
*ledger converter (perl)
- double-entry-generator
Rule-based double-entry bookkeeping importer (from Alipay/WeChat/Huobi
etc. to Beancount)
- fints2ledger
FinTS/HBCI to csv to *ledger or beancount journals (python)
- gcash2ledger.py
GNUCash XML to *ledger converter (python)
- gnucash-to-beancount
GNUCash sqlite to beancount converter (python)
- gnucash2ledger.py
GNUCash sqlite to *ledger converter (python)
- grisbi2Ledger
Grisbi to *ledger converter
- hledger-import-dsl
alternate, programmable CSV converter for hledger
- hledger-to-influxdb
hledger to InfluxDB converter (haskell)
- hledger2beancount
hledger to beancount converter (haskell)
- homebank2ledger
HomeBank to ledger and beancount converter (perl)
- icsvledger
interactive CSV to *ledger converter (python)
- into-ledger
CSV to *ledger converter
- invoice2data
extract data from PDF invoices (python)
- jali
downloader/importer to *ledger (python)
- kmymoney2hledger
KMyMoney to *ledger converter (clojure)
- kmymoney2ledgers
KMyMoney to *ledger/beancount converter (python)
- kmymoney2ledgers.awk
KMyMoney to *ledger/beancount converter (Awk)
- ldgclip import
bank transactions via the clipboard with one click (bash/awk)
- Ledger in Go has
limport, a CSV to *ledger converter
- ledger-autosync
OFX download, OFX to *ledger conversion, deduplication
- ledger-guesser
neural network for generating entries like past ones, can be used with
ledger-autosync (javascript)
- ledger-myexpenses
MyExpenses android app sqlite db to *ledger conversion (python,
2017)
- ledgermyexpenses
sync MyExpenses android app to/from Ledger (bash, 2023)
- ledger-to-beancount
yet another simple ledger to beancount converter (python)
- ledger-tutorials
convert Pete Keen's tutorials to ebook format
- ledger2beancount.py
*ledger to beancount converter
- ledger2beancount/beancount2ledger
the best converter between h/ledger and beancount formats (perl).
- moneymoney-ledger
MoneyMoney export extension for *ledger
- outofit QuickBooks
to *ledger converter
- piecash GNUCash
SQL to *ledger converter (python)
- plaid2qif
Download transactions from plaid as QIF or CSV files
- plaid2text
Plaid API to *ledger/beancount download/conversion
- qb2ledger
QuickBooks General Journal CSV to *ledger converter
- QIFtoLedger
(Bank of America's) QIF to *ledger converter
- reckon smart
interactive/non-interactive CSV to *ledger converter
- slc generates
Ledger accounting entries, works with generic CSV files as well as the
Stripe API
- smart_importer
library for building smarter CSV to beancount/Fava converters
- total_recall CSV
to *ledger converter
- ynab-to-ledger
You Need A Budget (YNAB) to *ledger converter. Handles multiple
currencies, multiple number formats, reconciliation, memos, transfers,
and split transactions
- ynab_to_ledger You
Need A Budget to *ledger converter
Price fetching
Data generation
- beancount-extract-price
generate prices transactions based on your beancount ledger
(python)
- DepreciateForLedger
generate *ledger depreciation transactions (python)
- hledger-interest
generate *ledger interest entries (haskell)
- ledgerbil
schedule recurring txns, interactive reconcile, date sorting
- LedgerScheduler
move entries from one file to another when they come due (python)
- lotter generate postings
for capital gain/loss (go)
- recurring
generate recurring *ledger entries (python)
- reorder-journal.sh
sort hledger entries, preserving directives/comments at top of file
(bash)
- sassetti adds lisp
macros to ledger files (common lisp)
Reporting
- budget_report
budget reporting with beancount (python)
- hledger-diff
report differing transactions between two journals (haskell)
- hledger-irr
calculate an account's internal rate of return (superseded by roi) (haskell)
- hledger-sankey
Script + HTML files to plot income next to expense money flows from an
hledger ledger file (shell + javascript)
- hledger-vega
makes configurable vega-lite charts from
hledger (shell)
- hreports customise
hledger reports with templates and PDF output (python)
- ledger-plot
interactive tool for making GNUplot charts from Ledger (python)
- ledger-plots
R package & script to make charts from Ledger (R)
- ludget generate charts
from Ledger (python)
- r-ledger an R
package for reading and reporting on ledger/hledger/beancount files
(R)
- TaxingLots
calculates capital gains for a ledger journal (python)
Time logging
- org2tc org to
timeclock converter
- on-modify.timetrack.py
taskwarrior hook for timeclock output
- t ledger timeclock
shellscript
- tim time
logging/reporting tool using hledger
- timekeeping-template
time logging/reporting examples/how-to using hledger
- tito time logging
bash scripts that avoid double clock-in
UI, console
- bean-add
interactive transaction entry tool (python)
- hledger add
interactive transaction entry tool (builtin command)
- ladd
create and edit a new *ledger transaction by fuzzy-matching past
descriptions
- ldgr command
line tool to add/sort/tag ledger files (ruby)
- ledger
xact history-aware transaction generator (builtin command)
UI, curses
UI, GUI
- ledgerble
reporting GUI with charts & adjustable reports (Javascript)
- ledgerhelpers
misc. GUI tools + helper library (Python, GTK)
- Prudent integrated journal
editing/importing/reporting GUI for Ledger (Javascript, mac only, closed
source)
UI, web
- fava web UI for
beancount browsing (python, demo)
- hledger-web
web UI for *ledger browsing, data entry (haskell, demo, Sandstorm
app)
- Paisa web UI or desktop app for
ledger, hledger and beancount (golang, javascript, demo)
- Ledger in Go web UI
for browsing ledger transactions, reports, and porfolios
- Ledger Web
ledger HTML reporting system (ruby, postgres)
- Ledger Web web
UI/API for ledger browsing, data entry (python)
- ledger-analytics
web UI for ledger data analytics (javascript)
- ledger-dashboard web
UI for ledger browsing, data entry (python)
- ledger-pyreport
web UI for standard accounting statements and unrealised gains
(python)
- ledgeraccounting
web UI for hledger: data entry, basic reports and budgets
(javascript)
- ledgible web UI
for ledger browsing, data entry (python)
- n4s
danish-language ERP system (php)
- node-ledger-web
web UI for ledger browsing (javascript)
- WealthPulse web
UI for ledger browsing, price fetching (F#)
- BeanHub web UI for beancount
browsing, data entry with a Git repository (proprietary SaaS; some
components open source)
UI, mobile
Library
Utilities
API
- gledger Go package
to interface with Ledger (go)
- hledger-lib
library for parsing and generating reports from *ledger files
(haskell)
- hledger-web
the web app includes a JSON API server for *ledger files (haskell)
- ledgerhelpers
extends Ledger's python library (python)
- node-hledger
Node.js API for *ledger files (javascript)
- BeanHub API proprietary
SaaS API for operating on hosted beancount repositories and beanhub-forms
(c) 2016-2023 Simon Michael & contributors |
Send updates via github