16 KiB
Plain Text Accounting
accounting
accounting is tracking the flow of valuable commodities, such as money or time. It clarifies activity, priorities, obligations, opportunities. It can reduce stress and even be enjoyable.
double-entry bookkeeping is a process for doing this reliably. For every movement of value (a transaction), both the source and destination are recorded. Simple arithmetic invariants help prevent errors.
In traditional double-entry bookkeeping, value at any point in time is tracked in various accounts, classified as asset (owned), liability (owed) or equity (invested). Two more classifications track changes during some period: revenues (inflows) and expenses (outflows).
Transactions consist of debits (increases to asset or expense accounts, or decreases to liability or equity accounts) or credits (decreases to asset or expense accounts, or increases to liability or equity accounts).
… with text
Ledger, hledger, beancount, and other Ledger-likes are minimalist software tools for efficient double-entry-style accounting.
This site introduces them and their way of doing things.
Accounting data is valuable; we want to know that it will be accessible for ever - even without software. We want to know when it changes, and revision-control it. We want to search and manipulate it efficiently. So, we store it as human-readable plain text.
We simplify debits and credits by using signed numbers instead - positive for inflows to an account, negative for outflows from an account.
We define arbitrary account hierarchy to suit our needs. This scales smoothly from simple to complex scenarios, and from high-level overview to fine detail.
Ledger-likes are, at least in part, command-line tools. This makes them efficient to use and very scriptable and flexible.
Ledger-likes also, at their core, tend towards functional operation: they read the input data without changing it, and output a report. This simple model makes them easy to understand and rely on.
questions ?
is there no graphical user interface ? Must I use the command line ?
Not entirely! A bit. Decreasingly.
"Plain Text Accounting" is a broad description, referring mainly to the data format.
GUIs are appearing.
who is this for ?
Techies, power users, and do-it-yourself-ers, for now.
If you need a rich GUI providing lots of structure, you may prefer to use something else.
who is using it, and how ?
See Who's using Ledger? for some stories.
what are the alternatives ?
FOSS tools like GNUCash, Grisbi, KMyMoney.
Proprietary tools like Quicken/Quickbooks, You Need A Budget.
Online tools like Xero, FreeAgent.
(There are many).
Spreadsheets.
Paper accounting.
A bookkeeper.
why is this better than QuickBooks ?
Your data remains accessible.
No yearly fees.
Free software you can fix and port.
Cross platform.
Scriptable.
Efficient.
how do I communicate with my accountant ?
Clean up text reports by hand,
print them as PDF,
export CSV reports to a spreadsheet..
what if my accountant only uses QuickBooks ?
You'll need a new accountant,
or a duplicate set of books in QuickBooks,
or to pioneer *ledger -> QuickBooks exporting.
can I use this to do my taxes ?
You can use this to track and report the data needed for tax reporting.
Fill out and submit tax forms with another tool, or by hand.
Ledger-likes
| Code, committers | Mail list | IRC, size | |
| Ledger | C++ 101 | ledger-cli | #ledger 70 |
| hledger | Haskell 30 | hledger | #hledger 20 |
| Beancount | Python 8 | beancount | #beancount 1 |
| Abandon | Scala 5 | ||
| Ledger in Go | Go 2 |
| Inactive: | |
|---|---|
| cl-ledger | Common Lisp |
| ledger.pl | Perl |
| Penny | Haskell |
| UMM | Haskell |
related tools
- hledger-diff report differing transactions between two journals
- hledger-interest generate *ledger interest transactions
- hledger-irr calculate an account's internal rate of return over time
data import
- icsvledger CSV to journal converter
- ledger-autosync OFX download, OFX to journal conversion, deduplication
- qb2ledger QuickBooks General Journal CSV to journal converter
- reckon smart interactive/non-interactive CSV to journal converter
editor support
- beancount-mode for Emacs
- hledger-mode for Emacs
- ledger-mode for Emacs (also works for hledger, beancount etc.)
- vim-beancount for VIM
- vim-ledger for VIM
- language-ledger for Atom
- ledger for Atom
- sublime-ledger-syntax for Sublime Text/TextMate
- Ledger.tmbundle for TextMate
time tracking
- org2tc org to timeclock converter
- on-modify.timetrack.py taskwarrior hook for timeclock output
- tim time tracking tool using hledger for reporting
UI, console
- hledger-iadd curses UI for data entry
- hledger-ui curses UI for browsing (demo)
UI, GUI
- ledgerhelpers GUI tools and python library front end for Ledger
UI, web
- fava web UI for browsing beancount data
- hledger-api JSON API for *ledger data, can also serve static files
- hledger-web web UI for browsing, data entry (demo)
- hledger-web on Sandstorm free private web instances in a few clicks
- ledger-dashboard web UI for browsing, data entry
- ledger-web web UI for browsing
docs
online books
presentations
- Ledger CLI Accounting for Geeks 2014
- Hacking Your Finances for Fun and Profit 2013
- Ledger and Text based Accounting 2009
videos
- FLOSS Weekly 375: hledger (youtube, 3m overview) 2016
- Evolution of ledger 2015
- Evolution of hledger 2015
- FLOSS Weekly 150: Ledger (youtube) 2011
articles
- An Alternative to QuickBooks 2012
- The accounting quest: Ledger 2012
- Fabrice Niessen on Ledger, hledger, beancount 2010
- Ledger, the bran muffin of accounting tools 2006
blog posts
- Matthew Turland: Ledger basics and habits 2014
- Simon Michael: What is hledger ? 2013
- Simon Michael: More on ledger 2013
- Simon Michael: Introducing hledger! 2013
- Joey Hess: hledger 2012
- Sascha Welter: Doing my own accounting 2011
- Clint Adams: Accounting at SFLC 2011
- Christine Spang: [h]ledger rocks my world 2010
- Roman Cheplyaka: hledger 2010
hacker news
- Ledger, a command-line accounting system 2015
- Hledger – Double-entry accounting from the Unix tools perspective (2012) 2014
- Ledger, a powerful CLI accounting tool 2014
- Command Line Accounting With Ledger and Reckon 2013
- Ledger: Command-line double-entry accounting 2009
common tasks
data entry
reconciling
reporting
forecasting
budgetting
shared expenses
invoicing
tax reporting
time tracking
non-profit accounting
import and export
API access
-
Ledger Python 3 Support Python
-
ledgerhelpers Python + CLI
-
hledger-lib, hledger Haskell
-
hledger-api, examples JSON
Send updates via the [github repo](https://github.com/simonmichael/plaintextaccounting) or [etherpad](https://oasis.sandstorm.io/shared/UAYLwagGI0a2pIMg9Hhv74K04nbuxanXiS5ZtBV6NF-)