Zahlfuchs

Zahlfuchs API

REST-API mit JSON für eigene Integrationen, Shops, Automatisierungen und Kanzleisoftware. Die API arbeitet mit denselben Regeln wie die App: Mandantentrennung, GoBD und Audit-Log gelten auch hier.

Basisadresse: https://api.staging.zahlfuchs.de/v1 · Version 1.0.0 · OpenAPI 3.1

Schnellstart

  1. Als Inhaber unter Einstellungen → API einen Schlüssel mit den nötigen Rechten anlegen. Er wird nur einmal angezeigt.
  2. Den Schlüssel bei jeder Anfrage im Header Authorization mitschicken:
curl https://api.staging.zahlfuchs.de/v1/company \
  -H "Authorization: Bearer zf_live_…"

TypeScript-SDK

Für JavaScript und TypeScript gibt es einen fertigen Client ohne Abhängigkeiten. Alle Pfade, Eingaben und Antworten sind typisiert. Er wiederholt Anfragen bei 429 und 503, setzt den Idempotency-Key selbst und prüft Webhooks.

import { createClient, verifyWebhook } from "@zahlfuchs/sdk";

const zf = createClient({ token: process.env.ZAHLFUCHS_TOKEN });
const kunde = await zf.get("/customers/{id}", { params: { path: { id } } });
for await (const r of zf.paginate("/invoices")) console.log(r.number);

const event = await verifyWebhook(secret, request.headers, rawBody);

Beispiel: Rechnung schreiben

Entwurf anlegen (ohne Angaben gelten Datum heute, Zahlungsziel und Textbausteine wie in der App), dann festschreiben. Danach ist die Rechnung unveränderlich; das PDF (ZUGFeRD) wird archiviert.

curl https://api.staging.zahlfuchs.de/v1/invoices \
  -H "Authorization: Bearer zf_live_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: bestellung-4711" \
  -d '{
    "customer_id": "…",
    "subject": "Bestellung 4711",
    "lines": [{ "article_id": "…", "quantity": "2" }]
  }'

curl -X POST https://api.staging.zahlfuchs.de/v1/invoices/<id>/finalize -H "Authorization: Bearer zf_live_…"
curl https://api.staging.zahlfuchs.de/v1/invoices/<id>/pdf -H "Authorization: Bearer zf_live_…" -o rechnung.pdf

Aktionen im falschen Status (z. B. einen festgeschriebenen Beleg ändern) antworten mit 409 invalid_state und einem reason; fehlende Pflichtangaben beim Festschreiben mit 422 invoice_incomplete und einer Liste issues.

Anmeldung und Rechte

Jeder Schlüssel gehört zu genau einer Firma und hat ausgewählte Rechte. Anfragen laufen im Namen des Inhabers, der ihn angelegt hat. Ein Schlüssel gilt nicht mehr, wenn er widerrufen oder abgelaufen ist, wenn die Firma gesperrt ist oder wenn der Inhaber gesperrt oder kein Inhaber mehr ist.

Schlüssel nie in Webseiten oder Apps einbauen, die Kunden herunterladen: nur auf dem eigenen Server.

RechtErlaubt
company:readFirmenprofil und Steuerprofile lesen
customers:readKunden lesen
customers:writeKunden anlegen und ändern
articles:readArtikel lesen
articles:writeArtikel anlegen und ändern
sales:readAngebote, Aufträge und Rechnungen lesen
sales:writeEntwürfe von Angeboten, Aufträgen und Rechnungen anlegen und ändern
sales:finalizeBelege festschreiben und stornieren (nicht umkehrbar)
sales:sendBelege per E-Mail versenden
payments:readZahlungen, offene Posten und Mahnungen lesen
payments:writeZahlungen erfassen und zurücknehmen
incoming:readEingangsbelege lesen
incoming:writeEingangsbelege hochladen
banking:readBankkonten und Umsätze lesen
banking:writeKontoauszüge importieren
ledger:readKonten, Buchungen, Kasse, Umsatzsteuer und Auswertungen lesen
ledger:writeBuchungen und Kassenbuch-Einträge erfassen
pos:readKasse mit TSE lesen: Kassen, Vorgänge, Abschlüsse
pos:writeKassenvorgänge erfassen (mit TSE-Signatur, nicht umkehrbar)
exports:readExporte herunterladen
exports:writeExporte anstoßen (PDF-Paket, GDPdU, DATEV)
comments:readRückfragen lesen
comments:writeAuf Rückfragen antworten
webhooks:manageWebhooks einrichten

Für die Steuerkanzlei gibt es beim Anlegen die Vorlage „Steuerkanzlei“: alles lesen, Exporte anstoßen und auf Rückfragen antworten.

OAuth 2.1 für Partner-Apps

Apps, die für viele Firmen arbeiten (z. B. ein Shop-System oder eine Kanzleisoftware), nutzen statt API-Schlüsseln OAuth 2.1 mit Authorization Code und PKCE. Die App registriert das Zahlfuchs-Team (client_id, Rücksprungadressen, erlaubte Rechte; bei Server-Apps ein Client-Secret). Jede Firma stimmt einzeln zu, nur ihr Inhaber; er sieht und trennt die Verbindung unter Einstellungen → Verbundene Apps. Änderungen stehen im Protokoll der Firma als oauth:<App>.

  1. Zufälligen code_verifier (43 bis 128 Zeichen) erzeugen, code_challenge = BASE64URL(SHA256(code_verifier)). Nur S256.
  2. Nutzer zur Zustimmung schicken: https://staging.zahlfuchs.de/oauth/authorize?response_type=code&client_id=…&redirect_uri=…&scope=company:read%20sales:read&state=…&code_challenge=…&code_challenge_method=S256. Ohne scope gelten alle für die App erlaubten Rechte. redirect_uri muss exakt einer registrierten Adresse entsprechen.
  3. Zurück kommt ?code=…&state=…&iss=https://api.staging.zahlfuchs.de oder ?error=access_denied. Der Code gilt 60 Sekunden und nur einmal.
  4. Code gegen Tokens tauschen (Server-Apps mit Basic-Anmeldung, öffentliche Apps nur mit client_id):
curl https://api.staging.zahlfuchs.de/oauth/token   -u "zf_app_…:zf_cs_…"   -d grant_type=authorization_code   -d code=… -d redirect_uri=https://partner.example/callback   -d code_verifier=…

{"access_token":"zf_oat_…","token_type":"Bearer","expires_in":3600,
 "refresh_token":"zf_ort_…","scope":"company:read sales:read"}
  • Access-Token zf_oat_… gilt 60 Minuten für genau eine Firma: Authorization: Bearer zf_oat_…. Abgelaufen: 401 token_expired mit WWW-Authenticate: Bearer error="invalid_token".
  • Refresh-Token zf_ort_… gilt 60 Tage und rotiert: grant_type=refresh_token liefert ein neues Paar, das alte Refresh-Token ist verbraucht. Wird ein verbrauchtes erneut vorgelegt, trennt Zahlfuchs die Verbindung (Diebstahlschutz); die App muss neu autorisieren. Optional scope mit weniger Rechten.
  • Trennen durch die App: POST https://api.staging.zahlfuchs.de/oauth/revoke mit token=… (RFC 7009). Ein Refresh-Token trennt die ganze Verbindung, ein Access-Token widerruft nur dieses.
  • Metadaten (RFC 8414): https://api.staging.zahlfuchs.de/.well-known/oauth-authorization-server. Token, Widerruf und Metadaten gibt es auch unter der Adresse der Web-App.

Konventionen

Webhooks

Webhooks melden Ereignisse sofort per POST an eine HTTPS-Adresse. Einrichten in der App unter Einstellungen → Webhooks oder per API mit dem Recht webhooks:manage. Der Inhalt ist schlank; Details holt das Programm mit seinem Schlüssel über die API.

POST https://example.com/zahlfuchs/webhook
webhook-id: 3f6c2a1e-…            (gleich bei jeder Wiederholung: zum Erkennen von Dubletten)
webhook-timestamp: 1767225600
webhook-signature: v1,K5oZ…=

{
  "id": "3f6c2a1e-…",
  "type": "invoice.paid",
  "timestamp": "2026-11-09T10:00:00.000Z",
  "data": { "object": "invoice", "id": "8d0e…", "number": "RE-2026-0042" }
}

Signatur prüfen (nach „Standard Webhooks“): HMAC-SHA256 über <webhook-id>.<webhook-timestamp>.<Rohtext> mit dem Geheimnis (ohne whsec_, Base64-dekodiert), Ergebnis Base64. Den Rohtext vor dem JSON-Parsen nehmen und Zeitstempel älter als 5 Minuten ablehnen. Nach einem Geheimnis-Wechsel stehen 24 Stunden lang zwei Signaturen durch Leerzeichen getrennt im Header; eine passende genügt.

import { createHmac, timingSafeEqual } from "node:crypto";

function verify(secret, headers, rawBody) {
  const id = headers["webhook-id"];
  const ts = Number(headers["webhook-timestamp"]);
  if (Math.abs(Date.now() / 1000 - ts) > 300) return false;
  const key = Buffer.from(secret.replace(/^whsec_/, ""), "base64");
  const expected = "v1," + createHmac("sha256", key).update(`${id}.${ts}.${rawBody}`).digest("base64");
  return headers["webhook-signature"].split(" ").some(
    (sig) => sig.length === expected.length && timingSafeEqual(Buffer.from(sig), Buffer.from(expected)),
  );
}

Zustellung: Antwort 2xx innerhalb von 10 Sekunden gilt als zugestellt; Weiterleitungen werden nicht verfolgt. Sonst folgen Wiederholungen nach 1 Minute, 5 Minuten, 30 Minuten, 2, 5, 8 und 8 Stunden. Scheitert 3 Tage lang jede Zustellung, wird der Webhook pausiert, bis man ihn wieder einschaltet. Die Reihenfolge ist nicht garantiert; im Zweifel den aktuellen Stand über die API lesen. Das Zustellprotokoll der letzten 30 Tage steht in den Einstellungen und unter GET /webhooks/{id}/deliveries.

invoice.finalizedRechnung festgeschrieben
invoice.sentRechnung per E-Mail versendet
invoice.paidRechnung vollständig bezahlt
invoice.overdueRechnung überfällig
invoice.cancelledRechnung storniert
offer.acceptedAngebot angenommen
offer.rejectedAngebot abgelehnt
payment.recordedZahlung erfasst
payment.reversedZahlung aufgehoben
incoming_document.receivedEingangsbeleg eingegangen
incoming_document.checkedE-Rechnung geprüft
dunning_notice.createdMahnung erstellt
export.readyDatenexport fertig
comment.createdNeue Rückfrage oder Antwort
pos.transaction.finishedKassenvorgang abgeschlossen (Verkauf an der Kasse mit TSE)
pos.transaction.cancelledKassenbeleg storniert
pos.closing.closedKassenabschluss erstellt
pos.register.commissionedKasse mit TSE in Betrieb genommen
pos.register.decommissionedKasse mit TSE außer Betrieb genommen

Fehler

Fehler kommen als application/problem+json (RFC 9457) mit stabilem code, deutschem detail, request_id und bei Eingabefehlern einer Liste errors mit field und message.

{
  "type": "https://staging.zahlfuchs.de/api/docs#fehler-validation_failed",
  "title": "Eingaben ungültig",
  "status": 422,
  "code": "validation_failed",
  "detail": "Einige Eingaben sind ungültig.",
  "request_id": "6f1c…",
  "errors": [{ "field": "name", "message": "…" }]
}
401unauthorizedAnmeldung fehlt
401invalid_api_keyAPI-Schlüssel ungültig
401invalid_tokenZugangstoken ungültig
401token_expiredZugangstoken abgelaufen
403insufficient_scopeRecht fehlt
404not_foundNicht gefunden
405method_not_allowedMethode nicht erlaubt
400invalid_jsonUngültiges JSON
400invalid_multipartUngültiger Upload
413payload_too_largeDatei zu groß
415unsupported_media_typeFalscher Inhaltstyp
422validation_failedEingaben ungültig
400invalid_cursorUngültiger Cursor
429rate_limitedZu viele Anfragen
409idempotency_in_progressAnfrage läuft noch
422idempotency_key_reusedIdempotency-Key schon verwendet
409conflictKonflikt
410goneNicht mehr vorhanden
409invalid_stateIm aktuellen Status nicht möglich
422invalid_fileDatei nicht verwendbar
422invoice_incompletePflichtangaben fehlen
409mail_not_configuredKein Postfach eingerichtet
502mail_delivery_failedVersand gescheitert
503service_unavailableDienst nicht erreichbar
500internal_errorInterner Fehler

Allgemein

GET/v1Übersicht

Version der API und Links zur Doku. Ohne Schlüssel erreichbar.

Recht: keins (öffentlich)

Antwort
  • name string
  • version string
  • documentation string
  • openapi string

Firma

GET/v1/companyFirmenprofil lesen

Name, Anschrift, Steuer- und Registerangaben, Kontakt und Bankverbindung der Firma.

Recht: company:read

Antwort
  • legal_name string · Name der Firma laut Register oder Gewerbeanmeldung
  • address object
    • street string
    • postal_code string
    • city string
    • country_code string · ISO 3166-1 alpha-2, z. B. DE
  • tax_number string | null
  • vat_id string | null · USt-IdNr.
  • tax_office string | null
  • register object
    • court string | null
    • number string | null
    • seat string | null
  • managing_directors string[]
  • contact object
    • email string | null
    • phone string | null
    • website string | null
  • bank object
    • iban string | null
    • bic string | null
    • name string | null
  • complete boolean · Reichen die Angaben, um Rechnungen zu schreiben?
GET/v1/tax-profilesSteuerprofile lesen

Alle gültigen Steuerprofile, ältestes zuerst. Für einen Beleg gilt das Profil, dessen valid_from am Belegdatum zuletzt begonnen hat.

Recht: company:read

Antwort
  • data TaxProfile[]
  • next_cursor string | null

Kunden

GET/v1/customersKunden auflisten

Älteste zuerst. Archivierte Kunden nur mit include_archived=true.

Recht: customers:read

Parameter:
  • limit in der Adresse, integer
  • cursor in der Adresse, string
  • search in der Adresse, string · Sucht in Name, Nummer und Ort
  • include_archived in der Adresse, true | false
Antwort
  • data Customer[]
  • next_cursor string | null
POST/v1/customersKunden anlegen

Vergibt die nächste Kundennummer.

Recht: customers:write

Eingabe (JSON)
  • kind business | consumer
  • name string
  • contact_person
  • street string
  • postal_code string
  • city string
  • country_code string · Standard DE
  • vat_id
  • email
  • phone
  • notes
  • buyer_reference
  • tax_number
  • small_business boolean
  • self_billing_agreed_on
Antwort
  • id string (uuid)
  • number string · Kundennummer aus dem Nummernkreis
  • kind business | consumer · Firma oder Privatperson
  • name string
  • contact_person string | null
  • street string
  • postal_code string
  • city string
  • country_code string · ISO 3166-1 alpha-2
  • vat_id string | null
  • email string | null
  • phone string | null
  • notes string | null
  • buyer_reference string | null · Leitweg-ID oder Kundenreferenz (BT-10), Vorschlag für Rechnungen
  • tax_number string | null · Steuernummer (für Gutschriften an diesen Kontakt)
  • small_business boolean · Kleinunternehmer nach § 19 UStG (Gutschriften ohne USt)
  • self_billing_agreed_on string | null · Gutschriftverfahren vereinbart seit (JJJJ-MM-TT); Voraussetzung für Gutschriften an ihn
  • archived boolean
  • created_at string (date-time)
  • updated_at string (date-time)
