A powerful Command Line Interface for Dodo Payments
Installation • Authentication • Usage • AI • Webhooks • Contributing
Manage your Dodo Payments resources, test webhooks, and run AI-powered queries against your account — all from the terminal.
- Interactive TUI — launch
dodowith no arguments to open the full interactive interface with command palette, history, and live notifications. - AI assistant built in — ask questions or take actions in plain English with
/ai. No extra setup, runsdodopayments-mcplocally. - Encrypted at rest — API keys are stored in
~/.dodopayments/config.json, AES-256-GCM encrypted with a machine-derived key. No plaintext credentials on disk. - Auto update — the CLI checks for new versions and notifies you in-app. Run
/updateto upgrade in place. - Webhook tooling — listen for live webhooks or trigger payloads offline for local development.
We provide multiple ways to install the CLI.
Note: If you already have Node or Bun installed, the package-manager installs are the simplest path and always pull the latest version.
npm install -g dodopayments-clibun install -g dodopayments-cli-
Download the binary for your platform from the latest GitHub Release.
Platform Binary macOS (Apple Silicon) dodo-cli-darwin-arm64macOS (Intel) dodo-cli-darwin-x64Linux (x86_64) dodo-cli-linux-x64Linux (arm64) dodo-cli-linux-arm64Windows (x86_64) dodo-cli-windows-x64.exe -
Rename the binary to
dodo:- Linux / macOS:
mv ./dodo-cli-* ./dodo && chmod +x ./dodo - Windows:
ren .\dodo-cli-windows-x64.exe .\dodo.exe
- Linux / macOS:
-
Move it to a directory on your
PATH:- Linux / macOS:
sudo mv ./dodo /usr/local/bin/ - Windows:
move .\dodo.exe C:\Windows\System32\dodo.exe(requires admin)
- Linux / macOS:
-
(Optional) Verify the download against
SHA256SUMS.txtpublished with each release:shasum -a 256 -c SHA256SUMS.txt
Before using authenticated commands you need to log in:
dodo login…or, from inside the interactive TUI:
/login
The login flow will:
- Open your browser to the Dodo Payments API Keys page.
- Prompt you to paste your API Key.
- Ask you to select an environment — Test Mode or Live Mode.
- Store the credentials encrypted at
~/.dodopayments/config.json(AES-256-GCM, machine-bound key).
Upgrading from v3.0.x? Your previous keychain-stored credentials won't carry over — just run
dodo loginonce to re-authenticate.
You can keep one Test Mode and one Live Mode key authenticated at the same time. To clear credentials, use:
dodo logout
# or, in the TUI
/logoutThe logout flow lets you choose between All accounts, Test Mode, or Live Mode independently.
You can use the CLI in two modes:
Just run:
dodoThis launches the full interactive interface. Type / to open the command palette, or just start typing — anything that isn't a slash command is sent to the AI assistant.
Use:
/helpto see all commands./exit(or pressEsctwice) to quit./clearto clear the screen./updateto upgrade to the latest version when one is available.
You can also run commands directly without entering the TUI:
dodo <category> <sub-command> [args...]For example:
dodo payments list 1
dodo customers list
dodo wh trigger payment.success http://localhost:3000/webhookThe reference tables below show every command. In the TUI, prefix them with /; in direct mode, drop the /. Commands marked (TUI only) are interactive wizards and only work inside the TUI.
Ask questions or take actions in natural language. The assistant uses dodopayments-mcp running locally — no additional setup or OAuth flow required, and your AI traffic doesn't leave your machine except to talk to the model provider.
| Command | Description |
|---|---|
/ai <query> |
Ask the AI assistant a question or give it an instruction |
| (any non-slash text) | Sent to the AI assistant by default while in the TUI |
Examples:
how much revenue did I make this week?
/ai create a new customer named Acme Inc.
/ai find my last failed payment
The assistant respects your active environment (Test / Live).
| Command | Description |
|---|---|
/products list <page> |
List products |
/products create |
Open the dashboard to create a product |
/products info <id> |
View details for a specific product |
| Command | Description |
|---|---|
/payments list <page> |
List payments |
/payments info <id> |
Get information about a specific payment |
| Command | Description |
|---|---|
/customers list <page> |
List customers |
/customers create |
Create a new customer (TUI only) |
/customers update <id> |
Update an existing customer (TUI only) |
/customers portal <id> |
Create a temporary customer portal session |
| Command | Description |
|---|---|
/discounts list <page> |
List discounts |
/discounts create |
Create a new percentage-based discount (TUI only) |
/discounts delete <id> |
Remove a discount by ID (TUI only) |
| Command | Description |
|---|---|
/licences list <page> |
List licenses |
| Command | Description |
|---|---|
/addons list <page> |
List addons |
/addons create |
Open the dashboard to create an addon |
/addons info <id> |
View details for a specific addon |
| Command | Description |
|---|---|
/refunds list <page> |
List refunds |
/refunds info <id> |
View details for a specific refund |
| Command | Description |
|---|---|
/checkout new |
Interactively create a hosted checkout session and get a payment link (TUI only) |
Manage and test webhooks directly from the CLI.
| Command | Description |
|---|---|
/wh listen <url> |
Listen for webhooks in real time and forward them to <url> |
/wh trigger <event> <url> |
Trigger a test webhook event offline — even while logged out |
In the TUI, omitting the args (/wh listen or /wh trigger) opens an interactive wizard. In direct mode (dodo wh …), both arguments are required.
The interactive /wh trigger flow guides you through:
- Setting a destination endpoint URL
- Selecting a specific event to trigger
Note:
/wh triggerdoes not require login. It works as a local/offline webhook payload generator.
Note: Triggered events are not signed yet. While testing, disable webhook signature verification on your endpoint — for example, use
unsafe_unwrap()instead ofunwrap()in your webhook handler during testing only.
Note:
/wh listenrequires a Test Mode API key. Live Mode keys are not supported by the listen flow.
| Category | Events |
|---|---|
| Subscription | active, updated, on_hold, renewed, plan_changed, cancelled, failed, expired |
| Payment | success, failed, processing, cancelled |
| Refund | success, failed |
| Dispute | opened, expired, accepted, cancelled, challenged, won, lost |
| License | created |
| Command | Description |
|---|---|
/help |
Show the command reference |
/update |
Check for and install a CLI update |
/login |
Authenticate with an API key |
/logout |
Sign out of one or all environments |
/clear |
Clear the TUI screen |
/exit |
Exit the TUI (also: type exit, or press Esc twice) |
The CLI checks for a newer version on startup and surfaces a notification in the status bar when one is available. To upgrade:
/update
Or, if you installed via a package manager, the usual npm i -g dodopayments-cli / bun i -g dodopayments-cli will also work.
We welcome contributions from the community — whether you're fixing bugs, adding new features, or improving docs.
Please read our Contributing Guide to get started. We also have a Code of Conduct that we expect all contributors to follow.
- Report bugs and suggest features
- Improve documentation
- Add new CLI commands
- Write tests
- Review pull requests
- Discord Community — chat with the team and other users
- GitHub Issues — report bugs or request features
- Documentation — learn more about Dodo Payments
This project is licensed under the GNU General Public License v3.0 or later — see the LICENSE file for the full text.
Dodo Payments CLI — manage Dodo Payments resources from the terminal.
Copyright (C) 2025 Dodo Payments
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
Made with ❤️ by Dodo Payments
