🏦 ponto-cli - Access Ponto from the terminal

A command-line interface for the Ponto banking API.
Features
- Account information (list, get, balances)
- Transaction history with CSV/JSON export
- Synchronization management
- Pending transactions
- Financial institutions listing
- Multiple profile support (sandbox/live)
- Command allowlist for restricted environments
- Cross-platform (macOS, Linux, Windows)
- OS keyring credential storage
Installation
From Source
go install github.com/dedene/ponto-cli/cmd/ponto@latest
From Releases
Download the binary for your platform from
GitHub Releases.
Quick Start
# Login with Ponto credentials (from dashboard)
ponto auth login
# Check authentication status
ponto auth status
# List accounts
ponto accounts list
# Set default account (optional, skips --account-id on future commands)
ponto config set account-id <ACCOUNT_ID>
# List transactions (last 30 days)
ponto transactions list --since=-30d
# Filter by type (income/expense)
ponto transactions list --type=income
ponto transactions list --type=expense
# Export transactions as CSV
ponto transactions export --format=csv > transactions.csv
# Trigger account sync
ponto sync create --subtype=accountTransactions
Commands
ponto auth login Store credentials in keyring
ponto auth logout Remove credentials from keyring
ponto auth status Show authentication status
ponto accounts list List all accounts
ponto accounts get <ID> Get account details
ponto accounts sync <ID> Trigger synchronization
ponto transactions list List transactions (--type=income|expense|all)
ponto transactions get Get transaction details
ponto transactions export Export transactions (--type=income|expense|all)
ponto sync create Create synchronization
ponto sync get Get sync status
ponto sync list List synchronizations
ponto pending-transactions list List pending transactions
ponto financial-institutions list List financial institutions
ponto organization show Show organization info
ponto config set <key> <value> Set configuration value
ponto config get <key> Get configuration value
# Table (default) - human readable
ponto accounts list
# JSON - for scripting
ponto accounts list --json
# CSV - for spreadsheets
ponto accounts list --csv
# Plain TSV - for cut/awk
ponto accounts list --plain
Profiles
Use profiles to manage multiple environments:
# Login to sandbox
ponto auth login --profile=sandbox
# Use sandbox profile
ponto --profile=sandbox accounts list
# Or use shorthand
ponto --sandbox accounts list
Command Allowlist
Restrict available commands in sensitive environments:
# Only allow read commands
export PONTO_ENABLE_COMMANDS="auth.status,accounts.list,transactions.list"
# Or via flag
ponto --enable-commands=accounts.list accounts list
Environment Variables
| Variable |
Description |
PONTO_PROFILE |
Default profile name |
PONTO_ENABLE_COMMANDS |
Comma-separated allowed commands |
PONTO_KEYRING_BACKEND |
Keyring backend (auto/keychain/file) |
PONTO_KEYRING_PASSWORD |
Password for file backend |
Configuration
Config file: ~/.config/ponto/config.yaml
default_profile: live
keyring_backend: auto
profiles:
default:
account_id: abc-123-def # Default account for commands
sandbox:
account_id: sandbox-456
Default Account
Set a default account to avoid specifying --account-id on every command:
# Set default account for current profile
ponto config set account-id <ACCOUNT_ID>
# View current setting
ponto config get account-id
# Now these work without --account-id:
ponto transactions list --since=-30d
ponto pending-transactions list
Resolution order: flag → config → auto-detect (if single account)
License
MIT