Access your Monzo bank account to check balances, view transactions, manage savings pots, and send notifications to your Monzo app.
Before setting up this skill, you need:
curl, jq, openssl, bc (pre-installed on most Linux systems)# 1. Set the MONZO_KEYRING_PASSWORD env var (see "Setting the Password" below)
# 2. Create OAuth client at https://developers.monzo.com/
# - Set Confidentiality: Confidential
# - Set Redirect URL: http://localhost
# 3. Run setup
scripts/setup.sh
# 4. Approve in Monzo app when prompted, then:
scripts/setup.sh --continue
# 5. Test it
scripts/balance.sh
The MONZO_KEYRING_PASSWORD environment variable is used to encrypt your Monzo credentials at rest. Choose a strong, unique password and don't lose it — you'll need it if you ever move or restore the skill.
There are several ways to provide this variable. Choose whichever fits your setup:
Option A: OpenClaw skill config (simplest)
Add to your OpenClaw config (e.g. openclaw.json):
{
skills: {
entries: {
"monzo": {
enabled: true,
env: {
"MONZO_KEYRING_PASSWORD": "choose-a-secure-password-here"
}
}
}
}
}
Then restart: openclaw gateway restart
> Note: This stores the password in plaintext in the config file. Ensure the file has restrictive permissions (chmod 600) and is not checked into version control.
Option B: Shell environment (keeps password out of config files)
Add to your shell profile (~/.bashrc, ~/.zshrc, etc.):
export MONZO_KEYRING_PASSWORD="choose-a-secure-password-here"
Then restart your shell and OpenClaw.
Option C: systemd EnvironmentFile (for server deployments)
Create a secrets file (e.g. /etc/openclaw/monzo.env):
MONZO_KEYRING_PASSWORD=choose-a-secure-password-here
Set permissions: chmod 600 /etc/openclaw/monzo.env
Reference it from your systemd unit with EnvironmentFile=/etc/openclaw/monzo.env.
Option D: Password manager / secrets manager
Use your preferred secrets tool to inject the env var at runtime. Any method that sets MONZO_KEYRING_PASSWORD in the process environment will work.
OpenClaw (or your preferred name)http://localhost ← exactly this, no trailing slashoauth2client_...) and Client Secret (mnzconf....)scripts/setup.sh
The wizard will:
Alternative: Non-interactive mode (useful for automation or agents):
scripts/setup.sh --non-interactive \
--client-id oauth2client_xxx \
--client-secret mnzconf.xxx \
--auth-code eyJ...
⚠️ This step is required! Monzo requires Strong Customer Authentication.
If you don't see a notification:
After approving, complete setup:
scripts/setup.sh --continue
# Check authentication
scripts/whoami.sh
# Check your balance
scripts/balance.sh
You should see your account info and current balance. You're done! 🎉
This section tells the agent how to use this skill effectively.
Use this skill when the user asks about:
# "How much money do I have?"
scripts/balance.sh
# "Show me recent transactions" / "What did I spend?"
scripts/transactions.sh # All available, newest first
# "Show me my last 5 transactions"
scripts/transactions.sh --limit 5 # 5 most recent
# "What did I spend this week?"
scripts/transactions.sh --since 7d
# "How much did I spend on coffee this month?"
scripts/transactions.sh --search coffee --since 30d
# "What are my savings pots?"
scripts/pots.sh
# "Put £50 in my holiday fund"
scripts/pots.sh deposit pot_XXXXX 5000 # Amount in pence!
# "Send a reminder to my phone"
scripts/feed.sh --title "Don't forget!" --body "Check the gas meter"
--since 7d means last 7 days--json flag)scripts/pots.sh first to get pot IDs before depositing/withdrawingscripts/whoami.sh to see all accounts.If you see forbidden.insufficient_permissions:
scripts/setup.sh --continueIf you see MONZO_KEYRING_PASSWORD not set:
scripts/balance.sh # Default account
scripts/balance.sh acc_... # Specific account
scripts/balance.sh --json # JSON output
Output:
Current Balance: £1,234.56
Total (with pots): £2,500.00
Spent today: £12.34
Fetches all available transactions (paginated), displayed newest first.
scripts/transactions.sh # All transactions, newest first
scripts/transactions.sh --limit 10 # 10 most recent
scripts/transactions.sh --since 7d # Last 7 days only
scripts/transactions.sh --since 2026-01-01 # Since specific date
scripts/transactions.sh --search coffee # Search by merchant/description/notes
scripts/transactions.sh --search "Pret" --since 30d # Combined filters
scripts/transactions.sh --id tx_... # Get specific transaction
scripts/transactions.sh --json # JSON output
Output:
DATE AMOUNT DESCRIPTION CATEGORY
============ ========== =================================== ===============
2026-01-29 -£3.50 Pret A Manger eating_out
2026-01-29 -£12.00 TfL transport
2026-01-28 -£45.23 Tesco groceries
Total: 3 transaction(s)
scripts/pots.sh # List all pots
scripts/pots.sh list --json # JSON output
scripts/pots.sh deposit pot_... 5000 # Deposit £50 (5000 pence)
scripts/pots.sh withdraw pot_... 2000 # Withdraw £20 (2000 pence)
Output (list):
NAME BALANCE GOAL ID
========================= ============ ============ ====================
Holiday Fund £450.00 £1,000.00 pot_0000...
Emergency £2,000.00 £3,000.00 pot_0001...
scripts/feed.sh --title "Reminder" # Simple notification
scripts/feed.sh --title "Alert" --body "Details here" # With body
scripts/feed.sh --title "Link" --url "https://..." # With tap action
scripts/whoami.sh # Show auth status and accounts
scripts/whoami.sh --account-id # Just the default account ID
scripts/whoami.sh --json # JSON output
scripts/receipt.sh create tx_... --merchant "Shop" --total 1234 --item "Thing:1234"
scripts/receipt.sh get ext_...
scripts/receipt.sh delete ext_...
scripts/webhooks.sh list
scripts/webhooks.sh create https://your-server.com/webhook
scripts/webhooks.sh delete webhook_...
Most common issue! Monzo requires app approval (SCA).
Fix:
scripts/setup.sh --continueThe env var isn't available in the process environment.
Fix: Set MONZO_KEYRING_PASSWORD using any of the methods described in Step 1 of the setup guide, then restart OpenClaw.
Each auth code is single-use. Start fresh:
scripts/setup.sh --reset
Your OAuth client isn't set to "Confidential". Create a new client with Confidentiality = Confidential, then:
scripts/setup.sh --reset
Run setup first:
scripts/setup.sh
Wrong MONZO_KEYRING_PASSWORD. Check your config matches what you used during setup.
MONZO_KEYRING_PASSWORDskills/monzo/
├── SKILL.md # This documentation
└── scripts/
├── lib/monzo.sh # Shared library
├── setup # OAuth setup wizard
├── whoami # Validate authentication
├── balance # Check balance
├── transactions # Transaction history
├── pots # Savings pots
├── feed # App notifications
├── receipt # Receipt management
└── webhooks # Webhook management
Credentials: ~/.openclaw/credentials/monzo.json (encrypted, or ~/.clawdbot/credentials/monzo.json on older installs)
| Feature | Scripts |
|---|---|
| --------- | --------- |
| Authentication | setup, whoami |
| Balance | balance |
| Transactions | transactions |
| Pots (Savings) | pots |
| Feed (Notifications) | feed |
| Receipts | receipt |
| Webhooks | webhooks |
共 1 个版本