revolut-business
Revolut Business API CLI — accounts, balances, transactions, counterparties, payments, FX exchange, CSV export.
Setup & Installation
Install command
clawhub install christianhaberl/revolut-businessIf the CLI is not installed:
Install command
npx clawhub@latest install christianhaberl/revolut-businessOr install with OpenClaw CLI:
Install command
openclaw skills install christianhaberl/revolut-businessor paste the repo link into your assistant's chat
Install command
https://github.com/openclaw/skills/tree/main/skills/christianhaberl/revolut-businessWhat This Skill Does
CLI for the Revolut Business API covering accounts, balances, transactions, payments, FX exchange, and CSV export. OAuth tokens refresh automatically before each API call. Works with Revolut Business accounts only, not personal accounts.
Handles OAuth token refresh automatically, so API calls never fail mid-workflow due to expired credentials.
When to Use It
- Checking live balances across multiple currency accounts
- Exporting a month's transactions to CSV for bookkeeping
- Sending payments to saved counterparties from the terminal
- Converting currencies between business wallet accounts
- Filtering transactions by type or date range for reconciliation
View original SKILL.md file
# Revolut Business API
Full CLI for **Revolut Business** — accounts, transactions, payments, FX, exports.
**Entry point:** `python3 {baseDir}/scripts/revolut.py`
## Setup
### Interactive Setup Wizard (recommended)
```bash
python3 {baseDir}/scripts/setup.py
```
Walks you through everything: key generation, Revolut certificate upload, OAuth callback, authorization.
### Manual Setup
- Python 3.10+, `pip install PyJWT cryptography`
- Revolut Business account with API certificate
- See [README](https://github.com/christianhaberl/revolut-openclaw-skill) for detailed step-by-step guide
### Credentials
Stored in `~/.clawdbot/revolut/`:
- `private.pem` — RSA private key (for JWT signing)
- `certificate.pem` — X509 cert (uploaded to Revolut)
- `tokens.json` — OAuth tokens (auto-managed)
- `config.json` — client ID, domain, redirect URI
Environment variables (in `.env`):
- `REVOLUT_CLIENT_ID` — from Revolut API settings
- `REVOLUT_ISS_DOMAIN` — your redirect URI domain (without https://)
## Commands
### Accounts & Balances
```bash
python3 {baseDir}/scripts/revolut.py accounts # List all accounts with balances
python3 {baseDir}/scripts/revolut.py balance # Total EUR balance
python3 {baseDir}/scripts/revolut.py accounts --json # JSON output
```
### Transactions
```bash
python3 {baseDir}/scripts/revolut.py transactions # Last 20
python3 {baseDir}/scripts/revolut.py tx -n 50 # Last 50
python3 {baseDir}/scripts/revolut.py tx --since 2026-01-01 # Since date
python3 {baseDir}/scripts/revolut.py tx --since 2026-01-01 --to 2026-01-31
python3 {baseDir}/scripts/revolut.py tx -a Main # Filter by account
python3 {baseDir}/scripts/revolut.py tx --type card_payment # Filter by type
python3 {baseDir}/scripts/revolut.py tx --json # JSON output
```
Transaction types: `card_payment`, `transfer`, `exchange`, `topup`, `atm`, `fee`, `refund`
### Counterparties
```bash
python3 {baseDir}/scripts/revolut.py counterparties # List all
python3 {baseDir}/scripts/revolut.py cp --name "Lisa" # Search by name
python3 {baseDir}/scripts/revolut.py cp --json
```
### Payments
```bash
# Send payment (with confirmation prompt)
python3 {baseDir}/scripts/revolut.py pay -c "Lisa Dreischer" --amount 50.00 --currency EUR -r "Lunch"
# Create draft (no immediate send)
python3 {baseDir}/scripts/revolut.py pay -c "Lisa Dreischer" --amount 50.00 --draft -r "Lunch"
# Skip confirmation
python3 {baseDir}/scripts/revolut.py pay -c "Lisa Dreischer" --amount 50.00 -y
```
### Currency Exchange
```bash
python3 {baseDir}/scripts/revolut.py exchange --amount 100 --sell EUR --buy USD
python3 {baseDir}/scripts/revolut.py fx --amount 500 --sell EUR --buy GBP
```
### Internal Transfers
```bash
python3 {baseDir}/scripts/revolut.py transfer --from-account <ID> --to-account <ID> --amount 100
```
### Export (CSV)
```bash
python3 {baseDir}/scripts/revolut.py export # Print CSV to stdout
python3 {baseDir}/scripts/revolut.py export -n 200 -o transactions.csv # Save to file
python3 {baseDir}/scripts/revolut.py export --since 2026-01-01 -o jan.csv
```
### Token Status
```bash
python3 {baseDir}/scripts/revolut.py token-info
```
## Token Auto-Refresh
- Access tokens expire after ~40 minutes
- Automatically refreshed using the refresh token before API calls
- No manual intervention needed after initial auth
## Security Notes
- Private key and tokens are stored in `~/.clawdbot/revolut/` — treat as sensitive
- Payments require explicit confirmation (use `--yes` to skip)
- `--draft` creates payment drafts that need approval in Revolut app
- Never share your private key, tokens, or client assertion JWT
Example Workflow
Here's how your AI assistant might use this skill in practice.
User asks: Checking live balances across multiple currency accounts
- 1Checking live balances across multiple currency accounts
- 2Exporting a month's transactions to CSV for bookkeeping
- 3Sending payments to saved counterparties from the terminal
- 4Converting currencies between business wallet accounts
- 5Filtering transactions by type or date range for reconciliation
Revolut Business API CLI — accounts, balances, transactions, counterparties, payments, FX exchange, CSV export.
Security Audits
These signals reflect official OpenClaw status values. A Suspicious status means the skill should be used with extra caution.