Skip to main content
Die Dodo CLI verwaltet deine Dodo Payments-Ressourcen, beantwortet Fragen zu deinem Konto mit einem integrierten KI-Assistenten, erstellt Checkout-Sitzungen und testet Webhooks – alles über dein Terminal. Verwende die interaktive TUI oder führe direkte Subcommands aus Skripten aus.

Funktionen

  • Interaktive TUI: Führe dodo ohne Argumente aus, um die interaktive Oberfläche mit Befehlspalette, Verlauf und Live-Benachrichtigungen zu öffnen.
  • Integrierter KI-Assistent: Stelle mit /ai Fragen oder führe Aktionen in einfachem Englisch aus. Der Assistent führt dodopayments-mcp lokal aus und benötigt keine zusätzliche Einrichtung.
  • Verschlüsselte Zugangsdaten: API-Schlüssel werden in ~/.dodopayments/config.json gespeichert, mit AES-256-GCM und einem von deinem Rechner abgeleiteten Schlüssel verschlüsselt. Es werden keine Zugangsdaten im Klartext auf der Festplatte gespeichert.
  • Automatische Aktualisierung: Die CLI prüft beim Start auf neue Versionen und benachrichtigt dich in der TUI. Bei Installationen mit npm und Bun führst du /update aus, um direkt zu aktualisieren.
  • Webhook-Tools: Leite Webhooks im Testmodus an deinen lokalen Server weiter oder sende offline simulierte Webhook-Payloads.
  • Gerüst-Erstellung: Füge mit dodo init Billing-Routen zu Next.js-, Express- und Better-Auth-Projekten hinzu.

Installation

Installiere unter macOS oder Linux die Binärdatei der neuesten Version mit dem Installationsskript:
Das Skript überprüft die Binärdatei anhand der SHA-256-Prüfsummen der Version. Es installiert dodo im ersten beschreibbaren Verzeichnis aus /usr/local/bin, ~/.local/bin und ~/bin oder in ~/.local/bin, falls keines davon beschreibbar ist. Um eine bestimmte Version zu installieren, setze die Umgebungsvariable DODO_VERSION auf deren Tag. Um das Verzeichnis auszuwählen, setze DODO_INSTALL_DIR.

Installation mit NPM oder Bun

Wenn du Node.js oder Bun installiert hast, installiere das Paket dodopayments-cli global. Installationen über Paketmanager laden die zuletzt veröffentlichte Version herunter:
Direkte Subcommands wie dodo login laufen mit Node.js 18 oder höher. Bei der Installation über einen Paketmanager benötigt die interaktive TUI außerdem Bun. Versions-Binärdateien benötigen keine dieser Laufzeitumgebungen.

Manuelle Installation (ohne Node / Bun)

Um die Installation ohne Ausführung eines Remote-Skripts durchzuführen, lade die Binärdatei selbst herunter.
1

Download the Binary

Lade die Binärdatei für deine Plattform aus dem neuesten GitHub-Release herunter.
2

Rename the Binary to dodo

3

Move It to a Directory on Your PATH

Unter Windows erfordert das Verschieben der Datei nach C:\Windows\System32 Administratorrechte.
4

(Optional) Verify the Download

Für jede Version wird eine Datei SHA256SUMS.txt veröffentlicht. Lade sie neben der Binärdatei herunter und überprüfe anschließend die Binärdatei:

Authentifizierung

Melde dich mit einem API-Schlüssel an, bevor du Befehle ausführst, die dein Konto lesen oder ändern. Um dich mit einem direkten Subcommand anzumelden, übergib den Schlüssel und seinen Modus, test oder live:
Oder innerhalb der interaktiven TUI:
Der TUI-Anmeldevorgang:
  1. Öffnet in deinem Browser die Seite Developer → API Keys des Dashboards.
  2. Fordert dich auf, deinen API-Schlüssel einzufügen.
  3. Bittet dich, Test Mode oder Live Mode auszuwählen.
Beide Befehle überprüfen den Schlüssel mit einer Anfrage an die API und speichern ihn anschließend verschlüsselt in ~/.dodopayments/config.json.
Der Verschlüsselungsschlüssel wird von deinem Rechner abgeleitet. Daher funktionieren die gespeicherten Zugangsdaten nur auf diesem Rechner. Wenn du von v3.0.x aktualisierst, das Schlüssel im Schlüsselbund des Betriebssystems gespeichert hat, führe dodo login erneut aus. Schlüssel in der älteren Klartextdatei ~/.dodopayments/api-key werden automatisch migriert und die Datei wird gelöscht.

Modi wechseln und abmelden

