Install
openclaw skills install fints-bankingSupport for German personal online banking following FinTS banking standard. Out of the box support for many german banks. Uses system keychain to keep credentials safe. Native Human-in-the-loop experince for transactions. Built in recovery and onboarding flows.
openclaw skills install fints-bankingUse this skill when you need to operate German FinTS banking tasks through fints-agent-cli.
This document is written for agents. It defines deterministic flows, expected outputs, and exact next actions.
Detailed command reference:
COMMANDS.md (in this same skill folder)Treat this skill as high-risk because it can initiate financial transfers.
Hard rules:
--yes --auto for real transfers unless there is explicit final approval in the same session.Required transfer gate (must pass all steps):
from_iban, to_iban, to_name, amount, reason, instant.APPROVE TRANSFER.If any field is ambiguous, missing, or changed after approval:
Before running any banking command, verify:
fints-agent-cli --help
Expected:
onboard, accounts, transactions, transferIf command is missing:
fints-agent-cli --helpNever guess bank endpoints.
fints-agent-cli providers-list --search <bank-name-or-bank-code>
fints-agent-cli providers-show --provider <provider-id>
Expected:
If provider is not listed:
Run:
fints-agent-cli onboard
Expected success lines usually include:
Config saved: ...PIN saved in Keychain: ...Onboarding + bootstrap completed.If onboarding exits early or auth fails:
fints-agent-cli bootstrap
Run:
fints-agent-cli accounts
Expected output format:
<IBAN> <Amount> <Currency>Agent action:
Preferred deterministic call:
fints-agent-cli transactions --iban <IBAN> --days 30 --format json
Fallback quick call:
fints-agent-cli transactions --days 30
Expected fields in JSON rows:
dateamountcounterpartycounterparty_iban (if bank payload provides it)purposeIf output is empty or too short:
fints-agent-cli transactions --iban <IBAN> --days 365 --format json
fints-agent-cli --debug transactions --iban <IBAN> --days 365 --format json
Safe flow:
fints-agent-cli transfer \
--from-iban <FROM_IBAN> \
--to-iban <TO_IBAN> \
--to-name "<RECIPIENT_NAME>" \
--amount <AMOUNT_DECIMAL> \
--reason "<REFERENCE>" \
--dry-run
After user confirms with exact phrase APPROVE TRANSFER, run real transfer:
fints-agent-cli transfer \
--from-iban <FROM_IBAN> \
--to-iban <TO_IBAN> \
--to-name "<RECIPIENT_NAME>" \
--amount <AMOUNT_DECIMAL> \
--reason "<REFERENCE>"
Expected sync final pattern:
Result:code/text)Safe submit flow:
fints-agent-cli transfer-submit \
--from-iban <FROM_IBAN> \
--to-iban <TO_IBAN> \
--to-name "<RECIPIENT_NAME>" \
--amount <AMOUNT_DECIMAL> \
--reason "<REFERENCE>"
Expected:
Pending ID: <id>Continue/poll:
fints-agent-cli transfer-status --id <PENDING_ID> --wait
Expected final pattern:
Final result:If still pending:
transfer-status --id <PENDING_ID> --waitSetup or refresh keychain PIN entry:
fints-agent-cli keychain-setup --user-id <LOGIN>
Force manual PIN prompt for one run:
fints-agent-cli accounts --no-keychain
Security rule:
Case: Please run bootstrap first.
fints-agent-cli bootstrap
Case: IBAN not found: ...
fints-agent-cli accounts
Then retry with exact IBAN.
Case: local state seems broken
fints-agent-cli reset-local
fints-agent-cli onboard
After every operation, report exactly:
Key facts examples:
--debug--debug only for diagnosis--iban / --from-iban for deterministic behavior--yes --auto for real transfers unless user explicitly requested unattended execution and confirmed all fields