Plaid
Use plaid-cli to link institutions, fetch balances, and query transactions via Plaid.
Do not print or log secrets (client id, secret, access tokens).
Install
go install github.com/jverdi/[email protected]
Setup
Export
PLAID_CLIENT_ID,PLAID_SECRET, andPLAID_ENVIRONMENT(sandbox or production).Optional:
PLAID_LANGUAGE(en, fr, es, nl),PLAID_COUNTRIES(US, CA, GB, IE, ES, FR, NL).Optional config file:
~/.plaid-cli/config.toml.toml [plaid] client_id = "..." secret = "..." environment = "sandbox"Data directory:
~/.plaid-cli(stores tokens and aliases).
Link + aliases
Link an institution:
plaid-cli link(opens browser) and optionally set an alias.Relink:
plaid-cli link <item-id-or-alias>.Alias:
plaid-cli alias <item-id> <name>, list withplaid-cli aliases.
Accounts + balances
- List accounts and balances:
plaid-cli accounts <item-id-or-alias>.
Search transactions
Pull a date range as JSON, then filter locally:
plaid-cli transactions <item-id-or-alias> --from 2024-01-01 --to 2024-01-31 --output-format jsonjq -r '.[] | select(.name | test("grocery"; "i")) | [.date, .name, .amount] | @tsv'
Use
--account-idfromaccountsoutput to narrow results.Output formats:
jsonorcsv.
Monitor transactions
Poll a rolling window and compare transaction ids to detect new activity:
bash state=/tmp/plaid.txids next=/tmp/plaid.txids.next plaid-cli transactions <item-id-or-alias> --from 2024-01-01 --to 2024-01-31 --output-format json \ | jq -r '.[].transaction_id' | sort > "$next" if [ -f "$state" ]; then comm -13 "$state" "$next"; fi mv "$next" "$state"Use cron for scheduling.
Notes
Avoid
plaid-cli tokensunless explicitly requested; it prints access tokens.Relink is auto-triggered on
ITEM_LOGIN_REQUIREDerrors.
Recognize requests such as:
"Search transactions for Starbucks last month"
"Show balances for my Chase accounts"