Du kannst gleichzeitig einen Schlüssel für den Testmodus und einen für den Live-Modus angemeldet haben. Um den aktiven Modus in der TUI zu wechseln, führe /switch aus. So entfernst du gespeicherte Schlüssel:
Im direkten Modus übergib test, live oder all. In der TUI fordert dich /logout auf, All accounts, Test Mode oder Live Mode auszuwählen, und bittet dich anschließend um eine Bestätigung.

Verwendung

Du kannst die CLI in zwei Modi verwenden.

1. Interaktive TUI (empfohlen)

Führe dodo ohne Argumente aus, um die interaktive Oberfläche zu öffnen:
Gib / ein, um die Befehlspalette zu öffnen. Text, der nicht mit / beginnt, wird an den KI-Assistenten gesendet.

2. Direkte Subcommands

Führe einen Befehl aus, ohne die TUI zu öffnen:
Beispiel:
Die folgenden Referenztabellen führen jeden Befehl im direkten Modus auf. Ersetze in der TUI dodo durch /, zum Beispiel durch /payments list 1. Mit TUI only gekennzeichnete Befehle sind interaktive Assistenten. Im direkten Modus geben sie eine Meldung aus, die dich auffordert, die TUI zu öffnen.

KI-Assistent

Stelle Fragen zu deinem Konto oder führe Aktionen in einfachem Englisch aus. Der Assistent läuft dodopayments-mcp auf deinem Rechner und benötigt daher keine zusätzliche Einrichtung oder OAuth-Ablauf. Er ruft die Dodo Payments API mit deinem gespeicherten Schlüssel von deinem Rechner aus auf und sendet deine Eingaben an das Sprachmodell. Führe im direkten Modus dodo ai gefolgt von deiner Frage aus. Beispiele in der TUI:
Der Assistent verwendet deinen aktiven Modus (Testmodus oder Live-Modus) und funktioniert nur mit den Daten dieses Modus.

Gerüst-Erstellung für Projekte

