Monzo
Access Monzo bank account - check balance, view transactions, manage pots, send feed notifications. For personal finance queries and banking automation.
Access Monzo bank account - check balance, view transactions, manage pots, send feed notifications. For personal finance queries and banking automation.
Real data. Real impact.
Growing
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
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 (
) and is not checked into version control.chmod 600
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.shCheck 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 groceriesTotal: 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 |
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.