Self-hosted double-entry bookkeeping for personal finances

Point it at your bank and credit card statements and it works through them: the rows become balanced journal entries, transactions are categorized, and every statement is checked against the balances your books compute before anything is posted.

A walkthrough: from an empty folder to a posted statement.

Getting started

npm init @dbu6 my-books
cd my-books
npx dbu6 dev

npm init @dbu6 creates the folder, installs dbu6 into it and makes the database. dev migrates the database and serves the app.

Open localhost:2345 and sign up. Home then takes you through your chart of accounts, a bank or card, a recent statement for it, your opening balances, and reviewing what dbu6 categorized.

Needs Node.js 22.18 or newer, with npm. Statement imports also need uv and pdftotext (poppler); git and a coding agent are optional. Getting started has each step in full and the install commands.

Set up your books

Home shows the next thing to do, one at a time.

  1. Pick a chart of accounts. Start from dbu6's starter chart, or describe your money in a sentence and a coding agent proposes accounts that fit. Nothing is created until you accept.
  2. Add a bank or card. On Home, or Settings → Banks and cards. Name the institution and which of your accounts its statements belong to.
  3. Import a recent statement for it. Download one from your bank as a PDF, CSV or XLS and drop it on Import statements. dbu6 recognizes the layout, takes the account's starting balance from it, and shows you the rows it read. This is the step that tells dbu6 where your books start.
  4. Add your opening balances (optional). What your cash, investments and loans held when the books start, so the balance sheet is true from day one.
  5. Review what it categorized, and add it to your books. Review is where you reclassify what needs it, check for duplicates against earlier imports, see the balance checks, and post. Nothing reaches your books until you post.

Steps 3 and 5 are worth reading up on: Importing statements and Categorization. To try it first, run npx dbu6 seed while dbu6 dev is running: a year of sample finances, sign in as demo@example.com with demo-password.

Every day

npx dbu6 dev       # serve, with reload, while you set up
npx dbu6 start     # serve for real, after a restart
npx dbu6 upgrade   # move to a newer dbu6, then migrate and check
npx dbu6 check     # report everything an upgrade could have broken
npx dbu6 docs      # list the guides this version ships

Your books are data/: one SQLite database. dbu6 keeps no other copy and makes no backup — stop it and copy that folder. Your rules and prompts sit beside it in user-config/, which belongs in git.

Documentation

Packages

dbu6 is published on npm by the dbu6 organization:

Screenshots