@pincerpay/cli
v0.3.3
Published
Frictionless CLI for PincerPay merchant onboarding. Sign up, verify email, mint API keys, manage wallets — all from the terminal, no browser required.
Maintainers
Readme
@pincerpay/cli
Frictionless CLI for PincerPay merchant onboarding. Sign up, verify email, create your merchant, mint API keys, and manage wallets, all from the terminal. No browser required at any point.
Quick start
# 1. Sign up (or skip to step 2 if you already have an account).
npx @pincerpay/cli signup
# 2. Log in (only needed if you didn't just sign up).
npx @pincerpay/cli login
# 3. Generate non-custodial wallets, create your merchant, mint your first API key.
npx @pincerpay/cli bootstrap-merchant --name "Acme Co" --chains "solana,polygon"The last command outputs an env-var-ready block:
PINCERPAY_API_KEY=pp_live_...
PINCERPAY_MERCHANT_ADDRESS_SOLANA=...
PINCERPAY_MERCHANT_ADDRESS_POLYGON=0x...Pipe that into vercel env add (or your env manager) and you're live.
How signup works (no browser)
$ npx @pincerpay/cli signup
Email: [email protected]
Password (8+ chars): ••••••••
Confirm password: ••••••••
We sent a verification code to [email protected].
Check your inbox and paste the code below.
Verification code: 123456
✓ Verified and signed in as [email protected].
Credentials saved to /Users/dan/.pincerpay/credentials.json.
Token expires 2026-06-01 14:23:11.
Next: run `pincerpay bootstrap-merchant` to create your merchant profile.The OTP is delivered by email; you paste it back into the CLI. No URL clicks. No port binding. No browser tabs to close.
Commands
Auth
| Command | Description |
|---------|-------------|
| pincerpay signup [--email] | Create an account. Walks through email + password + OTP. |
| pincerpay login [--email] | Sign in to an existing account. |
| pincerpay logout | Revoke the CLI session and delete local credentials. |
| pincerpay whoami | Show the logged-in user, session, and merchant. |
| pincerpay recover [--email] | Send a password recovery code to your email. |
| pincerpay reset-password | Reset password using the recovery code. |
| pincerpay change-password | Change password while logged in. Revokes other sessions. |
Wallets (no auth required)
| Command | Description |
|---------|-------------|
| pincerpay create-wallets [--strength 12\|24] [--json] [--no-private-keys] | Generate non-custodial Solana + EVM wallets from a single BIP-39 mnemonic. Phantom + MetaMask compatible. |
Merchant onboarding (auth required)
| Command | Description |
|---------|-------------|
| pincerpay bootstrap-merchant --name <name> [--chains solana,polygon] | End-to-end: generate wallets, create merchant, mint API key. Outputs env-var block. |
| pincerpay api-keys create [--label] [--test] | Mint a new API key. With --test the prefix is pp_test_*; test keys cannot settle on mainnet chains. |
| pincerpay api-keys list [--env live\|test] | List API keys. Filter to a single environment with --env. |
| pincerpay api-keys rotate <id> | Atomically mint a new key and revoke the old one. |
| pincerpay api-keys revoke <id> | Revoke an API key. |
| pincerpay wallet set --solana <addr> --evm <addr> | Update merchant wallet addresses. Confirms before committing. |
| pincerpay env | Print an env-var template based on current merchant config. |
| pincerpay sessions list | List active CLI sessions. |
| pincerpay sessions revoke <id> | Revoke a CLI session by id. |
Security model
- Non-custodial wallets.
create-walletsandbootstrap-merchantgenerate keys client-side. PincerPay never sees your mnemonic or private keys. - Email-OTP signup. Email verification uses a 6-digit code (Supabase
auth.verifyOtp), not a click-link. - Bearer tokens. After signup/login the facilitator mints a
pp_cli_*token with a 30-day default expiry. Stored in~/.pincerpay/credentials.jsonwith0600permissions on POSIX. - Audit logging. Every signup, login, key creation, wallet change, and session revocation writes an
audit_eventsrow server-side, viewable from the dashboard's security page. - Revocation.
pincerpay logoutrevokes the server-side session before deleting local credentials.pincerpay sessions revoke <id>revokes any session.
Configuration
| Environment variable | Default | Purpose |
|---------------------|---------|---------|
| PINCERPAY_FACILITATOR_URL | https://facilitator.pincerpay.com | Override the facilitator endpoint. |
You can also pass --facilitator-url <url> to any command.
Troubleshooting
"Not logged in. Run pincerpay login first."
Your credentials file is missing or expired. Run pincerpay login (or pincerpay signup for new accounts).
"token_checksum_invalid" or "token_format_invalid"
The credentials file was corrupted. Delete ~/.pincerpay/credentials.json and log in again.
"email_not_verified"
You haven't completed the OTP step. Run pincerpay signup again with the same email, and Supabase will email a fresh code.
Email never arrives
Check spam. Recovery emails come from noreply@<your-supabase-project>.supabase.co. Production deployments should configure a custom email sender in the Supabase dashboard.
Companion packages
@pincerpay/onboarding: pure crypto for wallet generation. The CLI'screate-walletscommand is a thin wrapper.@pincerpay/mcp: MCP server exposing the same operations as tools to LLMs (Claude, Cursor, etc).@pincerpay/merchant: Hono middleware for accepting payments after onboarding.
License
MIT
