Skip to main content
Dodo CLI는 Dodo Payments 리소스를 관리하고, 기본 제공 AI assistant로 계정에 관한 질문에 답하고, checkout session을 생성하고, webhook을 테스트합니다. 이 모든 작업을 터미널에서 수행할 수 있습니다. 대화형 TUI를 사용하거나 스크립트에서 직접 subcommand를 실행하세요.

기능

  • Interactive TUI: 인수 없이 dodo를 실행하면 command palette, 기록, 실시간 알림이 포함된 대화형 인터페이스가 열립니다.
  • Built-in AI assistant: /ai를 사용해 일반 영어로 질문하거나 작업을 수행할 수 있습니다. assistant는 로컬에서 dodopayments-mcp를 실행하므로 별도의 설정이 필요하지 않습니다.
  • Encrypted credentials: API key는 ~/.dodopayments/config.json에 저장되며, AES-256-GCM과 컴퓨터에서 파생된 key로 암호화됩니다. 디스크에 평문 credential은 저장되지 않습니다.
  • Auto update: CLI는 시작할 때 새 버전을 확인하고 TUI에서 알립니다. npm 및 Bun 설치의 경우 /update를 실행하여 현재 설치를 업그레이드하세요.
  • Webhook tooling: test mode webhook을 로컬 서버로 전달하거나, 오프라인에서 mock webhook payload를 전송할 수 있습니다.
  • Scaffolding: dodo init를 사용해 Next.js, Express, Better Auth 프로젝트에 billing route를 추가하세요.

설치

macOS 또는 Linux에서는 install script를 사용해 최신 release binary를 설치하세요:
이 script는 release의 SHA-256 checksum을 사용해 binary를 검증합니다. dodo를 /usr/local/bin, ~/.local/bin, ~/bin 중 쓰기 가능한 첫 번째 directory에 설치합니다. 모두 쓸 수 없으면 ~/.local/bin에 설치합니다. 특정 release를 설치하려면 DODO_VERSION environment variable을 해당 tag로 설정하세요. directory를 선택하려면 DODO_INSTALL_DIR를 설정하세요.

NPM 또는 Bun으로 설치

Node.js 또는 Bun이 있다면 dodopayments-cli package를 전역으로 설치하세요. package manager 설치는 게시된 최신 version을 가져옵니다:
dodo login와 같은 직접 subcommand는 Node.js 18 이상에서 실행됩니다. package manager를 통해 설치하면 대화형 TUI에도 Bun이 필요합니다. Release binary에는 runtime이 필요하지 않습니다.

수동 설치(Node / Bun 불필요)

remote script를 실행하지 않고 설치하려면 binary를 직접 다운로드하세요.
1

Download the Binary

최신 GitHub Release에서 플랫폼에 맞는 binary를 다운로드하세요.
2

Rename the Binary to dodo

3

Move It to a Directory on Your PATH

Windows에서 파일을 C:\Windows\System32로 이동하려면 administrator privilege가 필요합니다.
4

(Optional) Verify the Download

각 release는 SHA256SUMS.txt 파일을 게시합니다. 이를 binary 옆에 다운로드한 다음 binary를 검증하세요:

Authentication

계정을 읽거나 변경하는 command를 실행하기 전에 API key로 로그인하세요. 직접 subcommand로 로그인하려면 key와 mode인 test 또는 live를 전달하세요:
또는 대화형 TUI 내부에서:
TUI 로그인 과정:
  1. 브라우저에서 dashboard의 Developer → API Keys 페이지를 엽니다.
  2. API key를 붙여넣으라는 메시지가 표시됩니다.
  3. Test Mode 또는 Live Mode를 선택하라는 메시지가 표시됩니다.
두 command 모두 API에 요청을 보내 key를 검증한 다음, ~/.dodopayments/config.json에 암호화하여 저장합니다.
암호화 key는 컴퓨터에서 파생되므로 저장된 credential은 해당 컴퓨터에서만 작동합니다. key를 OS keychain에 저장하던 v3.0.x에서 업그레이드하는 경우 dodo login를 다시 실행하세요. 이전의 평문 ~/.dodopayments/api-key 파일에 있는 key는 자동으로 migration되며 해당 파일은 삭제됩니다.