GET/v1/customers/{id}Kunden lesen

Recht: customers:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • number string · Kundennummer aus dem Nummernkreis
  • kind business | consumer · Firma oder Privatperson
  • name string
  • contact_person string | null
  • street string
  • postal_code string
  • city string
  • country_code string · ISO 3166-1 alpha-2
  • vat_id string | null
  • email string | null
  • phone string | null
  • notes string | null
  • buyer_reference string | null · Leitweg-ID oder Kundenreferenz (BT-10), Vorschlag für Rechnungen
  • tax_number string | null · Steuernummer (für Gutschriften an diesen Kontakt)
  • small_business boolean · Kleinunternehmer nach § 19 UStG (Gutschriften ohne USt)
  • self_billing_agreed_on string | null · Gutschriftverfahren vereinbart seit (JJJJ-MM-TT); Voraussetzung für Gutschriften an ihn
  • archived boolean
  • created_at string (date-time)
  • updated_at string (date-time)
PATCH/v1/customers/{id}Kunden ändern

Nur die gesendeten Felder ändern sich; null leert ein optionales Feld.

Recht: customers:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • kind business | consumer
  • name string
  • contact_person
  • street string
  • postal_code string
  • city string
  • country_code string · Standard DE
  • vat_id
  • email
  • phone
  • notes
  • buyer_reference
  • tax_number
  • small_business boolean
  • self_billing_agreed_on
Antwort
  • id string (uuid)
  • number string · Kundennummer aus dem Nummernkreis
  • kind business | consumer · Firma oder Privatperson
  • name string
  • contact_person string | null
  • street string
  • postal_code string
  • city string
  • country_code string · ISO 3166-1 alpha-2
  • vat_id string | null
  • email string | null
  • phone string | null
  • notes string | null
  • buyer_reference string | null · Leitweg-ID oder Kundenreferenz (BT-10), Vorschlag für Rechnungen
  • tax_number string | null · Steuernummer (für Gutschriften an diesen Kontakt)
  • small_business boolean · Kleinunternehmer nach § 19 UStG (Gutschriften ohne USt)
  • self_billing_agreed_on string | null · Gutschriftverfahren vereinbart seit (JJJJ-MM-TT); Voraussetzung für Gutschriften an ihn
  • archived boolean
  • created_at string (date-time)
  • updated_at string (date-time)
POST/v1/customers/{id}/archiveKunden archivieren

Kunden werden nie gelöscht, damit Belege ihnen zugeordnet bleiben. Archivierte Kunden lassen sich nicht in neuen Belegen verwenden.

Recht: customers:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • number string · Kundennummer aus dem Nummernkreis
  • kind business | consumer · Firma oder Privatperson
  • name string
  • contact_person string | null
  • street string
  • postal_code string
  • city string
  • country_code string · ISO 3166-1 alpha-2
  • vat_id string | null
  • email string | null
  • phone string | null
  • notes string | null
  • buyer_reference string | null · Leitweg-ID oder Kundenreferenz (BT-10), Vorschlag für Rechnungen
  • tax_number string | null · Steuernummer (für Gutschriften an diesen Kontakt)
  • small_business boolean · Kleinunternehmer nach § 19 UStG (Gutschriften ohne USt)
  • self_billing_agreed_on string | null · Gutschriftverfahren vereinbart seit (JJJJ-MM-TT); Voraussetzung für Gutschriften an ihn
  • archived boolean
  • created_at string (date-time)
  • updated_at string (date-time)
POST/v1/customers/{id}/restoreKunden wiederherstellen

Holt einen archivierten Kunden zurück.

Recht: customers:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • number string · Kundennummer aus dem Nummernkreis
  • kind business | consumer · Firma oder Privatperson
  • name string
  • contact_person string | null
  • street string
  • postal_code string
  • city string
  • country_code string · ISO 3166-1 alpha-2
  • vat_id string | null
  • email string | null
  • phone string | null
  • notes string | null
  • buyer_reference string | null · Leitweg-ID oder Kundenreferenz (BT-10), Vorschlag für Rechnungen
  • tax_number string | null · Steuernummer (für Gutschriften an diesen Kontakt)
  • small_business boolean · Kleinunternehmer nach § 19 UStG (Gutschriften ohne USt)
  • self_billing_agreed_on string | null · Gutschriftverfahren vereinbart seit (JJJJ-MM-TT); Voraussetzung für Gutschriften an ihn
  • archived boolean
  • created_at string (date-time)
  • updated_at string (date-time)

Artikel

GET/v1/articlesArtikel auflisten

Älteste zuerst. Archivierte Artikel nur mit include_archived=true.

Recht: articles:read

Parameter:
  • limit in der Adresse, integer
  • cursor in der Adresse, string
  • search in der Adresse, string · Sucht in Name und Nummer
  • include_archived in der Adresse, true | false
Antwort
  • data Article[]
  • next_cursor string | null
POST/v1/articlesArtikel anlegen

Recht: articles:write

Eingabe (JSON)
  • number
  • name string
  • description
  • unit_code H87 | HUR | DAY | LS | MTR | MTK | MTQ | KMT | KGM | LTR | MON · Einheit nach UN/ECE Rec. 20, z. B. H87 (Stück), HUR (Stunde)
  • unit_price Money · Einzelpreis netto
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • service_type standard | reduced_culture | reduced_food | reduced_books | reduced_transport | reduced_accommodation | reduced_showman | zero_solar | exempt | reverse_charge_construction | reverse_charge_eu_service | triangular_supply | intra_community_supply | export · Standard: standard (Regelsatz)
  • exemption_reason · Pflicht bei service_type exempt
  • barcode · Barcode für die Kasse, eindeutig je Firma
Antwort
  • id string (uuid)
  • number string | null · Eigene Artikelnummer, eindeutig je Firma
  • name string
  • description string | null
  • unit_code string
  • unit_price Money · Einzelpreis netto
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • service_type string
  • exemption_reason string | null
  • barcode string | null · Barcode (EAN/GTIN oder eigener Code) für die Kasse
  • archived boolean
  • created_at string (date-time)
  • updated_at string (date-time)
GET/v1/articles/{id}Artikel lesen

Recht: articles:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • number string | null · Eigene Artikelnummer, eindeutig je Firma
  • name string
  • description string | null
  • unit_code string
  • unit_price Money · Einzelpreis netto
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • service_type string
  • exemption_reason string | null
  • barcode string | null · Barcode (EAN/GTIN oder eigener Code) für die Kasse
  • archived boolean
  • created_at string (date-time)
  • updated_at string (date-time)
PATCH/v1/articles/{id}Artikel ändern

Nur die gesendeten Felder ändern sich. Bestehende Belege behalten ihre Werte.

Recht: articles:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • number
  • name string
  • description
  • unit_code H87 | HUR | DAY | LS | MTR | MTK | MTQ | KMT | KGM | LTR | MON · Einheit nach UN/ECE Rec. 20, z. B. H87 (Stück), HUR (Stunde)
  • unit_price Money · Einzelpreis netto
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • service_type standard | reduced_culture | reduced_food | reduced_books | reduced_transport | reduced_accommodation | reduced_showman | zero_solar | exempt | reverse_charge_construction | reverse_charge_eu_service | triangular_supply | intra_community_supply | export · Standard: standard (Regelsatz)
  • exemption_reason · Pflicht bei service_type exempt
  • barcode · Barcode für die Kasse, eindeutig je Firma
Antwort
  • id string (uuid)
  • number string | null · Eigene Artikelnummer, eindeutig je Firma
  • name string
  • description string | null
  • unit_code string
  • unit_price Money · Einzelpreis netto
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • service_type string
  • exemption_reason string | null
  • barcode string | null · Barcode (EAN/GTIN oder eigener Code) für die Kasse
  • archived boolean
  • created_at string (date-time)
  • updated_at string (date-time)
POST/v1/articles/{id}/archiveArtikel archivieren

Recht: articles:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • number string | null · Eigene Artikelnummer, eindeutig je Firma
  • name string
  • description string | null
  • unit_code string
  • unit_price Money · Einzelpreis netto
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • service_type string
  • exemption_reason string | null
  • barcode string | null · Barcode (EAN/GTIN oder eigener Code) für die Kasse
  • archived boolean
  • created_at string (date-time)
  • updated_at string (date-time)
POST/v1/articles/{id}/restoreArtikel wiederherstellen

Recht: articles:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • number string | null · Eigene Artikelnummer, eindeutig je Firma
  • name string
  • description string | null
  • unit_code string
  • unit_price Money · Einzelpreis netto
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • service_type string
  • exemption_reason string | null
  • barcode string | null · Barcode (EAN/GTIN oder eigener Code) für die Kasse
  • archived boolean
  • created_at string (date-time)
  • updated_at string (date-time)

Angebote

GET/v1/offersAngebote auflisten

Neueste zuerst (nach Belegdatum).

Recht: sales:read

Parameter:
  • limit in der Adresse, integer
  • cursor in der Adresse, string
  • status in der Adresse, draft | open | expired | accepted | rejected | superseded | cancelled
  • customer_id in der Adresse, string (uuid)
  • search in der Adresse, string · Sucht in Nummer, Betreff und Kundenname
  • include_superseded in der Adresse, true | false · Ersetzte Versionen mitliefern
Antwort
  • data SalesDocumentSummary[]
  • next_cursor string | null
POST/v1/offersAngebot als Entwurf anlegen

Legt einen Entwurf an. Ohne Angabe gelten die Standardwerte wie in der Web-App (Datum heute, Textbausteine, Zahlungsziel). Beträge kommen als Cent, Mengen und Prozente als Dezimaltext mit Punkt.

Recht: sales:write

Eingabe (JSON)
  • customer_id string (uuid)
  • issue_date string (date) · Standard: heute
  • service_date · Leistungsdatum; bestimmt den Steuersatz. Leer = issue_date
  • subject string
  • head_text · Weglassen = Standard-Textbaustein
  • foot_text · Weglassen = Standard-Textbaustein
  • price_mode net | gross · Standard: net
  • lines SalesLineInput[]
  • installments InstallmentInput[] · Abschlagsplan (Angebote und Aufträge)
  • valid_until · Standard: issue_date + 30 Tage
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
GET/v1/offers/{id}Angebot lesen

Recht: sales:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
PATCH/v1/offers/{id}Entwurf ändern

Nur Entwürfe. Gesendete Felder ersetzen die bisherigen; lines und installments werden als Ganzes ersetzt.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • customer_id string (uuid)
  • issue_date string (date) · Standard: heute
  • service_date · Leistungsdatum; bestimmt den Steuersatz. Leer = issue_date
  • subject string
  • head_text · Weglassen = Standard-Textbaustein
  • foot_text · Weglassen = Standard-Textbaustein
  • price_mode net | gross · Standard: net
  • lines SalesLineInput[]
  • installments InstallmentInput[] · Abschlagsplan (Angebote und Aufträge)
  • valid_until · Standard: issue_date + 30 Tage
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
DELETE/v1/offers/{id}Entwurf löschen

Nur Entwürfe. Abgeschlossene Belege werden nie gelöscht.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht

Antwort: 204 ohne Inhalt

POST/v1/offers/{id}/finalizeAngebot abschließen

Vergibt die Nummer; danach ist der Inhalt unveränderlich. Das PDF wird archiviert.

Recht: sales:finalize

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
POST/v1/offers/{id}/duplicateAls neuen Entwurf kopieren

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
POST/v1/offers/{id}/sendAngebot per E-Mail senden

Über das Postfach der Firma (Einstellungen → E-Mail). Anhang ist das archivierte PDF. Nur abgeschlossene Belege. Ohne Angaben gelten Empfänger, Betreff und Text wie im Versanddialog der Web-App.

Recht: sales:send

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • to string (email)[] · Standard: E-Mail-Adresse des Kunden
  • cc string (email)[]
  • subject string · Standard: Textbaustein der Firma
  • text string · Standard: Textbaustein der Firma
  • attach_xrechnung boolean · Nur Rechnungen mit Leitweg-ID: XRechnung-XML zusätzlich anhängen
Antwort
  • id string (uuid)
  • to string[]
  • cc string[]
  • subject string
  • attachments string[] · Dateinamen der Anhänge
  • sent_at string (date-time)
GET/v1/offers/{id}/pdfPDF herunterladen

Abgeschlossene Belege: das archivierte PDF. Entwürfe: frisch erzeugt mit Wasserzeichen. letterhead=false ohne Briefpapier (für vorgedrucktes Papier, immer frisch erzeugt).

Recht: sales:read

Parameter:
  • id im Pfad, string, Pflicht
  • letterhead in der Adresse, true | false · Standard true

Antwort: Datei application/pdf

GET/v1/offers/{id}/invoicingAbrechnungsstand

Welche Rechnungen es zum Beleg gibt und welche noch möglich sind (normal, Abschläge, Schluss).

Recht: sales:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • invoices SalesDocumentSummary[]
  • can_standard boolean · Normale Rechnung möglich
  • installments object[]
    • index integer
    • label string
    • gross Money
    • invoice_id
  • can_final boolean · Schlussrechnung möglich
POST/v1/offers/{id}/invoicesRechnung erstellen

Legt einen Rechnungsentwurf aus dem Beleg an: normale Rechnung, Abschlagsrechnung zu einem Abschlag oder Schlussrechnung (zieht festgeschriebene Abschlagsrechnungen ab).

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • type standard | partial | final · standard = normale Rechnung, partial = Abschlagsrechnung, final = Schlussrechnung
  • installment_index integer · Bei partial: Index des Abschlags im Plan (0-basiert)
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
POST/v1/offers/{id}/acceptAngebot angenommen

Entscheidung des Kunden festhalten. Nur offene (auch abgelaufene) Angebote.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
POST/v1/offers/{id}/rejectAngebot abgelehnt

Entscheidung des Kunden festhalten. Nur offene (auch abgelaufene) Angebote.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
POST/v1/offers/{id}/new-versionNeue Version

Neue Version eines abgeschlossenen Angebots als Entwurf (gleiche Nummer, version + 1).

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
POST/v1/offers/{id}/convert-to-orderIn Auftrag umwandeln

Erstellt eine Auftragsbestätigung als Entwurf; das Angebot gilt dann als angenommen.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at

Aufträge

GET/v1/ordersAufträge auflisten

Neueste zuerst (nach Belegdatum).

Recht: sales:read

Parameter:
  • limit in der Adresse, integer
  • cursor in der Adresse, string
  • status in der Adresse, draft | open | expired | accepted | rejected | superseded | cancelled
  • customer_id in der Adresse, string (uuid)
  • search in der Adresse, string · Sucht in Nummer, Betreff und Kundenname
Antwort
  • data SalesDocumentSummary[]
  • next_cursor string | null
POST/v1/ordersAuftrag als Entwurf anlegen

Legt einen Entwurf an. Ohne Angabe gelten die Standardwerte wie in der Web-App (Datum heute, Textbausteine, Zahlungsziel). Beträge kommen als Cent, Mengen und Prozente als Dezimaltext mit Punkt.

Recht: sales:write

