CLI for German online banking via FinTS 3.0. Supports SEPA transfers, account listing, and statement retrieval.
npm install -g @phelmig/fints-cliThen run the interactive setup:
fints-cli initThis creates ~/.config/fints-cli/config.env with your bank credentials. On first run, a config template with default values is created automatically — edit it or run fints-cli init for interactive setup. Environment variables always override config file values.
git clone https://github.com/phelmig/fints-cli.git
cd fints-cli
npm install
cp .env.example .env # fill in your bank credentials
npm run buildfints-cli init writes to ~/.config/fints-cli/config.env (or $XDG_CONFIG_HOME/fints-cli/config.env). The file uses standard KEY=value format. Environment variables always take precedence over the config file.
| Variable | Description |
|---|---|
FVB_BLZ |
Bank code (Bankleitzahl) |
FVB_USER |
Online banking user ID |
FVB_PIN |
Online banking PIN |
FVB_URL |
FinTS/HBCI endpoint URL |
FVB_PRODUCT_ID |
FinTS product registration ID |
FINTS_DEBUG |
Set to 1 for verbose debug output (optional) |
fints-cli accountsOutputs JSON array with account numbers, IBANs, and balances.
fints-cli statements [--account <iban>] [--from YYYY-MM-DD] [--to YYYY-MM-DD]Options:
--account— filter by IBAN (default: first account)--from/--to— date range
Outputs JSON array of transactions.
fints-cli transfer --recipient "Max Mustermann" --iban DE89370400440532013000 --amount 12.50 [--bic COBADEFFXXX] [--purpose "Invoice 123"] [--source-iban DE...] [--instant]Options:
--recipient— recipient name (required)--iban— recipient IBAN (required)--amount— amount in EUR (required)--bic— recipient BIC (optional, resolved by bank)--purpose— payment reference (optional)--source-iban— source account IBAN (default: first account)--instant— use SEPA Instant Payment (Echtzeitüberweisung) via HKIPZ
Both regular (HKCCS) and instant (HKIPZ) transfers support Verification of Payee (VoP/Namensabgleich). The VoP flow is handled automatically: the CLI polls for name verification and resubmits the payment once confirmed.
All commands that require a TAN will prompt interactively on stderr. Status messages go to stderr, data output goes to stdout — so you can pipe the JSON output safely.
Built on lib-fints by robocode13 — a TypeScript FinTS 3.0 client library.
LGPL-2.1 — see LICENSE.