saldo.

Self-hosting

Run Saldo on your own machine, against your own bank accounts, with your own free Enable Banking application. No account with us, no broker in the loop — and no transaction data ever leaves your computer except to talk to your bank.

The connector is open source: github.com/pixby/saldo-mcp. Don't trust us — read the code.

You'll need: a Mac, laptop, or home server with Node 24+, a bank account covered by Enable Banking (most Nordic and European banks), and about fifteen minutes.

1. Create your Enable Banking application

Enable Banking's free Restricted Production tier lets you use your own accounts with real production data — no contract needed.

  1. Sign up at enablebanking.com → control panel → Applications.
  2. Register a new application: environment Production, key "generate in the browser and export private key", and add exactly https://localhost:8888/callback as an allowed redirect URL.
  3. Save the downloaded .pem private key — you can't retrieve it again. Its filename (a UUID) is your Application ID.
  4. Link your own bank account(s) to the application in the control panel — on the restricted tier, only accounts you've linked there work.

2. Configure

No install needed — your config and cache live in ~/.saldo/, not in the package.

npx saldo-mcp init

The wizard asks for your Application ID and the path to the .pem file, and writes a local config. Everything stays on your machine — the key is stored with owner-only permissions and is never transmitted anywhere except to sign requests to Enable Banking.

3. Connect a bank

# find your bank's id (format "SE:Bank Name"):
npx saldo-mcp institutions SE

# connect it — opens BankID, captures the callback:
npx saldo-mcp link "SE:Your Bank"

# pull history into the encrypted local cache:
npx saldo-mcp sync

When you run link, your browser opens BankID. After authenticating, the bank redirects to https://localhost:8888/callback — your browser will warn about the certificate. That's a self-signed certificate on your own machine; the request never leaves it. Click Advanced → proceed to localhost.

4. Connect your assistant

npx saldo-mcp connect-claude

This registers Saldo in Claude Desktop and in Claude Code (if the claude CLI is installed) — launched via npx, pinned to the current version (re-run this after upgrading). Restart Claude Desktop or open a new Claude Code session, then ask about your spending. Any other MCP client works too — point it at npx saldo-mcp serve over stdio.

Something not working?

npx saldo-mcp doctor

Checks your config, data directory, provider connection, cache, and Claude registration, and tells you what to fix. Common gotchas:

Start over, or leave completely

Everything Saldo knows lives on your machine, so removing it is ordinary file deletion — no account to close, nothing to request:

# unregister from Claude Desktop + Claude Code
npx saldo-mcp disconnect-claude

# all local state: config, encrypted cache + key
rm -rf ~/.saldo

# if you installed globally
npm uninstall -g saldo-mcp

Your bank consent lives at your bank, not with us — revoke it any time in Enable Banking's control panel or at your bank. It expires on its own after ~180 days regardless.

Self-hosting is free forever, and always will be. Read-only, always: account-information consents only — payment initiation isn't a feature we disabled, it's a capability the code doesn't have.