Eingabe (JSON)
  • customer_id string (uuid)
  • issue_date string (date) · Standard: heute
  • service_date · Leistungsdatum; bestimmt den Steuersatz. Leer = issue_date
  • subject string
  • head_text · Weglassen = Standard-Textbaustein
  • foot_text · Weglassen = Standard-Textbaustein
  • price_mode net | gross · Standard: net
  • lines SalesLineInput[]
  • installments InstallmentInput[] · Abschlagsplan (Angebote und Aufträge)
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
GET/v1/orders/{id}Auftrag lesen

Recht: sales:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
PATCH/v1/orders/{id}Entwurf ändern

Nur Entwürfe. Gesendete Felder ersetzen die bisherigen; lines und installments werden als Ganzes ersetzt.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • customer_id string (uuid)
  • issue_date string (date) · Standard: heute
  • service_date · Leistungsdatum; bestimmt den Steuersatz. Leer = issue_date
  • subject string
  • head_text · Weglassen = Standard-Textbaustein
  • foot_text · Weglassen = Standard-Textbaustein
  • price_mode net | gross · Standard: net
  • lines SalesLineInput[]
  • installments InstallmentInput[] · Abschlagsplan (Angebote und Aufträge)
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
DELETE/v1/orders/{id}Entwurf löschen

Nur Entwürfe. Abgeschlossene Belege werden nie gelöscht.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht

Antwort: 204 ohne Inhalt

POST/v1/orders/{id}/finalizeAuftrag abschließen

Vergibt die Nummer; danach ist der Inhalt unveränderlich. Das PDF wird archiviert.

Recht: sales:finalize

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
POST/v1/orders/{id}/duplicateAls neuen Entwurf kopieren

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
POST/v1/orders/{id}/sendAuftrag per E-Mail senden

Über das Postfach der Firma (Einstellungen → E-Mail). Anhang ist das archivierte PDF. Nur abgeschlossene Belege. Ohne Angaben gelten Empfänger, Betreff und Text wie im Versanddialog der Web-App.

Recht: sales:send

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • to string (email)[] · Standard: E-Mail-Adresse des Kunden
  • cc string (email)[]
  • subject string · Standard: Textbaustein der Firma
  • text string · Standard: Textbaustein der Firma
  • attach_xrechnung boolean · Nur Rechnungen mit Leitweg-ID: XRechnung-XML zusätzlich anhängen
Antwort
  • id string (uuid)
  • to string[]
  • cc string[]
  • subject string
  • attachments string[] · Dateinamen der Anhänge
  • sent_at string (date-time)
GET/v1/orders/{id}/pdfPDF herunterladen

Abgeschlossene Belege: das archivierte PDF. Entwürfe: frisch erzeugt mit Wasserzeichen. letterhead=false ohne Briefpapier (für vorgedrucktes Papier, immer frisch erzeugt).

Recht: sales:read

Parameter:
  • id im Pfad, string, Pflicht
  • letterhead in der Adresse, true | false · Standard true

Antwort: Datei application/pdf

GET/v1/orders/{id}/invoicingAbrechnungsstand

Welche Rechnungen es zum Beleg gibt und welche noch möglich sind (normal, Abschläge, Schluss).

Recht: sales:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • invoices SalesDocumentSummary[]
  • can_standard boolean · Normale Rechnung möglich
  • installments object[]
    • index integer
    • label string
    • gross Money
    • invoice_id
  • can_final boolean · Schlussrechnung möglich
POST/v1/orders/{id}/invoicesRechnung erstellen

Legt einen Rechnungsentwurf aus dem Beleg an: normale Rechnung, Abschlagsrechnung zu einem Abschlag oder Schlussrechnung (zieht festgeschriebene Abschlagsrechnungen ab).

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • type standard | partial | final · standard = normale Rechnung, partial = Abschlagsrechnung, final = Schlussrechnung
  • installment_index integer · Bei partial: Index des Abschlags im Plan (0-basiert)
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
POST/v1/orders/{id}/cancelAuftrag stornieren

Nur offene Aufträge.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at

Rechnungen

GET/v1/invoicesRechnungen auflisten

Neueste zuerst (nach Belegdatum).

Recht: sales:read

Parameter:
  • limit in der Adresse, integer
  • cursor in der Adresse, string
  • status in der Adresse, draft | open | expired | accepted | rejected | superseded | cancelled
  • customer_id in der Adresse, string (uuid)
  • search in der Adresse, string · Sucht in Nummer, Betreff und Kundenname
  • invoice_type in der Adresse, standard | partial | final | cancellation | credit_note | self_billed | self_billing · standard, partial = Abschlagsrechnung, final = Schlussrechnung, cancellation = Stornorechnung, credit_note = Rechnungskorrektur (Gutschrift an den Kunden, Mengen und Beträge negativ), self_billed = vom Kunden ausgestellte Gutschrift (Gutschriftverfahren; unser Umsatz, Nummer des Kunden, kein Versand, keine E-Rechnung), self_billing = von uns an einen Lieferanten ausgestellte Gutschrift (Ausgabe, Nummer GS-…, E-Rechnung 389; mit corrected_document ihr Storno)
Antwort
  • data SalesDocumentSummary[]
  • next_cursor string | null
POST/v1/invoicesRechnung als Entwurf anlegen

Legt einen Entwurf an. Ohne Angabe gelten die Standardwerte wie in der Web-App (Datum heute, Textbausteine, Zahlungsziel). Beträge kommen als Cent, Mengen und Prozente als Dezimaltext mit Punkt.

Recht: sales:write

Eingabe (JSON)
  • customer_id string (uuid)
  • issue_date string (date) · Standard: heute
  • service_date · Leistungsdatum; bestimmt den Steuersatz. Leer = issue_date
  • subject string
  • head_text · Weglassen = Standard-Textbaustein
  • foot_text · Weglassen = Standard-Textbaustein
  • price_mode net | gross · Standard: net
  • lines SalesLineInput[]
  • installments InstallmentInput[] · Abschlagsplan (Angebote und Aufträge)
  • due_date · Standard: issue_date + 14 Tage
  • service_period_from · Beginn des Leistungszeitraums bis service_date
  • buyer_reference · Leitweg-ID/Referenz (BT-10). Weglassen = Wert des Kunden
  • invoice_type standard | credit_note | self_billed | self_billing · Standard: standard. credit_note = Rechnungskorrektur ohne Bezug auf eine Rechnung (Bonus, Kulanz): Mengen positiv angeben, gespeichert und ausgegeben werden sie negativ. Mit Bezug: POST /invoices/{id}/credit-notes. self_billed = Gutschrift, die der Kunde ausgestellt hat (z. B. Provisionsabrechnung): external_number ist Pflicht und wird beim Festschreiben zur Belegnummer. self_billing = Gutschrift an einen Lieferanten (Gutschriftverfahren): customer_id ist der Lieferant (mit vereinbartem Gutschriftverfahren und Steuernummer oder USt-IdNr.); Umsatzsteuer nach seinem Status. Beim Festschreiben entsteht ein Eingangsbeleg, über den die Ausgabe gebucht und ausgezahlt wird.
  • incoming_document_id · Nur self_billed: Eingangsbeleg mit dem Original. Er darf nicht kontiert sein und wird beim Festschreiben erledigt.
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
GET/v1/invoices/{id}Rechnung lesen

Recht: sales:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
PATCH/v1/invoices/{id}Entwurf ändern

Nur Entwürfe. Gesendete Felder ersetzen die bisherigen; lines und installments werden als Ganzes ersetzt.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • customer_id string (uuid)
  • issue_date string (date) · Standard: heute
  • service_date · Leistungsdatum; bestimmt den Steuersatz. Leer = issue_date
  • subject string
  • head_text · Weglassen = Standard-Textbaustein
  • foot_text · Weglassen = Standard-Textbaustein
  • price_mode net | gross · Standard: net
  • lines SalesLineInput[]
  • installments InstallmentInput[] · Abschlagsplan (Angebote und Aufträge)
  • due_date · Standard: issue_date + 14 Tage
  • service_period_from · Beginn des Leistungszeitraums bis service_date
  • buyer_reference · Leitweg-ID/Referenz (BT-10). Weglassen = Wert des Kunden
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
DELETE/v1/invoices/{id}Entwurf löschen

Nur Entwürfe. Abgeschlossene Belege werden nie gelöscht.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht

Antwort: 204 ohne Inhalt

POST/v1/invoices/{id}/finalizeRechnung festschreiben

Prüft die Pflichtangaben (§ 14 UStG), vergibt die Rechnungsnummer und schreibt die Rechnung fest. Danach ist sie unveränderlich (GoBD); Änderungen nur per Storno oder Korrektur. Eine Rechnungskorrektur mit Bezug wird dabei mit dem offenen Betrag ihrer Rechnung verrechnet (siehe /invoices/{id}/payments). Das PDF wird archiviert (ZUGFeRD, bei Leitweg-ID zusätzlich XRechnung).

Recht: sales:finalize

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
POST/v1/invoices/{id}/duplicateAls neuen Entwurf kopieren

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
POST/v1/invoices/{id}/sendRechnung per E-Mail senden

Über das Postfach der Firma (Einstellungen → E-Mail). Anhang ist das archivierte PDF. Nur abgeschlossene Belege. Ohne Angaben gelten Empfänger, Betreff und Text wie im Versanddialog der Web-App.

Recht: sales:send

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • to string (email)[] · Standard: E-Mail-Adresse des Kunden
  • cc string (email)[]
  • subject string · Standard: Textbaustein der Firma
  • text string · Standard: Textbaustein der Firma
  • attach_xrechnung boolean · Nur Rechnungen mit Leitweg-ID: XRechnung-XML zusätzlich anhängen
Antwort
  • id string (uuid)
  • to string[]
  • cc string[]
  • subject string
  • attachments string[] · Dateinamen der Anhänge
  • sent_at string (date-time)
GET/v1/invoices/{id}/pdfPDF herunterladen

Festgeschriebene Rechnungen: das archivierte ZUGFeRD-PDF (PDF/A-3b mit factur-x.xml). Entwürfe: frisch erzeugt mit Wasserzeichen. letterhead=false ohne Briefpapier (für vorgedrucktes Papier, immer frisch erzeugt).

Recht: sales:read

Parameter:
  • id im Pfad, string, Pflicht
  • letterhead in der Adresse, true | false · Standard true

Antwort: Datei application/pdf

POST/v1/invoices/{id}/cancelRechnung stornieren

Erstellt eine festgeschriebene Stornorechnung mit eigener Nummer (Rückgabe); die Rechnung wird cancelled. Das PDF der Stornorechnung wird archiviert.

Recht: sales:finalize

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
POST/v1/invoices/{id}/correctRechnung korrigieren

Storno wie bei cancel plus ein neuer Rechnungsentwurf als Kopie, den du ändern und festschreiben kannst.

Recht: sales:finalize

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • cancellation SalesDocument
    • id string (uuid)
    • kind offer | order | invoice
    • status draft | open | accepted | rejected | superseded | cancelled
    • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
    • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
    • version integer
    • root_id string (uuid)
    • source_document_id
    • customer_id string (uuid)
    • customer object
    • issue_date string (date)
    • valid_until
    • service_date
    • service_period_from
    • due_date
    • subject string
    • head_text string | null
    • foot_text string | null
    • price_mode net | gross
    • lines object[]
    • installments object[]
    • totals object
    • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
    • invoice_type
    • buyer_reference string | null
    • source
    • corrected_document
    • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
    • incoming_document_id · Nur self_billed: Original im Rechnungseingang
    • installment_index
    • prepayments object[]
    • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • created_at string (date-time)
    • updated_at string (date-time)
    • finalized_at
    • decided_at
  • draft SalesDocument
    • id string (uuid)
    • kind offer | order | invoice
    • status draft | open | accepted | rejected | superseded | cancelled
    • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
    • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
    • version integer
    • root_id string (uuid)
    • source_document_id
    • customer_id string (uuid)
    • customer object
    • issue_date string (date)
    • valid_until
    • service_date
    • service_period_from
    • due_date
    • subject string
    • head_text string | null
    • foot_text string | null
    • price_mode net | gross
    • lines object[]
    • installments object[]
    • totals object
    • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
    • invoice_type
    • buyer_reference string | null
    • source
    • corrected_document
    • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
    • incoming_document_id · Nur self_billed: Original im Rechnungseingang
    • installment_index
    • prepayments object[]
    • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • created_at string (date-time)
    • updated_at string (date-time)
    • finalized_at
    • decided_at
POST/v1/invoices/{id}/credit-notesRechnungskorrektur zu einer Rechnung anlegen

Legt den Entwurf einer Rechnungskorrektur (Gutschrift an den Kunden, E-Rechnung Typ 381) zu einer offenen normalen oder Schlussrechnung an: Positionen wie auf der Rechnung, Datum heute. Per PATCH auf das gutzuschreibende anpassen (Mengen positiv angeben), dann festschreiben; dabei wird mit dem offenen Betrag der Rechnung verrechnet. Alle Korrekturen zusammen dürfen den Rechnungsbetrag nicht übersteigen (exceeds_invoice).

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind offer | order | invoice
  • status draft | open | accepted | rejected | superseded | cancelled
  • display_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expired
  • number string | null · Erst nach dem Abschließen/Festschreiben gesetzt
  • version integer
  • root_id string (uuid)
  • source_document_id
  • customer_id string (uuid)
  • customer object
    • number string
    • name string
    • contact_person string | null
    • street string
    • postal_code string
    • city string
    • country_code string
    • vat_id string | null
    • email string | null
  • issue_date string (date)
  • valid_until
  • service_date
  • service_period_from
  • due_date
  • subject string
  • head_text string | null
  • foot_text string | null
  • price_mode net | gross
  • lines object[]
    • id string (uuid)
    • position integer
    • kind item | text
    • article_id
    • title string
    • description string | null
    • quantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellen
    • unit_code string | null
    • unit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)
    • discount_percent string
    • service_type string | null
    • exemption_reason string | null
    • vat_category string | null
    • vat_rate_percent string
    • amount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegs
  • installments object[]
    • position integer
    • label string
    • kind percent | fixed
    • percent string | null
    • amount
    • due_days
    • gross Money
  • totals object
    • net Money
    • vat Money
    • gross Money
    • breakdown object[]
  • small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatum
  • invoice_type
  • buyer_reference string | null
  • source
  • corrected_document
  • external_number string | null · Nur self_billed: Gutschrift-Nummer des Kunden
  • incoming_document_id · Nur self_billed: Original im Rechnungseingang
  • installment_index
  • prepayments object[]
    • invoice_id string (uuid)
    • number string
    • issue_date string (date)
    • net Money
    • vat Money
    • gross Money
  • amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungen
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • invoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)
    • code string
    • line
    • message string
  • created_at string (date-time)
  • updated_at string (date-time)
  • finalized_at
  • decided_at
GET/v1/invoices/{id}/xrechnungXRechnung herunterladen

Archivierte XRechnung-XML (CII). Nur festgeschriebene Rechnungen mit Leitweg-ID (buyer_reference).

Recht: sales:read

Parameter:
  • id im Pfad, string, Pflicht

Antwort: Datei application/xml

Wiederkehrende Rechnungen

GET/v1/recurring-invoicesSerien auflisten

Älteste zuerst.

Recht: sales:read

Parameter:
  • limit in der Adresse, integer
  • cursor in der Adresse, string
Antwort
  • data RecurringInvoice[]
  • next_cursor string | null
POST/v1/recurring-invoicesSerie anlegen

