Zum Inhalt springen

Angebote und Rechnungen, wie du sie brauchst.

Open Source und selbst gehostet. Eigene Felder auf jeder Ebene, Positionen in Gruppen, PDF-Templates in Liquid und E-Rechnungen nach EN 16931 – im Browser, über eine REST-API und für KI-Agenten über MCP.

Vom Entwurf zur E-Rechnung

Ein Dokument, vier Stationen. Alles, was du hier siehst, ist die App selbst, mit Demodaten.

  1. Entwurf schreiben

    Kunden wählen, Positionen in Gruppen ordnen, eigene Felder ausfüllen. Die Vorschau rendert beim Tippen das echte PDF, und jede Änderung speichert sich von selbst.

    Dokumente und Editor
    Der Dokument-Editor mit einem Rechnungsentwurf und der Live-Vorschau
  2. Template gestalten

    Templates sind HTML, CSS und Liquid und werden auf dem Server zu PDF. Bearbeite sie im Browser oder lade das Toolkit herunter und arbeite in deinem eigenen Editor weiter.

    Templates
    Der Template-Editor mit dem Liquid-Quelltext und einer Vorschau der Seite
  3. Fehlendes ergänzen

    Vor dem Abschließen prüft openbill das Dokument nach EN 16931 und zeigt jede fehlende Angabe, bis zum Feld in den Einstellungen, in das sie gehört.

    E-Rechnung
    Die Einstellungen der Organisation mit Firmendaten, Besteuerung und USt-ID
  4. Abschließen und archivieren

    Beim Abschließen bekommt das Dokument seine Nummer und ist danach gesperrt. openbill archiviert ein PDF/A-3 mit der factur-x.xml darin, ändern lässt es sich nur noch per Storno.

    E-Rechnung
    Eine abgeschlossene Rechnung mit der eingebetteten E-Rechnungs-XML daneben

Ein Agent gestaltet dein Template

Templates sind HTML, CSS und Liquid. Bearbeite sie in deinem eigenen Editor mit Live-Vorschau, oder beschreibe das Aussehen und lass einen KI-Agenten schreiben – er sieht Render-Fehler mit Zeilennummer und prüft das Ergebnis, bevor etwas gespeichert wird.

Der Toolkit-Dialog eines Templates in openbill

In deinem Editor, mit einem Coding-Agenten

Lade das Template-Toolkit herunter und öffne Claude Code, Codex oder einen anderen Coding-Agenten in seinem Ordner. Der Agent bearbeitet template.liquid und styles.css, die Vorschau im Browser rendert jedes Speichern auf deiner Instanz, und AGENTS.md erklärt ihm die Regeln. Gefällt es dir, speichert pnpm push es in openbill.

pnpm devpnpm pushpnpm pull

Template-Toolkit
Der Template-Editor mit Code und einer Vorschau der Seite

In openbill, über MCP

Verbinde einen Agenten mit dem MCP-Server, und er arbeitet direkt am Template. Er probiert Änderungen mit Beispieldaten oder einem echten Dokument aus, liest Fehler mit Zeilennummer, Seitenzahl und fehlende Felder und speichert, sobald alles rendert. Die Liquid-Referenz bekommt er als MCP-Resource.

get-templaterender-template-previewupdate-template

Templates über MCP

Lass einen Agenten den Papierkram machen

Alles, was die App kann, geht auch über eine REST-API mit eingeschränkten Tokens und einen MCP-Server. Ein Agent entwirft eine Rechnung, liest die offenen Punkte und schließt sie ab, mit denselben Prüfungen wie du.

Ein Agent legt eine Rechnung über MCP an, prüft sie und schließt sie ab
  1. Stell Hafenkontor Lindqvist den Shop-Relaunch in Rechnung.
  2. create-document {"type":"invoice","customer_id":"01K7…","groups":[…]}
  3. {"status":"draft","totals":{"gross":"9650.90"},"issues":[]}
  4. finalize-document {"id":"01K9…"}
  5. {"number":"RE-2026-0042","status":"open","is_locked":true}
  6. get-document-pdf-url {"id":"01K9…"}
  7. {"pdf":"https://…/downloads/…","xml":"https://…/downloads/…"}
  8. RE-2026-0042 ist abgeschlossen. PDF und E-Rechnungs-XML sind archiviert, die Links gelten 15 Minuten.

Läuft auf deinem Server, mit Docker Compose

Eine Compose-Datei mit allem, was sie braucht. In Dockge oder Portainer einfügen (oder als compose.yaml speichern), die vier Werte oben ändern, starten.

# openbill in one file, no .env needed. Paste it into Dockge or Portainer
# (or save it as compose.yaml), change the values below, deploy.
# Docs: https://openbill.dev/en/setup
x-openbill: &openbill-env
  # public https address (your reverse proxy forwards it to port 7739)
  APP_URL: https://invoices.example.com
  # owner account, created on the first start (password: 8+ characters)
  ADMIN_EMAIL: admin@example.com
  ADMIN_PASSWORD: change-me
  # database password: MariaDB keeps it from the first start on
  DB_PASSWORD: &db-password change-me
  # proxy on another host? Only its X-Forwarded-* headers count then:
  # TRUSTED_PROXIES: 192.168.1.10
# openbill refuses to start while a password is still change-me.

# … und die Dienste openbill, MariaDB und Gotenberg. Kopieren nimmt die ganze Datei.
amd64 und arm64
Images für beide, vom Heimserver bis in die Cloud.
MariaDB und Gotenberg
Datenbank und PDF-Dienst gehören zum Stack, in einem internen Netz.
Deine Daten bleiben bei dir
Dokumente, Archiv und Templates liegen auf deinem Server und in deinen Backups.
Komplette Anleitung für Docker Compose

Was drin ist

Starte mit der Einrichtung.