Zum Inhalt springen

Entwickler

Ein Schlüssel, eine Kopfzeile, Ihre eigenen Zahlen.

Sie legen den Schlüssel in KRONENWERK selbst an und wählen dabei aus, was er darf. Damit lesen Sie Ihre Kunden, Ihre Rechnungen, Ihre Vorgänge und Ihre offenen Posten — und legen Kunden, Vorgänge und Rechnungsentwürfe an. Ereignisse aus dem laufenden Betrieb gehen an eine Adresse, die Sie eintragen: signiert und mit Wiederholung.

Zugang

Zwei Zeilen, und Sie sind verbunden.

Der Schlüssel wird genau einmal angezeigt; gespeichert wird nur sein Hashwert. Ein Testschlüssel und ein Produktivschlüssel sind zwei getrennte Schlüssel mit zwei getrennten Präfixen, und ein Schlüssel kann nie mehr, als die Person durfte, die ihn ausgestellt hat.

Basisadresse Kopfzeile
https://kronenwerk.org/api/extern/v1 Authorization: Bearer greif_live_…

Was Sie lesen

Jede Adresse verlangt ihren eigenen Bereich.

Ein Schlüssel bekommt nur die Rechte, die Sie ihm geben. Fehlt eines, antwortet der Weg mit 403 statt mit Daten — und das gilt auch für Ihren eigenen Schlüssel.

Pfad Bereich Was zurückkommt
GET /api/extern/v1/me

Der Schlüssel selbst: Firma, Umgebung, Geltungsbereiche, letzte Nutzung. Der erste Aufruf, den man schreibt.

GET /api/extern/v1/customers customers:read

Eine Seite Kunden und Lieferanten, neueste zuerst.

GET /api/extern/v1/customers/{id} customers:read

Ein einzelner Kunde mit allen Stammdaten.

POST /api/extern/v1/customers customers:write

Legt einen Kunden an. Die Kundennummer zieht KRONENWERK aus der eigenen Folge des Betriebs.

GET /api/extern/v1/invoices invoices:read

Ausgestellte Rechnungen, filterbar nach Zahlungszustand und Ausstellungsdatum.

GET /api/extern/v1/invoices/{number} invoices:read

Eine ausgestellte Rechnung, so wie das Archiv sie eingefroren hat.

POST /api/extern/v1/invoices/drafts invoices:write customers:read companies:read

Beginnt einen Rechnungsentwurf für einen Kunden. Ausgestellt wird er dadurch nicht.

GET /api/extern/v1/transactions transactions:read

Vorgänge — Aufträge, Projekte, Fertigungslose — mit Stufe und Fälligkeit, neueste zuerst. Mit period, from und to auf einen Zeitraum eingrenzen; gerechnet wird über den Beginn des Vorgangs.

POST /api/extern/v1/transactions transactions:write transactions:read

Legt einen Vorgang an. Nummer, Stufe und Verlauf entstehen wie im Bildschirm des Produkts.

PATCH /api/extern/v1/transactions/{id} transactions:write transactions:read

Ändert einen bestehenden Vorgang. Weggelassene Felder bleiben, wie sie sind; "none" als Kunde entfernt den Kunden.

GET /api/extern/v1/reports/outstanding reports:read

Offene Forderungen und Verbindlichkeiten zum heutigen Tag, getrennt nach Richtung.

GET /api/extern/v1/webhooks webhooks:write

Die Webhook-Ziele dieser Firma.

GET /api/extern/v1/webhooks/events webhooks:write

Die Ereignisse, die ein Ziel abonnieren kann.

POST /api/extern/v1/webhooks webhooks:write

Ein Ziel anlegen; das Signaturgeheimnis steht einmal in der Antwort.

DELETE /api/extern/v1/webhooks/{id} webhooks:write

Ein Ziel abschalten; das Zustellprotokoll bleibt.

Ein Beispiel

Ein Aufruf, eine Antwort.

Jeder Betrag ist eine ganze Zahl in der kleinsten Einheit seiner Währung, nie ein formatierter Text. Ein Datum ist ein Kalendertag ohne Zeitzone. So kann kein Trennzeichen falsch gelesen und kein Tag um einen verschoben werden.

Anfrage Antwort
GET https://kronenwerk.org/api/extern/v1/invoices?status=OPEN&size=1 {"data":[{"number":"R-2026-0001","issuedOn":"2026-04-02","buyer":"Kellermann GmbH","currency":"EUR","gross":{"minor":105910,"currency":"EUR"},"outstanding":{"minor":105910,"currency":"EUR"},"paymentState":"OPEN","overdue":false}],"page":0,"size":1,"total":1,"more":false}

Webhooks

Sechs Ereignisse, ausgelöst von wirklicher Arbeit.

Sie tragen eine Adresse ein und wählen aus, worüber sie unterrichtet werden soll. Jede Zustellung trägt eine feste Ereigniskennung, die über alle Wiederholungen gleich bleibt — damit ein Empfänger, der sie einmal verarbeitet hat, jede spätere Kopie verwerfen kann.

Ereignis Wann es gesendet wird
invoice.issued

Eine Rechnung wurde ausgestellt: die Nummer ist vergeben, das Dokument ist archiviert und unveränderlich.

invoice.paid

Eine Rechnung ist vollständig ausgeglichen — durch eine Zahlung, gleich auf welchem Weg sie erfasst wurde.

invoice.cancelled

Eine Rechnung wurde storniert: es gibt einen Stornobeleg, der sie vollständig aufhebt. Gelöscht wird nichts.

purchase.recorded

Eine Eingangsrechnung oder eine Ausgabe wurde erfasst, mit Lieferant, Datum und Beträgen.

payment.recorded

Eine Zahlung wurde erfasst, mit Richtung, Betrag, Tag und dem Beleg, den sie ausgleicht.

bank.transaction.imported

Ein Bankumsatz wurde eingelesen und steht zur Zuordnung bereit.

Signatur

Jede Zustellung ist unterschrieben, und die Unterschrift trägt einen Zeitpunkt.

Beim Eintragen der Adresse bekommen Sie ein Geheimnis — einmal. Prüfen Sie damit den Zeitstempel und den Rumpf zusammen, nicht den Rumpf allein: eine Unterschrift ohne Zeitpunkt bleibt für immer gültig und kann Ihnen später erneut untergeschoben werden.

Kopfzeile So prüfen Sie sie
KRONENWERK-Signature: t=1775462400,v1=…

Bilden Sie HMAC mit SHA-256 über den Zeitstempel, einen Punkt und den unveränderten Rumpf, mit dem Geheimnis als Schlüssel, und vergleichen Sie das Ergebnis mit v1. Weisen Sie eine Zustellung ab, deren Zeitstempel mehr als fünf Minuten von Ihrer Uhr abweicht.

Die Grenze

Ein Entwurf ist erlaubt. Ein Versand ist es nicht.

Der Unterschied zwischen etwas vorbereiten und etwas auslösen ist der Kern dieses ganzen Vorhabens, und er wird in den Diensten stehen und nicht in einer Oberfläche — was ein Bildschirm verbietet, verbietet nur dieser Bildschirm. Ein KI-System darf nie ein Weg um die finanziellen Kontrollen herum sein.

Vorbereiten Auslösen
Einen Angebotsentwurf anlegen Das Angebot verschicken
Einen Rechnungsentwurf anlegen Die Rechnung ausstellen
Eine Zahlungszuordnung vorschlagen Die Zahlung buchen
Eine Erstattung vorschlagen Geld zurückzahlen