Aus einer festgeschriebenen normalen Rechnung entsteht zu jedem Termin eine neue Rechnung. mode finalize braucht zusätzlich sales:finalize, finalize_and_send auch sales:send.

Recht: sales:write

Eingabe (JSON)
  • template_invoice_id string (uuid)
  • start_date string (date) · Erster Termin. Liegt er in der Vergangenheit, holt der nächste Lauf nach.
  • interval monthly | quarterly | half_yearly | yearly
  • end_date
  • mode draft | finalize | finalize_and_send · Standard: draft
  • subject_template
Antwort
  • id string (uuid)
  • template_invoice_id string (uuid) · Festgeschriebene Rechnung, die als Vorlage dient
  • template_number string | null
  • customer_id string (uuid)
  • customer_name string
  • template_subject string
  • amount Money · Zahlbetrag der Vorlage
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • interval monthly | quarterly | half_yearly | yearly
  • next_issue_date string (date)
  • end_date
  • mode draft | finalize | finalize_and_send · draft = nur Entwurf, finalize = festschreiben, finalize_and_send = festschreiben und per Mail senden
  • subject_template string | null · Betreff mit Platzhaltern {zeitraum}, {monat}, {quartal}, {jahr}
  • active boolean
  • running boolean · Aktiv, nicht beendet und nächster Termin vor dem Enddatum
  • ended_at
  • last_run_at
  • last_error string | null
  • upcoming_dates string (date)[] · Die nächsten Termine (höchstens 6)
  • created_at string (date-time)
GET/v1/recurring-invoices/{id}Serie lesen

Recht: sales:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • template_invoice_id string (uuid) · Festgeschriebene Rechnung, die als Vorlage dient
  • template_number string | null
  • customer_id string (uuid)
  • customer_name string
  • template_subject string
  • amount Money · Zahlbetrag der Vorlage
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • interval monthly | quarterly | half_yearly | yearly
  • next_issue_date string (date)
  • end_date
  • mode draft | finalize | finalize_and_send · draft = nur Entwurf, finalize = festschreiben, finalize_and_send = festschreiben und per Mail senden
  • subject_template string | null · Betreff mit Platzhaltern {zeitraum}, {monat}, {quartal}, {jahr}
  • active boolean
  • running boolean · Aktiv, nicht beendet und nächster Termin vor dem Enddatum
  • ended_at
  • last_run_at
  • last_error string | null
  • upcoming_dates string (date)[] · Die nächsten Termine (höchstens 6)
  • created_at string (date-time)
PATCH/v1/recurring-invoices/{id}Serie ändern

Nur die gesendeten Felder ändern sich. start_date setzt den nächsten Termin.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • start_date string (date) · Erster Termin. Liegt er in der Vergangenheit, holt der nächste Lauf nach.
  • interval monthly | quarterly | half_yearly | yearly
  • end_date
  • mode draft | finalize | finalize_and_send · Standard: draft
  • subject_template
Antwort
  • id string (uuid)
  • template_invoice_id string (uuid) · Festgeschriebene Rechnung, die als Vorlage dient
  • template_number string | null
  • customer_id string (uuid)
  • customer_name string
  • template_subject string
  • amount Money · Zahlbetrag der Vorlage
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • interval monthly | quarterly | half_yearly | yearly
  • next_issue_date string (date)
  • end_date
  • mode draft | finalize | finalize_and_send · draft = nur Entwurf, finalize = festschreiben, finalize_and_send = festschreiben und per Mail senden
  • subject_template string | null · Betreff mit Platzhaltern {zeitraum}, {monat}, {quartal}, {jahr}
  • active boolean
  • running boolean · Aktiv, nicht beendet und nächster Termin vor dem Enddatum
  • ended_at
  • last_run_at
  • last_error string | null
  • upcoming_dates string (date)[] · Die nächsten Termine (höchstens 6)
  • created_at string (date-time)
GET/v1/recurring-invoices/{id}/runsProtokoll der Läufe

Die letzten 100 Schritte, neueste zuerst.

Recht: sales:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • data object[]
    • id string (uuid)
    • scheduled_date string (date)
    • step created | finalized | sent | failed
    • invoice_id
    • invoice_number string | null
    • message string | null
    • created_at string (date-time)
  • next_cursor string | null
POST/v1/recurring-invoices/{id}/pauseSerie pausieren

Bis zum Fortsetzen entstehen keine Rechnungen.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • template_invoice_id string (uuid) · Festgeschriebene Rechnung, die als Vorlage dient
  • template_number string | null
  • customer_id string (uuid)
  • customer_name string
  • template_subject string
  • amount Money · Zahlbetrag der Vorlage
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • interval monthly | quarterly | half_yearly | yearly
  • next_issue_date string (date)
  • end_date
  • mode draft | finalize | finalize_and_send · draft = nur Entwurf, finalize = festschreiben, finalize_and_send = festschreiben und per Mail senden
  • subject_template string | null · Betreff mit Platzhaltern {zeitraum}, {monat}, {quartal}, {jahr}
  • active boolean
  • running boolean · Aktiv, nicht beendet und nächster Termin vor dem Enddatum
  • ended_at
  • last_run_at
  • last_error string | null
  • upcoming_dates string (date)[] · Die nächsten Termine (höchstens 6)
  • created_at string (date-time)
POST/v1/recurring-invoices/{id}/resumeSerie fortsetzen

Verpasste Termine holt der nächste Lauf nach.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • template_invoice_id string (uuid) · Festgeschriebene Rechnung, die als Vorlage dient
  • template_number string | null
  • customer_id string (uuid)
  • customer_name string
  • template_subject string
  • amount Money · Zahlbetrag der Vorlage
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • interval monthly | quarterly | half_yearly | yearly
  • next_issue_date string (date)
  • end_date
  • mode draft | finalize | finalize_and_send · draft = nur Entwurf, finalize = festschreiben, finalize_and_send = festschreiben und per Mail senden
  • subject_template string | null · Betreff mit Platzhaltern {zeitraum}, {monat}, {quartal}, {jahr}
  • active boolean
  • running boolean · Aktiv, nicht beendet und nächster Termin vor dem Enddatum
  • ended_at
  • last_run_at
  • last_error string | null
  • upcoming_dates string (date)[] · Die nächsten Termine (höchstens 6)
  • created_at string (date-time)
POST/v1/recurring-invoices/{id}/endSerie beenden

Endgültig; eine beendete Serie lässt sich nicht fortsetzen.

Recht: sales:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • template_invoice_id string (uuid) · Festgeschriebene Rechnung, die als Vorlage dient
  • template_number string | null
  • customer_id string (uuid)
  • customer_name string
  • template_subject string
  • amount Money · Zahlbetrag der Vorlage
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • interval monthly | quarterly | half_yearly | yearly
  • next_issue_date string (date)
  • end_date
  • mode draft | finalize | finalize_and_send · draft = nur Entwurf, finalize = festschreiben, finalize_and_send = festschreiben und per Mail senden
  • subject_template string | null · Betreff mit Platzhaltern {zeitraum}, {monat}, {quartal}, {jahr}
  • active boolean
  • running boolean · Aktiv, nicht beendet und nächster Termin vor dem Enddatum
  • ended_at
  • last_run_at
  • last_error string | null
  • upcoming_dates string (date)[] · Die nächsten Termine (höchstens 6)
  • created_at string (date-time)

Zahlungen

GET/v1/invoices/{id}/paymentsZahlungen einer Rechnung

Alle Zahlungen und Gegenbuchungen, älteste zuerst, dazu der abgeleitete Zahlungsstatus.

Recht: payments:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • data Payment[]
  • state PaymentState
    • invoice_id string (uuid)
    • status unpaid | partial | paid | written_off | overpaid | void · void = Entwurf, storniert oder Stornorechnung; written_off = ausgeglichen mit Forderungsausfall
    • amount_due Money
    • paid Money · Summe der Zahlungen (ohne Skonto und Ausfall)
    • discount Money · Gewährter Skonto
    • written_off Money · Als Forderungsausfall ausgebucht
    • credited Money · Mit Rechnungskorrekturen verrechnet (auf Rechnungskorrekturen negativ)
    • outstanding Money · Offener Betrag; negativ = Guthaben des Kunden (Rechnungskorrektur noch nicht erstattet)
    • due_date
    • overdue boolean
    • days_overdue integer
    • last_payment_date
    • refund_check boolean · Stornierte Rechnung mit Zahlungseingang: Erstattung prüfen
POST/v1/invoices/{id}/paymentsZahlung erfassen

Zahlungseingang auf eine festgeschriebene Rechnung. Teilzahlungen und Überzahlungen sind möglich. Zahlungen sind unveränderlich; Fehler korrigiert eine Gegenbuchung (reverse). Bei einer Rechnungskorrektur ist es die Erstattung an den Kunden: Betrag positiv angeben, gespeichert wird er negativ.

Recht: payments:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • payment_date string (date) · Standard: heute
  • amount Money · Positiver Betrag
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • method bank | cash | card | paypal | other · Standard: bank
  • reference
  • note
Antwort
  • payment Payment
    • id string (uuid)
    • invoice_id string (uuid)
    • payment_date string (date)
    • kind payment | discount | write_off | offset · payment = Zahlung (bei Rechnungskorrekturen: Erstattung), discount = gewährter Skonto, write_off = Forderungsausfall, offset = Verrechnung Rechnungskorrektur ↔ Rechnung
    • amount Money · Negativ bei Gegenbuchungen sowie bei Erstattung und Verrechnung auf Rechnungskorrekturen
    • method bank | cash | card | paypal | other
    • reference string | null
    • note string | null
    • reverses_payment_id · Gegenbuchung: die aufgehobene Zahlung
    • offset_document_id · Nur Verrechnung: der andere Beleg (Rechnung bzw. Rechnungskorrektur)
    • reversed_by_id · Aufgehoben durch diese Gegenbuchung
    • created_at string (date-time)
  • state PaymentState
    • invoice_id string (uuid)
    • status unpaid | partial | paid | written_off | overpaid | void · void = Entwurf, storniert oder Stornorechnung; written_off = ausgeglichen mit Forderungsausfall
    • amount_due Money
    • paid Money · Summe der Zahlungen (ohne Skonto und Ausfall)
    • discount Money · Gewährter Skonto
    • written_off Money · Als Forderungsausfall ausgebucht
    • credited Money · Mit Rechnungskorrekturen verrechnet (auf Rechnungskorrekturen negativ)
    • outstanding Money · Offener Betrag; negativ = Guthaben des Kunden (Rechnungskorrektur noch nicht erstattet)
    • due_date
    • overdue boolean
    • days_overdue integer
    • last_payment_date
    • refund_check boolean · Stornierte Rechnung mit Zahlungseingang: Erstattung prüfen
  • warning · Überzahlung ist erlaubt, wird aber gemeldet
POST/v1/invoices/{id}/adjustmentsRest ausbuchen (Skonto oder Forderungsausfall)

Gleicht den offenen Betrag ohne Geldfluss aus: Skonto als Erlösschmälerung, Forderungsausfall als Forderungsverlust, jeweils mit Umsatzsteuer-Korrektur. Höchstens der offene Betrag, nicht bei Abschlagsrechnungen. Aufheben über /payments/{id}/reverse.

Recht: payments:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • kind discount | write_off · discount = gewährter Skonto, write_off = Forderungsausfall (uneinbringlich)
  • date string (date) · Standard: heute
  • amount Money · Standard: der ganze offene Betrag
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • note
Antwort
  • payment Payment
    • id string (uuid)
    • invoice_id string (uuid)
    • payment_date string (date)
    • kind payment | discount | write_off | offset · payment = Zahlung (bei Rechnungskorrekturen: Erstattung), discount = gewährter Skonto, write_off = Forderungsausfall, offset = Verrechnung Rechnungskorrektur ↔ Rechnung
    • amount Money · Negativ bei Gegenbuchungen sowie bei Erstattung und Verrechnung auf Rechnungskorrekturen
    • method bank | cash | card | paypal | other
    • reference string | null
    • note string | null
    • reverses_payment_id · Gegenbuchung: die aufgehobene Zahlung
    • offset_document_id · Nur Verrechnung: der andere Beleg (Rechnung bzw. Rechnungskorrektur)
    • reversed_by_id · Aufgehoben durch diese Gegenbuchung
    • created_at string (date-time)
  • state PaymentState
    • invoice_id string (uuid)
    • status unpaid | partial | paid | written_off | overpaid | void · void = Entwurf, storniert oder Stornorechnung; written_off = ausgeglichen mit Forderungsausfall
    • amount_due Money
    • paid Money · Summe der Zahlungen (ohne Skonto und Ausfall)
    • discount Money · Gewährter Skonto
    • written_off Money · Als Forderungsausfall ausgebucht
    • credited Money · Mit Rechnungskorrekturen verrechnet (auf Rechnungskorrekturen negativ)
    • outstanding Money · Offener Betrag; negativ = Guthaben des Kunden (Rechnungskorrektur noch nicht erstattet)
    • due_date
    • overdue boolean
    • days_overdue integer
    • last_payment_date
    • refund_check boolean · Stornierte Rechnung mit Zahlungseingang: Erstattung prüfen
  • warning · Überzahlung ist erlaubt, wird aber gemeldet
POST/v1/invoices/{id}/offsetsRechnungskorrektur mit einer Rechnung verrechnen

{id} ist die Rechnungskorrektur. Legt zwei Einträge der Art offset an (positiv auf der Rechnung, negativ auf der Korrektur). Aufheben über /payments/{id}/reverse mit einem der beiden Einträge; das hebt beide auf.

