Malé CLI pro BudgetBakers Wallet REST API.
Je dělané hlavně pro shell, automatizaci a AI agenty, ale bez problému se dá používat i ručně z terminálu.
CLI příkaz v terminálu je bbwallet.
Pokud chcete přes jedno API pracovat s daty z českých bank, Wallet od BudgetBakers je docela praktická vrstva. BudgetBakers řeší napojení i hosting, ve Walletu si propojíte účty a přes REST API nebo tohle CLI si pak můžete tahat data do skriptů, dashboardů nebo vlastní automatizace.
Hodí se to hlavně ve chvíli, kdy máte ve Walletu napojené účty z Fiobanky, Komerční banky, České spořitelny, ČSOB, Air Bank, Monety, mBank, Raiffeisenbank nebo Revolutu a nechcete řešit integraci pro každou banku zvlášť.
Tohle CLI je read-only. Není to oficiální SDK žádné konkrétní banky. Je to malé CLI nad Wallet API, které má dát rozumné rozhraní pro běžné použití v terminálu a ve skriptech.
CLI je schválně tenké a drží se veřejného Wallet API:
- stabilní JSON výstup
- explicitní podpříkazy
- předvídatelné chyby a exit kódy
- jednoduché lokální přihlášení s uložením tokenu mimo repozitář
- ergonomické flagy místo syrových API filtrů
--help je textový. Výstupy příkazů i chyby jsou v JSONu.
bbwallet auth login [--no-open]
bbwallet auth status
bbwallet auth logout
bbwallet accounts list [flags]
bbwallet categories list [flags]
bbwallet budgets list [flags]
bbwallet goals list [flags]
bbwallet labels list [flags]
bbwallet standing-orders list [flags]
bbwallet record-rules list [flags]
bbwallet records list [flags]
bbwallet records get <record-id>
bbwallet records get-many --id <id[,id2,...]>
bbwallet usage stats --period <30days|4weeks|6months>
bbwallet resolve account <query> [--exact] [--currency-code <code>]
bbwallet resolve category <query> [--exact]
bbwallet resolve label <query> [--exact]
bbwallet report spending-by-category --from YYYY-MM-DD --to YYYY-MM-DD [flags]
bbwallet report by-account --from YYYY-MM-DD --to YYYY-MM-DD [flags]
bbwallet report top-counterparties --from YYYY-MM-DD --to YYYY-MM-DD [flags]
bbwallet report monthly-summary --from YYYY-MM-DD --to YYYY-MM-DD [flags]Help pro konkrétní skupinu příkazů:
bbwallet --help
bbwallet auth --help
bbwallet records --help
bbwallet report --helpWallet REST API je použitelné samo o sobě, ale v praxi kolem něj zůstává pár věcí, které v CLI a automatizaci zbytečně otravují:
- správa bearer tokenu
- syntaxe filtrů jako
gte.,lte.nebocontains-i. - ruční stránkování
- metadata v hlavičkách odpovědi
- několik výpisových endpointů s lehce odlišným tvarem odpovědi
bbwallet tohle schová a dá nad tím jednoduchý, opakovatelný příkazový povrch.
- Node.js 20+
- API token pro BudgetBakers Wallet
- Premium plán ve Walletu kvůli přístupu k API tokenu
Z kořene repozitáře:
npm linkPak bude bbwallet dostupný v PATH.
Bez linkování:
node ./bin/bbwallet.js --helpAutentizaci stačí nastavit jednou:
bbwallet auth login
bbwallet auth login --no-openCLI otevře nastavení Wallet REST API a požádá Vás o vložení API tokenu:
- stránka nastavení:
https://web.budgetbakers.com/settings/rest-api - pokud nejste přihlášeni, Wallet Vás nejdřív přesměruje na login
- po vložení tokenu ho CLI ověří a uloží mimo repozitář
Cesta k uloženým přihlašovacím údajům:
- macOS:
~/Library/Application Support/bbwallet/credentials.json - Linux:
$XDG_CONFIG_HOME/bbwallet/credentials.jsonnebo~/.config/bbwallet/credentials.json - Windows:
%APPDATA%\\bbwallet\\credentials.json
Další auth příkazy:
bbwallet auth status
bbwallet auth logoutauth status rozlišuje:
validation_status: "valid"pro funkční tokenvalidation_status: "invalid"pro neplatné přihlašovací údajevalidation_status: "unknown"pro dočasné chyby při ověřování, třeba rate limitvalidation_status: "not_configured"když úložiště přihlašovacích údajů ještě neexistuje
bbwallet --json accounts list --all
bbwallet --json categories list --all
bbwallet --json budgets list
bbwallet --json goals list
bbwallet --json labels list
bbwallet --json standing-orders list
bbwallet --json record-rules listPodporované výpisové zdroje:
accounts
categories
budgets
goals
labels
standing-orders
record-rulesObecné flagy pro výpisové endpointy:
--limit <1-200>
--offset <number>
--max-pages <number>
--all
--id <id[,id2,...]>
--name <substring>
--name-exact <exact name>bbwallet --json records list --from 2026-04-01 --to 2026-04-30
bbwallet --json records list --category-name Groceries --sort -recordDate
bbwallet --json records list --account-name Revolut --account-currency EUR --limit 20
bbwallet --json records get <record-id>
bbwallet --json records get-many --id rec_123,rec_456Použití:
bbwallet records list [flags]
bbwallet records get <record-id>
bbwallet records get-many --id <id[,id2,...]>Flagy pro záznamy:
--from YYYY-MM-DD
--to YYYY-MM-DD
--account-id <id>
--account-name <query>
--account-currency <currency code>
--category-id <id>
--category-name <query>
--label-id <id>
--label-name <query>
--note-contains <text>
--payee-contains <text>
--payer-contains <text>
--amount-gte <number>
--amount-lte <number>
--sort <+recordDate|-recordDate|+amount|-amount|+createdAt|-createdAt|+updatedAt|-updatedAt>
--limit <1-200>
--offset <number>
--max-pages <number>
--allbbwallet --json resolve account Revolut
bbwallet --json resolve account Revolut --currency-code EUR
bbwallet --json resolve category Groceries
bbwallet --json resolve label WorkPoužití:
bbwallet resolve account <query> [--exact] [--currency-code <code>]
bbwallet resolve category <query> [--exact]
bbwallet resolve label <query> [--exact]--exact vynutí přesnou shodu názvu. --currency-code je podporované jen pro resolve account a dává smysl hlavně u účtů se stejným názvem v různých měnách.
bbwallet --json usage stats --period 30days
bbwallet --json usage stats --period 4weeks
bbwallet --json usage stats --period 6monthsbbwallet --json report spending-by-category --from 2026-04-01 --to 2026-04-30 --top 10
bbwallet --json report by-account --from 2026-04-01 --to 2026-04-30 --top 10
bbwallet --json report top-counterparties --from 2026-04-01 --to 2026-04-30 --top 10
bbwallet --json report monthly-summary --from 2026-01-01 --to 2026-04-30 --max-pages 5Použití:
bbwallet report spending-by-category --from YYYY-MM-DD --to YYYY-MM-DD [flags]
bbwallet report by-account --from YYYY-MM-DD --to YYYY-MM-DD [flags]
bbwallet report top-counterparties --from YYYY-MM-DD --to YYYY-MM-DD [flags]
bbwallet report monthly-summary --from YYYY-MM-DD --to YYYY-MM-DD [flags]Tyhle reporty počítají agregace na klientovi nad endpointem /records.
Společná pravidla:
--froma--tojsou povinné pro všechny reporty- reporty podporují stejné filtry jako
records list, včetně--account-name,--account-currency,--category-name,--label-name,--note-contains,--payee-contains,--payer-contains,--amount-gte,--amount-ltea--exact --max-pagesje praktická brzda pro větší datasety nebo při práci pod rate limitem
Doplňkové flagy:
spending-by-category: --top <n>
by-account: --top <n>
top-counterparties: --top <n>
monthly-summary: bez --topPoznámky k reportům:
report by-accountvrací iaccountDisplayName, takže duplicitní názvy účtů jsou rozlišené třeba jakoRevolut (EUR)aRevolut (CZK)report top-counterpartiesse u známých bankovních účtů pokouší převést číslo účtu zpátky na Wallet účet
Spouštění příkazů vrací JSON. Úspěšná odpověď obsahuje:
okcommanddatarate_limitsyncpagination, pokud dává smysl
Chyby jdou na stderr a mají tenhle tvar:
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded",
"details": {
"retry_after_seconds": 60
}
}
}0úspěch1neočekávaná lokální nebo běhová chyba2neplatné flagy nebo nejednoznačné rozlišení názvu3auth nebo setup chyba4rate limit5probíhá initial sync ve Walletu6API nebo serverová chyba
--help (nebo spuštění bez příkazu) je v prostém textu a končí s 0.
npm test