Mode 전환 및 로그아웃

하나의 test mode key와 하나의 live mode key를 동시에 로그인 상태로 유지할 수 있습니다. TUI에서 active mode를 전환하려면 /switch를 실행하세요. 저장된 key를 삭제하려면:
직접 mode에서는 test, live 또는 all를 전달하세요. TUI에서는 /logout가 All accounts, Test Mode 또는 Live Mode를 선택하게 한 다음 확인을 요청합니다.

사용법

CLI는 두 가지 mode로 사용할 수 있습니다.

1. Interactive TUI(권장)

인수 없이 dodo를 실행하면 대화형 인터페이스가 열립니다:
/를 입력하면 command palette가 열립니다. /로 시작하지 않는 텍스트는 AI assistant로 전달됩니다.

2. Direct Subcommands

TUI를 열지 않고 command를 실행하세요:
예시:
아래 reference 표에는 direct mode 형식의 모든 command가 나와 있습니다. TUI에서는 dodo 를 /로 바꾸세요. 예를 들어 /payments list 1와 같습니다. TUI only로 표시된 command는 대화형 wizard입니다. direct mode에서는 TUI를 열라는 메시지가 표시됩니다.

AI Assistant

계정에 관해 질문하거나 일반 영어로 작업을 수행하세요. assistant는 컴퓨터에서 dodopayments-mcp를 실행하므로 별도의 설정이나 OAuth flow가 필요하지 않습니다. 저장된 key를 사용해 컴퓨터에서 Dodo Payments API를 호출하고 prompt를 language model로 보냅니다. direct mode에서는 dodo ai를 실행한 뒤 질문을 입력하세요. TUI 예시:
assistant는 active mode(test mode 또는 live mode)를 사용하며 해당 mode의 data만 처리합니다.

Project Scaffolding

dodo init는 기존 project에 Dodo Payments billing route를 추가합니다. route file을 작성하고 일치하는 @dodopayments/* adapter package를 설치하며, 누락된 DODO_PAYMENTS_* variable을 placeholder value와 함께 .env file에 추가합니다. 이미 존재하는 file과 variable은 건너뛰며 로그인 없이 실행됩니다.
Better-Auth scaffold에서는 생성할 plugin을 쉼표로 구분해 전달할 수 있습니다: checkout, portal, usage 및 webhooks. 목록을 지정하지 않으면 네 가지를 모두 생성합니다.
project에 src/ directory가 있으면 scaffolder는 그 안에 file을 작성합니다. project의 lock file( bun, pnpm 또는 yarn)에서 install command를 선택하며, lock file이 없으면 npm를 사용합니다.

Command Reference

이 command를 사용하려면 로그인된 API key가 필요합니다. list command는 선택적 page number를 받으며 기본값은 1이고, page당 최대 100개 item을 표시합니다.

Products

product catalog를 관리합니다.

Payments

payment transaction을 확인합니다.

Customers

customer를 관리합니다.

Discounts

discount code를 관리합니다.

Licenses

license key를 확인합니다. command 표기는 licences입니다.

Addons

product add-on을 관리합니다.

Refunds

refund 정보를 확인합니다.

Checkout

hosted checkout session을 생성합니다.

Webhooks

CLI에는 개발을 위한 두 가지 webhook tool이 있습니다. test mode webhook을 로컬 server로 전달하는 listener와 mock webhook payload를 모든 endpoint로 전송하는 trigger입니다. direct mode에서는 argument가 필요합니다. TUI에서는 /wh listen 또는 /wh trigger를 인수 없이 실행해 대화형 wizard를 여세요.

Webhook 수신

Dodo Payments 계정의 webhook을 로컬 development server로 실시간 전달합니다.
dodo wh listen에는 Test Mode API key가 필요합니다. listen flow에서는 Live Mode key가 지원되지 않습니다.
1

Enter Your Local Endpoint URL

webhook을 수신할 로컬 URL을 전달하세요. 예: http://localhost:3000/webhook. TUI wizard에서는 CLI가 URL을 요청합니다.
2

Automatic Setup

계정에 CLI relay server용 webhook endpoint가 없으면 CLI가 하나 생성합니다. endpoint는 Developer → Webhooks에 표시됩니다. 그런 다음 CLI는 relay에 WebSocket connection을 열어 event를 실시간으로 수신합니다.
3

Receive and Forward

webhook event가 발생하면(예: test payment 또는 subscription 변경) CLI는 payload와 header를 POST request로 로컬 endpoint에 전달합니다. event type과 endpoint response를 기록하고 response를 relay로 다시 보냅니다.
listener는 로컬 endpoint로 전달할 때 원래 webhook header(webhook-id, webhook-signature, webhook-timestamp)를 유지하므로 signature verification logic을 테스트할 수 있습니다.
relay와 CLI는 JSON body를 파싱한 후 다시 직렬화하여 전달합니다. 전달된 body가 원본과 바이트 단위로 다르면, 예를 들어 숫자 형식이 달라진 경우 헤더가 그대로 유지되더라도 signature verification이 실패합니다.

Test Webhook Trigger

실제 transaction을 생성하지 않고 모든 endpoint로 mock webhook payload를 전송합니다.
Triggered event에는 signature가 없습니다. request에는 webhook-id, webhook-signature 또는 webhook-timestamp header가 포함되지 않습니다. 테스트 중에는 unwrap 대신 검증되지 않은 method( TypeScript에서는 unsafeUnwrap, Python에서는 unsafe_unwrap, Go에서는 UnsafeUnwrap)로 이를 parse하고, live로 전환하기 전에 unwrap로 되돌리세요.
direct mode에서 payload는 placeholder ID와 customer detail을 사용합니다. TUI의 /wh trigger wizard가 다음 과정을 안내합니다:
  1. destination endpoint URL 설정.
  2. 선택적으로 payload에 Business ID, Product ID, Metadata(JSON object), Customer email, Customer ID 입력. 빈 field에는 placeholder value가 사용됩니다.
  3. 대화형 menu에서 전송할 event 선택. 여러 event를 연속으로 전송할 수 있습니다. 완료하려면 exit를 선택하세요.
dodo wh trigger에는 로그인이 필요하지 않습니다. 로컬 오프라인 webhook payload generator로 작동합니다.

지원되는 Webhook Event

dodo wh trigger는 Dodo Payments가 전달하는 48개 event type 중 46개에 대해 mock payload를 전송할 수 있습니다. subscription.past_due 및 subscription.unpaused는 지원하지 않습니다. event name은 다음 목록과 정확히 동일하게 전달하세요: 세 trigger name은 전송하는 payload의 event type와 다릅니다. payment.success는 payment.succeeded를 전송하고, refund.success는 refund.succeeded를 전송하며, licence.created는 license_key.created를 전송합니다.
Mock payload shape은 API reference의 해당 schema를 따릅니다. 각 event의 의미와 Dodo Payments가 production에서 이를 emit하는 시점은 Webhook Events를 참조하세요.
payout.created는 payout이 여전히 not_initiated status를 보고하는 동안 emit되므로 mock payload도 이를 반영합니다. 전체 payout lifecycle은 Payout Events를 참조하세요.

Environment Variables

이 variable은 dodo wh listen의 connection 방식을 변경합니다:

Updates

CLI는 시작할 때 최신 version을 확인하고, 사용 가능한 version이 있으면 status bar에 notification을 표시합니다. TUI에서 npm 또는 Bun 설치를 upgrade하려면 다음을 실행하세요:
/update는 release binary를 upgrade할 수 없습니다. install script를 사용한 설치를 포함한 binary 설치의 경우 대신 최신 GitHub release로 연결합니다. shell에서 upgrade하려면 설치할 때 사용한 command를 다시 실행하세요:

Resources

GitHub Repository

source code 및 release.

npm Package

npm registry의 dodopayments-cli package.

Support

마지막 수정일 2026년 9월 26일