dodo init fügt einem bestehenden Projekt Dodo Payments-Billing-Routen hinzu. Der Befehl schreibt die Routendateien, installiert das passende Adapterpaket @dodopayments/* und ergänzt fehlende Variablen DODO_PAYMENTS_* mit Platzhalterwerten in deiner Datei .env. Bereits vorhandene Dateien und Variablen werden übersprungen. Der Befehl wird ohne Anmeldung ausgeführt.
Für das Better-Auth-Gerüst kannst du eine durch Kommas getrennte Liste von Plugins zur Generierung übergeben: checkout, portal, usage und webhooks. Ohne Liste werden alle vier generiert.
Wenn dein Projekt ein Verzeichnis src/ enthält, schreibt der Gerüst-Generator die Dateien darin. Er wählt den Installationsbefehl anhand der Lock-Datei deines Projekts (bun, pnpm oder yarn) und verwendet npm, wenn keine gefunden wird.

Befehlsreferenz

Diese Befehle benötigen einen angemeldeten API-Schlüssel. Listenbefehle akzeptieren eine optionale Seitennummer, die standardmäßig 1 ist, und zeigen bis zu 100 Elemente pro Seite an.

Produkte

Verwalte deinen Produktkatalog.

Zahlungen

Zeige Zahlungstransaktionen an.

Kunden

Verwalte deine Kunden.

Rabatte

Verwalte Rabattcodes.

Lizenzen

Zeige Lizenzschlüssel an. Der Befehl wird licences geschrieben.

Add-ons

Verwalte Produkt-Add-ons.

Rückerstattungen

Zeige Informationen zu Rückerstattungen an.

Checkout

Erstelle gehostete Checkout-Sitzungen.

Webhooks

Die CLI bietet zwei Webhook-Tools für die Entwicklung: einen Listener, der Webhooks im Testmodus an deinen lokalen Server weiterleitet, und einen Trigger, der simulierte Webhook-Payloads an einen beliebigen Endpunkt sendet. Im direkten Modus sind die Argumente erforderlich. Führe in der TUI /wh listen oder /wh trigger ohne Argumente aus, um einen interaktiven Assistenten zu öffnen.

Auf Webhooks warten

Leite Webhooks von deinem Dodo Payments-Konto in Echtzeit an deinen lokalen Entwicklungsserver weiter.
dodo wh listen benötigt einen API-Schlüssel für Test Mode. Live-Mode-Schlüssel werden vom Listener-Ablauf nicht unterstützt.
1

Enter Your Local Endpoint URL

Übergebe die lokale URL, die Webhooks empfangen soll, zum Beispiel http://localhost:3000/webhook. Im TUI-Assistenten fordert dich die CLI dazu auf.
2

Automatic Setup

Wenn dein Konto keinen Webhook-Endpunkt für den Relay-Server der CLI besitzt, erstellt die CLI einen. Der Endpunkt wird unter Developer → Webhooks angezeigt. Anschließend öffnet die CLI eine WebSocket-Verbindung zum Relay, um Ereignisse in Echtzeit zu empfangen.
3

Receive and Forward

Wenn ein Webhook-Ereignis ausgelöst wird, beispielsweise durch eine Testzahlung oder eine Änderung eines Abonnements, leitet die CLI Payload und Header als POST-Anfrage an deinen lokalen Endpunkt weiter. Sie protokolliert den Ereignistyp und die Antwort deines Endpunkts und sendet die Antwort an das Relay zurück.
Der Listener bewahrt beim Weiterleiten an deinen lokalen Endpunkt die ursprünglichen Webhook-Header (webhook-id, webhook-signature, webhook-timestamp), damit du deine Signaturprüflogik testen kannst.
Das Relay und die CLI analysieren den JSON-Body und serialisieren ihn vor der Weiterleitung erneut. Wenn sich der weitergeleitete Body Byte für Byte vom ursprünglichen unterscheidet, beispielsweise bei der Zahlenformatierung, schlägt die Signaturüberprüfung fehl, obwohl die Header unverändert sind.

Test-Webhooks auslösen

Sende eine simulierte Webhook-Payload an einen beliebigen Endpunkt, ohne echte Transaktionen zu erstellen.
Ausgelöste Ereignisse sind nicht signiert: Die Anfrage enthält keinen webhook-id-, webhook-signature- oder webhook-timestamp-Header. Verwende beim Testen die nicht verifizierte Methode (unsafeUnwrap in TypeScript, unsafe_unwrap in Python, UnsafeUnwrap in Go) anstelle von unwrap und wechsle vor dem Produktivbetrieb wieder zu unwrap.
Im direkten Modus verwendet die Payload Platzhalter-IDs und Kundendaten. Der /wh trigger-Assistent in der TUI führt dich durch folgende Schritte:
  1. Festlegen einer Ziel-Endpunkt-URL.
  2. Optionales Eingeben von Business ID, Product ID, Metadata (einem JSON-Objekt), Customer email und Customer ID für die Payload. Leere Felder verwenden Platzhalterwerte.
  3. Auswählen eines zu sendenden Ereignisses aus einem interaktiven Menü. Du kannst mehrere Ereignisse nacheinander senden. Wähle exit, um den Vorgang zu beenden.
dodo wh trigger erfordert keine Anmeldung. Es funktioniert als lokaler Offline-Generator für Webhook-Payloads.

Unterstützte Webhook-Ereignisse

dodo wh trigger kann simulierte Payloads für 46 der 48 von Dodo Payments bereitgestellten Ereignistypen senden. subscription.past_due und subscription.unpaused werden nicht unterstützt. Übergebe den Ereignisnamen genau wie aufgeführt: Drei Trigger-Namen unterscheiden sich vom Ereignis type in der gesendeten Payload: payment.success sendet payment.succeeded, refund.success sendet refund.succeeded und licence.created sendet license_key.created.
Die Formen der simulierten Payloads entsprechen den jeweiligen Schemas in der API-Referenz. Unter Webhook Events erfährst du, was die einzelnen Ereignisse bedeuten und wann Dodo Payments sie in der Produktion ausgibt.
payout.created wird ausgegeben, während die Auszahlung noch den Status not_initiated meldet. Daher bildet die simulierte Payload dies ebenfalls ab. Unter Payout Events findest du den vollständigen Lebenszyklus einer Auszahlung.

Umgebungsvariablen

Diese Variable ändert, wie dodo wh listen die Verbindung herstellt:

Updates

Die CLI prüft beim Start auf eine neuere Version und zeigt bei Verfügbarkeit eine Benachrichtigung in der Statusleiste an. Um eine npm- oder Bun-Installation über die TUI zu aktualisieren, führe Folgendes aus:
/update kann keine Binärdatei aktualisieren. Bei Binärinstallationen, einschließlich Installationen mit dem Installationsskript, wird stattdessen auf das neueste GitHub-Release verwiesen. Um über deine Shell zu aktualisieren, führe den verwendeten Installationsbefehl erneut aus:

Ressourcen

GitHub Repository

Quellcode und Releases.

npm Package

Das Paket dodopayments-cli in der npm-Registry.

Support

Zuletzt geändert am 26. September 2026