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

# CLI & Skill

> Business OS direkt aus dem Terminal oder mit AI-Agenten wie Claude Code nutzen

# CLI & Skill

Die Business OS CLI gibt dir Zugriff auf **Banking** und **DATEV** (Unternehmen Online, Rechnungswesen Lesen/Schreiben) direkt aus dem Terminal. In Kombination mit der Skill-Datei können AI-Agenten wie Claude Code die CLI automatisch nutzen.

<Note>
  Für AI-Agenten **außerhalb der Shell** (claude.ai, Cursor, Windsurf) gibt es den Hosted MCP unter `mcp.business-os.de` (OAuth, voller Banking- + DATEV-Funktionsumfang). Die CLI selbst bringt keinen lokalen MCP-Server mehr mit — siehe [MCP Server](/sdks/mcp).
</Note>

## Installation

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

Oder ohne globale Installation:

```bash theme={null}
npx business-os-cli <command>
```

## Authentifizierung

### Interaktiv

```bash theme={null}
business-os login
```

Du wirst nach deinem API Key gefragt. Der Key wird unter `~/.business-os/config.json` gespeichert.

### Per Umgebungsvariable

```bash theme={null}
export BUSINESS_OS_API_KEY=bo_xxxxx...
```

### API Typ setzen

Business OS unterstützt zwei APIs:

* **Partner API** — Regulierte Banken (Sparkasse, Volksbank, Deutsche Bank, etc.)
* **Open Banking API** — Nicht-regulierte Anbieter (American Express, PayPal, Revolut, etc.)

```bash theme={null}
business-os config --api partner    # Default
business-os config --api openbanking
```

## Claude Code Skill

Installiere die Skill-Datei, damit Claude Code die CLI automatisch nutzen kann:

```bash theme={null}
business-os init
```

Dies kopiert eine `SKILL.md` nach `~/.claude/skills/business-os/`. Nach einem Neustart von Claude Code erkennt dieser die Skill automatisch.

**Beispiel-Interaktion mit Claude Code:**

```
User: Zeige mir meine Banking-Connections
Claude: Ruft `business-os connections list` auf und zeigt die Ergebnisse
```

## Befehle

### Connections

```bash theme={null}
# Alle Verbindungen auflisten
business-os connections list

# Einzelne Verbindung abrufen
business-os connections get 9182736450918273645

# Verbindung löschen
business-os connections delete 9182736450918273645
```

### Accounts

```bash theme={null}
# Alle Konten auflisten
business-os accounts list

# Konten einer bestimmten Verbindung
business-os accounts list --connection 9182736450918273645

# Einzelnes Konto abrufen
business-os accounts get 8273645091827364509
```

### Transactions

```bash theme={null}
# Transaktionen einer Verbindung
business-os transactions list --connection 9182736450918273645

# Gefiltert nach Konto
business-os transactions list --connection 9182736450918273645 --account 8273645091827364509

# Mit Zeitraum
business-os transactions list --connection 9182736450918273645 --from 2026-01-01 --to 2026-03-24
```

### Balances

```bash theme={null}
# Tagessalden eines Kontos (Start-/End-of-Day, Cash-In/-Out, Delta)
business-os balances list --account 8273645091827364509

# Mit Zeitraum
business-os balances list --account 8273645091827364509 --from 2026-01-01 --to 2026-03-31
```

<Note>
  `accounts list` liefert den **aktuellen** Saldo pro Konto (Snapshot). `balances list` liefert den **Verlauf** über die Zeit.
</Note>

### Payments

```bash theme={null}
# Alle Zahlungen auflisten
business-os payments list

# Zahlungsdetails abrufen
business-os payments get 7364509182736450918

# Verfügbare Templates (SEPA, SEPA_INSTANT) + unterstützende Provider
business-os payments templates

# SEPA-Zahlung initiieren
business-os payments create \
  --provider musterbank_oauth_client_de \
  --template SEPA \
  --creditor-name "Mustermann GmbH" \
  --creditor-iban "DE27100777770209299700" \
  --debtor-iban "DE89370400440532013000" \
  --amount "100.00" \
  --end-to-end-id "RE-2026-001" \
  --description "Rechnung RE-2026-001"
```

<Note>
  Der `payments create` Befehl gibt eine Widget-URL zurück. Der Nutzer muss diese URL öffnen, um die Zahlung per TAN zu autorisieren.
