The opensettle CLI is the most efficient way to develop against the API. It signs you in once, forwards webhooks to localhost, triggers any event for testing, and exposes the same resource surface as the SDKs from your shell.
# macOS / Linux (Homebrew)
brew install opensettle/tap/opensettle
# npm (any platform)
npm install -g @opensettle/cli
# Standalone binary
curl -fsSL https://cli.opensettle.com/install.sh | shopensettle login opens a browser, you approve the device, and the CLI receives a short-lived restricted key that lives in ~/.config/opensettle/credentials. Re-run with --account to switch between accounts.
$ opensettle login
→ Opening https://dashboard.opensettle.com/cli/auth?code=H3K-2MT
✓ Logged in as ada@lovelace.dev (acct_9fX0a2E1, test mode)listen creates a temporary webhook endpoint on your account and tunnels every event to a local URL. The CLI prints a signing secret on start — use it as your WEBHOOK_SIGNING_SECRET.
$ opensettle listen --forward-to http://localhost:3000/webhook
✓ Ready! Signing secret: whsec_test_4ae1b9d7…
2026-04-18 11:02:14 [200] payment.confirmed evt_01J20K…
2026-04-18 11:02:31 [200] subscription.renewed evt_01J20K…Drive any event from the CLI to exercise your handlers. Templates are realistic and pass our own webhook verification.
$ opensettle trigger payment.confirmed
✓ Triggered evt_01J20KP9C2 → forwarded to http://localhost:3000/webhook
$ opensettle trigger subscription.past_due --override price=price_pro_monthlySee API requests as your app makes them. Filter by status, method, or path.
$ opensettle logs tail --status 4xx
2026-04-18 11:04:51 POST /v1/checkouts 422 invalid_request req_01J20K…
2026-04-18 11:05:03 POST /v1/subscriptions 409 idempotency_key_in_useRe-deliver a past event to your live endpoint, or to a CLI listener, without touching production data.
$ opensettle events replay evt_01J20KP9C2 --to listener
✓ Replayed evt_01J20KP9C2 → 200 in 142ms$ opensettle keys rotate sk_live_…a2E1 --grace-period 24h
✓ New key: sk_live_…7Hq2 (old key valid until 2026-04-19 11:08 UTC)
$ opensettle customers list --created-after 2026-04-01 --limit 5
cus_9fX0a2E1 ada@lovelace.dev Apr 02
cus_4Hq2XZpL grace@hopper.io Apr 04
cus_8Ne4kRtw alan@turing.sh Apr 09
cus_2Dv6yMkj edsger@dijkstra.nl Apr 14
cus_1Fr8tBpx ken@thompson.org Apr 17