Recht: payments:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • invoice_id string (uuid) · Offene normale oder Schlussrechnung desselben Kunden
  • date string (date) · Standard: heute
  • amount Money · Positiver Betrag; Standard: so viel wie möglich (kleinerer offener Betrag)
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • note
Antwort
  • invoice_payment Payment
    • id string (uuid)
    • invoice_id string (uuid)
    • payment_date string (date)
    • kind payment | discount | write_off | offset · payment = Zahlung (bei Rechnungskorrekturen: Erstattung), discount = gewährter Skonto, write_off = Forderungsausfall, offset = Verrechnung Rechnungskorrektur ↔ Rechnung
    • amount Money · Negativ bei Gegenbuchungen sowie bei Erstattung und Verrechnung auf Rechnungskorrekturen
    • method bank | cash | card | paypal | other
    • reference string | null
    • note string | null
    • reverses_payment_id · Gegenbuchung: die aufgehobene Zahlung
    • offset_document_id · Nur Verrechnung: der andere Beleg (Rechnung bzw. Rechnungskorrektur)
    • reversed_by_id · Aufgehoben durch diese Gegenbuchung
    • created_at string (date-time)
  • credit_note_payment Payment
    • id string (uuid)
    • invoice_id string (uuid)
    • payment_date string (date)
    • kind payment | discount | write_off | offset · payment = Zahlung (bei Rechnungskorrekturen: Erstattung), discount = gewährter Skonto, write_off = Forderungsausfall, offset = Verrechnung Rechnungskorrektur ↔ Rechnung
    • amount Money · Negativ bei Gegenbuchungen sowie bei Erstattung und Verrechnung auf Rechnungskorrekturen
    • method bank | cash | card | paypal | other
    • reference string | null
    • note string | null
    • reverses_payment_id · Gegenbuchung: die aufgehobene Zahlung
    • offset_document_id · Nur Verrechnung: der andere Beleg (Rechnung bzw. Rechnungskorrektur)
    • reversed_by_id · Aufgehoben durch diese Gegenbuchung
    • created_at string (date-time)
  • invoice_state PaymentState
    • invoice_id string (uuid)
    • status unpaid | partial | paid | written_off | overpaid | void · void = Entwurf, storniert oder Stornorechnung; written_off = ausgeglichen mit Forderungsausfall
    • amount_due Money
    • paid Money · Summe der Zahlungen (ohne Skonto und Ausfall)
    • discount Money · Gewährter Skonto
    • written_off Money · Als Forderungsausfall ausgebucht
    • credited Money · Mit Rechnungskorrekturen verrechnet (auf Rechnungskorrekturen negativ)
    • outstanding Money · Offener Betrag; negativ = Guthaben des Kunden (Rechnungskorrektur noch nicht erstattet)
    • due_date
    • overdue boolean
    • days_overdue integer
    • last_payment_date
    • refund_check boolean · Stornierte Rechnung mit Zahlungseingang: Erstattung prüfen
  • credit_note_state PaymentState
    • invoice_id string (uuid)
    • status unpaid | partial | paid | written_off | overpaid | void · void = Entwurf, storniert oder Stornorechnung; written_off = ausgeglichen mit Forderungsausfall
    • amount_due Money
    • paid Money · Summe der Zahlungen (ohne Skonto und Ausfall)
    • discount Money · Gewährter Skonto
    • written_off Money · Als Forderungsausfall ausgebucht
    • credited Money · Mit Rechnungskorrekturen verrechnet (auf Rechnungskorrekturen negativ)
    • outstanding Money · Offener Betrag; negativ = Guthaben des Kunden (Rechnungskorrektur noch nicht erstattet)
    • due_date
    • overdue boolean
    • days_overdue integer
    • last_payment_date
    • refund_check boolean · Stornierte Rechnung mit Zahlungseingang: Erstattung prüfen
POST/v1/payments/{id}/reverseZahlung aufheben

Legt eine Gegenbuchung über den vollen Betrag an. Die ursprüngliche Zahlung bleibt erhalten (GoBD).

Recht: payments:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • payment_date string (date) · Datum der Gegenbuchung, Standard: heute
  • note
Antwort
  • payment Payment
    • id string (uuid)
    • invoice_id string (uuid)
    • payment_date string (date)
    • kind payment | discount | write_off | offset · payment = Zahlung (bei Rechnungskorrekturen: Erstattung), discount = gewährter Skonto, write_off = Forderungsausfall, offset = Verrechnung Rechnungskorrektur ↔ Rechnung
    • amount Money · Negativ bei Gegenbuchungen sowie bei Erstattung und Verrechnung auf Rechnungskorrekturen
    • method bank | cash | card | paypal | other
    • reference string | null
    • note string | null
    • reverses_payment_id · Gegenbuchung: die aufgehobene Zahlung
    • offset_document_id · Nur Verrechnung: der andere Beleg (Rechnung bzw. Rechnungskorrektur)
    • reversed_by_id · Aufgehoben durch diese Gegenbuchung
    • created_at string (date-time)
  • state PaymentState
    • invoice_id string (uuid)
    • status unpaid | partial | paid | written_off | overpaid | void · void = Entwurf, storniert oder Stornorechnung; written_off = ausgeglichen mit Forderungsausfall
    • amount_due Money
    • paid Money · Summe der Zahlungen (ohne Skonto und Ausfall)
    • discount Money · Gewährter Skonto
    • written_off Money · Als Forderungsausfall ausgebucht
    • credited Money · Mit Rechnungskorrekturen verrechnet (auf Rechnungskorrekturen negativ)
    • outstanding Money · Offener Betrag; negativ = Guthaben des Kunden (Rechnungskorrektur noch nicht erstattet)
    • due_date
    • overdue boolean
    • days_overdue integer
    • last_payment_date
    • refund_check boolean · Stornierte Rechnung mit Zahlungseingang: Erstattung prüfen
  • warning · Überzahlung ist erlaubt, wird aber gemeldet
GET/v1/receivablesOffene Posten

Festgeschriebene Rechnungen mit Zahlungsstatus, neueste zuerst (nach Rechnungsdatum).

Recht: payments:read

Parameter:
  • limit in der Adresse, integer
  • cursor in der Adresse, string
  • status in der Adresse, open | overdue | paid | written_off | overpaid | all · open (Standard) = unbezahlt oder teilweise; all = alle festgeschriebenen
  • customer_id in der Adresse, string (uuid)
Antwort
  • data Receivable[]
  • next_cursor string | null
GET/v1/receivables/summarySumme offener Posten

Recht: payments:read

Antwort
  • open_count integer
  • open_total Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • overdue_count integer
  • overdue_total Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string

Mahnungen

GET/v1/dunning-proposalsMahnvorschläge

Rechnungen, für die laut Mahneinstellungen die nächste Stufe fällig ist.

Recht: payments:read

Antwort
  • data DunningProposal[]
  • next_cursor string | null
GET/v1/invoices/{id}/dunning-proposalNächste Mahnstufe (Vorschau)

Was die nächste Mahnstufe enthalten würde: Gebühr, Zinsen, Gesamtbetrag, Text.

Recht: payments:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • invoice_id string (uuid)
  • level integer
  • title string
  • issue_date string (date)
  • due_date string (date)
  • paid Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • outstanding Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • previous_fees Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • fee Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • interest Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • interest_rate_percent string | null
  • total Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • text string
  • due_from string (date)
  • is_due boolean
GET/v1/invoices/{id}/dunning-noticesMahnungen einer Rechnung

Recht: payments:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • data DunningNotice[]
  • next_cursor string | null
GET/v1/dunning-notices/{id}/pdfMahnung als PDF

Recht: payments:read

Parameter:
  • id im Pfad, string, Pflicht

Antwort: Datei application/pdf

Eingangsbelege

GET/v1/incoming-documentsEingangsbelege auflisten

Neueste zuerst (nach Eingang). Höchstens die letzten 2000 Belege je Filter.

Recht: incoming:read

Parameter:
  • limit in der Adresse, integer
  • cursor in der Adresse, string
  • status in der Adresse, new | done | rejected
  • search in der Adresse, string · Sucht in Absender, Betreff, Dateiname, Lieferant und Rechnungsnummer
Antwort
  • data IncomingDocumentSummary[]
  • next_cursor string | null
POST/v1/incoming-documentsEingangsbeleg hochladen

PDF, XRechnung (XML), ZUGFeRD/Factur-X oder Bild als multipart/form-data im Feld file, höchstens 25 MB. E-Rechnungen werden ausgelesen und geprüft. Hat die Firma dieselbe Datei schon, entsteht kein zweiter Beleg: result ist dann duplicate und document der vorhandene Beleg.

Recht: incoming:write

Eingabe (multipart/form-data, Datei im Feld file)
  • file
Antwort
  • result created | duplicate
  • document IncomingDocument
    • id string (uuid)
    • file_name string
    • mime_type string
    • size integer
    • sha256 string
    • source email | upload | self_billing · self_billing = aus einer eigenen Gutschrift an einen Lieferanten erzeugt
    • kind xrechnung | zugferd | pdf | image | other
    • status new | done | rejected · new = neu, done = erledigt, rejected = abgelehnt
    • status_reason string | null
    • note string | null
    • mail
    • received_at string (date-time)
    • created_at string (date-time)
    • einvoice · Ausgelesene E-Rechnung (XRechnung, ZUGFeRD); sonst null
    • parse_error string | null
    • validation · Prüfung durch den KoSIT-Validator; null = noch nicht geprüft
GET/v1/incoming-documents/{id}Eingangsbeleg lesen

Recht: incoming:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • file_name string
  • mime_type string
  • size integer
  • sha256 string
  • source email | upload | self_billing · self_billing = aus einer eigenen Gutschrift an einen Lieferanten erzeugt
  • kind xrechnung | zugferd | pdf | image | other
  • status new | done | rejected · new = neu, done = erledigt, rejected = abgelehnt
  • status_reason string | null
  • note string | null
  • mail
  • received_at string (date-time)
  • created_at string (date-time)
  • einvoice · Ausgelesene E-Rechnung (XRechnung, ZUGFeRD); sonst null
  • parse_error string | null
  • validation · Prüfung durch den KoSIT-Validator; null = noch nicht geprüft
PATCH/v1/incoming-documents/{id}Notiz ändern

Recht: incoming:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • note
Antwort
  • id string (uuid)
  • file_name string
  • mime_type string
  • size integer
  • sha256 string
  • source email | upload | self_billing · self_billing = aus einer eigenen Gutschrift an einen Lieferanten erzeugt
  • kind xrechnung | zugferd | pdf | image | other
  • status new | done | rejected · new = neu, done = erledigt, rejected = abgelehnt
  • status_reason string | null
  • note string | null
  • mail
  • received_at string (date-time)
  • created_at string (date-time)
  • einvoice · Ausgelesene E-Rechnung (XRechnung, ZUGFeRD); sonst null
  • parse_error string | null
  • validation · Prüfung durch den KoSIT-Validator; null = noch nicht geprüft
GET/v1/incoming-documents/{id}/fileOriginaldatei herunterladen

Die unverändert abgelegte Datei (PDF, XML oder Bild).

Recht: incoming:read

Parameter:
  • id im Pfad, string, Pflicht

Antwort: Datei application/octet-stream

POST/v1/incoming-documents/{id}/statusStatus setzen

Erledigt, abgelehnt (mit Grund) oder wieder neu. Der Beleg selbst bleibt unverändert.

Recht: incoming:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • status new | done | rejected
  • reason · Pflicht bei rejected
Antwort
  • id string (uuid)
  • file_name string
  • mime_type string
  • size integer
  • sha256 string
  • source email | upload | self_billing · self_billing = aus einer eigenen Gutschrift an einen Lieferanten erzeugt
  • kind xrechnung | zugferd | pdf | image | other
  • status new | done | rejected · new = neu, done = erledigt, rejected = abgelehnt
  • status_reason string | null
  • note string | null
  • mail
  • received_at string (date-time)
  • created_at string (date-time)
  • einvoice · Ausgelesene E-Rechnung (XRechnung, ZUGFeRD); sonst null
  • parse_error string | null
  • validation · Prüfung durch den KoSIT-Validator; null = noch nicht geprüft

Bank

GET/v1/bank-accountsBankkonten mit Salden

Recht: banking:read

Parameter:
  • include_archived in der Adresse, true | false
Antwort
  • data BankAccount[]
  • next_cursor string | null
GET/v1/bank-accounts/{id}Bankkonto lesen

Recht: banking:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • kind giro | savings | paypal | credit_card | other
  • name string
  • iban string | null
  • bic string | null
  • bank_name string | null
  • currency string
  • ledger_account string · Sachkonto im aktuellen Kontenrahmen
  • opening_date string (date)
  • opening_balance Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • bank_balance Money · Anfangssaldo plus importierte Umsätze
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • ledger_balance Money · Saldo des Sachkontos laut Buchhaltung
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • last_statement
  • transactions integer
  • open_transactions integer · Umsätze mit noch nicht zugeordnetem Rest
  • archived boolean
GET/v1/bank-accounts/{id}/importsImportierte Kontoauszüge

Recht: banking:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • data BankImport[]
  • next_cursor string | null
POST/v1/bank-accounts/{id}/statementsKontoauszug importieren

CAMT.053 (XML oder ZIP), MT940 oder CSV als multipart/form-data im Feld file. Schon importierte Umsätze werden erkannt und übersprungen; Regeln mit „automatisch buchen“ greifen wie in der App. Die Datei wird archiviert.

Recht: banking:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (multipart/form-data, Datei im Feld file)
  • file
  • profile sparkasse | volksbank | dkb | ing | generic · Nur CSV: Bankprofil; leer = erkennen
Antwort
  • import_id string (uuid)
  • format camt053 | mt940 | csv
  • profile string | null
  • count_total integer
  • count_new integer
  • count_duplicate integer
  • count_skipped integer
  • balance_difference
  • auto_confirmed integer · Über Regeln sofort gebuchte Umsätze
  • warnings string[]
GET/v1/bank-transactionsUmsätze

Neueste zuerst (nach Buchungstag), mit Zuordnungen zu Rechnungen, Eingangsbelegen und Buchungen.

Recht: banking:read

Parameter:
  • limit in der Adresse, integer
  • cursor in der Adresse, string
  • bank_account_id in der Adresse, string (uuid)
  • status in der Adresse, open | matched | all · open = offener Rest; Standard all
  • date_from in der Adresse, string (date)
  • date_to in der Adresse, string (date)
  • search in der Adresse, string · Sucht in Verwendungszweck, Name, IBAN und Betrag (Cent)
Antwort
  • data BankTransaction[]
  • next_cursor string | null
GET/v1/bank-transactions/{id}Umsatz lesen

Recht: banking:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • bank_account_id string (uuid)
  • booking_date string (date)
  • value_date
  • amount Money · Eingang positiv, Ausgang negativ
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • open Money · Noch nicht zugeordneter Rest
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • counterparty_name string | null
  • counterparty_iban string | null
  • counterparty_bic string | null
  • purpose string | null
  • booking_text string | null
  • end_to_end_id string | null
  • mandate_id string | null
  • creditor_id string | null
  • matches object[]
    • id string (uuid)
    • kind invoice | incoming | entry
    • amount Money
    • sales_document_id
    • incoming_document_id
    • journal_entry_id
    • label string | null
    • reversed boolean
    • created_at string (date-time)
  • created_at string (date-time)

Buchhaltung

GET/v1/accountsKontenrahmen

Standardkonten (SKR03 oder SKR04 laut Steuerprofil) und eigene Konten der Firma, nach Nummer sortiert.

Recht: ledger:read

Parameter:
  • date in der Adresse, string (date) · Kontenrahmen laut Steuerprofil an diesem Tag; Standard heute
  • include_archived in der Adresse, true | false
Antwort
  • data LedgerAccount[]
  • next_cursor string | null
GET/v1/accounts/{number}/linesKontoblatt

Alle Buchungszeilen eines Kontos im Zeitraum (Belegdatum), älteste zuerst, mit Saldo nach jeder Zeile.

Recht: ledger:read

Parameter:
  • number im Pfad, string, Pflicht
  • date_from in der Adresse, string (date), Pflicht
  • date_to in der Adresse, string (date), Pflicht
Antwort
  • account LedgerAccount
    • chart skr03 | skr04
    • number string
    • name string
    • kind asset | liability | equity | revenue | expense | private | tax | neutral
    • role string | null · Systemrolle, z. B. bank, receivables, vat_output
    • vat_code string | null · Vorbelegter Steuerschlüssel
    • automatic boolean · DATEV-Automatikkonto (Steuer wird herausgerechnet)
    • standard boolean · Aus dem Standard-Kontenrahmen (false = eigenes Konto)
    • archived boolean
  • lines object[]
    • entry_id string (uuid)
    • entry_number string
    • entry_date string (date)
    • period string · Buchungsmonat, z. B. 2026-11
    • description string
    • document_ref string | null
    • debit Money
    • credit Money
    • balance Money · Saldo im Zeitraum nach dieser Zeile (Soll − Haben)
    • vat_code string | null
    • text string | null
  • totals object
    • debit Money
    • credit Money
    • balance Money
GET/v1/vat-codesSteuerschlüssel

