The Paddle CLI is a command-line tool for the Paddle API. Use it to work with products, prices, customers, subscriptions, transactions, and more from your terminal, in scripts, and in CI/CD pipelines.
The CLI is designed for people and AI agents alike. Turn a task into a set of commands once and rerun it yourself, in a scheduled routine, or with an AI agent.
View the Paddle CLI on GitHub
How it works
The Paddle CLI has two kinds of commands:
- Resource commands work with entities in your Paddle account, like products and subscriptions. They match the operations in the Paddle API. For example,
paddle products createsends the same request as create a product. - Core commands manage how the CLI works, like your login, which account you're using, and your settings.
Install
You can install the Paddle CLI using Homebrew, the install script, or a manual download. You can also build from source.
Homebrew
Install paddlehq/tap/paddle with Homebrew:
brew install paddlehq/tap/paddleInstall script
The install script downloads the latest release for your system, checks it against the release's checksums, and installs paddle in /usr/local/bin. If you can't write to /usr/local/bin, it installs paddle in ~/.local/bin instead. If that folder isn't on your PATH, the script tells you.
curl -fsSL https://raw.githubusercontent.com/PaddleHQ/paddle-cli/main/install.sh | shTo install a specific version or choose the folder, pass options after sh -s --:
curl -fsSL https://raw.githubusercontent.com/PaddleHQ/paddle-cli/main/install.sh | sh -s -- --version vX.Y.Z --dir ~/binYou can also set the PADDLE_INSTALL_VERSION and PADDLE_INSTALL_DIR environment variables.
Download manually
Download the
.tar.gzarchive for your Mac from the latest release on GitHub. Choose the Apple silicon (arm64) or Intel (amd64) version.Optionally, verify the archive against
checksums.txtfrom the same release.Extract the archive. It contains the
paddlebinary.Move
paddleto a folder on yourPATH, like/usr/local/bin:sudo mv paddle /usr/local/bin/sudo mv paddle /usr/local/bin/If macOS blocks
paddlefrom running, remove the quarantine flag that macOS adds to downloaded files:xattr -d com.apple.quarantine /usr/local/bin/paddlexattr -d com.apple.quarantine /usr/local/bin/paddle
You can install the Paddle CLI using the install script, Homebrew, or a manual download. You can also build from source.
Install script
The install script downloads the latest release for your system, checks it against the release's checksums, and installs paddle in /usr/local/bin. If you can't write to /usr/local/bin, it installs paddle in ~/.local/bin instead. If that folder isn't on your PATH, the script tells you.
curl -fsSL https://raw.githubusercontent.com/PaddleHQ/paddle-cli/main/install.sh | shTo install a specific version or choose the folder, pass options after sh -s --:
curl -fsSL https://raw.githubusercontent.com/PaddleHQ/paddle-cli/main/install.sh | sh -s -- --version vX.Y.Z --dir ~/binYou can also set the PADDLE_INSTALL_VERSION and PADDLE_INSTALL_DIR environment variables.
Homebrew
Install paddlehq/tap/paddle with Homebrew:
brew install paddlehq/tap/paddleDownload manually
Download the
.tar.gzarchive for your system from the latest release on GitHub. Chooseamd64for Intel and AMD processors, orarm64for ARM processors.Optionally, verify the archive against
checksums.txtfrom the same release.Extract the archive. It contains the
paddlebinary.Move
paddleto a folder on yourPATH, like/usr/local/bin:sudo mv paddle /usr/local/bin/sudo mv paddle /usr/local/bin/
Download the Paddle CLI from GitHub:
- Download the Windows
.ziparchive for your processor,amd64orarm64, from the latest release on GitHub. - Optionally, verify the archive against
checksums.txtfrom the same release. - Extract
paddle.exefrom the archive. - Move
paddle.exeto a permanent folder, then add that folder to yourPATHso you can runpaddlefrom any folder. - Open a new terminal, like PowerShell or Command Prompt, before running any
paddlecommands. Terminals that were already open won't findpaddle.
Don't double-click paddle.exe, because the window opens and closes right away. Run paddle commands from a terminal instead.
You can also run the Linux version using Windows Subsystem for Linux (WSL).
Build from source
On macOS and Linux, you can build the CLI from source. You'll need Go 1.26 or later.
Clone the repository, build the CLI, then add it to your PATH:
git clone https://github.com/PaddleHQ/paddle-cli.gitcd paddle-climake buildmake install-local-buildmake install-local-build links the CLI into /usr/local/bin, letting you run paddle from any folder. The link points to the paddle-cli folder. Don't move or delete that folder after you install.
To link the CLI into a different folder, set INSTALL_DIR:
make install-local-build INSTALL_DIR=~/.local/binCheck the installation
Check that the CLI is installed:
paddle --versionLog in
Unless you've switched to or logged in to your sandbox account, the CLI uses your live account for paddle login and every other command. To log in to your sandbox account, add --environment sandbox, or run paddle sandbox first.
How you log in depends on the account:
| Account | Authentication |
|---|---|
| Sandbox | API key |
| Live | OAuth or API key |
The CLI saves one login for each account, so you can be logged in to your sandbox and live accounts at the same time.
To check that you're logged in, and to which account, run paddle whoami.
To log out of the account you're using, run paddle logout.
Log in with OAuth
You can log in to your live account with OAuth. Because the CLI starts in your live account, run:
paddle loginIf you've switched to your sandbox account, run paddle login --environment production instead.
The CLI opens Paddle in your browser. Log in, then approve access for the Paddle CLI. When you see the success message, close the window and go back to your terminal.
If the CLI can't open a browser, it prints a link instead. Open the link in a browser on the same computer to log in.
OAuth gives the CLI read and write access that matches what your Paddle user role allows. To give an AI agent or CI pipeline more limited access, log in with an API key that has only the permissions it needs.
OAuth isn't available for sandbox accounts. Running paddle login without an API key in your sandbox account returns an error.
Log in with an API key
Pass your sandbox or live Paddle API key to paddle login, replacing YOUR_API_KEY with your key:
paddle login --environment sandbox --api-key YOUR_API_KEY # sandbox accountpaddle login --environment production --api-key YOUR_API_KEY # live accountThe CLI checks your key with Paddle, then saves it for that account. It replaces any login you already had for that account, including an OAuth login.
Keys only work for their own account. Sandbox keys contain _sdbx, and live keys contain _live. If the key doesn't match the account, the login fails.
To use a key without saving it, add --api-key to any command or set PADDLE_API_KEY. This is useful in CI pipelines. A key passed this way takes priority over a saved login.
Where credentials are stored
The CLI saves your login in your Keychain, under the service name paddle-cli.
To save your login in the config file instead, set PADDLE_NO_KEYCHAIN=1 when you log in:
PADDLE_NO_KEYCHAIN=1 paddle login --environment sandbox --api-key YOUR_API_KEYThe CLI saves your login in plain text in the config file, ~/.config/paddle/config.yaml. Only your user on this computer can read it. The CLI warns you about this when you log in.
On shared machines or in CI pipelines, use an API key without saving it instead.
The CLI saves your login in plain text in the config file, .config\paddle\config.yaml in your user folder. The CLI warns you about this when you log in.
On shared computers or in CI pipelines, use an API key without saving it instead.
Switch accounts
In the CLI, your sandbox account is sandbox, and your live account is production. Switch between them, or use --environment for one command only:
paddle sandbox # use your sandbox accountpaddle production # use your live accountpaddle products list --environment production # use your live account for one commandYour choice is saved until you change it. For more account commands, see Core commands.
After each command, the CLI prints the account it used. → sandbox is displayed in yellow, and → production is bright red.
$ paddle products listID NAME STATUSpro_01h7zcgmdc6tmwtjehp3sh7azf AeroEdit Pro active→ sandboxCommands run against your live account change real data. Test in your sandbox account first.
Update
The CLI doesn't automatically check for updates or notify you when a new version is available. Update regularly to get new commands and support for new Paddle API features.
| Installed with | How to update |
|---|---|
| Homebrew | Run brew upgrade paddlehq/tap/paddle. |
| Install script | Run the install script again. It installs the latest version. |
| Manual download | Download the latest version from the releases page and replace your existing one. |
| Build from source | Run git pull and make build in the paddle-cli folder. |
Uninstall
Uninstalling the CLI doesn't remove your saved logins or settings. To remove everything:
Log out of each account. This removes saved API keys, including from your macOS Keychain:
paddle logout --environment sandbox paddle logout --environment productionpaddle logout --environment sandboxpaddle logout --environment productionUninstall the CLI:
Installed with How to uninstall Homebrew Run brew uninstall paddlehq/tap/paddle.Install script or manual download Delete paddlefrom the folder you installed it in, like/usr/local/binor~/.local/bin.Build from source Run make uninstall-local-buildin thepaddle-clifolder, then delete the folder.Delete the CLI config folder:
~/.config/paddle, or.config\paddlein your user folder on Windows.