Rust CLI for Open Banking via Enable Banking; sync accounts, balances, and transactions to local SQLite.
See the codeAI disclosure: AI tools were used to assist with code and documentation in this repository. The maintainer reviews changes and is responsible for the project.
A command-line client for Enable Banking that links to your banks, syncs account data, and lets you inspect it locally from a SQLite database.
Status: Early-stage personal project. The CLI and configuration format may change. It is not affiliated with or endorsed by Enable Banking or any bank.
I built Banker to keep transactions locally for querying and lightweight bookkeeping, including categories, tags, and other metadata. Enable Banking provides standardized access to banks for syncing; the local data can also help AI agents analyze transactions and suggest or apply categories with LLMs.
Enable Banking and provider banks do not support Banker. For issues using this CLI, please do not contact them; report the problem in the Banker issue tracker with the command and a redacted error message. Never include private keys, session details, IBANs, or transaction data in an issue.
--jsonl), or pipe-friendly text (--lines). Local JSONL records include id, timestamps, and bank data under content; balance/transaction records also include account_id.Install the latest published version from crates.io with Cargo (requires Rust and Cargo):
cargo install banker
To update an existing Cargo installation, run cargo install banker --force. If you don't have a Rust toolchain, download a prebuilt Linux or Windows binary from the latest GitHub Release; no toolchain is needed to run the binary.
You'll need an Enable Banking application ID, its matching private key, and a bank supported by Enable Banking in your region.
Check out the official guide here.
Create ~/.config/banker/config.toml (or pass another path with --config). Keep this file and your private key out of version control. Replace the example values with your own Enable Banking application details and the actual ASPSP name/country returned by the service:
# Optional. Defaults to your platform's local data directory:
# ~/.local/share/banker/data.db on Linux.
# db_path = "/path/to/banker/data.db"
[application.personal]
id = "YOUR_ENABLEBANKING_APP_ID"
key_file = "/path/to/your/enablebanking-private-key.pem"
# Optional bank aliases for login and sync filtering.
[bank.mybank]
name = "ASPSP name from Enable Banking"
country = "DE"
# Optional; by default the first redirect URL registered on your application is used.
# redirect_url = "https://your-registered-redirect.example/callback"
# Optional; defaults to https://api.enablebanking.com.
# api_base_url = "https://api.enablebanking.com"
On Linux, create the configuration directory and restrict its permissions:
mkdir -p ~/.config/banker
chmod 700 ~/.config/banker
chmod 600 ~/.config/banker/config.toml
The configured key file must be the private key matching the Enable Banking application. Never commit or share it. If you configure multiple applications or banks, select one with --app <name> or --bank <name> where the command supports it.
# List available banks (uses the sole configured application)
banker bank --country DE
# Start bank authorization; opens the authorization URL in your browser
banker auth login --bank mybank
# Check or revoke linked sessions
banker auth status
# banker auth logout --bank mybank
# Sync a recent period explicitly; without a time frame, sync requests the longest available history
banker sync --last 7d
# Sync a specific period or all available history
banker sync --from 2025-01-01 --to 2025-02-01
banker sync --all
# Browse locally stored data
banker account list
banker balance current
banker transaction list
# Emit machine-readable or pipe-friendly output
banker transaction list --jsonl
banker account list --lines
--from and --to accept YYYY-MM-DD dates or RFC 3339 timestamps; only the UTC calendar date is sent to Enable Banking, so time-of-day precision is not preserved. Alternatively, --last accepts positive durations such as 30d or 1month. Omitting a time-frame option requests the longest transaction history available; use --last or a bounded --from/--to range for a narrower sync. --all also requests the full available history. Sync exits nonzero if any selected session or account fails, even when other accounts were stored successfully. Use banker <command> --help for the complete command options.
Accounts, balances, and transactions support metadata set, get, delete, and schema subcommands. Metadata is stored locally and validated against the active JSON Schema when one is configured. For example:
banker transaction metadata set <ID> '{"category":"groceries"}'
banker transaction metadata get <ID>
Use banker account metadata --help (or the balance/transaction equivalents) for schema management and input options.
banker/; override it with db_path.~/.config/banker/session.json on Linux (or the corresponding platform configuration directory). On Unix, the session file is written with owner-only permissions.key_file; Banker reads it to authenticate API requests.Building and testing from source requires a Rust toolchain supporting edition 2024; install one with rustup.
cargo build
cargo test
cargo run -- --help
The Enable Banking client is generated at build time from enablebanking-api.yaml.
Licensed under the GNU Affero General Public License, version 3 or (at your option) any later version. See LICENSE for the full license text.
20 commits
Rust
99.1%
Rust CLI for Open Banking via Enable Banking; sync accounts, balances, and transactions to local SQLite.
See the codeAI disclosure: AI tools were used to assist with code and documentation in this repository. The maintainer reviews changes and is responsible for the project.
A command-line client for Enable Banking that links to your banks, syncs account data, and lets you inspect it locally from a SQLite database.
Status: Early-stage personal project. The CLI and configuration format may change. It is not affiliated with or endorsed by Enable Banking or any bank.
I built Banker to keep transactions locally for querying and lightweight bookkeeping, including categories, tags, and other metadata. Enable Banking provides standardized access to banks for syncing; the local data can also help AI agents analyze transactions and suggest or apply categories with LLMs.
Enable Banking and provider banks do not support Banker. For issues using this CLI, please do not contact them; report the problem in the Banker issue tracker with the command and a redacted error message. Never include private keys, session details, IBANs, or transaction data in an issue.
--jsonl), or pipe-friendly text (--lines). Local JSONL records include id, timestamps, and bank data under content; balance/transaction records also include account_id.Install the latest published version from crates.io with Cargo (requires Rust and Cargo):
cargo install banker
To update an existing Cargo installation, run cargo install banker --force. If you don't have a Rust toolchain, download a prebuilt Linux or Windows binary from the latest GitHub Release; no toolchain is needed to run the binary.
You'll need an Enable Banking application ID, its matching private key, and a bank supported by Enable Banking in your region.
Check out the official guide here.
Create ~/.config/banker/config.toml (or pass another path with --config). Keep this file and your private key out of version control. Replace the example values with your own Enable Banking application details and the actual ASPSP name/country returned by the service:
# Optional. Defaults to your platform's local data directory:
# ~/.local/share/banker/data.db on Linux.
# db_path = "/path/to/banker/data.db"
[application.personal]
id = "YOUR_ENABLEBANKING_APP_ID"
key_file = "/path/to/your/enablebanking-private-key.pem"
# Optional bank aliases for login and sync filtering.
[bank.mybank]
name = "ASPSP name from Enable Banking"
country = "DE"
# Optional; by default the first redirect URL registered on your application is used.
# redirect_url = "https://your-registered-redirect.example/callback"
# Optional; defaults to https://api.enablebanking.com.
# api_base_url = "https://api.enablebanking.com"
On Linux, create the configuration directory and restrict its permissions:
mkdir -p ~/.config/banker
chmod 700 ~/.config/banker
chmod 600 ~/.config/banker/config.toml
The configured key file must be the private key matching the Enable Banking application. Never commit or share it. If you configure multiple applications or banks, select one with --app <name> or --bank <name> where the command supports it.
# List available banks (uses the sole configured application)
banker bank --country DE
# Start bank authorization; opens the authorization URL in your browser
banker auth login --bank mybank
# Check or revoke linked sessions
banker auth status
# banker auth logout --bank mybank
# Sync a recent period explicitly; without a time frame, sync requests the longest available history
banker sync --last 7d
# Sync a specific period or all available history
banker sync --from 2025-01-01 --to 2025-02-01
banker sync --all
# Browse locally stored data
banker account list
banker balance current
banker transaction list
# Emit machine-readable or pipe-friendly output
banker transaction list --jsonl
banker account list --lines
--from and --to accept YYYY-MM-DD dates or RFC 3339 timestamps; only the UTC calendar date is sent to Enable Banking, so time-of-day precision is not preserved. Alternatively, --last accepts positive durations such as 30d or 1month. Omitting a time-frame option requests the longest transaction history available; use --last or a bounded --from/--to range for a narrower sync. --all also requests the full available history. Sync exits nonzero if any selected session or account fails, even when other accounts were stored successfully. Use banker <command> --help for the complete command options.
Accounts, balances, and transactions support metadata set, get, delete, and schema subcommands. Metadata is stored locally and validated against the active JSON Schema when one is configured. For example:
banker transaction metadata set <ID> '{"category":"groceries"}'
banker transaction metadata get <ID>
Use banker account metadata --help (or the balance/transaction equivalents) for schema management and input options.
banker/; override it with db_path.~/.config/banker/session.json on Linux (or the corresponding platform configuration directory). On Unix, the session file is written with owner-only permissions.key_file; Banker reads it to authenticate API requests.Building and testing from source requires a Rust toolchain supporting edition 2024; install one with rustup.
cargo build
cargo test
cargo run -- --help
The Enable Banking client is generated at build time from enablebanking-api.yaml.
Licensed under the GNU Affero General Public License, version 3 or (at your option) any later version. See LICENSE for the full license text.
20 commits
Rust
99.1%