Steuerschlüssel für Buchungen und Kassenbuch, mit DATEV-BU-Schlüssel und UStVA-Kennzahlen.

Recht: ledger:read

Antwort
  • data VatCode[]
  • next_cursor string | null
GET/v1/cost-centersKostenstellen

Recht: ledger:read

Antwort
  • data CostCenter[]
  • next_cursor string | null
GET/v1/ledger-periodsBuchungsmonate

Monate mit Status (open, closed = festgeschrieben) und Zahl der Buchungen, vom ersten Monat mit Buchungen bis heute.

Recht: ledger:read

Parameter:
  • from in der Adresse, string · Buchungsmonat, z. B. 2026-11
  • to in der Adresse, string · Buchungsmonat, z. B. 2026-11
Antwort
  • data LedgerPeriod[]
  • next_cursor string | null
GET/v1/journal-entriesBuchungen

Journal, neueste Buchung zuerst. Mit ledger:write bucht Zahlfuchs offene Vorgänge vorher.

Recht: ledger:read

Parameter:
  • limit in der Adresse, integer
  • cursor in der Adresse, string
  • period_from in der Adresse, string · Buchungsmonat, z. B. 2026-11
  • period_to in der Adresse, string · Buchungsmonat, z. B. 2026-11
  • date_from in der Adresse, string (date)
  • date_to in der Adresse, string (date)
  • account in der Adresse, string · Nur Buchungen mit einer Zeile auf diesem Konto
  • source_type in der Adresse, string
  • cost_center_id in der Adresse, string (uuid)
  • search in der Adresse, string · Sucht in Buchungstext, Belegnummer und Buchungsnummer (2026/15)
Antwort
  • data JournalEntry[]
  • next_cursor string | null
POST/v1/journal-entriesManuell buchen

Umbuchung, Privatentnahme, Steuerzahlung und Ähnliches. Soll und Haben müssen gleich sein. Mit vat_code bildet Zahlfuchs die Steuerzeile selbst; Sammel- und Steuerkonten (Forderungen, Verbindlichkeiten, USt, VSt) sind direkt gesperrt. Gebuchtes lässt sich nicht ändern, nur per Gegenbuchung aufheben.

Recht: ledger:write

Eingabe (JSON)
  • date string (date) · Belegdatum; liegt der Monat schon fest, bucht Zahlfuchs in den nächsten offenen
  • description string
  • document_ref
  • amount_mode gross | net · Beträge mit Steuerschlüssel brutto (Standard) oder netto
  • lines object[]
    • account string · Sachkonto im Kontenrahmen am Belegdatum
    • debit string · Betrag in Cent, z. B. "8500" = 85,00 €
    • credit string · Betrag in Cent, z. B. "8500" = 85,00 €
    • vat_code none | ust_standard | ust_reduced | ust_zero | ust_free | ust_igl | ust_export | ust_rc_out | ust_eu_service | ust_triangular | ust_not_taxable | vst_standard | vst_reduced | vst_ig_acquisition_standard | vst_ig_acquisition_reduced | vst_rc13b_eu | vst_rc13b_foreign | vst_rc13b_standard | vst_rc13b_reduced | vst_import · Steuerschlüssel; die Steuerzeile bildet Zahlfuchs selbst (Betrag brutto oder netto laut amount_mode)
    • cost_center_id string (uuid)
    • text
Antwort
  • id string (uuid)
  • number string · Buchungsnummer "Wirtschaftsjahr/laufende Nummer", z. B. 2026/15
  • fiscal_year integer
  • entry_number integer
  • entry_date string (date) · Belegdatum
  • period string · Buchungsmonat (später, wenn der Monat festgeschrieben war)
  • chart skr03 | skr04
  • description string
  • document_ref string | null
  • source_type string · Herkunft: manual, sales_invoice, invoice_payment, incoming_document, bank, cash, …
  • source_id
  • reverses_entry_id
  • reversed_by_id
  • lines object[]
    • line_no integer
    • account string
    • debit Money
    • credit Money
    • vat_code string | null
    • vat_role
    • vat_rate string | null · Steuersatz in Prozent, z. B. "19"
    • vat_base · Bei Steuerzeilen: Bemessungsgrundlage
    • party_kind
    • party_id string | null
    • open_item_id · Rechnung bzw. Eingangsbeleg des offenen Postens
    • cost_center_id
    • text string | null
  • created_at string (date-time)
GET/v1/journal-entries/{id}Buchung lesen

Recht: ledger:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • number string · Buchungsnummer "Wirtschaftsjahr/laufende Nummer", z. B. 2026/15
  • fiscal_year integer
  • entry_number integer
  • entry_date string (date) · Belegdatum
  • period string · Buchungsmonat (später, wenn der Monat festgeschrieben war)
  • chart skr03 | skr04
  • description string
  • document_ref string | null
  • source_type string · Herkunft: manual, sales_invoice, invoice_payment, incoming_document, bank, cash, …
  • source_id
  • reverses_entry_id
  • reversed_by_id
  • lines object[]
    • line_no integer
    • account string
    • debit Money
    • credit Money
    • vat_code string | null
    • vat_role
    • vat_rate string | null · Steuersatz in Prozent, z. B. "19"
    • vat_base · Bei Steuerzeilen: Bemessungsgrundlage
    • party_kind
    • party_id string | null
    • open_item_id · Rechnung bzw. Eingangsbeleg des offenen Postens
    • cost_center_id
    • text string | null
  • created_at string (date-time)
POST/v1/journal-entries/{id}/reverseGegenbuchung (Storno)

Hebt eine manuelle Buchung durch eine neue Buchung mit getauschtem Soll und Haben auf. Buchungen aus Rechnungen, Zahlungen, Bank und Kasse werden an ihrer Quelle korrigiert.

Recht: ledger:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • date string (date) · Datum der Gegenbuchung; Standard: Datum der Buchung
  • description
Antwort
  • id string (uuid)
  • number string · Buchungsnummer "Wirtschaftsjahr/laufende Nummer", z. B. 2026/15
  • fiscal_year integer
  • entry_number integer
  • entry_date string (date) · Belegdatum
  • period string · Buchungsmonat (später, wenn der Monat festgeschrieben war)
  • chart skr03 | skr04
  • description string
  • document_ref string | null
  • source_type string · Herkunft: manual, sales_invoice, invoice_payment, incoming_document, bank, cash, …
  • source_id
  • reverses_entry_id
  • reversed_by_id
  • lines object[]
    • line_no integer
    • account string
    • debit Money
    • credit Money
    • vat_code string | null
    • vat_role
    • vat_rate string | null · Steuersatz in Prozent, z. B. "19"
    • vat_base · Bei Steuerzeilen: Bemessungsgrundlage
    • party_kind
    • party_id string | null
    • open_item_id · Rechnung bzw. Eingangsbeleg des offenen Postens
    • cost_center_id
    • text string | null
  • created_at string (date-time)
GET/v1/ledger-schemeBuchungsverfahren

Kontenrahmen, EÜR oder doppelte Buchführung, Soll- oder Ist-Versteuerung laut Steuerprofil am Tag.

Recht: ledger:read

Parameter:
  • date in der Adresse, string (date)
Antwort
  • date string (date)
  • chart skr03 | skr04
  • bookkeeping cash_basis | double_entry
  • vat_basis accrual | cash
  • small_business boolean
  • fiscal_year_start_month integer

Kasse

GET/v1/cash-registersKassen

Alle Kassen mit Bestand, auch stillgelegte.

Recht: ledger:read

Antwort
  • data CashRegister[]
  • next_cursor string | null
GET/v1/cash-registers/{id}Kasse lesen

Recht: ledger:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • name string
  • account string | null · Eigenes Kassenkonto; null = Standard-Kasse des Kontenrahmens
  • cost_center_id
  • opening_date string (date)
  • opening_balance Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • balance Money · Bestand laut Kassenbuch
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • last_entry_date
  • last_report_date
  • entries integer
  • active boolean
  • created_at string (date-time)
GET/v1/cash-registers/{id}/entriesKassenbuch

Kassenbuchungen der Kasse, neueste zuerst.

Recht: ledger:read

Parameter:
  • id im Pfad, string, Pflicht
  • limit in der Adresse, integer
  • cursor in der Adresse, string
  • date_from in der Adresse, string (date)
  • date_to in der Adresse, string (date)
Antwort
  • data CashEntry[]
  • next_cursor string | null
POST/v1/cash-registers/{id}/entriesKassenbuchung erfassen

Einnahme, Ausgabe, Einlage oder Entnahme. Zahlfuchs bucht sie im selben Schritt im Journal. Der Bestand darf nie negativ werden. Gebuchtes lässt sich nur stornieren.

Recht: ledger:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • kind receipt | expense | deposit_bank | deposit_private | withdrawal_bank | withdrawal_private · receipt = Einnahme, expense = Ausgabe, deposit_bank/deposit_private = Einlage, withdrawal_bank/withdrawal_private = Entnahme
  • date string (date)
  • amount string · Betrag in Cent, positiv; die Richtung ergibt sich aus kind
  • account · Gegenkonto bei Einnahme und Ausgabe; bei Bank und Privat vorgegeben
  • vat_code
  • cost_center_id
  • description string
  • document_ref
Antwort
  • id string (uuid)
  • register_id string (uuid)
  • number integer · Laufende Nummer je Kasse, lückenlos
  • entry_date string (date)
  • kind opening | revenue | receipt | expense | deposit_bank | deposit_private | withdrawal_bank | withdrawal_private | difference | invoice_payment | incoming_payment
  • amount Money · Einnahme/Einlage positiv, Ausgabe/Entnahme negativ
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • balance_after Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • account string | null
  • vat_code string | null
  • cost_center_id
  • description string
  • document_ref string | null
  • reverses_entry_id
  • reversed_by_id
  • reason string | null · Begründung bei Storno und Kassendifferenz
  • report_id · Tageskassenbericht, aus dem die Zeile stammt
  • invoice_id
  • incoming_document_id
  • journal_entry_id
  • created_at string (date-time)
GET/v1/cash-entries/{id}Kassenbuchung lesen

Recht: ledger:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • register_id string (uuid)
  • number integer · Laufende Nummer je Kasse, lückenlos
  • entry_date string (date)
  • kind opening | revenue | receipt | expense | deposit_bank | deposit_private | withdrawal_bank | withdrawal_private | difference | invoice_payment | incoming_payment
  • amount Money · Einnahme/Einlage positiv, Ausgabe/Entnahme negativ
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • balance_after Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • account string | null
  • vat_code string | null
  • cost_center_id
  • description string
  • document_ref string | null
  • reverses_entry_id
  • reversed_by_id
  • reason string | null · Begründung bei Storno und Kassendifferenz
  • report_id · Tageskassenbericht, aus dem die Zeile stammt
  • invoice_id
  • incoming_document_id
  • journal_entry_id
  • created_at string (date-time)
POST/v1/cash-entries/{id}/reverseKassenbuchung stornieren

Neue Storno-Zeile mit Verweis und Begründung, gebucht auch im Journal. Zeilen aus Tageskassenberichten und Zahlungen werden dort korrigiert.

Recht: ledger:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • reason string · Pflicht: warum storniert wird
  • date string (date) · Datum des Stornos; Standard heute
Antwort
  • id string (uuid)
  • register_id string (uuid)
  • number integer · Laufende Nummer je Kasse, lückenlos
  • entry_date string (date)
  • kind opening | revenue | receipt | expense | deposit_bank | deposit_private | withdrawal_bank | withdrawal_private | difference | invoice_payment | incoming_payment
  • amount Money · Einnahme/Einlage positiv, Ausgabe/Entnahme negativ
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • balance_after Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • account string | null
  • vat_code string | null
  • cost_center_id
  • description string
  • document_ref string | null
  • reverses_entry_id
  • reversed_by_id
  • reason string | null · Begründung bei Storno und Kassendifferenz
  • report_id · Tageskassenbericht, aus dem die Zeile stammt
  • invoice_id
  • incoming_document_id
  • journal_entry_id
  • created_at string (date-time)

Kasse mit TSE

GET/v1/pos/registersKassen mit TSE

Alle Kassen mit TSE, auch außer Betrieb genommene.

Recht: pos:read

Antwort
  • data PosRegister[]
  • next_cursor string | null
GET/v1/pos/registers/{id}Kasse mit TSE lesen

Recht: pos:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • cash_register_id string (uuid) · Kasse im Kassenbuch (GET /cash-registers/{id})
  • cash_register_name string
  • serial_number string · Seriennummer der Kasse (Kassen-ID)
  • status active | decommissioned
  • location object
    • name string
    • street string
    • zip string
    • city string
  • tse object
    • provider string
    • certified boolean · false = Test-TSE, nicht für den Echtbetrieb
    • serial_number string
    • public_key string
    • certificate string | null
    • signature_algorithm string
    • time_format string
    • certification_id string | null
  • software_name string
  • software_version string
  • commissioned_at string (date-time)
  • decommissioned_at
  • decommission_reason string | null
  • reported_commission_at · Mitteilung an das Finanzamt (§ 146a Abs. 4 AO) als erledigt markiert
  • reported_decommission_at
  • outage_since · Offener TSE-Ausfall seit, sonst null
GET/v1/pos/registers/{id}/transactionsKassenvorgänge

Vorgänge der Kasse mit Positionen, Zahlungen und TSE-Daten, neueste zuerst.

Recht: pos:read

Parameter:
  • id im Pfad, string, Pflicht
  • limit in der Adresse, integer
  • cursor in der Adresse, string
  • date_from in der Adresse, string (date) · Belegdatum ab (einschließlich)
  • date_to in der Adresse, string (date) · Belegdatum bis (einschließlich)
  • status in der Adresse, open | finished
Antwort
  • data PosTransaction[]
  • next_cursor string | null
GET/v1/pos/transactions/{id}Kassenvorgang lesen

Mit Positionen, Zahlungen, TSE-Signatur, Inhalt des QR-Codes und Link auf den digitalen Beleg.

Recht: pos:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • register_id string (uuid)
  • number integer · Vorgangsnummer je Kasse, lückenlos
  • status open | finished
  • kind receipt | cancellation | abort | training | transfer · receipt = Beleg, cancellation = Storno, abort = Abbruch, training = Training, transfer = Einlage/Entnahme
  • started_at string (date-time)
  • finished_at
  • receipt_date
  • operator_name string
  • customer_id
  • customer_name string | null
  • cancels_transaction_id
  • cancelled_by_id
  • total · Summe brutto; null bei offenem Vorgang
  • note string | null
  • tse object
    • transaction_id string
    • transaction_number
    • signature_counter
    • start
    • end
    • signature string | null
    • process_type string | null
    • process_data string | null
    • failed boolean · TSE ausgefallen: Beleg ohne Signatur
    • error string | null
  • qr_payload string | null · Inhalt des QR-Codes nach DSFinV-K; null bei TSE-Ausfall
  • receipt_url string | null · Digitaler Beleg zum Weitergeben (ohne Anmeldung)
  • journal_entry_id
  • lines PosLine[]
  • payments PosPayment[]
  • issued_vouchers object[]
    • id string (uuid)
    • code string
    • amount Money
POST/v1/pos/registers/{id}/salesVerkauf kassieren

Beginnt einen Vorgang an der TSE und schließt ihn mit Positionen und Zahlungen ab (Signatur). Zahlfuchs bucht im selben Schritt Journal, Kassenbuch (Bar) und Zahlungen auf Rechnungen. Nicht umkehrbar: Korrektur nur per Storno. Bediener ist der Inhaber des Schlüssels. Scheitert der Abschluss an den Eingaben, wird der begonnene Vorgang als Abbruch signiert. Bitte mit Idempotency-Key senden, damit ein Wiederholen nicht doppelt kassiert.

Recht: pos:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • lines PosSaleLineInput[]
  • payments PosSalePaymentInput[]
  • customer_id
  • customer_name
  • note
Antwort
  • id string (uuid)
  • register_id string (uuid)
  • number integer · Vorgangsnummer je Kasse, lückenlos
  • status open | finished
  • kind receipt | cancellation | abort | training | transfer · receipt = Beleg, cancellation = Storno, abort = Abbruch, training = Training, transfer = Einlage/Entnahme
  • started_at string (date-time)
  • finished_at
  • receipt_date
  • operator_name string
  • customer_id
  • customer_name string | null
  • cancels_transaction_id
  • cancelled_by_id
  • total · Summe brutto; null bei offenem Vorgang
  • note string | null
  • tse object
    • transaction_id string
    • transaction_number
    • signature_counter
    • start
    • end
    • signature string | null
    • process_type string | null
    • process_data string | null
    • failed boolean · TSE ausgefallen: Beleg ohne Signatur
    • error string | null
  • qr_payload string | null · Inhalt des QR-Codes nach DSFinV-K; null bei TSE-Ausfall
  • receipt_url string | null · Digitaler Beleg zum Weitergeben (ohne Anmeldung)
  • journal_entry_id
  • lines PosLine[]
  • payments PosPayment[]
  • issued_vouchers object[]
    • id string (uuid)
    • code string
    • amount Money
POST/v1/pos/transactions/{id}/cancelKassenbeleg stornieren

Neuer Vorgang (Storno) mit umgekehrten Positionen und Zahlungen, signiert von der TSE, mit Gegenbuchung im Journal und Kassenbuch. Der ursprüngliche Beleg bleibt unverändert. Ausgegebene Gutscheine müssen unbenutzt sein.

Recht: pos:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • reason string · Pflicht: warum storniert wird
Antwort
  • id string (uuid)
  • register_id string (uuid)
  • number integer · Vorgangsnummer je Kasse, lückenlos
  • status open | finished
  • kind receipt | cancellation | abort | training | transfer · receipt = Beleg, cancellation = Storno, abort = Abbruch, training = Training, transfer = Einlage/Entnahme
  • started_at string (date-time)
  • finished_at
  • receipt_date
  • operator_name string
  • customer_id
  • customer_name string | null
  • cancels_transaction_id
  • cancelled_by_id
  • total · Summe brutto; null bei offenem Vorgang
  • note string | null
  • tse object
    • transaction_id string
    • transaction_number
    • signature_counter
    • start
    • end
    • signature string | null
    • process_type string | null
    • process_data string | null
    • failed boolean · TSE ausgefallen: Beleg ohne Signatur
    • error string | null
  • qr_payload string | null · Inhalt des QR-Codes nach DSFinV-K; null bei TSE-Ausfall
  • receipt_url string | null · Digitaler Beleg zum Weitergeben (ohne Anmeldung)
  • journal_entry_id
  • lines PosLine[]
  • payments PosPayment[]
  • issued_vouchers object[]
    • id string (uuid)
    • code string
    • amount Money
GET/v1/pos/registers/{id}/closingsKassenabschlüsse

Tagesabschlüsse (Z-Bons) der Kasse, neueste zuerst.

Recht: pos:read

Parameter:
  • id im Pfad, string, Pflicht
  • limit in der Adresse, integer
  • cursor in der Adresse, string
Antwort
  • data PosClosing[]
  • next_cursor string | null
GET/v1/pos/closings/{id}Kassenabschluss lesen

Recht: pos:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • register_id string (uuid)
  • number integer
  • date string (date)
  • first_transaction_number
  • last_transaction_number
  • totals PosClosingTotals
    • total Money
    • by_vat object[]
    • by_payment object[]
    • by_business_case object[]
    • transactions integer
    • cancellations integer
    • aborted integer
    • training integer
    • tse_failures integer
  • expected_cash Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • counted Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • difference Money · Gezählt minus Soll
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • count_protocol · Zählprotokoll: Nennwert in Cent → Stück
  • difference_reason string | null
  • closed_at string (date-time)
GET/v1/pos/registers/{id}/closing-previewKassenabschluss vorab

Summen seit dem letzten Abschluss und Soll-Bestand laut Kassenbuch (X-Bon). Ändert nichts.

Recht: pos:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • register_id string (uuid)
  • date string (date)
  • first_transaction_number
  • last_transaction_number
  • open_transactions integer · Offene Vorgänge; vor dem Abschluss beenden
  • totals PosClosingTotals
    • total Money
    • by_vat object[]
    • by_payment object[]
    • by_business_case object[]
    • transactions integer
    • cancellations integer
    • aborted integer
    • training integer
    • tse_failures integer
  • expected_cash Money · Soll-Bestand laut Kassenbuch
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
GET/v1/pos/ordersKassenaufträge

Aufträge mit Anzahlungen an der Kasse (ohne Rechnung), neueste zuerst.

Recht: pos:read

Parameter:
  • limit in der Adresse, integer
  • cursor in der Adresse, string
  • status in der Adresse, open | completed | cancelled
Antwort
  • data PosOrder[]
  • next_cursor string | null
GET/v1/pos/vouchers/{code}Gutschein prüfen

Restwert eines Mehrzweckgutscheins; Bindestriche und Groß-/Kleinschreibung im Code sind egal.

Recht: pos:read

Parameter:
  • code im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • code string
  • amount Money · Ausgegebener Wert
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • balance Money · Restwert
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • valid boolean · false, wenn der Verkauf des Gutscheins storniert ist
  • issued_at string (date-time)
  • issued_transaction_id string (uuid)

Umsatzsteuer

GET/v1/vat-returnsVoranmeldungen eines Jahres

Zeiträume der Umsatzsteuer-Voranmeldung laut Steuerprofil mit Frist, Status und berechneter Zahllast (Kz 83). state: open, draft, submitted, overdue oder future. Zahlfuchs übermittelt nicht an ELSTER.

Recht: ledger:read

Parameter:
  • year in der Adresse, integer · Standard: aktuelles Jahr
Antwort
  • data VatReturnOverview[]
  • next_cursor string | null
GET/v1/vat-returns/{key}Werte einer Voranmeldung

Kennzahlen aus den aktuellen Buchungen (computed) und alle gespeicherten Versionen. key ist der Zeitraum, z. B. 2026-11 oder 2026-Q4.

Recht: ledger:read

Parameter:
  • key im Pfad, string, Pflicht
Antwort
  • period VatPeriod
    • key string · 2026-11 (Monat) oder 2026-Q4 (Quartal)
    • label string
    • from string · Buchungsmonat, z. B. 2026-11
    • to string · Buchungsmonat, z. B. 2026-11
    • frequency monthly | quarterly
    • permanent_extension boolean · Dauerfristverlängerung
    • due_date string (date)
  • computed object
    • values object · Kennzahl → Betrag in Cent als Ganzzahl-String, z. B. {"81": "1000000", "83": "190000"}. Bemessungsgrundlagen in vollen Euro (Cent 00).
    • booked_tax Money · Steuer laut Buchungen (Saldo der Steuerkonten)
    • rounding_difference Money
    • special_prepayment
    • warnings string[]
  • form object[]
    • line integer
    • section string
    • label string
    • kz string | null
    • tax_kz string | null · Schlüssel des Steuerbetrags in values
  • versions StoredVatReturn[] · Neueste Version zuerst

Auswertungen

GET/v1/reports/euerEinnahmenüberschussrechnung

Anlage EÜR eines Wirtschaftsjahres aus den Buchungen, mit Kennzahlen und Konten je Zeile. applicable = false, wenn die Firma im ganzen Jahr doppelt bucht (dann GuV).

Recht: ledger:read

Parameter:
  • year in der Adresse, integer
Antwort
  • fiscal_year integer
  • from string (date)
  • to string (date)
  • form_year integer
  • form_exact boolean · false: Vordruck des Jahres noch nicht hinterlegt
  • applicable boolean
  • small_business all | partly | none
  • lines object[]
    • key string
    • section string
    • kind string
    • label string
    • kz string | null · Kennzahl im Formular Anlage EÜR
    • line_number
    • amount Money · Betrag; bei beschränkt abziehbaren Ausgaben der abziehbare Teil
    • non_deductible Money
    • accounts object[]
  • totals object
    • income Money
    • expenses Money
    • profit Money
  • hints object[]
    • level string
    • code string
    • message string
GET/v1/reports/open-itemsOffene Posten

Forderungen (party = customer) oder Verbindlichkeiten (party = supplier) laut Buchhaltung zum Stichtag, mit Fälligkeit und Altersstruktur.

Recht: ledger:read

Parameter:
  • party in der Adresse, customer | supplier · Standard customer
  • until in der Adresse, string (date) · Stichtag; Standard heute
Antwort
  • party customer | supplier
  • until string (date)
  • total Money
    • amount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €
    • currency string
  • buckets object · not_due, 1_30, 31_60, 61_90, over_90, no_due_date
  • items object[]
    • open_item_id string (uuid)
    • source sales_invoice | incoming_document
    • party_id string | null
    • party_name string
    • document_ref string | null
    • date string (date)
    • due_date
    • days_overdue
    • bucket string
    • amount Money
GET/v1/reports/cost-centersKostenstellen

Erlöse, Kosten und Ergebnis je Kostenstelle im Zeitraum, dazu der Teil ohne Kostenstelle.

Recht: ledger:read

Parameter:
  • year in der Adresse, integer · Wirtschaftsjahr (Jahr des Beginns); Standard: aktuelles
  • period_from in der Adresse, string · Buchungsmonat, z. B. 2026-11
  • period_to in der Adresse, string · Buchungsmonat, z. B. 2026-11
Antwort
  • fiscal_year integer
  • period_from string · Buchungsmonat, z. B. 2026-11
  • period_to string · Buchungsmonat, z. B. 2026-11
  • cost_centers object[]
    • id string (uuid)
    • code string
    • name string
    • active boolean
    • revenue Money
    • costs Money
    • result Money
    • accounts object[]
  • unassigned object
    • revenue Money
    • costs Money
    • result Money
GET/v1/reports/trial-balanceSummen- und Saldenliste

Je Konto Saldovortrag, Verkehrszahlen des Zeitraums und des Jahres, Endsaldo. Antwort als Tabelle wie in der App.

Recht: ledger:read

Parameter:
  • year in der Adresse, integer · Wirtschaftsjahr (Jahr des Beginns); Standard: aktuelles
  • period_from in der Adresse, string · Buchungsmonat, z. B. 2026-11
  • period_to in der Adresse, string · Buchungsmonat, z. B. 2026-11
Antwort
  • fiscal_year integer
  • period_from string · Buchungsmonat, z. B. 2026-11
  • period_to string · Buchungsmonat, z. B. 2026-11
  • table ReportTable
    • title string
    • subtitle string
    • columns object[]
    • rows object[]
    • notes string[]
  • balanced boolean | null · Soll = Haben bzw. Aktiva = Passiva; sonst null
GET/v1/reports/bwaBWA

Betriebswirtschaftliche Auswertung: Zeitraum und kumuliert, mit Vorjahr. Antwort als Tabelle wie in der App.

Recht: ledger:read

Parameter:
  • year in der Adresse, integer · Wirtschaftsjahr (Jahr des Beginns); Standard: aktuelles
  • period_from in der Adresse, string · Buchungsmonat, z. B. 2026-11
  • period_to in der Adresse, string · Buchungsmonat, z. B. 2026-11
Antwort
  • fiscal_year integer
  • period_from string · Buchungsmonat, z. B. 2026-11
  • period_to string · Buchungsmonat, z. B. 2026-11
  • table ReportTable
    • title string
    • subtitle string
    • columns object[]
    • rows object[]
    • notes string[]
  • balanced boolean | null · Soll = Haben bzw. Aktiva = Passiva; sonst null
GET/v1/reports/income-statementVorläufige GuV

Gewinn- und Verlustrechnung nach § 275 HGB bis period_to, mit Vorjahr. Nur doppelte Buchführung. Antwort als Tabelle wie in der App.

Recht: ledger:read

Parameter:
  • year in der Adresse, integer · Wirtschaftsjahr (Jahr des Beginns); Standard: aktuelles
  • period_from in der Adresse, string · Buchungsmonat, z. B. 2026-11
  • period_to in der Adresse, string · Buchungsmonat, z. B. 2026-11
Antwort
  • fiscal_year integer
  • period_from string · Buchungsmonat, z. B. 2026-11
  • period_to string · Buchungsmonat, z. B. 2026-11
  • table ReportTable
    • title string
    • subtitle string
    • columns object[]
    • rows object[]
    • notes string[]
  • balanced boolean | null · Soll = Haben bzw. Aktiva = Passiva; sonst null
GET/v1/reports/balance-sheetVorläufige Bilanz

Bilanz nach § 266 HGB zum Ende von period_to. Nur doppelte Buchführung. Antwort als Tabelle wie in der App.

Recht: ledger:read

Parameter:
  • year in der Adresse, integer · Wirtschaftsjahr (Jahr des Beginns); Standard: aktuelles
  • period_from in der Adresse, string · Buchungsmonat, z. B. 2026-11
  • period_to in der Adresse, string · Buchungsmonat, z. B. 2026-11
Antwort
  • fiscal_year integer
  • period_from string · Buchungsmonat, z. B. 2026-11
  • period_to string · Buchungsmonat, z. B. 2026-11
  • table ReportTable
    • title string
    • subtitle string
    • columns object[]
    • rows object[]
    • notes string[]
  • balanced boolean | null · Soll = Haben bzw. Aktiva = Passiva; sonst null

Exporte

GET/v1/exportsDatenexporte

Exporte der Firma (PDF-Paket, GDPdU), neueste zuerst.

Recht: exports:read

Antwort
  • data DataExport[]
  • next_cursor string | null
POST/v1/exportsDatenexport anstoßen

Legt einen Export an (status queued). Zahlfuchs baut das ZIP im Hintergrund; danach status done und Download unter /exports/{id}/file für 30 Tage. Höchstens drei Exporte laufen gleichzeitig. Nur festgeschriebene Daten.

Recht: exports:write

Eingabe (JSON)
  • from string (date) · Belegdatum ab (einschließlich)
  • to string (date) · Belegdatum bis (einschließlich); höchstens elf Kalenderjahre
  • contents sales_documents | incoming_documents | payments | dunning | audit_log | gdpdu[] · sales_documents (Rechnungen als ZUGFeRD-PDF und XRechnung), incoming_documents, payments, dunning, audit_log, gdpdu (Datenträgerüberlassung)
  • include_offers boolean · Angebote und Auftragsbestätigungen zusätzlich (nur mit sales_documents)
Antwort
  • id string (uuid)
  • from string (date)
  • to string (date)
  • contents sales_documents | incoming_documents | payments | dunning | audit_log | gdpdu[]
  • include_offers boolean
  • status queued | running | done | failed
  • size · Größe des ZIP in Bytes
  • file_count
  • file_name string
  • error string | null
  • downloadable boolean · Fertig und noch nicht nach 30 Tagen gelöscht
  • expires_at
  • created_at string (date-time)
  • finished_at
