Ledgerline is a single executable with no runtime and no dependencies. Installing it means putting one file somewhere on your path. Removing it means deleting that file.
Linux and macOS
Download the archive for your architecture from the package registry, unpack it, and move the binary:
tar -xzf ledgerline-1.6.0-linux-x86_64.tar.gz
sudo mv ledgerline /usr/local/bin/
ledgerline --versionOn macOS the first run is blocked until you allow it in the security settings, because the build is signed by the project rather than by a registered developer. There is no way around this that does not cost money the project does not have.
Your distribution may already carry a package called ledgerline. It is usually a release or two behind and it is not maintained by us. Either is fine.
Windows
Unpack the zip and put ledgerline.exe in a directory on PATH, or run it from where it sits:
ledgerline.exe --versionPaths in arguments may use either slash. Output is UTF-8 with CRLF line endings; pass --lf if you want otherwise.
Building from source
You need a C compiler, make, and about two minutes. There is no configure step and no generated code in the tree.
git clone https://example.com/ledgerline.git
cd ledgerline
make
./ledgerline --versionmake check runs the test suite against the fixture ledgers in tests/. If it fails on your platform, that is a bug worth reporting, with the output.
What a ledger file looks like
One transaction per block: a date, a description, then one line per account and amount. The amounts in a block must sum to zero.
2026-03-01 Rent
expenses:rent 800.00
assets:current -800.00
2026-03-04 Invoice 118
assets:current 1450.00
income:consulting -1450.00Blank lines separate transactions. A line starting with # is a comment. Account names are whatever you type; the colons are only a convention that the reports group on.
Running the reports
ledgerline report balance ./ledgers
ledgerline report income ./ledgers --from 2026-01-01 --to 2026-03-31
ledgerline report monthly ./ledgers --account expenses --format csv
ledgerline check ./ledgerscheck is the one to put in whatever runs your backups. It prints nothing when every block balances and exits zero; otherwise it names the file and the line.
What it needs
A terminal and read access to the folder. It writes nothing except what you redirect, keeps no state between runs, and does not open a network socket. There is no configuration file, and there will not be one.