Skip to content

Repository files navigation

wise-cli

A Bun-powered CLI for the Wise Platform API. It compiles to a single native binary and supports the main personal-token workflows for profiles, balances, recipients, quotes, and transfers, while wise raw exposes the rest of the OpenAPI surface.

Requirements

  • Bun 1.0+
  • A Wise Personal API Token from Wise → Settings → Connect and manage apps → API tokens

Setup

bun install
bun run build
# Interactive setup; validates the token with GET /me
wise auth setup
# Or put WISE_API_TOKEN in .env.local and validate it
wise auth status
wise profiles

The project-local .env.local is ignored by Git. wise auth setup writes the token there with mode 0600. WISE_API_TOKEN and WISE_BASE_URL environment variables override the file. Production is the default; use --sandbox or set WISE_BASE_URL=https://api.wise-sandbox.com/2026Q3 for sandbox requests.

Commands

wise me
wise profiles [get <profileId>]
wise balances --profile <profileId> --types STANDARD,SAVINGS
wise balances get <balanceId> --profile <profileId>
wise balances create --profile <profileId> --currency EUR --type STANDARD
wise balances delete <balanceId> --profile <profileId>
wise recipients [--profile <profileId>] [--all]
wise recipients get <accountId>
wise recipients create --data '{...}'
wise recipients delete <accountId>
wise recipients requirements <quoteId>
wise recipients compatibility <accountId> <quoteId>
wise quotes create --profile <profileId> --data '{...}'
wise quotes create --unauthenticated --data '{...}'
wise quotes get <quoteId> --profile <profileId>
wise quotes update <quoteId> --profile <profileId> --data '{...}'
wise transfers [--all] [--profile <profileId>]
wise transfers get <transferId>
wise transfers create --data '{...}'
wise transfers cancel <transferId>
wise transfers requirements --data '{...}'
wise transactions --profile <profileId> --balance <balanceId> --currency USD --from 2026-07-01 --to 2026-07-31
wise currencies
wise rates --source EUR --target USD

Writes accept --data JSON so that conditional Wise fields are not hidden by the CLI. Balance creation generates X-idempotence-uuid when omitted. Transfer creation generates customerTransactionId when omitted and preserves it for safe retries within the request.

Raw API access

Use raw access for any path in the supplied Wise OpenAPI document:

wise raw GET /me
wise raw GET /accounts --param profileId=<profileId>
wise raw POST /quotes --data '{"sourceCurrency":"GBP","targetCurrency":"USD","sourceAmount":100}'
wise raw PATCH /profiles/<profileId>/quotes/<quote-id> \
--content-type application/merge-patch+json \
--data '{"targetAccount":12345}'
wise raw GET /transfers/<id>/receipt.pdf --output receipt.pdf
wise raw GET /some/path --no-auth

Raw requests support --param, --header, --data, --data-file, --content-type, --output, and --no-auth.

Configuration and cache

wise config set profileId <profileId>
wise config set outputFormat json
wise config set cacheTtl 300
wise config set environment sandbox
wise config show
wise cache stats
wise cache clear

Configuration and cached JSON responses live under ~/.wise-cli/. Read commands cache for five minutes by default. Use --refresh to replace a cached response or --no-cache to bypass and skip writing the cache.

Development

bun run start -- --help
bun test
bun run build

The live smoke checks intentionally use only GET /me and GET /profiles. Mutating command tests use mocked requests and do not create Wise resources.

Security

Never commit a Wise API token. Keep local credentials in the ignored .env.local file or in environment variables. The Husky pre-commit hook runs lint-staged and scans staged text for Wise token, bearer credential, and UUID-shaped secret patterns.

Report bugs through the GitHub issue tracker. Report sensitive vulnerabilities privately as described in SECURITY.md.

License

MIT. See LICENSE.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages