> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Dodo CLI

> Antarmuka baris perintah resmi untuk Dodo Payments — kelola resource, jalankan kueri bertenaga AI, buat checkout session, dan uji webhook dari terminal Anda.

Kelola resource Dodo Payments, jalankan kueri bertenaga AI terhadap akun Anda, buat checkout session, dan uji webhook — semuanya dari terminal. CLI ini dilengkapi TUI interaktif, asisten AI bawaan yang didukung MCP, serta pengujian webhook offline.

<Frame>
  <iframe className="w-full aspect-video rounded-md" src="https://www.youtube.com/embed/gwtvQsANbW4" title="Dodo CLI | Dodo Payments" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />
</Frame>

## Fitur

* **TUI interaktif** — jalankan `dodo` tanpa argumen untuk membuka antarmuka interaktif lengkap dengan palet perintah, riwayat, dan notifikasi langsung.
* **Asisten AI bawaan** — ajukan pertanyaan atau lakukan tindakan dalam bahasa sehari-hari dengan `/ai`. Tidak memerlukan pengaturan tambahan dan berjalan `dodopayments-mcp` secara lokal.
* **Aman secara default** — API key disimpan di penyimpanan rahasia OS Anda (macOS Keychain, Windows Credential Vault, Linux libsecret). Tidak ada konfigurasi plaintext di disk.
* **Pembaruan otomatis** — CLI memeriksa versi baru saat startup dan memberi tahu Anda di dalam aplikasi. Jalankan `/update` untuk memperbarui secara langsung.
* **Perangkat webhook** — dengarkan webhook langsung atau picu payload secara offline untuk pengembangan lokal.

## Instalasi

Instal CLI dalam satu baris di macOS atau Linux:

```bash theme={null}
curl -fsSL https://dodopayments.com/install.sh | sh
```

### Instal dengan npm atau Bun

Jika Anda sudah memiliki Node atau Bun, instalasi melalui package manager selalu mengambil versi terbaru:

<CodeGroup>
  ```bash npm theme={null}
  npm install -g dodopayments-cli
  ```

  ```bash Bun theme={null}
  bun install -g dodopayments-cli
  ```
</CodeGroup>

### Instalasi manual (tidak memerlukan Node / Bun)

Jika Anda tidak ingin menyalurkan skrip remote ke `sh`, unduh binary-nya sendiri.

