A skill for OpenClaw / Claude Code / OpenCode to make and receive payments. Currently supports USDC payments on the Base chain. Try it at https://money.flows.network/
This project provides four CLI tools for Ethereum wallet management and token payments:
Creates a new Ethereum-compatible wallet with a secure random private key. The wallet is encrypted using the Web3 Secret Storage standard (keystore format) and saved to disk.
create-wallet [OPTIONS]Key features:
- Generates cryptographically secure private keys
- Encrypts wallet using scrypt + AES-128-CTR
- Auto-generates secure password if not provided
- Outputs the wallet address to stdout
Retrieves the Ethereum address and token balance from an existing wallet without requiring the password.
get-address [OPTIONS]Key features:
- Reads address directly from keystore (no decryption needed)
- Queries current token balance from blockchain (if network configured)
- Outputs JSON with address, balance, token info, and network
- Creates a new wallet automatically if none exists
Transfers ERC-20 tokens or native ETH from your wallet to a recipient address.
pay --to <ADDRESS> --amount <AMOUNT> [OPTIONS]Key features:
- Supports ERC-20 token transfers (USDC, etc.)
- Supports native ETH/gas token transfers
- Checks balance before sending
- Waits for transaction confirmation by default
- Uses configuration for network and token defaults
Manages configuration for all x402 tools. Stores settings in config.toml (located in the skill root directory, alongside the binaries).
payment-config <COMMAND>Commands:
show- Display all current configurationget <KEY>- Get a specific config valueset <KEY> <VALUE>- Set config valuesuse-network <PROFILE>- Apply a predefined network profile (base-sepolia, base-mainnet, etc.)list-networks- List available network profileslist-keys- List all valid config keys
All personal data is stored in the skill root directory (the parent of the scripts/ directory where binaries live):
<skill-root>/
├── config.toml # Network, token, and payment settings
├── wallet.json # Encrypted wallet keystore (Web3 Secret Storage format)
└── password.txt # Wallet password (auto-generated, 600 permissions)
The data directory is determined at runtime via std::env::current_exe() — each binary resolves paths relative to its own location (../ from the scripts/ directory).
Platform-specific skill files live under claude/ and openclaw/:
claude/skills/payment/ # For Claude Code
├── bootstrap.sh
├── config-default.toml
├── install.md
├── SKILL.md
└── scripts/
openclaw/skills/payment/ # For OpenClaw
├── bootstrap.sh
├── config-default.toml
├── install.md
├── SKILL.md
└── scripts/
-
Clone skill files: The install script copies the platform-specific directory to the agent's skill path:
- Claude Code:
~/.claude/skills/payment/ - OpenClaw:
~/.openclaw/skills/payment/
- Claude Code:
-
Bootstrap binaries: Running
bootstrap.shdetects your platform (OS + architecture) and downloads the appropriate pre-compiled binaries from GitHub Releases -
Binary installation: Binaries are extracted to the
scripts/subdirectory and made executable
Supported platforms:
- Linux x86_64 / aarch64
- macOS x86_64 / aarch64 (Apple Silicon)
- Windows x86_64
~/.claude/skills/payment/ # (or ~/.openclaw/skills/payment/)
├── bootstrap.sh
├── config.toml # Created from config-default.toml
├── wallet.json # Created by create-wallet
├── password.txt # Auto-generated wallet password
├── SKILL.md
└── scripts/
├── create-wallet
├── get-address
├── pay
└── payment-config
This is a Rust workspace with the following crates:
| Crate | Description |
|---|---|
payment-common |
Shared library for configuration, errors, and utilities |
create-wallet |
Wallet creation CLI |
get-address |
Address retrieval CLI |
pay |
Token payment CLI |
payment-config |
Configuration management CLI |
cargo build --releasecargo testThe project uses GitHub Actions to build binaries for all supported platforms. See .github/workflows/ci.yml for the CI configuration.
See LICENSE for details.