GET/v1/exports/{id}Export lesen

Zum Abfragen des Status nach dem Anstoßen.

Recht: exports:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • from string (date)
  • to string (date)
  • contents sales_documents | incoming_documents | payments | dunning | audit_log | gdpdu[]
  • include_offers boolean
  • status queued | running | done | failed
  • size · Größe des ZIP in Bytes
  • file_count
  • file_name string
  • error string | null
  • downloadable boolean · Fertig und noch nicht nach 30 Tagen gelöscht
  • expires_at
  • created_at string (date-time)
  • finished_at
GET/v1/exports/{id}/fileExport herunterladen

ZIP mit Ordnern, Übersichten (CSV) und LIESMICH.txt. 409, solange der Export nicht fertig ist; 410 nach 30 Tagen.

Recht: exports:read

Parameter:
  • id im Pfad, string, Pflicht

Antwort: Datei application/zip

GET/v1/datev-settingsDATEV-Einstellungen

Berater- und Mandantennummer für den DATEV-Export. Ändern nur in der App.

Recht: exports:read

Antwort
GET/v1/datev-exportsDATEV-Exporte

Bisherige DATEV-Exporte, neueste zuerst.

Recht: exports:read

Antwort
  • data DatevExport[]
  • next_cursor string | null
POST/v1/datev-exportsDATEV-Export erstellen

Buchungsstapel im DATEV-Format (EXTF) für die Buchungsmonate period_from bis period_to, als ZIP mit Belegen, wenn in der App eingestellt. Offene Vorgänge werden vorher gebucht. Download unter /datev-exports/{id}/file.

Recht: exports:write

Eingabe (JSON)
  • period_from string · Buchungsmonat, z. B. 2026-11
  • period_to string · Buchungsmonat, z. B. 2026-11
Antwort
  • id string (uuid)
  • period_from string · Buchungsmonat, z. B. 2026-11
  • period_to string · Buchungsmonat, z. B. 2026-11
  • advisor_number integer
  • client_number integer
  • locked boolean · Mit Festschreibungskennzeichen exportiert
  • all_closed boolean · Alle Monate des Zeitraums waren festgeschrieben
  • entry_count integer
  • row_count integer
  • document_count integer
  • file_name string
  • sha256 string
  • size integer
  • warnings string[]
  • created_at string (date-time)
GET/v1/datev-exports/previewDATEV-Export prüfen

Wie viele Buchungen der Zeitraum hat und welche Monate noch nicht festgeschrieben sind.

Recht: exports:read

Antwort
  • period_from string · Buchungsmonat, z. B. 2026-11
  • period_to string · Buchungsmonat, z. B. 2026-11
  • entry_count integer
  • open_periods string[]
  • settings_missing boolean
GET/v1/datev-exports/{id}DATEV-Export lesen

Recht: exports:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • period_from string · Buchungsmonat, z. B. 2026-11
  • period_to string · Buchungsmonat, z. B. 2026-11
  • advisor_number integer
  • client_number integer
  • locked boolean · Mit Festschreibungskennzeichen exportiert
  • all_closed boolean · Alle Monate des Zeitraums waren festgeschrieben
  • entry_count integer
  • row_count integer
  • document_count integer
  • file_name string
  • sha256 string
  • size integer
  • warnings string[]
  • created_at string (date-time)
GET/v1/datev-exports/{id}/fileDATEV-Export herunterladen

Recht: exports:read

Parameter:
  • id im Pfad, string, Pflicht

Antwort: Datei application/zip

Rückfragen

GET/v1/comment-threadsRückfragen

Rückfragen der Steuerkanzlei an Belegen und Buchungen, zuletzt aktive zuerst (höchstens 500).

Recht: comments:read

Parameter:
  • status in der Adresse, open | resolved | all · Standard open
Antwort
  • data CommentThread[]
  • next_cursor string | null
GET/v1/comment-threads/{id}Rückfrage lesen

Recht: comments:read

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • target object
    • type sales_document | incoming_document | payment | dunning_notice | journal_entry | vat_return | cash_entry | cash_report · sales_document, incoming_document, payment, dunning_notice, journal_entry, cash_entry, cash_report oder vat_return
    • id string (uuid)
  • resolved boolean
  • resolved_at
  • waiting_for advisor | company · Wer als Nächstes antworten sollte (Gegenseite des letzten Beitrags)
  • last_activity_at string (date-time)
  • posts object[]
    • id string (uuid)
    • author_name string
    • side advisor | company · advisor = Steuerkanzlei, company = Firma
    • body string
    • created_at string (date-time)
POST/v1/comment-threads/{id}/repliesAntworten

Antwort im Namen des Inhabers, der den Schlüssel angelegt hat; im Audit-Log steht der Schlüssel. Eine erledigte Rückfrage wird dadurch wieder offen. Beiträge lassen sich nicht ändern.

Recht: comments:write

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • body string
Antwort
  • id string (uuid)
  • target object
    • type sales_document | incoming_document | payment | dunning_notice | journal_entry | vat_return | cash_entry | cash_report · sales_document, incoming_document, payment, dunning_notice, journal_entry, cash_entry, cash_report oder vat_return
    • id string (uuid)
  • resolved boolean
  • resolved_at
  • waiting_for advisor | company · Wer als Nächstes antworten sollte (Gegenseite des letzten Beitrags)
  • last_activity_at string (date-time)
  • posts object[]
    • id string (uuid)
    • author_name string
    • side advisor | company · advisor = Steuerkanzlei, company = Firma
    • body string
    • created_at string (date-time)
POST/v1/comment-threads/{id}/resolveAls erledigt markieren

Recht: comments:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • target object
    • type sales_document | incoming_document | payment | dunning_notice | journal_entry | vat_return | cash_entry | cash_report · sales_document, incoming_document, payment, dunning_notice, journal_entry, cash_entry, cash_report oder vat_return
    • id string (uuid)
  • resolved boolean
  • resolved_at
  • waiting_for advisor | company · Wer als Nächstes antworten sollte (Gegenseite des letzten Beitrags)
  • last_activity_at string (date-time)
  • posts object[]
    • id string (uuid)
    • author_name string
    • side advisor | company · advisor = Steuerkanzlei, company = Firma
    • body string
    • created_at string (date-time)
POST/v1/comment-threads/{id}/reopenWieder öffnen

Recht: comments:write

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • target object
    • type sales_document | incoming_document | payment | dunning_notice | journal_entry | vat_return | cash_entry | cash_report · sales_document, incoming_document, payment, dunning_notice, journal_entry, cash_entry, cash_report oder vat_return
    • id string (uuid)
  • resolved boolean
  • resolved_at
  • waiting_for advisor | company · Wer als Nächstes antworten sollte (Gegenseite des letzten Beitrags)
  • last_activity_at string (date-time)
  • posts object[]
    • id string (uuid)
    • author_name string
    • side advisor | company · advisor = Steuerkanzlei, company = Firma
    • body string
    • created_at string (date-time)

Webhooks

GET/v1/webhook-event-typesEreignisarten

Recht: webhooks:manage

Antwort
  • data object[]
    • type string
    • description string
  • next_cursor string | null
GET/v1/webhooksWebhooks

Alle Webhooks der Firma (höchstens 20), älteste zuerst. Geheimnisse werden nie gelistet.

Recht: webhooks:manage

Antwort
  • data Webhook[]
  • next_cursor string | null
POST/v1/webhooksWebhook anlegen

Liefert das Signatur-Geheimnis genau einmal zurück. Ereignisse ab jetzt werden zugestellt, frühere nicht.

Recht: webhooks:manage

Eingabe (JSON)
  • url string · HTTPS-Adresse, öffentlich erreichbar
  • description
  • events invoice.finalized | invoice.sent | invoice.paid | invoice.overdue | invoice.cancelled | offer.accepted | offer.rejected | payment.recorded | payment.reversed | incoming_document.received | incoming_document.checked | dunning_notice.created | export.ready | comment.created | pos.transaction.finished | pos.transaction.cancelled | pos.closing.closed | pos.register.commissioned | pos.register.decommissioned[]
Antwort
  • id string (uuid)
  • url string
  • description string | null
  • events invoice.finalized | invoice.sent | invoice.paid | invoice.overdue | invoice.cancelled | offer.accepted | offer.rejected | payment.recorded | payment.reversed | incoming_document.received | incoming_document.checked | dunning_notice.created | export.ready | comment.created | pos.transaction.finished | pos.transaction.cancelled | pos.closing.closed | pos.register.commissioned | pos.register.decommissioned[]
  • active boolean
  • status active | disabled | paused · paused = nach 3 Tagen ohne erfolgreiche Zustellung angehalten; mit active=true wieder einschalten
  • paused_at
  • pause_reason string | null
  • failing_since
  • last_success_at
  • previous_secret_expires_at · Bis dahin wird nach einem Wechsel zusätzlich mit dem alten Geheimnis signiert
  • created_at string (date-time)
  • updated_at string (date-time)
  • secret string · Signatur-Geheimnis (whsec_…). Wird nur bei Anlegen und Wechsel einmal angezeigt.
GET/v1/webhooks/{id}Webhook lesen

Recht: webhooks:manage

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • url string
  • description string | null
  • events invoice.finalized | invoice.sent | invoice.paid | invoice.overdue | invoice.cancelled | offer.accepted | offer.rejected | payment.recorded | payment.reversed | incoming_document.received | incoming_document.checked | dunning_notice.created | export.ready | comment.created | pos.transaction.finished | pos.transaction.cancelled | pos.closing.closed | pos.register.commissioned | pos.register.decommissioned[]
  • active boolean
  • status active | disabled | paused · paused = nach 3 Tagen ohne erfolgreiche Zustellung angehalten; mit active=true wieder einschalten
  • paused_at
  • pause_reason string | null
  • failing_since
  • last_success_at
  • previous_secret_expires_at · Bis dahin wird nach einem Wechsel zusätzlich mit dem alten Geheimnis signiert
  • created_at string (date-time)
  • updated_at string (date-time)
PATCH/v1/webhooks/{id}Webhook ändern

Offene Zustellungen entfallen, wenn der Webhook ausgeschaltet oder das Ereignis abbestellt wird. active=true hebt auch eine Pause auf.

Recht: webhooks:manage

Parameter:
  • id im Pfad, string, Pflicht
Eingabe (JSON)
  • url string
  • description
  • events invoice.finalized | invoice.sent | invoice.paid | invoice.overdue | invoice.cancelled | offer.accepted | offer.rejected | payment.recorded | payment.reversed | incoming_document.received | incoming_document.checked | dunning_notice.created | export.ready | comment.created | pos.transaction.finished | pos.transaction.cancelled | pos.closing.closed | pos.register.commissioned | pos.register.decommissioned[]
  • active boolean · false = ausschalten; true = einschalten und Pause aufheben
Antwort
  • id string (uuid)
  • url string
  • description string | null
  • events invoice.finalized | invoice.sent | invoice.paid | invoice.overdue | invoice.cancelled | offer.accepted | offer.rejected | payment.recorded | payment.reversed | incoming_document.received | incoming_document.checked | dunning_notice.created | export.ready | comment.created | pos.transaction.finished | pos.transaction.cancelled | pos.closing.closed | pos.register.commissioned | pos.register.decommissioned[]
  • active boolean
  • status active | disabled | paused · paused = nach 3 Tagen ohne erfolgreiche Zustellung angehalten; mit active=true wieder einschalten
  • paused_at
  • pause_reason string | null
  • failing_since
  • last_success_at
  • previous_secret_expires_at · Bis dahin wird nach einem Wechsel zusätzlich mit dem alten Geheimnis signiert
  • created_at string (date-time)
  • updated_at string (date-time)
DELETE/v1/webhooks/{id}Webhook löschen

Offene Zustellungen entfallen. Das Protokoll bleibt bis zum Ablauf der 30 Tage im Audit-Log.

Recht: webhooks:manage

Parameter:
  • id im Pfad, string, Pflicht

Antwort: 204 ohne Inhalt

POST/v1/webhooks/{id}/rotate-secretGeheimnis wechseln

Neues Geheimnis, einmal angezeigt. Das alte gilt noch 24 Stunden: so lange enthält webhook-signature beide Signaturen.

Recht: webhooks:manage

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • url string
  • description string | null
  • events invoice.finalized | invoice.sent | invoice.paid | invoice.overdue | invoice.cancelled | offer.accepted | offer.rejected | payment.recorded | payment.reversed | incoming_document.received | incoming_document.checked | dunning_notice.created | export.ready | comment.created | pos.transaction.finished | pos.transaction.cancelled | pos.closing.closed | pos.register.commissioned | pos.register.decommissioned[]
  • active boolean
  • status active | disabled | paused · paused = nach 3 Tagen ohne erfolgreiche Zustellung angehalten; mit active=true wieder einschalten
  • paused_at
  • pause_reason string | null
  • failing_since
  • last_success_at
  • previous_secret_expires_at · Bis dahin wird nach einem Wechsel zusätzlich mit dem alten Geheimnis signiert
  • created_at string (date-time)
  • updated_at string (date-time)
  • secret string · Signatur-Geheimnis (whsec_…). Wird nur bei Anlegen und Wechsel einmal angezeigt.
POST/v1/webhooks/{id}/testTestereignis senden

Sendet sofort ein Ereignis webhook.test (auch an ausgeschaltete Webhooks) und liefert das Ergebnis. Keine Wiederholung.

Recht: webhooks:manage

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • webhook_id string (uuid)
  • event_id string (uuid) · Gleich dem Header webhook-id; bleibt bei Wiederholungen gleich
  • event_type string
  • resource_type string
  • resource_id string
  • status pending | succeeded | failed
  • attempts integer
  • next_attempt_at
  • last_attempt_at
  • last_status_code
  • last_error string | null
  • last_duration_ms
  • created_at string (date-time)
GET/v1/webhooks/{id}/deliveriesZustellprotokoll

Zustellungen der letzten 30 Tage, neueste zuerst.

Recht: webhooks:manage

Parameter:
  • id im Pfad, string, Pflicht
  • limit in der Adresse, integer
  • cursor in der Adresse, string
  • status in der Adresse, pending | succeeded | failed
Antwort
  • data WebhookDelivery[]
  • next_cursor string | null
GET/v1/webhook-deliveries/{id}Zustellung lesen

Recht: webhooks:manage

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • webhook_id string (uuid)
  • event_id string (uuid) · Gleich dem Header webhook-id; bleibt bei Wiederholungen gleich
  • event_type string
  • resource_type string
  • resource_id string
  • status pending | succeeded | failed
  • attempts integer
  • next_attempt_at
  • last_attempt_at
  • last_status_code
  • last_error string | null
  • last_duration_ms
  • created_at string (date-time)
POST/v1/webhook-deliveries/{id}/retryErneut senden

Sendet die Zustellung sofort noch einmal, mit derselben webhook-id. Liefert das Ergebnis.

Recht: webhooks:manage

Parameter:
  • id im Pfad, string, Pflicht
Antwort
  • id string (uuid)
  • webhook_id string (uuid)
  • event_id string (uuid) · Gleich dem Header webhook-id; bleibt bei Wiederholungen gleich
  • event_type string
  • resource_type string
  • resource_id string
  • status pending | succeeded | failed
  • attempts integer
  • next_attempt_at
  • last_attempt_at
  • last_status_code
  • last_error string | null
  • last_duration_ms
  • created_at string (date-time)