<Steps>
  <Step title="Download the binary">
    Unduh binary untuk platform Anda dari [GitHub Release](https://github.com/dodopayments/dodopayments-cli/releases) terbaru.

    | Platform              | Binary                     |
    | --------------------- | -------------------------- |
    | macOS (Apple Silicon) | `dodo-cli-darwin-arm64`    |
    | macOS (Intel)         | `dodo-cli-darwin-x64`      |
    | Linux (x86\_64)       | `dodo-cli-linux-x64`       |
    | Linux (arm64)         | `dodo-cli-linux-arm64`     |
    | Windows (x86\_64)     | `dodo-cli-windows-x64.exe` |
  </Step>

  <Step title="Rename the binary to `dodo`">
    <CodeGroup>
      ```bash Linux / macOS theme={null}
      mv ./dodo-cli-* ./dodo && chmod +x ./dodo
      ```

      ```powershell Windows theme={null}
      ren .\dodo-cli-windows-x64.exe .\dodo.exe
      ```
    </CodeGroup>
  </Step>

  <Step title="Move it to a directory on your PATH">
    <CodeGroup>
      ```bash Linux / macOS theme={null}
      sudo mv ./dodo /usr/local/bin/
      ```

      ```powershell Windows theme={null}
      move .\dodo.exe C:\Windows\System32\dodo.exe
      ```
    </CodeGroup>

    <Info>
      Di Windows, memindahkan ke `C:\Windows\System32` memerlukan hak administrator.
    </Info>
  </Step>

  <Step title="(Optional) Verify the download">
    Setiap rilis menerbitkan `SHA256SUMS.txt`. Verifikasi unduhan Anda dengan:

    ```bash theme={null}
    shasum -a 256 -c SHA256SUMS.txt
    ```
  </Step>
</Steps>

## Autentikasi

Sebelum menggunakan perintah yang memerlukan autentikasi, masuk dengan API key Anda:

```bash theme={null}
dodo login
```

Atau, dari dalam TUI interaktif:

```text theme={null}
/login
```

Alur login akan:

1. Membuka browser Anda ke halaman API Keys Dodo Payments.
2. Meminta Anda menempelkan API Key.
3. Meminta Anda memilih environment — **Test Mode** atau **Live Mode**.
4. Menyimpan kredensial di penyimpanan rahasia OS Anda (Keychain di macOS, Credential Vault di Windows, libsecret di Linux).

<Info>
  Karena kredensial disimpan di penyimpanan rahasia OS, Anda mungkin diminta memasukkan **kata sandi perangkat** saat pertama kali CLI membaca atau menulis kredensial. Jika Anda melakukan upgrade dari versi lama, API key plaintext yang ada akan **dimigrasikan ke penyimpanan rahasia dan file lama dihapus** secara otomatis.
</Info>

### Beralih mode dan logout

Anda dapat mengautentikasi satu key **Test Mode** dan satu key **Live Mode** secara bersamaan. Untuk menghapus kredensial:

<CodeGroup>
  ```bash Direct theme={null}
  dodo logout
  ```

  ```text TUI theme={null}
  /logout
  ```
</CodeGroup>

Alur logout memungkinkan Anda memilih antara **All accounts**, **Test Mode**, atau **Live Mode** secara terpisah.

## Penggunaan

Anda dapat menggunakan CLI dalam dua mode.

### 1. TUI interaktif (disarankan)

Jalankan `dodo` tanpa argumen untuk membuka antarmuka interaktif lengkap:

```bash theme={null}
dodo
```

Ketik `/` untuk membuka palet perintah, atau langsung mulai mengetik — apa pun yang bukan perintah slash akan dikirim ke asisten AI.

| Command   | Description                                                     |
| --------- | --------------------------------------------------------------- |
| `/help`   | Menampilkan referensi perintah                                  |
| `/update` | Memeriksa dan menginstal pembaruan CLI                          |
| `/login`  | Melakukan autentikasi dengan API key                            |
| `/logout` | Logout dari satu atau semua environment                         |
| `/clear`  | Menghapus layar TUI                                             |
| `/exit`   | Keluar dari TUI (juga: ketik `exit`, atau tekan `Esc` dua kali) |

### 2. Subperintah langsung

Jalankan perintah secara langsung tanpa masuk ke TUI:

```bash theme={null}
dodo <category> <sub-command> [args...]
```

Contoh:

```bash theme={null}
dodo payments list 1
dodo customers create
dodo wh trigger
```

Tabel referensi di bawah menampilkan semua perintah. Di TUI, awali dengan `/`; dalam mode langsung, hilangkan `/`.

## Asisten AI

Ajukan pertanyaan atau lakukan tindakan dalam bahasa alami. Asisten menggunakan `dodopayments-mcp` yang berjalan secara lokal — tidak memerlukan pengaturan tambahan atau alur OAuth, dan traffic AI Anda tidak meninggalkan mesin kecuali untuk berkomunikasi dengan penyedia model.

| Command                | Description                                                |
| ---------------------- | ---------------------------------------------------------- |
| `/ai <query>`          | Ajukan pertanyaan atau berikan instruksi kepada asisten AI |
| *(any non-slash text)* | Secara default dikirim ke asisten AI saat berada di TUI    |

Contoh:

```text theme={null}
how much revenue did I make this week?
/ai create a new customer named Acme Inc.
/ai find my last failed payment
```

<Tip>
  Asisten mengikuti environment aktif Anda (Test / Live), sehingga hanya beroperasi pada data dari environment tempat Anda sedang login.
</Tip>

## Pembuatan Struktur Proyek

`dodo init` membuat struktur route billing Dodo Payments langsung ke dalam proyek yang sudah ada. Perintah ini menghasilkan file route boilerplate, menginstal package adapter `@dodopayments/*` yang sesuai, dan menulis environment variable `DODO_PAYMENTS_*` dengan aman ke `.env` Anda (hanya menambahkan variable yang belum ada). Perintah ini berjalan **tanpa login**.

```bash theme={null}
dodo init <framework>
```

| Scaffold                | Description                                                                                                                           |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `dodo init nextjs`      | Membuat struktur route billing Next.js App Router (checkout, customer portal, dan webhook handler) menggunakan `@dodopayments/nextjs` |
| `dodo init express`     | Membuat struktur route billing server Express menggunakan `@dodopayments/express`                                                     |
| `dodo init better-auth` | Membuat struktur konfigurasi plugin Better-Auth menggunakan `@dodopayments/better-auth`                                               |

Untuk scaffold Better-Auth, Anda dapat meneruskan daftar plugin yang dipisahkan koma untuk dibuat (default-nya semua): `checkout`, `portal`, `usage`, `webhooks`.

```bash theme={null}
# Scaffold every Better-Auth plugin (default)
dodo init better-auth

# Scaffold only specific plugins
dodo init better-auth checkout,portal
```

<Info>
  Scaffolder secara otomatis mendeteksi direktori `src/` dan menyesuaikan path output, serta mendeteksi package manager Anda (`bun`, `pnpm`, `yarn`, atau `npm`) untuk menjalankan perintah instalasi yang benar.
</Info>

## Referensi Perintah

### Produk

Kelola katalog produk Anda.

| Command                     | Description                            |
| --------------------------- | -------------------------------------- |
| `dodo products list <page>` | Menampilkan daftar produk              |
| `dodo products create`      | Membuka dashboard untuk membuat produk |
| `dodo products info <id>`   | Menampilkan detail produk tertentu     |

### Pembayaran

Menampilkan transaksi pembayaran.

| Command                     | Description                                       |
| --------------------------- | ------------------------------------------------- |
| `dodo payments list <page>` | Menampilkan daftar pembayaran                     |
| `dodo payments info <id>`   | Mendapatkan informasi tentang pembayaran tertentu |

### Customer

Kelola basis customer Anda.

| Command                      | Description                         |
| ---------------------------- | ----------------------------------- |
| `dodo customers list <page>` | Menampilkan daftar customer         |
| `dodo customers create`      | Membuat customer baru               |
| `dodo customers update <id>` | Memperbarui customer yang sudah ada |

### Diskon

Kelola kupon dan diskon.

| Command                      | Description                             |
| ---------------------------- | --------------------------------------- |
| `dodo discounts list <page>` | Menampilkan daftar diskon               |
| `dodo discounts create`      | Membuat diskon berbasis persentase baru |
| `dodo discounts delete <id>` | Menghapus diskon berdasarkan ID         |

### Lisensi

Kelola lisensi software.

| Command                     | Description                |
| --------------------------- | -------------------------- |
| `dodo licences list <page>` | Menampilkan daftar lisensi |

### Addon

Kelola addon produk.

| Command                   | Description                           |
| ------------------------- | ------------------------------------- |
| `dodo addons list <page>` | Menampilkan daftar addon              |
| `dodo addons create`      | Membuka dashboard untuk membuat addon |
| `dodo addons info <id>`   | Menampilkan detail addon tertentu     |

### Refund

Menampilkan informasi refund.

| Command                    | Description                        |
| -------------------------- | ---------------------------------- |
| `dodo refunds list <page>` | Menampilkan daftar refund          |
| `dodo refunds info <id>`   | Menampilkan detail refund tertentu |

### Checkout

Membuat checkout session yang di-host.

| Command             | Description                                                                          |
| ------------------- | ------------------------------------------------------------------------------------ |
| `dodo checkout new` | Membuat checkout session yang di-host secara interaktif dan mendapatkan payment link |

## Webhook

CLI menyertakan dua perangkat canggih untuk menguji webhook selama pengembangan: **listener** yang meneruskan webhook test langsung ke server lokal Anda, dan **trigger** yang mengirim payload webhook tiruan ke endpoint mana pun.

| Command           | Description                                                                      |
| ----------------- | -------------------------------------------------------------------------------- |
| `dodo wh listen`  | Mendengarkan webhook secara real time dan meneruskannya ke server dev lokal Anda |
| `dodo wh trigger` | Memicu event webhook test secara interaktif — bahkan saat logout                 |

### Mendengarkan webhook

Teruskan webhook dari Dodo Payments langsung ke server pengembangan lokal Anda secara real time.

```bash theme={null}
dodo wh listen
```

<Steps>
  <Step title="Enter your local endpoint URL">
    Berikan URL lokal tempat Anda ingin menerima webhook (misalnya, `http://localhost:3000/webhook`).
  </Step>

  <Step title="Automatic setup">
    CLI secara otomatis membuat endpoint webhook di akun Dodo Payments Anda jika belum ada, lalu membuka koneksi WebSocket untuk menerima event secara real time.
  </Step>

  <Step title="Receive and forward">
    Saat event webhook terpicu (dari pembayaran test, perubahan subscription, dan sebagainya), CLI menerimanya, mencatat tipe event, lalu meneruskan request lengkap beserta header dan body ke endpoint lokal Anda. Respons dari endpoint Anda dicatat dan dikirim kembali.
  </Step>
</Steps>

<Warning>
  `dodo wh listen` memerlukan API key **Test Mode**. Key Live Mode tidak didukung oleh alur listen.
</Warning>

<Tip>
  Listener mempertahankan header webhook asli (`webhook-id`, `webhook-signature`, `webhook-timestamp`) saat meneruskannya ke endpoint lokal Anda, sehingga Anda dapat menguji logika verifikasi signature.
</Tip>

### Memicu webhook test

Kirim payload webhook tiruan ke endpoint mana pun untuk pengujian cepat tanpa perlu membuat transaksi nyata.

```bash theme={null}
dodo wh trigger
```

Alur `/wh trigger` memandu Anda melalui:

1. Menetapkan **URL endpoint** tujuan
2. Memilih **event** tertentu untuk dipicu dari menu interaktif

<Info>
  `dodo wh trigger` **tidak** memerlukan login. Perintah ini berfungsi sebagai generator payload webhook lokal/offline.
</Info>

<Warning>
  Event yang dipicu **tidak ditandatangani**. Selama pengujian, nonaktifkan verifikasi signature webhook di endpoint Anda — misalnya, gunakan `unsafe_unwrap()` alih-alih `unwrap()` di webhook handler Anda **hanya selama pengujian**.
</Warning>

### Event webhook yang didukung

| Category         | Events                                                                                      |
| ---------------- | ------------------------------------------------------------------------------------------- |
| **Subscription** | `active`, `updated`, `on_hold`, `renewed`, `plan_changed`, `cancelled`, `failed`, `expired` |
| **Payment**      | `succeeded`, `failed`, `processing`, `cancelled`                                            |
| **Refund**       | `succeeded`, `failed`                                                                       |
| **Dispute**      | `opened`, `expired`, `accepted`, `cancelled`, `challenged`, `won`, `lost`                   |
| **License**      | `created`                                                                                   |

### Environment variable

| Variable                  | Description                                                                   |
| ------------------------- | ----------------------------------------------------------------------------- |
| `DODO_WH_TEST_SERVER_URL` | Menimpa URL server relay webhook default yang digunakan oleh `dodo wh listen` |

## Pembaruan

CLI memeriksa versi yang lebih baru saat startup dan menampilkan notifikasi di status bar jika versi tersebut tersedia. Untuk memperbarui:

```text theme={null}
/update
```

Atau, jalankan kembali installer untuk memperbarui secara langsung:

<CodeGroup>
  ```bash install.sh theme={null}
  curl -fsSL https://dodopayments.com/install.sh | sh
  ```

  ```bash npm theme={null}
  npm install -g dodopayments-cli
  ```

  ```bash Bun theme={null}
  bun install -g dodopayments-cli
  ```
</CodeGroup>

## Resource

<CardGroup cols={2}>
  <Card title="GitHub Repository" icon="github" href="https://github.com/dodopayments/dodopayments-cli">
    Lihat source code dan rilis
  </Card>

  <Card title="npm Package" icon="npm" href="https://www.npmjs.com/package/dodopayments-cli">
    Lihat di npm registry
  </Card>
</CardGroup>

## Dukungan

* **Discord**: Bergabunglah dengan [server komunitas kami](https://discord.gg/bYqAp4ayYh)
* **GitHub**: Buka issue di [repository](https://github.com/dodopayments/dodopayments-cli/issues)
* **Email**: Hubungi kami di [support@dodopayments.com](mailto:support@dodopayments.com)
