Track income, expenses, assets, and liabilities with real double-entry accounting. Generate P&L and balance sheets. QuickBooks Simple Start without QuickBooks having your financials.
Every operation in Ledger is available through a JSON REST API. No SDK required — use curl, fetch, or any HTTP client.
GET /api/transactions — list all transactions with optional search and filter query parametersPOST /api/transactions — create a new transaction recordGET /api/transactions/{id} — retrieve a single transaction by IDPUT /api/transactions/{id} — update an existing transactionDELETE /api/transactions/{id} — remove a transactionGET /api/stats — aggregated statistics with status breakdownGET /api/health — health check endpoint for monitoringA solo developer built a weekend project that needed transactions tracking. Instead of spinning up Postgres and writing an admin panel, they added Ledger as a sidecar process. The REST API covered every operation the project needed. Development time saved: roughly a full day.
Most transactions tools fall into two camps: free products that harvest your data, or enterprise platforms that cost more than the problem they solve. Ledger exists because neither option makes sense when you just need a reliable double-entry bookkeeping under your own control.
GET /api/transactions — List all transactions. Supports ?q=keyword for search and ?status=value for filteringPOST /api/transactions — Create a new transaction. Send JSON with at least descriptionGET /api/transactions/{id} — Fetch one transaction by IDPUT /api/transactions/{id} — Update fields on an existing transactionDELETE /api/transactions/{id} — Remove a transactionGET /api/stats — Returns total count and breakdown by statusGET /api/health — Returns {"status":"ok"} for uptime monitoringEach transaction record carries fields for description, amount, type, category, account. The API accepts partial updates, so you can PATCH individual fields without resubmitting the entire record. Listing endpoints support ?q= for keyword search and ?status= for filtering through the lifecycle. Backups are a file copy of the SQLite database in the data directory.
Self-hosted double-entry bookkeeping. Self-hosted on your infrastructure. Your data never leaves your server.
curl -fsSL https://stockyard.dev/install.sh | sh -s -- --tool ledger
PORT=8900 ./ledger
http://localhost:8900
Single binary. Embedded SQLite. No Docker. No database. No dependencies.
Your license key arrives by email within 5 minutes of checkout. Set it as an environment variable and restart the binary.
export LEDGER_LICENSE_KEY=stockyard_xxxxxxxxxxxxxxxxxxxx ./ledger
No cloud connectivity required. The binary validates the key offline with Ed25519 signatures.