</Note>

### Webhook

```bash theme={null}
# Aktuelle Webhook URL abrufen
business-os webhook get

# Webhook URL setzen
business-os webhook set https://hook.example.com/banking
```

### Provider suchen

```bash theme={null}
# Bank suchen
business-os providers search "Sparkasse"

# Open Banking Anbieter suchen
business-os providers search "American Express" --api openbanking
```

## DATEV

DATEV-Verbindungen werden im Dashboard angelegt. Jede Verbindung hat eine `connectionId`. Multi-Mandant-Verbindungen (ReWe-Read) brauchen zusätzlich `--company <id>` — die companyId liefert `datev companies`.

### Mandanten

```bash theme={null}
business-os datev companies --connection <connection-id>
```

### DATEV Unternehmen Online (DUO)

Beleg- und Kassenbuch-Ebene.

```bash theme={null}
business-os datev-duo connections
business-os datev-duo belegtypen --connection <id>
business-os datev-duo kassenbuecher --connection <id>
business-os datev-duo rechnungsordner --connection <id> --typ EINGANG

# Schreiben — Payload wird 1:1 an DATEV weitergereicht
business-os datev-duo upload-beleg --connection <id> --body '{ ... }'
business-os datev-duo kassenbuch-einfach --connection <id> --body-file beleg.json
business-os datev-duo kassenbuch-advanced --connection <id> --body-file kassenbuch.json
business-os datev-duo buchungsvorschlag --connection <id> --body '{ ... }'
```

### DATEV Rechnungswesen — Schreiben

```bash theme={null}
business-os datev-rewe connections
business-os datev-rewe belegtypen --connection <id>
business-os datev-rewe steuersaetze --connection <id>

business-os datev-rewe upload-beleg --connection <id> --body '{ ... }'
business-os datev-rewe personenkonto --connection <id> --body '{ ... }'
business-os datev-rewe buchung --connection <id> --body '{ ... }'
```

<Note>
  `personenkonto` und `buchung` benötigen das RVO-Recht „Rechnungsdatenservice 1.0" auf dem Mandanten.
</Note>

### DATEV Rechnungswesen — Lesen

Read-only Finanzdaten pro Mandant. Typischer Ablauf: `connections` → `permissions` (welche RVO-Rechte?) → `geschaeftsjahre` (liefert `startDatum`) → `susa`/`opos`.

```bash theme={null}
business-os datev-rewe-read connections
business-os datev-rewe-read permissions --connection <id>
business-os datev-rewe-read geschaeftsjahre --connection <id>
business-os datev-rewe-read geschaeftsjahr <gj-id> --connection <id>

# Finanzdaten — brauchen --fiscal-year-start (aus geschaeftsjahre.startDatum)
business-os datev-rewe-read kontenplan --connection <id> --fiscal-year-start 2026-01-01
business-os datev-rewe-read susa --connection <id> --fiscal-year-start 2026-01-01
business-os datev-rewe-read susa --connection <id> --fiscal-year-start 2026-01-01 --konto 4000
business-os datev-rewe-read buchungsdaten --connection <id> --fiscal-year-start 2026-01-01
business-os datev-rewe-read zahlungsbedingungen --connection <id> --fiscal-year-start 2026-01-01

# Offene Posten (Mahnwesen, Forderungen/Verbindlichkeiten)
business-os datev-rewe-read opos --connection <id>
business-os datev-rewe-read opos --connection <id> --filter debitoren --stichtag 2026-03-31
```

<Note>
  DATEV-Befehle laufen unter dem aktuellen Org-Scope. Bei Agentur-Keys mit mehreren Organisationen die Ziel-Org mit der globalen Option `--org <id>` wählen, z.B. `business-os --org <org-id> datev-rewe-read connections`.
</Note>

## Output

Alle Befehle geben **JSON** zurück. Du kannst die Ausgabe mit `jq` weiterverarbeiten:

```bash theme={null}
# Nur Kontonamen anzeigen
business-os accounts list | jq '.data[].name'

# Saldo eines Kontos
business-os accounts get 8273645091827364509 | jq '.data.balance'

# Transaktionen als CSV
business-os transactions list --connection 123 | jq -r '.data[] | [.made_on, .amount, .description] | @csv'
```
