Skip to content

Jpalmer95/Account-It

Repository files navigation

Account-It

Agent-native, plain-text, double-entry accounting for small businesses.

Self-hosted alternative to paid bookkeeping SaaS (Wave Pro, QuickBooks, etc.):

Piece Role
Beancount 3 Ledger engine + validation (bean-check)
Fava Web UI: P&L, balance sheet, journal, queries
SimpleFIN Bridge Bank + credit card feeds (~$15/yr, all institutions)
Square API Daily sales, fees, payouts (optional)
Rules + agent CLI Auto-categorize obvious txns; leave ambiguous ones for review

Your entire ledger is human-readable text in git. That is the most agent-friendly accounting format there is: agents read/write/grep the ledger, and bean-check guarantees the books always balance.

This public repo is a clean template with a fictional Demo Cafe ledger. Do not put real business transactions, bank exports, or API secrets here.

Quick start

git clone https://github.com/Jpalmer95/Account-It.git
cd Account-It
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

bean-check main.beancount          # validate demo books
fava main.beancount                # web UI on http://127.0.0.1:5000

python scripts/categorize.py --list
python scripts/bank_report.py --year 2025 --asof 2025-01-31

Layout

main.beancount              entry point (options + includes)
accounts.beancount          chart of accounts (starter template)
ledger/<year>.beancount     transactions, one file per year
importers/
  wave_convert.py           one-time Wave history migration
  square_import.py          Square sales/fees/payouts -> ledger
  simplefin_import.py       bank/CC feeds -> pending '!' entries
  simplefin_accounts.yaml   SimpleFIN account mapping (edit me)
scripts/
  categorize.py             agent helpers: --list / --rules / --apply
  rules.yaml                deterministic payee regex rules
  bank_report.py            P&L + balance sheet HTML
  daily_sync.sh             cron-friendly import + rules + commit
examples/                   account_map + secrets templates
docs/                       chart design + agent workflow notes
Dockerfile                  Fava container (put behind auth!)

Using this for your business

  1. Fork or clone into a private repo for real books (recommended).
  2. Edit option "title" in main.beancount and rename accounts in accounts.beancount to match your banks/cards.
  3. Replace or empty ledger/ and start fresh, or migrate from Wave:
    python importers/wave_convert.py /path/to/accounting.csv \
      --map examples/account_map.example.yaml --out ledger/
  4. Wire bank feeds:
    mkdir -p .secrets && chmod 700 .secrets
    python importers/simplefin_import.py --claim '<SETUP_TOKEN>'
    # edit importers/simplefin_accounts.yaml with your ACT- ids
  5. Optional Square sales:
    echo 'SQUARE_ACCESS_TOKEN=...' > .secrets/env
    echo 'SQUARE_TAX_RATE=0.0825' >> .secrets/env   # if applicable
    python importers/square_import.py --since 2025-01-01 --tax-rate 0.0825
  6. Daily automation: install scripts/daily_sync.sh as a cron job.
  7. Deploy Fava with the Dockerfile behind auth or Tailscale only.

Agent workflow (short)

python scripts/categorize.py --rules     # deterministic payee rules
python scripts/categorize.py --list      # JSON queue of remaining '!' entries
python scripts/categorize.py --apply demo-pending-001 Expenses:Supplies
bean-check main.beancount

See docs/AGENT.md for a full human+LLM review pattern.

Privacy / what not to publish

Keep private (never commit to a public fork):

  • Real ledger history and Wave/CSV exports
  • .secrets/ (SimpleFIN access URL, Square tokens, Fava passwords)
  • importers/.simplefin_seen.json
  • Bank account numbers, owner names, customer/vendor PII

This template deliberately ships only fictional Demo Cafe amounts.

Related

License

Apache License 2.0 — see LICENSE and NOTICE.

About

An open source local accounting solution for small businesses individuals, or anyone.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages