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
curl https://api.staging.zahlfuchs.de/v1/company \ -H "Authorization: Bearer zf_live_…"
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);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.pdfAktionen 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.
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.
| Recht | Erlaubt |
|---|---|
company:read | Firmenprofil und Steuerprofile lesen |
customers:read | Kunden lesen |
customers:write | Kunden anlegen und ändern |
articles:read | Artikel lesen |
articles:write | Artikel anlegen und ändern |
sales:read | Angebote, Aufträge und Rechnungen lesen |
sales:write | Entwürfe von Angeboten, Aufträgen und Rechnungen anlegen und ändern |
sales:finalize | Belege festschreiben und stornieren (nicht umkehrbar) |
sales:send | Belege per E-Mail versenden |
payments:read | Zahlungen, offene Posten und Mahnungen lesen |
payments:write | Zahlungen erfassen und zurücknehmen |
incoming:read | Eingangsbelege lesen |
incoming:write | Eingangsbelege hochladen |
banking:read | Bankkonten und Umsätze lesen |
banking:write | Kontoauszüge importieren |
ledger:read | Konten, Buchungen, Kasse, Umsatzsteuer und Auswertungen lesen |
ledger:write | Buchungen und Kassenbuch-Einträge erfassen |
pos:read | Kasse mit TSE lesen: Kassen, Vorgänge, Abschlüsse |
pos:write | Kassenvorgänge erfassen (mit TSE-Signatur, nicht umkehrbar) |
exports:read | Exporte herunterladen |
exports:write | Exporte anstoßen (PDF-Paket, GDPdU, DATEV) |
comments:read | Rückfragen lesen |
comments:write | Auf Rückfragen antworten |
webhooks:manage | Webhooks einrichten |
Für die Steuerkanzlei gibt es beim Anlegen die Vorlage „Steuerkanzlei“: alles lesen, Exporte anstoßen und auf Rückfragen antworten.
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>.
code_verifier (43 bis 128 Zeichen) erzeugen, code_challenge = BASE64URL(SHA256(code_verifier)). Nur S256.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.?code=…&state=…&iss=https://api.staging.zahlfuchs.de oder ?error=access_denied. Der Code gilt 60 Sekunden und nur einmal.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"}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".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.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.https://api.staging.zahlfuchs.de/.well-known/oauth-authorization-server. Token, Widerruf und Metadaten gibt es auch unter der Adresse der Web-App.{"amount": "119000", "currency": "EUR"} = 1.190,00 €. Nie Kommazahlen.multipart/form-data mit der Datei im Feld file, z. B. curl -F file=@rechnung.pdf ….POST /exports antwortet mit 202 und status: queued; GET /exports/{id} zeigt, wann er done ist. DATEV-Exporte sind sofort fertig."quantity": "1.5", "discount_percent": "2.5".2026-11-08, Zeitpunkte in UTC.{"data": [...], "next_cursor": "…"}. Weiter mit ?cursor=…, Seitengröße mit ?limit= (1 bis 100, Standard 25).Idempotency-Key mitschicken. Kommt dieselbe Anfrage innerhalb von 24 Stunden wieder, gibt es die erste Antwort zurück (Header Idempotent-Replayed: true) statt eines zweiten Belegs.ETag; mit If-None-Match kommt 304, wenn sich nichts geändert hat.RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset; bei 429 nach Retry-After Sekunden erneut versuchen.X-Request-Id. Bitte bei Rückfragen an den Support angeben.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.finalized | Rechnung festgeschrieben |
invoice.sent | Rechnung per E-Mail versendet |
invoice.paid | Rechnung vollständig bezahlt |
invoice.overdue | Rechnung überfällig |
invoice.cancelled | Rechnung storniert |
offer.accepted | Angebot angenommen |
offer.rejected | Angebot abgelehnt |
payment.recorded | Zahlung erfasst |
payment.reversed | Zahlung aufgehoben |
incoming_document.received | Eingangsbeleg eingegangen |
incoming_document.checked | E-Rechnung geprüft |
dunning_notice.created | Mahnung erstellt |
export.ready | Datenexport fertig |
comment.created | Neue Rückfrage oder Antwort |
pos.transaction.finished | Kassenvorgang abgeschlossen (Verkauf an der Kasse mit TSE) |
pos.transaction.cancelled | Kassenbeleg storniert |
pos.closing.closed | Kassenabschluss erstellt |
pos.register.commissioned | Kasse mit TSE in Betrieb genommen |
pos.register.decommissioned | Kasse mit TSE außer Betrieb genommen |
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": "…" }]
}| 401 | unauthorized | Anmeldung fehlt |
| 401 | invalid_api_key | API-Schlüssel ungültig |
| 401 | invalid_token | Zugangstoken ungültig |
| 401 | token_expired | Zugangstoken abgelaufen |
| 403 | insufficient_scope | Recht fehlt |
| 404 | not_found | Nicht gefunden |
| 405 | method_not_allowed | Methode nicht erlaubt |
| 400 | invalid_json | Ungültiges JSON |
| 400 | invalid_multipart | Ungültiger Upload |
| 413 | payload_too_large | Datei zu groß |
| 415 | unsupported_media_type | Falscher Inhaltstyp |
| 422 | validation_failed | Eingaben ungültig |
| 400 | invalid_cursor | Ungültiger Cursor |
| 429 | rate_limited | Zu viele Anfragen |
| 409 | idempotency_in_progress | Anfrage läuft noch |
| 422 | idempotency_key_reused | Idempotency-Key schon verwendet |
| 409 | conflict | Konflikt |
| 410 | gone | Nicht mehr vorhanden |
| 409 | invalid_state | Im aktuellen Status nicht möglich |
| 422 | invalid_file | Datei nicht verwendbar |
| 422 | invoice_incomplete | Pflichtangaben fehlen |
| 409 | mail_not_configured | Kein Postfach eingerichtet |
| 502 | mail_delivery_failed | Versand gescheitert |
| 503 | service_unavailable | Dienst nicht erreichbar |
| 500 | internal_error | Interner Fehler |
/v1ÜbersichtVersion der API und Links zur Doku. Ohne Schlüssel erreichbar.
Recht: keins (öffentlich)
name stringversion stringdocumentation stringopenapi string/v1/companyFirmenprofil lesenName, Anschrift, Steuer- und Registerangaben, Kontakt und Bankverbindung der Firma.
Recht: company:read
legal_name string · Name der Firma laut Register oder Gewerbeanmeldungaddress objectstreet stringpostal_code stringcity stringcountry_code string · ISO 3166-1 alpha-2, z. B. DEtax_number string | nullvat_id string | null · USt-IdNr.tax_office string | nullregister objectcourt string | nullnumber string | nullseat string | nullmanaging_directors string[]contact objectemail string | nullphone string | nullwebsite string | nullbank objectiban string | nullbic string | nullname string | nullcomplete boolean · Reichen die Angaben, um Rechnungen zu schreiben?/v1/tax-profilesSteuerprofile lesenAlle gültigen Steuerprofile, ältestes zuerst. Für einen Beleg gilt das Profil, dessen valid_from am Belegdatum zuletzt begonnen hat.
Recht: company:read
data TaxProfile[]next_cursor string | null/v1/customersKunden auflistenÄlteste zuerst. Archivierte Kunden nur mit include_archived=true.
Recht: customers:read
limit in der Adresse, integercursor in der Adresse, stringsearch in der Adresse, string · Sucht in Name, Nummer und Ortinclude_archived in der Adresse, true | falsedata Customer[]next_cursor string | null/v1/customersKunden anlegenVergibt die nächste Kundennummer.
Recht: customers:write
kind business | consumername stringcontact_person street stringpostal_code stringcity stringcountry_code string · Standard DEvat_id email phone notes buyer_reference tax_number small_business booleanself_billing_agreed_on id string (uuid)number string · Kundennummer aus dem Nummernkreiskind business | consumer · Firma oder Privatpersonname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code string · ISO 3166-1 alpha-2vat_id string | nullemail string | nullphone string | nullnotes string | nullbuyer_reference string | null · Leitweg-ID oder Kundenreferenz (BT-10), Vorschlag für Rechnungentax_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 ihnarchived booleancreated_at string (date-time)updated_at string (date-time)/v1/customers/{id}Kunden lesenRecht: customers:read
id im Pfad, string, Pflichtid string (uuid)number string · Kundennummer aus dem Nummernkreiskind business | consumer · Firma oder Privatpersonname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code string · ISO 3166-1 alpha-2vat_id string | nullemail string | nullphone string | nullnotes string | nullbuyer_reference string | null · Leitweg-ID oder Kundenreferenz (BT-10), Vorschlag für Rechnungentax_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 ihnarchived booleancreated_at string (date-time)updated_at string (date-time)/v1/customers/{id}Kunden ändernNur die gesendeten Felder ändern sich; null leert ein optionales Feld.
Recht: customers:write
id im Pfad, string, Pflichtkind business | consumername stringcontact_person street stringpostal_code stringcity stringcountry_code string · Standard DEvat_id email phone notes buyer_reference tax_number small_business booleanself_billing_agreed_on id string (uuid)number string · Kundennummer aus dem Nummernkreiskind business | consumer · Firma oder Privatpersonname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code string · ISO 3166-1 alpha-2vat_id string | nullemail string | nullphone string | nullnotes string | nullbuyer_reference string | null · Leitweg-ID oder Kundenreferenz (BT-10), Vorschlag für Rechnungentax_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 ihnarchived booleancreated_at string (date-time)updated_at string (date-time)/v1/customers/{id}/archiveKunden archivierenKunden werden nie gelöscht, damit Belege ihnen zugeordnet bleiben. Archivierte Kunden lassen sich nicht in neuen Belegen verwenden.
Recht: customers:write
id im Pfad, string, Pflichtid string (uuid)number string · Kundennummer aus dem Nummernkreiskind business | consumer · Firma oder Privatpersonname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code string · ISO 3166-1 alpha-2vat_id string | nullemail string | nullphone string | nullnotes string | nullbuyer_reference string | null · Leitweg-ID oder Kundenreferenz (BT-10), Vorschlag für Rechnungentax_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 ihnarchived booleancreated_at string (date-time)updated_at string (date-time)/v1/customers/{id}/restoreKunden wiederherstellenHolt einen archivierten Kunden zurück.
Recht: customers:write
id im Pfad, string, Pflichtid string (uuid)number string · Kundennummer aus dem Nummernkreiskind business | consumer · Firma oder Privatpersonname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code string · ISO 3166-1 alpha-2vat_id string | nullemail string | nullphone string | nullnotes string | nullbuyer_reference string | null · Leitweg-ID oder Kundenreferenz (BT-10), Vorschlag für Rechnungentax_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 ihnarchived booleancreated_at string (date-time)updated_at string (date-time)/v1/articlesArtikel auflistenÄlteste zuerst. Archivierte Artikel nur mit include_archived=true.
Recht: articles:read
limit in der Adresse, integercursor in der Adresse, stringsearch in der Adresse, string · Sucht in Name und Nummerinclude_archived in der Adresse, true | falsedata Article[]next_cursor string | null/v1/articlesArtikel anlegenRecht: articles:write
number name stringdescription 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 nettoamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringservice_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 exemptbarcode · Barcode für die Kasse, eindeutig je Firmaid string (uuid)number string | null · Eigene Artikelnummer, eindeutig je Firmaname stringdescription string | nullunit_code stringunit_price Money · Einzelpreis nettoamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringservice_type stringexemption_reason string | nullbarcode string | null · Barcode (EAN/GTIN oder eigener Code) für die Kassearchived booleancreated_at string (date-time)updated_at string (date-time)/v1/articles/{id}Artikel lesenRecht: articles:read
id im Pfad, string, Pflichtid string (uuid)number string | null · Eigene Artikelnummer, eindeutig je Firmaname stringdescription string | nullunit_code stringunit_price Money · Einzelpreis nettoamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringservice_type stringexemption_reason string | nullbarcode string | null · Barcode (EAN/GTIN oder eigener Code) für die Kassearchived booleancreated_at string (date-time)updated_at string (date-time)/v1/articles/{id}Artikel ändernNur die gesendeten Felder ändern sich. Bestehende Belege behalten ihre Werte.
Recht: articles:write
id im Pfad, string, Pflichtnumber name stringdescription 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 nettoamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringservice_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 exemptbarcode · Barcode für die Kasse, eindeutig je Firmaid string (uuid)number string | null · Eigene Artikelnummer, eindeutig je Firmaname stringdescription string | nullunit_code stringunit_price Money · Einzelpreis nettoamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringservice_type stringexemption_reason string | nullbarcode string | null · Barcode (EAN/GTIN oder eigener Code) für die Kassearchived booleancreated_at string (date-time)updated_at string (date-time)/v1/articles/{id}/archiveArtikel archivierenRecht: articles:write
id im Pfad, string, Pflichtid string (uuid)number string | null · Eigene Artikelnummer, eindeutig je Firmaname stringdescription string | nullunit_code stringunit_price Money · Einzelpreis nettoamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringservice_type stringexemption_reason string | nullbarcode string | null · Barcode (EAN/GTIN oder eigener Code) für die Kassearchived booleancreated_at string (date-time)updated_at string (date-time)/v1/articles/{id}/restoreArtikel wiederherstellenRecht: articles:write
id im Pfad, string, Pflichtid string (uuid)number string | null · Eigene Artikelnummer, eindeutig je Firmaname stringdescription string | nullunit_code stringunit_price Money · Einzelpreis nettoamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringservice_type stringexemption_reason string | nullbarcode string | null · Barcode (EAN/GTIN oder eigener Code) für die Kassearchived booleancreated_at string (date-time)updated_at string (date-time)/v1/offersAngebote auflistenNeueste zuerst (nach Belegdatum).
Recht: sales:read
limit in der Adresse, integercursor in der Adresse, stringstatus in der Adresse, draft | open | expired | accepted | rejected | superseded | cancelledcustomer_id in der Adresse, string (uuid)search in der Adresse, string · Sucht in Nummer, Betreff und Kundennameinclude_superseded in der Adresse, true | false · Ersetzte Versionen mitlieferndata SalesDocumentSummary[]next_cursor string | null/v1/offersAngebot als Entwurf anlegenLegt 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
customer_id string (uuid)issue_date string (date) · Standard: heuteservice_date · Leistungsdatum; bestimmt den Steuersatz. Leer = issue_datesubject stringhead_text · Weglassen = Standard-Textbausteinfoot_text · Weglassen = Standard-Textbausteinprice_mode net | gross · Standard: netlines SalesLineInput[]installments InstallmentInput[] · Abschlagsplan (Angebote und Aufträge)valid_until · Standard: issue_date + 30 Tageid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/offers/{id}Angebot lesenRecht: sales:read
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/offers/{id}Entwurf ändernNur Entwürfe. Gesendete Felder ersetzen die bisherigen; lines und installments werden als Ganzes ersetzt.
Recht: sales:write
id im Pfad, string, Pflichtcustomer_id string (uuid)issue_date string (date) · Standard: heuteservice_date · Leistungsdatum; bestimmt den Steuersatz. Leer = issue_datesubject stringhead_text · Weglassen = Standard-Textbausteinfoot_text · Weglassen = Standard-Textbausteinprice_mode net | gross · Standard: netlines SalesLineInput[]installments InstallmentInput[] · Abschlagsplan (Angebote und Aufträge)valid_until · Standard: issue_date + 30 Tageid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/offers/{id}Entwurf löschenNur Entwürfe. Abgeschlossene Belege werden nie gelöscht.
Recht: sales:write
id im Pfad, string, PflichtAntwort: 204 ohne Inhalt
/v1/offers/{id}/finalizeAngebot abschließenVergibt die Nummer; danach ist der Inhalt unveränderlich. Das PDF wird archiviert.
Recht: sales:finalize
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/offers/{id}/duplicateAls neuen Entwurf kopierenRecht: sales:write
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /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
id im Pfad, string, Pflichtto string (email)[] · Standard: E-Mail-Adresse des Kundencc string (email)[]subject string · Standard: Textbaustein der Firmatext string · Standard: Textbaustein der Firmaattach_xrechnung boolean · Nur Rechnungen mit Leitweg-ID: XRechnung-XML zusätzlich anhängenid string (uuid)to string[]cc string[]subject stringattachments string[] · Dateinamen der Anhängesent_at string (date-time)/v1/offers/{id}/pdfPDF herunterladenAbgeschlossene Belege: das archivierte PDF. Entwürfe: frisch erzeugt mit Wasserzeichen. letterhead=false ohne Briefpapier (für vorgedrucktes Papier, immer frisch erzeugt).
Recht: sales:read
id im Pfad, string, Pflichtletterhead in der Adresse, true | false · Standard trueAntwort: Datei application/pdf
/v1/offers/{id}/invoicingAbrechnungsstandWelche Rechnungen es zum Beleg gibt und welche noch möglich sind (normal, Abschläge, Schluss).
Recht: sales:read
id im Pfad, string, Pflichtinvoices SalesDocumentSummary[]can_standard boolean · Normale Rechnung möglichinstallments object[]index integerlabel stringgross Moneyinvoice_id can_final boolean · Schlussrechnung möglich/v1/offers/{id}/invoicesRechnung erstellenLegt einen Rechnungsentwurf aus dem Beleg an: normale Rechnung, Abschlagsrechnung zu einem Abschlag oder Schlussrechnung (zieht festgeschriebene Abschlagsrechnungen ab).
Recht: sales:write
id im Pfad, string, Pflichttype standard | partial | final · standard = normale Rechnung, partial = Abschlagsrechnung, final = Schlussrechnunginstallment_index integer · Bei partial: Index des Abschlags im Plan (0-basiert)id string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/offers/{id}/acceptAngebot angenommenEntscheidung des Kunden festhalten. Nur offene (auch abgelaufene) Angebote.
Recht: sales:write
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/offers/{id}/rejectAngebot abgelehntEntscheidung des Kunden festhalten. Nur offene (auch abgelaufene) Angebote.
Recht: sales:write
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/offers/{id}/new-versionNeue VersionNeue Version eines abgeschlossenen Angebots als Entwurf (gleiche Nummer, version + 1).
Recht: sales:write
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/offers/{id}/convert-to-orderIn Auftrag umwandelnErstellt eine Auftragsbestätigung als Entwurf; das Angebot gilt dann als angenommen.
Recht: sales:write
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/ordersAufträge auflistenNeueste zuerst (nach Belegdatum).
Recht: sales:read
limit in der Adresse, integercursor in der Adresse, stringstatus in der Adresse, draft | open | expired | accepted | rejected | superseded | cancelledcustomer_id in der Adresse, string (uuid)search in der Adresse, string · Sucht in Nummer, Betreff und Kundennamedata SalesDocumentSummary[]next_cursor string | null/v1/ordersAuftrag als Entwurf anlegenLegt 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
customer_id string (uuid)issue_date string (date) · Standard: heuteservice_date · Leistungsdatum; bestimmt den Steuersatz. Leer = issue_datesubject stringhead_text · Weglassen = Standard-Textbausteinfoot_text · Weglassen = Standard-Textbausteinprice_mode net | gross · Standard: netlines SalesLineInput[]installments InstallmentInput[] · Abschlagsplan (Angebote und Aufträge)id string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/orders/{id}Auftrag lesenRecht: sales:read
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/orders/{id}Entwurf ändernNur Entwürfe. Gesendete Felder ersetzen die bisherigen; lines und installments werden als Ganzes ersetzt.
Recht: sales:write
id im Pfad, string, Pflichtcustomer_id string (uuid)issue_date string (date) · Standard: heuteservice_date · Leistungsdatum; bestimmt den Steuersatz. Leer = issue_datesubject stringhead_text · Weglassen = Standard-Textbausteinfoot_text · Weglassen = Standard-Textbausteinprice_mode net | gross · Standard: netlines SalesLineInput[]installments InstallmentInput[] · Abschlagsplan (Angebote und Aufträge)id string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/orders/{id}Entwurf löschenNur Entwürfe. Abgeschlossene Belege werden nie gelöscht.
Recht: sales:write
id im Pfad, string, PflichtAntwort: 204 ohne Inhalt
/v1/orders/{id}/finalizeAuftrag abschließenVergibt die Nummer; danach ist der Inhalt unveränderlich. Das PDF wird archiviert.
Recht: sales:finalize
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/orders/{id}/duplicateAls neuen Entwurf kopierenRecht: sales:write
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /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
id im Pfad, string, Pflichtto string (email)[] · Standard: E-Mail-Adresse des Kundencc string (email)[]subject string · Standard: Textbaustein der Firmatext string · Standard: Textbaustein der Firmaattach_xrechnung boolean · Nur Rechnungen mit Leitweg-ID: XRechnung-XML zusätzlich anhängenid string (uuid)to string[]cc string[]subject stringattachments string[] · Dateinamen der Anhängesent_at string (date-time)/v1/orders/{id}/pdfPDF herunterladenAbgeschlossene Belege: das archivierte PDF. Entwürfe: frisch erzeugt mit Wasserzeichen. letterhead=false ohne Briefpapier (für vorgedrucktes Papier, immer frisch erzeugt).
Recht: sales:read
id im Pfad, string, Pflichtletterhead in der Adresse, true | false · Standard trueAntwort: Datei application/pdf
/v1/orders/{id}/invoicingAbrechnungsstandWelche Rechnungen es zum Beleg gibt und welche noch möglich sind (normal, Abschläge, Schluss).
Recht: sales:read
id im Pfad, string, Pflichtinvoices SalesDocumentSummary[]can_standard boolean · Normale Rechnung möglichinstallments object[]index integerlabel stringgross Moneyinvoice_id can_final boolean · Schlussrechnung möglich/v1/orders/{id}/invoicesRechnung erstellenLegt einen Rechnungsentwurf aus dem Beleg an: normale Rechnung, Abschlagsrechnung zu einem Abschlag oder Schlussrechnung (zieht festgeschriebene Abschlagsrechnungen ab).
Recht: sales:write
id im Pfad, string, Pflichttype standard | partial | final · standard = normale Rechnung, partial = Abschlagsrechnung, final = Schlussrechnunginstallment_index integer · Bei partial: Index des Abschlags im Plan (0-basiert)id string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/orders/{id}/cancelAuftrag stornierenNur offene Aufträge.
Recht: sales:write
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/invoicesRechnungen auflistenNeueste zuerst (nach Belegdatum).
Recht: sales:read
limit in der Adresse, integercursor in der Adresse, stringstatus in der Adresse, draft | open | expired | accepted | rejected | superseded | cancelledcustomer_id in der Adresse, string (uuid)search in der Adresse, string · Sucht in Nummer, Betreff und Kundennameinvoice_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)data SalesDocumentSummary[]next_cursor string | null/v1/invoicesRechnung als Entwurf anlegenLegt 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
customer_id string (uuid)issue_date string (date) · Standard: heuteservice_date · Leistungsdatum; bestimmt den Steuersatz. Leer = issue_datesubject stringhead_text · Weglassen = Standard-Textbausteinfoot_text · Weglassen = Standard-Textbausteinprice_mode net | gross · Standard: netlines SalesLineInput[]installments InstallmentInput[] · Abschlagsplan (Angebote und Aufträge)due_date · Standard: issue_date + 14 Tageservice_period_from · Beginn des Leistungszeitraums bis service_datebuyer_reference · Leitweg-ID/Referenz (BT-10). Weglassen = Wert des Kundeninvoice_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.id string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/invoices/{id}Rechnung lesenRecht: sales:read
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/invoices/{id}Entwurf ändernNur Entwürfe. Gesendete Felder ersetzen die bisherigen; lines und installments werden als Ganzes ersetzt.
Recht: sales:write
id im Pfad, string, Pflichtcustomer_id string (uuid)issue_date string (date) · Standard: heuteservice_date · Leistungsdatum; bestimmt den Steuersatz. Leer = issue_datesubject stringhead_text · Weglassen = Standard-Textbausteinfoot_text · Weglassen = Standard-Textbausteinprice_mode net | gross · Standard: netlines SalesLineInput[]installments InstallmentInput[] · Abschlagsplan (Angebote und Aufträge)due_date · Standard: issue_date + 14 Tageservice_period_from · Beginn des Leistungszeitraums bis service_datebuyer_reference · Leitweg-ID/Referenz (BT-10). Weglassen = Wert des Kundenid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/invoices/{id}Entwurf löschenNur Entwürfe. Abgeschlossene Belege werden nie gelöscht.
Recht: sales:write
id im Pfad, string, PflichtAntwort: 204 ohne Inhalt
/v1/invoices/{id}/finalizeRechnung festschreibenPrü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
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/invoices/{id}/duplicateAls neuen Entwurf kopierenRecht: sales:write
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /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
id im Pfad, string, Pflichtto string (email)[] · Standard: E-Mail-Adresse des Kundencc string (email)[]subject string · Standard: Textbaustein der Firmatext string · Standard: Textbaustein der Firmaattach_xrechnung boolean · Nur Rechnungen mit Leitweg-ID: XRechnung-XML zusätzlich anhängenid string (uuid)to string[]cc string[]subject stringattachments string[] · Dateinamen der Anhängesent_at string (date-time)/v1/invoices/{id}/pdfPDF herunterladenFestgeschriebene 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
id im Pfad, string, Pflichtletterhead in der Adresse, true | false · Standard trueAntwort: Datei application/pdf
/v1/invoices/{id}/cancelRechnung stornierenErstellt eine festgeschriebene Stornorechnung mit eigener Nummer (Rückgabe); die Rechnung wird cancelled. Das PDF der Stornorechnung wird archiviert.
Recht: sales:finalize
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/invoices/{id}/correctRechnung korrigierenStorno wie bei cancel plus ein neuer Rechnungsentwurf als Kopie, den du ändern und festschreiben kannst.
Recht: sales:finalize
id im Pfad, string, Pflichtcancellation SalesDocumentid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]installments object[]totals objectsmall_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungeninvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)created_at string (date-time)updated_at string (date-time)finalized_at decided_at draft SalesDocumentid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]installments object[]totals objectsmall_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]amount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungeninvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)created_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/invoices/{id}/credit-notesRechnungskorrektur zu einer Rechnung anlegenLegt 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
id im Pfad, string, Pflichtid string (uuid)kind offer | order | invoicestatus draft | open | accepted | rejected | superseded | cancelleddisplay_status draft | open | expired | accepted | rejected | superseded | cancelled · Wie status, offene Angebote nach valid_until: expirednumber string | null · Erst nach dem Abschließen/Festschreiben gesetztversion integerroot_id string (uuid)source_document_id customer_id string (uuid)customer objectnumber stringname stringcontact_person string | nullstreet stringpostal_code stringcity stringcountry_code stringvat_id string | nullemail string | nullissue_date string (date)valid_until service_date service_period_from due_date subject stringhead_text string | nullfoot_text string | nullprice_mode net | grosslines object[]id string (uuid)position integerkind item | textarticle_id title stringdescription string | nullquantity string · Dezimalzahl mit Punkt, bis 3 Nachkommastellenunit_code string | nullunit_price Money · Einzelpreis in der Preisart des Belegs (price_mode)discount_percent stringservice_type string | nullexemption_reason string | nullvat_category string | nullvat_rate_percent stringamount Money · Positionsbetrag nach Rabatt, in der Preisart des Belegsinstallments object[]position integerlabel stringkind percent | fixedpercent string | nullamount due_days gross Moneytotals objectnet Moneyvat Moneygross Moneybreakdown object[]small_business boolean · Kleinunternehmer (§ 19 UStG) am Belegdatuminvoice_type buyer_reference string | nullsource corrected_document external_number string | null · Nur self_billed: Gutschrift-Nummer des Kundenincoming_document_id · Nur self_billed: Original im Rechnungseinganginstallment_index prepayments object[]invoice_id string (uuid)number stringissue_date string (date)net Moneyvat Moneygross Moneyamount_due Money · Brutto abzüglich abgezogener Abschlagsrechnungenamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinvoice_issues object[] · Fehlende Pflichtangaben eines Rechnungsentwurfs (sonst leer)code stringline message stringcreated_at string (date-time)updated_at string (date-time)finalized_at decided_at /v1/invoices/{id}/xrechnungXRechnung herunterladenArchivierte XRechnung-XML (CII). Nur festgeschriebene Rechnungen mit Leitweg-ID (buyer_reference).
Recht: sales:read
id im Pfad, string, PflichtAntwort: Datei application/xml
/v1/recurring-invoicesSerien auflistenÄlteste zuerst.
Recht: sales:read
limit in der Adresse, integercursor in der Adresse, stringdata RecurringInvoice[]next_cursor string | null/v1/recurring-invoicesSerie anlegenAus 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
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 | yearlyend_date mode draft | finalize | finalize_and_send · Standard: draftsubject_template id string (uuid)template_invoice_id string (uuid) · Festgeschriebene Rechnung, die als Vorlage dienttemplate_number string | nullcustomer_id string (uuid)customer_name stringtemplate_subject stringamount Money · Zahlbetrag der Vorlageamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinterval monthly | quarterly | half_yearly | yearlynext_issue_date string (date)end_date mode draft | finalize | finalize_and_send · draft = nur Entwurf, finalize = festschreiben, finalize_and_send = festschreiben und per Mail sendensubject_template string | null · Betreff mit Platzhaltern {zeitraum}, {monat}, {quartal}, {jahr}active booleanrunning boolean · Aktiv, nicht beendet und nächster Termin vor dem Enddatumended_at last_run_at last_error string | nullupcoming_dates string (date)[] · Die nächsten Termine (höchstens 6)created_at string (date-time)/v1/recurring-invoices/{id}Serie lesenRecht: sales:read
id im Pfad, string, Pflichtid string (uuid)template_invoice_id string (uuid) · Festgeschriebene Rechnung, die als Vorlage dienttemplate_number string | nullcustomer_id string (uuid)customer_name stringtemplate_subject stringamount Money · Zahlbetrag der Vorlageamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinterval monthly | quarterly | half_yearly | yearlynext_issue_date string (date)end_date mode draft | finalize | finalize_and_send · draft = nur Entwurf, finalize = festschreiben, finalize_and_send = festschreiben und per Mail sendensubject_template string | null · Betreff mit Platzhaltern {zeitraum}, {monat}, {quartal}, {jahr}active booleanrunning boolean · Aktiv, nicht beendet und nächster Termin vor dem Enddatumended_at last_run_at last_error string | nullupcoming_dates string (date)[] · Die nächsten Termine (höchstens 6)created_at string (date-time)/v1/recurring-invoices/{id}Serie ändernNur die gesendeten Felder ändern sich. start_date setzt den nächsten Termin.
Recht: sales:write
id im Pfad, string, Pflichtstart_date string (date) · Erster Termin. Liegt er in der Vergangenheit, holt der nächste Lauf nach.interval monthly | quarterly | half_yearly | yearlyend_date mode draft | finalize | finalize_and_send · Standard: draftsubject_template id string (uuid)template_invoice_id string (uuid) · Festgeschriebene Rechnung, die als Vorlage dienttemplate_number string | nullcustomer_id string (uuid)customer_name stringtemplate_subject stringamount Money · Zahlbetrag der Vorlageamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinterval monthly | quarterly | half_yearly | yearlynext_issue_date string (date)end_date mode draft | finalize | finalize_and_send · draft = nur Entwurf, finalize = festschreiben, finalize_and_send = festschreiben und per Mail sendensubject_template string | null · Betreff mit Platzhaltern {zeitraum}, {monat}, {quartal}, {jahr}active booleanrunning boolean · Aktiv, nicht beendet und nächster Termin vor dem Enddatumended_at last_run_at last_error string | nullupcoming_dates string (date)[] · Die nächsten Termine (höchstens 6)created_at string (date-time)/v1/recurring-invoices/{id}/runsProtokoll der LäufeDie letzten 100 Schritte, neueste zuerst.
Recht: sales:read
id im Pfad, string, Pflichtdata object[]id string (uuid)scheduled_date string (date)step created | finalized | sent | failedinvoice_id invoice_number string | nullmessage string | nullcreated_at string (date-time)next_cursor string | null/v1/recurring-invoices/{id}/pauseSerie pausierenBis zum Fortsetzen entstehen keine Rechnungen.
Recht: sales:write
id im Pfad, string, Pflichtid string (uuid)template_invoice_id string (uuid) · Festgeschriebene Rechnung, die als Vorlage dienttemplate_number string | nullcustomer_id string (uuid)customer_name stringtemplate_subject stringamount Money · Zahlbetrag der Vorlageamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinterval monthly | quarterly | half_yearly | yearlynext_issue_date string (date)end_date mode draft | finalize | finalize_and_send · draft = nur Entwurf, finalize = festschreiben, finalize_and_send = festschreiben und per Mail sendensubject_template string | null · Betreff mit Platzhaltern {zeitraum}, {monat}, {quartal}, {jahr}active booleanrunning boolean · Aktiv, nicht beendet und nächster Termin vor dem Enddatumended_at last_run_at last_error string | nullupcoming_dates string (date)[] · Die nächsten Termine (höchstens 6)created_at string (date-time)/v1/recurring-invoices/{id}/resumeSerie fortsetzenVerpasste Termine holt der nächste Lauf nach.
Recht: sales:write
id im Pfad, string, Pflichtid string (uuid)template_invoice_id string (uuid) · Festgeschriebene Rechnung, die als Vorlage dienttemplate_number string | nullcustomer_id string (uuid)customer_name stringtemplate_subject stringamount Money · Zahlbetrag der Vorlageamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinterval monthly | quarterly | half_yearly | yearlynext_issue_date string (date)end_date mode draft | finalize | finalize_and_send · draft = nur Entwurf, finalize = festschreiben, finalize_and_send = festschreiben und per Mail sendensubject_template string | null · Betreff mit Platzhaltern {zeitraum}, {monat}, {quartal}, {jahr}active booleanrunning boolean · Aktiv, nicht beendet und nächster Termin vor dem Enddatumended_at last_run_at last_error string | nullupcoming_dates string (date)[] · Die nächsten Termine (höchstens 6)created_at string (date-time)/v1/recurring-invoices/{id}/endSerie beendenEndgültig; eine beendete Serie lässt sich nicht fortsetzen.
Recht: sales:write
id im Pfad, string, Pflichtid string (uuid)template_invoice_id string (uuid) · Festgeschriebene Rechnung, die als Vorlage dienttemplate_number string | nullcustomer_id string (uuid)customer_name stringtemplate_subject stringamount Money · Zahlbetrag der Vorlageamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinterval monthly | quarterly | half_yearly | yearlynext_issue_date string (date)end_date mode draft | finalize | finalize_and_send · draft = nur Entwurf, finalize = festschreiben, finalize_and_send = festschreiben und per Mail sendensubject_template string | null · Betreff mit Platzhaltern {zeitraum}, {monat}, {quartal}, {jahr}active booleanrunning boolean · Aktiv, nicht beendet und nächster Termin vor dem Enddatumended_at last_run_at last_error string | nullupcoming_dates string (date)[] · Die nächsten Termine (höchstens 6)created_at string (date-time)/v1/invoices/{id}/paymentsZahlungen einer RechnungAlle Zahlungen und Gegenbuchungen, älteste zuerst, dazu der abgeleitete Zahlungsstatus.
Recht: payments:read
id im Pfad, string, Pflichtdata Payment[]state PaymentStateinvoice_id string (uuid)status unpaid | partial | paid | written_off | overpaid | void · void = Entwurf, storniert oder Stornorechnung; written_off = ausgeglichen mit Forderungsausfallamount_due Moneypaid Money · Summe der Zahlungen (ohne Skonto und Ausfall)discount Money · Gewährter Skontowritten_off Money · Als Forderungsausfall ausgebuchtcredited Money · Mit Rechnungskorrekturen verrechnet (auf Rechnungskorrekturen negativ)outstanding Money · Offener Betrag; negativ = Guthaben des Kunden (Rechnungskorrektur noch nicht erstattet)due_date overdue booleandays_overdue integerlast_payment_date refund_check boolean · Stornierte Rechnung mit Zahlungseingang: Erstattung prüfen/v1/invoices/{id}/paymentsZahlung erfassenZahlungseingang 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
id im Pfad, string, Pflichtpayment_date string (date) · Standard: heuteamount Money · Positiver Betragamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringmethod bank | cash | card | paypal | other · Standard: bankreference note payment Paymentid 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 ↔ Rechnungamount Money · Negativ bei Gegenbuchungen sowie bei Erstattung und Verrechnung auf Rechnungskorrekturenmethod bank | cash | card | paypal | otherreference string | nullnote string | nullreverses_payment_id · Gegenbuchung: die aufgehobene Zahlungoffset_document_id · Nur Verrechnung: der andere Beleg (Rechnung bzw. Rechnungskorrektur)reversed_by_id · Aufgehoben durch diese Gegenbuchungcreated_at string (date-time)state PaymentStateinvoice_id string (uuid)status unpaid | partial | paid | written_off | overpaid | void · void = Entwurf, storniert oder Stornorechnung; written_off = ausgeglichen mit Forderungsausfallamount_due Moneypaid Money · Summe der Zahlungen (ohne Skonto und Ausfall)discount Money · Gewährter Skontowritten_off Money · Als Forderungsausfall ausgebuchtcredited Money · Mit Rechnungskorrekturen verrechnet (auf Rechnungskorrekturen negativ)outstanding Money · Offener Betrag; negativ = Guthaben des Kunden (Rechnungskorrektur noch nicht erstattet)due_date overdue booleandays_overdue integerlast_payment_date refund_check boolean · Stornierte Rechnung mit Zahlungseingang: Erstattung prüfenwarning · Überzahlung ist erlaubt, wird aber gemeldet/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
id im Pfad, string, Pflichtkind discount | write_off · discount = gewährter Skonto, write_off = Forderungsausfall (uneinbringlich)date string (date) · Standard: heuteamount Money · Standard: der ganze offene Betragamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringnote payment Paymentid 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 ↔ Rechnungamount Money · Negativ bei Gegenbuchungen sowie bei Erstattung und Verrechnung auf Rechnungskorrekturenmethod bank | cash | card | paypal | otherreference string | nullnote string | nullreverses_payment_id · Gegenbuchung: die aufgehobene Zahlungoffset_document_id · Nur Verrechnung: der andere Beleg (Rechnung bzw. Rechnungskorrektur)reversed_by_id · Aufgehoben durch diese Gegenbuchungcreated_at string (date-time)state PaymentStateinvoice_id string (uuid)status unpaid | partial | paid | written_off | overpaid | void · void = Entwurf, storniert oder Stornorechnung; written_off = ausgeglichen mit Forderungsausfallamount_due Moneypaid Money · Summe der Zahlungen (ohne Skonto und Ausfall)discount Money · Gewährter Skontowritten_off Money · Als Forderungsausfall ausgebuchtcredited Money · Mit Rechnungskorrekturen verrechnet (auf Rechnungskorrekturen negativ)outstanding Money · Offener Betrag; negativ = Guthaben des Kunden (Rechnungskorrektur noch nicht erstattet)due_date overdue booleandays_overdue integerlast_payment_date refund_check boolean · Stornierte Rechnung mit Zahlungseingang: Erstattung prüfenwarning · Überzahlung ist erlaubt, wird aber gemeldet/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
id im Pfad, string, Pflichtinvoice_id string (uuid) · Offene normale oder Schlussrechnung desselben Kundendate string (date) · Standard: heuteamount 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 stringnote invoice_payment Paymentid 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 ↔ Rechnungamount Money · Negativ bei Gegenbuchungen sowie bei Erstattung und Verrechnung auf Rechnungskorrekturenmethod bank | cash | card | paypal | otherreference string | nullnote string | nullreverses_payment_id · Gegenbuchung: die aufgehobene Zahlungoffset_document_id · Nur Verrechnung: der andere Beleg (Rechnung bzw. Rechnungskorrektur)reversed_by_id · Aufgehoben durch diese Gegenbuchungcreated_at string (date-time)credit_note_payment Paymentid 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 ↔ Rechnungamount Money · Negativ bei Gegenbuchungen sowie bei Erstattung und Verrechnung auf Rechnungskorrekturenmethod bank | cash | card | paypal | otherreference string | nullnote string | nullreverses_payment_id · Gegenbuchung: die aufgehobene Zahlungoffset_document_id · Nur Verrechnung: der andere Beleg (Rechnung bzw. Rechnungskorrektur)reversed_by_id · Aufgehoben durch diese Gegenbuchungcreated_at string (date-time)invoice_state PaymentStateinvoice_id string (uuid)status unpaid | partial | paid | written_off | overpaid | void · void = Entwurf, storniert oder Stornorechnung; written_off = ausgeglichen mit Forderungsausfallamount_due Moneypaid Money · Summe der Zahlungen (ohne Skonto und Ausfall)discount Money · Gewährter Skontowritten_off Money · Als Forderungsausfall ausgebuchtcredited Money · Mit Rechnungskorrekturen verrechnet (auf Rechnungskorrekturen negativ)outstanding Money · Offener Betrag; negativ = Guthaben des Kunden (Rechnungskorrektur noch nicht erstattet)due_date overdue booleandays_overdue integerlast_payment_date refund_check boolean · Stornierte Rechnung mit Zahlungseingang: Erstattung prüfencredit_note_state PaymentStateinvoice_id string (uuid)status unpaid | partial | paid | written_off | overpaid | void · void = Entwurf, storniert oder Stornorechnung; written_off = ausgeglichen mit Forderungsausfallamount_due Moneypaid Money · Summe der Zahlungen (ohne Skonto und Ausfall)discount Money · Gewährter Skontowritten_off Money · Als Forderungsausfall ausgebuchtcredited Money · Mit Rechnungskorrekturen verrechnet (auf Rechnungskorrekturen negativ)outstanding Money · Offener Betrag; negativ = Guthaben des Kunden (Rechnungskorrektur noch nicht erstattet)due_date overdue booleandays_overdue integerlast_payment_date refund_check boolean · Stornierte Rechnung mit Zahlungseingang: Erstattung prüfen/v1/payments/{id}/reverseZahlung aufhebenLegt eine Gegenbuchung über den vollen Betrag an. Die ursprüngliche Zahlung bleibt erhalten (GoBD).
Recht: payments:write
id im Pfad, string, Pflichtpayment_date string (date) · Datum der Gegenbuchung, Standard: heutenote payment Paymentid 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 ↔ Rechnungamount Money · Negativ bei Gegenbuchungen sowie bei Erstattung und Verrechnung auf Rechnungskorrekturenmethod bank | cash | card | paypal | otherreference string | nullnote string | nullreverses_payment_id · Gegenbuchung: die aufgehobene Zahlungoffset_document_id · Nur Verrechnung: der andere Beleg (Rechnung bzw. Rechnungskorrektur)reversed_by_id · Aufgehoben durch diese Gegenbuchungcreated_at string (date-time)state PaymentStateinvoice_id string (uuid)status unpaid | partial | paid | written_off | overpaid | void · void = Entwurf, storniert oder Stornorechnung; written_off = ausgeglichen mit Forderungsausfallamount_due Moneypaid Money · Summe der Zahlungen (ohne Skonto und Ausfall)discount Money · Gewährter Skontowritten_off Money · Als Forderungsausfall ausgebuchtcredited Money · Mit Rechnungskorrekturen verrechnet (auf Rechnungskorrekturen negativ)outstanding Money · Offener Betrag; negativ = Guthaben des Kunden (Rechnungskorrektur noch nicht erstattet)due_date overdue booleandays_overdue integerlast_payment_date refund_check boolean · Stornierte Rechnung mit Zahlungseingang: Erstattung prüfenwarning · Überzahlung ist erlaubt, wird aber gemeldet/v1/receivablesOffene PostenFestgeschriebene Rechnungen mit Zahlungsstatus, neueste zuerst (nach Rechnungsdatum).
Recht: payments:read
limit in der Adresse, integercursor in der Adresse, stringstatus in der Adresse, open | overdue | paid | written_off | overpaid | all · open (Standard) = unbezahlt oder teilweise; all = alle festgeschriebenencustomer_id in der Adresse, string (uuid)data Receivable[]next_cursor string | null/v1/receivables/summarySumme offener PostenRecht: payments:read
open_count integeropen_total Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringoverdue_count integeroverdue_total Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency string/v1/dunning-proposalsMahnvorschlägeRechnungen, für die laut Mahneinstellungen die nächste Stufe fällig ist.
Recht: payments:read
data DunningProposal[]next_cursor string | null/v1/invoices/{id}/dunning-proposalNächste Mahnstufe (Vorschau)Was die nächste Mahnstufe enthalten würde: Gebühr, Zinsen, Gesamtbetrag, Text.
Recht: payments:read
id im Pfad, string, Pflichtinvoice_id string (uuid)level integertitle stringissue_date string (date)due_date string (date)paid Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringoutstanding Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringprevious_fees Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringfee Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinterest Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringinterest_rate_percent string | nulltotal Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringtext stringdue_from string (date)is_due boolean/v1/invoices/{id}/dunning-noticesMahnungen einer RechnungRecht: payments:read
id im Pfad, string, Pflichtdata DunningNotice[]next_cursor string | null/v1/dunning-notices/{id}/pdfMahnung als PDFRecht: payments:read
id im Pfad, string, PflichtAntwort: Datei application/pdf
/v1/incoming-documentsEingangsbelege auflistenNeueste zuerst (nach Eingang). Höchstens die letzten 2000 Belege je Filter.
Recht: incoming:read
limit in der Adresse, integercursor in der Adresse, stringstatus in der Adresse, new | done | rejectedsearch in der Adresse, string · Sucht in Absender, Betreff, Dateiname, Lieferant und Rechnungsnummerdata IncomingDocumentSummary[]next_cursor string | null/v1/incoming-documentsEingangsbeleg hochladenPDF, 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
file result created | duplicatedocument IncomingDocumentid string (uuid)file_name stringmime_type stringsize integersha256 stringsource email | upload | self_billing · self_billing = aus einer eigenen Gutschrift an einen Lieferanten erzeugtkind xrechnung | zugferd | pdf | image | otherstatus new | done | rejected · new = neu, done = erledigt, rejected = abgelehntstatus_reason string | nullnote string | nullmail received_at string (date-time)created_at string (date-time)einvoice · Ausgelesene E-Rechnung (XRechnung, ZUGFeRD); sonst nullparse_error string | nullvalidation · Prüfung durch den KoSIT-Validator; null = noch nicht geprüft/v1/incoming-documents/{id}Eingangsbeleg lesenRecht: incoming:read
id im Pfad, string, Pflichtid string (uuid)file_name stringmime_type stringsize integersha256 stringsource email | upload | self_billing · self_billing = aus einer eigenen Gutschrift an einen Lieferanten erzeugtkind xrechnung | zugferd | pdf | image | otherstatus new | done | rejected · new = neu, done = erledigt, rejected = abgelehntstatus_reason string | nullnote string | nullmail received_at string (date-time)created_at string (date-time)einvoice · Ausgelesene E-Rechnung (XRechnung, ZUGFeRD); sonst nullparse_error string | nullvalidation · Prüfung durch den KoSIT-Validator; null = noch nicht geprüft/v1/incoming-documents/{id}Notiz ändernRecht: incoming:write
id im Pfad, string, Pflichtnote id string (uuid)file_name stringmime_type stringsize integersha256 stringsource email | upload | self_billing · self_billing = aus einer eigenen Gutschrift an einen Lieferanten erzeugtkind xrechnung | zugferd | pdf | image | otherstatus new | done | rejected · new = neu, done = erledigt, rejected = abgelehntstatus_reason string | nullnote string | nullmail received_at string (date-time)created_at string (date-time)einvoice · Ausgelesene E-Rechnung (XRechnung, ZUGFeRD); sonst nullparse_error string | nullvalidation · Prüfung durch den KoSIT-Validator; null = noch nicht geprüft/v1/incoming-documents/{id}/fileOriginaldatei herunterladenDie unverändert abgelegte Datei (PDF, XML oder Bild).
Recht: incoming:read
id im Pfad, string, PflichtAntwort: Datei application/octet-stream
/v1/incoming-documents/{id}/statusStatus setzenErledigt, abgelehnt (mit Grund) oder wieder neu. Der Beleg selbst bleibt unverändert.
Recht: incoming:write
id im Pfad, string, Pflichtstatus new | done | rejectedreason · Pflicht bei rejectedid string (uuid)file_name stringmime_type stringsize integersha256 stringsource email | upload | self_billing · self_billing = aus einer eigenen Gutschrift an einen Lieferanten erzeugtkind xrechnung | zugferd | pdf | image | otherstatus new | done | rejected · new = neu, done = erledigt, rejected = abgelehntstatus_reason string | nullnote string | nullmail received_at string (date-time)created_at string (date-time)einvoice · Ausgelesene E-Rechnung (XRechnung, ZUGFeRD); sonst nullparse_error string | nullvalidation · Prüfung durch den KoSIT-Validator; null = noch nicht geprüft/v1/bank-accountsBankkonten mit SaldenRecht: banking:read
include_archived in der Adresse, true | falsedata BankAccount[]next_cursor string | null/v1/bank-accounts/{id}Bankkonto lesenRecht: banking:read
id im Pfad, string, Pflichtid string (uuid)kind giro | savings | paypal | credit_card | othername stringiban string | nullbic string | nullbank_name string | nullcurrency stringledger_account string · Sachkonto im aktuellen Kontenrahmenopening_date string (date)opening_balance Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringbank_balance Money · Anfangssaldo plus importierte Umsätzeamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringledger_balance Money · Saldo des Sachkontos laut Buchhaltungamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringlast_statement transactions integeropen_transactions integer · Umsätze mit noch nicht zugeordnetem Restarchived boolean/v1/bank-accounts/{id}/importsImportierte KontoauszügeRecht: banking:read
id im Pfad, string, Pflichtdata BankImport[]next_cursor string | null/v1/bank-accounts/{id}/statementsKontoauszug importierenCAMT.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
id im Pfad, string, Pflichtfile profile sparkasse | volksbank | dkb | ing | generic · Nur CSV: Bankprofil; leer = erkennenimport_id string (uuid)format camt053 | mt940 | csvprofile string | nullcount_total integercount_new integercount_duplicate integercount_skipped integerbalance_difference auto_confirmed integer · Über Regeln sofort gebuchte Umsätzewarnings string[]/v1/bank-transactionsUmsätzeNeueste zuerst (nach Buchungstag), mit Zuordnungen zu Rechnungen, Eingangsbelegen und Buchungen.
Recht: banking:read
limit in der Adresse, integercursor in der Adresse, stringbank_account_id in der Adresse, string (uuid)status in der Adresse, open | matched | all · open = offener Rest; Standard alldate_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)data BankTransaction[]next_cursor string | null/v1/bank-transactions/{id}Umsatz lesenRecht: banking:read
id im Pfad, string, Pflichtid string (uuid)bank_account_id string (uuid)booking_date string (date)value_date amount Money · Eingang positiv, Ausgang negativamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringopen Money · Noch nicht zugeordneter Restamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringcounterparty_name string | nullcounterparty_iban string | nullcounterparty_bic string | nullpurpose string | nullbooking_text string | nullend_to_end_id string | nullmandate_id string | nullcreditor_id string | nullmatches object[]id string (uuid)kind invoice | incoming | entryamount Moneysales_document_id incoming_document_id journal_entry_id label string | nullreversed booleancreated_at string (date-time)created_at string (date-time)/v1/accountsKontenrahmenStandardkonten (SKR03 oder SKR04 laut Steuerprofil) und eigene Konten der Firma, nach Nummer sortiert.
Recht: ledger:read
date in der Adresse, string (date) · Kontenrahmen laut Steuerprofil an diesem Tag; Standard heuteinclude_archived in der Adresse, true | falsedata LedgerAccount[]next_cursor string | null/v1/accounts/{number}/linesKontoblattAlle Buchungszeilen eines Kontos im Zeitraum (Belegdatum), älteste zuerst, mit Saldo nach jeder Zeile.
Recht: ledger:read
number im Pfad, string, Pflichtdate_from in der Adresse, string (date), Pflichtdate_to in der Adresse, string (date), Pflichtaccount LedgerAccountchart skr03 | skr04number stringname stringkind asset | liability | equity | revenue | expense | private | tax | neutralrole string | null · Systemrolle, z. B. bank, receivables, vat_outputvat_code string | null · Vorbelegter Steuerschlüsselautomatic boolean · DATEV-Automatikkonto (Steuer wird herausgerechnet)standard boolean · Aus dem Standard-Kontenrahmen (false = eigenes Konto)archived booleanlines object[]entry_id string (uuid)entry_number stringentry_date string (date)period string · Buchungsmonat, z. B. 2026-11description stringdocument_ref string | nulldebit Moneycredit Moneybalance Money · Saldo im Zeitraum nach dieser Zeile (Soll − Haben)vat_code string | nulltext string | nulltotals objectdebit Moneycredit Moneybalance Money/v1/vat-codesSteuerschlüsselSteuerschlüssel für Buchungen und Kassenbuch, mit DATEV-BU-Schlüssel und UStVA-Kennzahlen.
Recht: ledger:read
data VatCode[]next_cursor string | null/v1/cost-centersKostenstellenRecht: ledger:read
data CostCenter[]next_cursor string | null/v1/ledger-periodsBuchungsmonateMonate mit Status (open, closed = festgeschrieben) und Zahl der Buchungen, vom ersten Monat mit Buchungen bis heute.
Recht: ledger:read
from in der Adresse, string · Buchungsmonat, z. B. 2026-11to in der Adresse, string · Buchungsmonat, z. B. 2026-11data LedgerPeriod[]next_cursor string | null/v1/journal-entriesBuchungenJournal, neueste Buchung zuerst. Mit ledger:write bucht Zahlfuchs offene Vorgänge vorher.
Recht: ledger:read
limit in der Adresse, integercursor in der Adresse, stringperiod_from in der Adresse, string · Buchungsmonat, z. B. 2026-11period_to in der Adresse, string · Buchungsmonat, z. B. 2026-11date_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 Kontosource_type in der Adresse, stringcost_center_id in der Adresse, string (uuid)search in der Adresse, string · Sucht in Buchungstext, Belegnummer und Buchungsnummer (2026/15)data JournalEntry[]next_cursor string | null/v1/journal-entriesManuell buchenUmbuchung, 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
date string (date) · Belegdatum; liegt der Monat schon fest, bucht Zahlfuchs in den nächsten offenendescription stringdocument_ref amount_mode gross | net · Beträge mit Steuerschlüssel brutto (Standard) oder nettolines object[]account string · Sachkonto im Kontenrahmen am Belegdatumdebit 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 id string (uuid)number string · Buchungsnummer "Wirtschaftsjahr/laufende Nummer", z. B. 2026/15fiscal_year integerentry_number integerentry_date string (date) · Belegdatumperiod string · Buchungsmonat (später, wenn der Monat festgeschrieben war)chart skr03 | skr04description stringdocument_ref string | nullsource_type string · Herkunft: manual, sales_invoice, invoice_payment, incoming_document, bank, cash, …source_id reverses_entry_id reversed_by_id lines object[]line_no integeraccount stringdebit Moneycredit Moneyvat_code string | nullvat_role vat_rate string | null · Steuersatz in Prozent, z. B. "19"vat_base · Bei Steuerzeilen: Bemessungsgrundlageparty_kind party_id string | nullopen_item_id · Rechnung bzw. Eingangsbeleg des offenen Postenscost_center_id text string | nullcreated_at string (date-time)/v1/journal-entries/{id}Buchung lesenRecht: ledger:read
id im Pfad, string, Pflichtid string (uuid)number string · Buchungsnummer "Wirtschaftsjahr/laufende Nummer", z. B. 2026/15fiscal_year integerentry_number integerentry_date string (date) · Belegdatumperiod string · Buchungsmonat (später, wenn der Monat festgeschrieben war)chart skr03 | skr04description stringdocument_ref string | nullsource_type string · Herkunft: manual, sales_invoice, invoice_payment, incoming_document, bank, cash, …source_id reverses_entry_id reversed_by_id lines object[]line_no integeraccount stringdebit Moneycredit Moneyvat_code string | nullvat_role vat_rate string | null · Steuersatz in Prozent, z. B. "19"vat_base · Bei Steuerzeilen: Bemessungsgrundlageparty_kind party_id string | nullopen_item_id · Rechnung bzw. Eingangsbeleg des offenen Postenscost_center_id text string | nullcreated_at string (date-time)/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
id im Pfad, string, Pflichtdate string (date) · Datum der Gegenbuchung; Standard: Datum der Buchungdescription id string (uuid)number string · Buchungsnummer "Wirtschaftsjahr/laufende Nummer", z. B. 2026/15fiscal_year integerentry_number integerentry_date string (date) · Belegdatumperiod string · Buchungsmonat (später, wenn der Monat festgeschrieben war)chart skr03 | skr04description stringdocument_ref string | nullsource_type string · Herkunft: manual, sales_invoice, invoice_payment, incoming_document, bank, cash, …source_id reverses_entry_id reversed_by_id lines object[]line_no integeraccount stringdebit Moneycredit Moneyvat_code string | nullvat_role vat_rate string | null · Steuersatz in Prozent, z. B. "19"vat_base · Bei Steuerzeilen: Bemessungsgrundlageparty_kind party_id string | nullopen_item_id · Rechnung bzw. Eingangsbeleg des offenen Postenscost_center_id text string | nullcreated_at string (date-time)/v1/ledger-schemeBuchungsverfahrenKontenrahmen, EÜR oder doppelte Buchführung, Soll- oder Ist-Versteuerung laut Steuerprofil am Tag.
Recht: ledger:read
date in der Adresse, string (date)date string (date)chart skr03 | skr04bookkeeping cash_basis | double_entryvat_basis accrual | cashsmall_business booleanfiscal_year_start_month integer/v1/cash-registersKassenAlle Kassen mit Bestand, auch stillgelegte.
Recht: ledger:read
data CashRegister[]next_cursor string | null/v1/cash-registers/{id}Kasse lesenRecht: ledger:read
id im Pfad, string, Pflichtid string (uuid)name stringaccount string | null · Eigenes Kassenkonto; null = Standard-Kasse des Kontenrahmenscost_center_id opening_date string (date)opening_balance Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringbalance Money · Bestand laut Kassenbuchamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringlast_entry_date last_report_date entries integeractive booleancreated_at string (date-time)/v1/cash-registers/{id}/entriesKassenbuchKassenbuchungen der Kasse, neueste zuerst.
Recht: ledger:read
id im Pfad, string, Pflichtlimit in der Adresse, integercursor in der Adresse, stringdate_from in der Adresse, string (date)date_to in der Adresse, string (date)data CashEntry[]next_cursor string | null/v1/cash-registers/{id}/entriesKassenbuchung erfassenEinnahme, 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
id im Pfad, string, Pflichtkind receipt | expense | deposit_bank | deposit_private | withdrawal_bank | withdrawal_private · receipt = Einnahme, expense = Ausgabe, deposit_bank/deposit_private = Einlage, withdrawal_bank/withdrawal_private = Entnahmedate string (date)amount string · Betrag in Cent, positiv; die Richtung ergibt sich aus kindaccount · Gegenkonto bei Einnahme und Ausgabe; bei Bank und Privat vorgegebenvat_code cost_center_id description stringdocument_ref id string (uuid)register_id string (uuid)number integer · Laufende Nummer je Kasse, lückenlosentry_date string (date)kind opening | revenue | receipt | expense | deposit_bank | deposit_private | withdrawal_bank | withdrawal_private | difference | invoice_payment | incoming_paymentamount Money · Einnahme/Einlage positiv, Ausgabe/Entnahme negativamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringbalance_after Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringaccount string | nullvat_code string | nullcost_center_id description stringdocument_ref string | nullreverses_entry_id reversed_by_id reason string | null · Begründung bei Storno und Kassendifferenzreport_id · Tageskassenbericht, aus dem die Zeile stammtinvoice_id incoming_document_id journal_entry_id created_at string (date-time)/v1/cash-entries/{id}Kassenbuchung lesenRecht: ledger:read
id im Pfad, string, Pflichtid string (uuid)register_id string (uuid)number integer · Laufende Nummer je Kasse, lückenlosentry_date string (date)kind opening | revenue | receipt | expense | deposit_bank | deposit_private | withdrawal_bank | withdrawal_private | difference | invoice_payment | incoming_paymentamount Money · Einnahme/Einlage positiv, Ausgabe/Entnahme negativamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringbalance_after Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringaccount string | nullvat_code string | nullcost_center_id description stringdocument_ref string | nullreverses_entry_id reversed_by_id reason string | null · Begründung bei Storno und Kassendifferenzreport_id · Tageskassenbericht, aus dem die Zeile stammtinvoice_id incoming_document_id journal_entry_id created_at string (date-time)/v1/cash-entries/{id}/reverseKassenbuchung stornierenNeue Storno-Zeile mit Verweis und Begründung, gebucht auch im Journal. Zeilen aus Tageskassenberichten und Zahlungen werden dort korrigiert.
Recht: ledger:write
id im Pfad, string, Pflichtreason string · Pflicht: warum storniert wirddate string (date) · Datum des Stornos; Standard heuteid string (uuid)register_id string (uuid)number integer · Laufende Nummer je Kasse, lückenlosentry_date string (date)kind opening | revenue | receipt | expense | deposit_bank | deposit_private | withdrawal_bank | withdrawal_private | difference | invoice_payment | incoming_paymentamount Money · Einnahme/Einlage positiv, Ausgabe/Entnahme negativamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringbalance_after Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringaccount string | nullvat_code string | nullcost_center_id description stringdocument_ref string | nullreverses_entry_id reversed_by_id reason string | null · Begründung bei Storno und Kassendifferenzreport_id · Tageskassenbericht, aus dem die Zeile stammtinvoice_id incoming_document_id journal_entry_id created_at string (date-time)/v1/pos/registersKassen mit TSEAlle Kassen mit TSE, auch außer Betrieb genommene.
Recht: pos:read
data PosRegister[]next_cursor string | null/v1/pos/registers/{id}Kasse mit TSE lesenRecht: pos:read
id im Pfad, string, Pflichtid string (uuid)cash_register_id string (uuid) · Kasse im Kassenbuch (GET /cash-registers/{id})cash_register_name stringserial_number string · Seriennummer der Kasse (Kassen-ID)status active | decommissionedlocation objectname stringstreet stringzip stringcity stringtse objectprovider stringcertified boolean · false = Test-TSE, nicht für den Echtbetriebserial_number stringpublic_key stringcertificate string | nullsignature_algorithm stringtime_format stringcertification_id string | nullsoftware_name stringsoftware_version stringcommissioned_at string (date-time)decommissioned_at decommission_reason string | nullreported_commission_at · Mitteilung an das Finanzamt (§ 146a Abs. 4 AO) als erledigt markiertreported_decommission_at outage_since · Offener TSE-Ausfall seit, sonst null/v1/pos/registers/{id}/transactionsKassenvorgängeVorgänge der Kasse mit Positionen, Zahlungen und TSE-Daten, neueste zuerst.
Recht: pos:read
id im Pfad, string, Pflichtlimit in der Adresse, integercursor in der Adresse, stringdate_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 | finisheddata PosTransaction[]next_cursor string | null/v1/pos/transactions/{id}Kassenvorgang lesenMit Positionen, Zahlungen, TSE-Signatur, Inhalt des QR-Codes und Link auf den digitalen Beleg.
Recht: pos:read
id im Pfad, string, Pflichtid string (uuid)register_id string (uuid)number integer · Vorgangsnummer je Kasse, lückenlosstatus open | finishedkind receipt | cancellation | abort | training | transfer · receipt = Beleg, cancellation = Storno, abort = Abbruch, training = Training, transfer = Einlage/Entnahmestarted_at string (date-time)finished_at receipt_date operator_name stringcustomer_id customer_name string | nullcancels_transaction_id cancelled_by_id total · Summe brutto; null bei offenem Vorgangnote string | nulltse objecttransaction_id stringtransaction_number signature_counter start end signature string | nullprocess_type string | nullprocess_data string | nullfailed boolean · TSE ausgefallen: Beleg ohne Signaturerror string | nullqr_payload string | null · Inhalt des QR-Codes nach DSFinV-K; null bei TSE-Ausfallreceipt_url string | null · Digitaler Beleg zum Weitergeben (ohne Anmeldung)journal_entry_id lines PosLine[]payments PosPayment[]issued_vouchers object[]id string (uuid)code stringamount Money/v1/pos/registers/{id}/salesVerkauf kassierenBeginnt 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
id im Pfad, string, Pflichtlines PosSaleLineInput[]payments PosSalePaymentInput[]customer_id customer_name note id string (uuid)register_id string (uuid)number integer · Vorgangsnummer je Kasse, lückenlosstatus open | finishedkind receipt | cancellation | abort | training | transfer · receipt = Beleg, cancellation = Storno, abort = Abbruch, training = Training, transfer = Einlage/Entnahmestarted_at string (date-time)finished_at receipt_date operator_name stringcustomer_id customer_name string | nullcancels_transaction_id cancelled_by_id total · Summe brutto; null bei offenem Vorgangnote string | nulltse objecttransaction_id stringtransaction_number signature_counter start end signature string | nullprocess_type string | nullprocess_data string | nullfailed boolean · TSE ausgefallen: Beleg ohne Signaturerror string | nullqr_payload string | null · Inhalt des QR-Codes nach DSFinV-K; null bei TSE-Ausfallreceipt_url string | null · Digitaler Beleg zum Weitergeben (ohne Anmeldung)journal_entry_id lines PosLine[]payments PosPayment[]issued_vouchers object[]id string (uuid)code stringamount Money/v1/pos/transactions/{id}/cancelKassenbeleg stornierenNeuer 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
id im Pfad, string, Pflichtreason string · Pflicht: warum storniert wirdid string (uuid)register_id string (uuid)number integer · Vorgangsnummer je Kasse, lückenlosstatus open | finishedkind receipt | cancellation | abort | training | transfer · receipt = Beleg, cancellation = Storno, abort = Abbruch, training = Training, transfer = Einlage/Entnahmestarted_at string (date-time)finished_at receipt_date operator_name stringcustomer_id customer_name string | nullcancels_transaction_id cancelled_by_id total · Summe brutto; null bei offenem Vorgangnote string | nulltse objecttransaction_id stringtransaction_number signature_counter start end signature string | nullprocess_type string | nullprocess_data string | nullfailed boolean · TSE ausgefallen: Beleg ohne Signaturerror string | nullqr_payload string | null · Inhalt des QR-Codes nach DSFinV-K; null bei TSE-Ausfallreceipt_url string | null · Digitaler Beleg zum Weitergeben (ohne Anmeldung)journal_entry_id lines PosLine[]payments PosPayment[]issued_vouchers object[]id string (uuid)code stringamount Money/v1/pos/registers/{id}/closingsKassenabschlüsseTagesabschlüsse (Z-Bons) der Kasse, neueste zuerst.
Recht: pos:read
id im Pfad, string, Pflichtlimit in der Adresse, integercursor in der Adresse, stringdata PosClosing[]next_cursor string | null/v1/pos/closings/{id}Kassenabschluss lesenRecht: pos:read
id im Pfad, string, Pflichtid string (uuid)register_id string (uuid)number integerdate string (date)first_transaction_number last_transaction_number totals PosClosingTotalstotal Moneyby_vat object[]by_payment object[]by_business_case object[]transactions integercancellations integeraborted integertraining integertse_failures integerexpected_cash Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringcounted Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringdifference Money · Gezählt minus Sollamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringcount_protocol · Zählprotokoll: Nennwert in Cent → Stückdifference_reason string | nullclosed_at string (date-time)/v1/pos/registers/{id}/closing-previewKassenabschluss vorabSummen seit dem letzten Abschluss und Soll-Bestand laut Kassenbuch (X-Bon). Ändert nichts.
Recht: pos:read
id im Pfad, string, Pflichtregister_id string (uuid)date string (date)first_transaction_number last_transaction_number open_transactions integer · Offene Vorgänge; vor dem Abschluss beendentotals PosClosingTotalstotal Moneyby_vat object[]by_payment object[]by_business_case object[]transactions integercancellations integeraborted integertraining integertse_failures integerexpected_cash Money · Soll-Bestand laut Kassenbuchamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency string/v1/pos/ordersKassenaufträgeAufträge mit Anzahlungen an der Kasse (ohne Rechnung), neueste zuerst.
Recht: pos:read
limit in der Adresse, integercursor in der Adresse, stringstatus in der Adresse, open | completed | cancelleddata PosOrder[]next_cursor string | null/v1/pos/vouchers/{code}Gutschein prüfenRestwert eines Mehrzweckgutscheins; Bindestriche und Groß-/Kleinschreibung im Code sind egal.
Recht: pos:read
code im Pfad, string, Pflichtid string (uuid)code stringamount Money · Ausgegebener Wertamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringbalance Money · Restwertamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringvalid boolean · false, wenn der Verkauf des Gutscheins storniert istissued_at string (date-time)issued_transaction_id string (uuid)/v1/vat-returnsVoranmeldungen eines JahresZeiträ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
year in der Adresse, integer · Standard: aktuelles Jahrdata VatReturnOverview[]next_cursor string | null/v1/vat-returns/{key}Werte einer VoranmeldungKennzahlen aus den aktuellen Buchungen (computed) und alle gespeicherten Versionen. key ist der Zeitraum, z. B. 2026-11 oder 2026-Q4.
Recht: ledger:read
key im Pfad, string, Pflichtperiod VatPeriodkey string · 2026-11 (Monat) oder 2026-Q4 (Quartal)label stringfrom string · Buchungsmonat, z. B. 2026-11to string · Buchungsmonat, z. B. 2026-11frequency monthly | quarterlypermanent_extension boolean · Dauerfristverlängerungdue_date string (date)computed objectvalues 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 Moneyspecial_prepayment warnings string[]form object[]line integersection stringlabel stringkz string | nulltax_kz string | null · Schlüssel des Steuerbetrags in valuesversions StoredVatReturn[] · Neueste Version zuerst/v1/reports/euerEinnahmenüberschussrechnungAnlage 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
year in der Adresse, integerfiscal_year integerfrom string (date)to string (date)form_year integerform_exact boolean · false: Vordruck des Jahres noch nicht hinterlegtapplicable booleansmall_business all | partly | nonelines object[]key stringsection stringkind stringlabel stringkz string | null · Kennzahl im Formular Anlage EÜRline_number amount Money · Betrag; bei beschränkt abziehbaren Ausgaben der abziehbare Teilnon_deductible Moneyaccounts object[]totals objectincome Moneyexpenses Moneyprofit Moneyhints object[]level stringcode stringmessage string/v1/reports/open-itemsOffene PostenForderungen (party = customer) oder Verbindlichkeiten (party = supplier) laut Buchhaltung zum Stichtag, mit Fälligkeit und Altersstruktur.
Recht: ledger:read
party in der Adresse, customer | supplier · Standard customeruntil in der Adresse, string (date) · Stichtag; Standard heuteparty customer | supplieruntil string (date)total Moneyamount string · Betrag in Cent als Ganzzahl-String, z. B. "8500" = 85,00 €currency stringbuckets object · not_due, 1_30, 31_60, 61_90, over_90, no_due_dateitems object[]open_item_id string (uuid)source sales_invoice | incoming_documentparty_id string | nullparty_name stringdocument_ref string | nulldate string (date)due_date days_overdue bucket stringamount Money/v1/reports/cost-centersKostenstellenErlöse, Kosten und Ergebnis je Kostenstelle im Zeitraum, dazu der Teil ohne Kostenstelle.
Recht: ledger:read
year in der Adresse, integer · Wirtschaftsjahr (Jahr des Beginns); Standard: aktuellesperiod_from in der Adresse, string · Buchungsmonat, z. B. 2026-11period_to in der Adresse, string · Buchungsmonat, z. B. 2026-11fiscal_year integerperiod_from string · Buchungsmonat, z. B. 2026-11period_to string · Buchungsmonat, z. B. 2026-11cost_centers object[]id string (uuid)code stringname stringactive booleanrevenue Moneycosts Moneyresult Moneyaccounts object[]unassigned objectrevenue Moneycosts Moneyresult Money/v1/reports/trial-balanceSummen- und SaldenlisteJe Konto Saldovortrag, Verkehrszahlen des Zeitraums und des Jahres, Endsaldo. Antwort als Tabelle wie in der App.
Recht: ledger:read
year in der Adresse, integer · Wirtschaftsjahr (Jahr des Beginns); Standard: aktuellesperiod_from in der Adresse, string · Buchungsmonat, z. B. 2026-11period_to in der Adresse, string · Buchungsmonat, z. B. 2026-11fiscal_year integerperiod_from string · Buchungsmonat, z. B. 2026-11period_to string · Buchungsmonat, z. B. 2026-11table ReportTabletitle stringsubtitle stringcolumns object[]rows object[]notes string[]balanced boolean | null · Soll = Haben bzw. Aktiva = Passiva; sonst null/v1/reports/bwaBWABetriebswirtschaftliche Auswertung: Zeitraum und kumuliert, mit Vorjahr. Antwort als Tabelle wie in der App.
Recht: ledger:read
year in der Adresse, integer · Wirtschaftsjahr (Jahr des Beginns); Standard: aktuellesperiod_from in der Adresse, string · Buchungsmonat, z. B. 2026-11period_to in der Adresse, string · Buchungsmonat, z. B. 2026-11fiscal_year integerperiod_from string · Buchungsmonat, z. B. 2026-11period_to string · Buchungsmonat, z. B. 2026-11table ReportTabletitle stringsubtitle stringcolumns object[]rows object[]notes string[]balanced boolean | null · Soll = Haben bzw. Aktiva = Passiva; sonst null/v1/reports/income-statementVorläufige GuVGewinn- und Verlustrechnung nach § 275 HGB bis period_to, mit Vorjahr. Nur doppelte Buchführung. Antwort als Tabelle wie in der App.
Recht: ledger:read
year in der Adresse, integer · Wirtschaftsjahr (Jahr des Beginns); Standard: aktuellesperiod_from in der Adresse, string · Buchungsmonat, z. B. 2026-11period_to in der Adresse, string · Buchungsmonat, z. B. 2026-11fiscal_year integerperiod_from string · Buchungsmonat, z. B. 2026-11period_to string · Buchungsmonat, z. B. 2026-11table ReportTabletitle stringsubtitle stringcolumns object[]rows object[]notes string[]balanced boolean | null · Soll = Haben bzw. Aktiva = Passiva; sonst null/v1/reports/balance-sheetVorläufige BilanzBilanz nach § 266 HGB zum Ende von period_to. Nur doppelte Buchführung. Antwort als Tabelle wie in der App.
Recht: ledger:read
year in der Adresse, integer · Wirtschaftsjahr (Jahr des Beginns); Standard: aktuellesperiod_from in der Adresse, string · Buchungsmonat, z. B. 2026-11period_to in der Adresse, string · Buchungsmonat, z. B. 2026-11fiscal_year integerperiod_from string · Buchungsmonat, z. B. 2026-11period_to string · Buchungsmonat, z. B. 2026-11table ReportTabletitle stringsubtitle stringcolumns object[]rows object[]notes string[]balanced boolean | null · Soll = Haben bzw. Aktiva = Passiva; sonst null/v1/exportsDatenexporteExporte der Firma (PDF-Paket, GDPdU), neueste zuerst.
Recht: exports:read
data DataExport[]next_cursor string | null/v1/exportsDatenexport anstoßenLegt 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
from string (date) · Belegdatum ab (einschließlich)to string (date) · Belegdatum bis (einschließlich); höchstens elf Kalenderjahrecontents 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)id string (uuid)from string (date)to string (date)contents sales_documents | incoming_documents | payments | dunning | audit_log | gdpdu[]include_offers booleanstatus queued | running | done | failedsize · Größe des ZIP in Bytesfile_count file_name stringerror string | nulldownloadable boolean · Fertig und noch nicht nach 30 Tagen gelöschtexpires_at created_at string (date-time)finished_at /v1/exports/{id}Export lesenZum Abfragen des Status nach dem Anstoßen.
Recht: exports:read
id im Pfad, string, Pflichtid string (uuid)from string (date)to string (date)contents sales_documents | incoming_documents | payments | dunning | audit_log | gdpdu[]include_offers booleanstatus queued | running | done | failedsize · Größe des ZIP in Bytesfile_count file_name stringerror string | nulldownloadable boolean · Fertig und noch nicht nach 30 Tagen gelöschtexpires_at created_at string (date-time)finished_at /v1/exports/{id}/fileExport herunterladenZIP mit Ordnern, Übersichten (CSV) und LIESMICH.txt. 409, solange der Export nicht fertig ist; 410 nach 30 Tagen.
Recht: exports:read
id im Pfad, string, PflichtAntwort: Datei application/zip
/v1/datev-settingsDATEV-EinstellungenBerater- und Mandantennummer für den DATEV-Export. Ändern nur in der App.
Recht: exports:read
/v1/datev-exportsDATEV-ExporteBisherige DATEV-Exporte, neueste zuerst.
Recht: exports:read
data DatevExport[]next_cursor string | null/v1/datev-exportsDATEV-Export erstellenBuchungsstapel 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
period_from string · Buchungsmonat, z. B. 2026-11period_to string · Buchungsmonat, z. B. 2026-11id string (uuid)period_from string · Buchungsmonat, z. B. 2026-11period_to string · Buchungsmonat, z. B. 2026-11advisor_number integerclient_number integerlocked boolean · Mit Festschreibungskennzeichen exportiertall_closed boolean · Alle Monate des Zeitraums waren festgeschriebenentry_count integerrow_count integerdocument_count integerfile_name stringsha256 stringsize integerwarnings string[]created_at string (date-time)/v1/datev-exports/previewDATEV-Export prüfenWie viele Buchungen der Zeitraum hat und welche Monate noch nicht festgeschrieben sind.
Recht: exports:read
period_from string · Buchungsmonat, z. B. 2026-11period_to string · Buchungsmonat, z. B. 2026-11entry_count integeropen_periods string[]settings_missing boolean/v1/datev-exports/{id}DATEV-Export lesenRecht: exports:read
id im Pfad, string, Pflichtid string (uuid)period_from string · Buchungsmonat, z. B. 2026-11period_to string · Buchungsmonat, z. B. 2026-11advisor_number integerclient_number integerlocked boolean · Mit Festschreibungskennzeichen exportiertall_closed boolean · Alle Monate des Zeitraums waren festgeschriebenentry_count integerrow_count integerdocument_count integerfile_name stringsha256 stringsize integerwarnings string[]created_at string (date-time)/v1/datev-exports/{id}/fileDATEV-Export herunterladenRecht: exports:read
id im Pfad, string, PflichtAntwort: Datei application/zip
/v1/comment-threadsRückfragenRückfragen der Steuerkanzlei an Belegen und Buchungen, zuletzt aktive zuerst (höchstens 500).
Recht: comments:read
status in der Adresse, open | resolved | all · Standard opendata CommentThread[]next_cursor string | null/v1/comment-threads/{id}Rückfrage lesenRecht: comments:read
id im Pfad, string, Pflichtid string (uuid)target objecttype 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_returnid string (uuid)resolved booleanresolved_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 stringside advisor | company · advisor = Steuerkanzlei, company = Firmabody stringcreated_at string (date-time)/v1/comment-threads/{id}/repliesAntwortenAntwort 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
id im Pfad, string, Pflichtbody stringid string (uuid)target objecttype 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_returnid string (uuid)resolved booleanresolved_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 stringside advisor | company · advisor = Steuerkanzlei, company = Firmabody stringcreated_at string (date-time)/v1/comment-threads/{id}/resolveAls erledigt markierenRecht: comments:write
id im Pfad, string, Pflichtid string (uuid)target objecttype 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_returnid string (uuid)resolved booleanresolved_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 stringside advisor | company · advisor = Steuerkanzlei, company = Firmabody stringcreated_at string (date-time)/v1/comment-threads/{id}/reopenWieder öffnenRecht: comments:write
id im Pfad, string, Pflichtid string (uuid)target objecttype 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_returnid string (uuid)resolved booleanresolved_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 stringside advisor | company · advisor = Steuerkanzlei, company = Firmabody stringcreated_at string (date-time)/v1/webhook-event-typesEreignisartenRecht: webhooks:manage
data object[]type stringdescription stringnext_cursor string | null/v1/webhooksWebhooksAlle Webhooks der Firma (höchstens 20), älteste zuerst. Geheimnisse werden nie gelistet.
Recht: webhooks:manage
data Webhook[]next_cursor string | null/v1/webhooksWebhook anlegenLiefert das Signatur-Geheimnis genau einmal zurück. Ereignisse ab jetzt werden zugestellt, frühere nicht.
Recht: webhooks:manage
url string · HTTPS-Adresse, öffentlich erreichbardescription 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[]id string (uuid)url stringdescription string | nullevents 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 booleanstatus active | disabled | paused · paused = nach 3 Tagen ohne erfolgreiche Zustellung angehalten; mit active=true wieder einschaltenpaused_at pause_reason string | nullfailing_since last_success_at previous_secret_expires_at · Bis dahin wird nach einem Wechsel zusätzlich mit dem alten Geheimnis signiertcreated_at string (date-time)updated_at string (date-time)secret string · Signatur-Geheimnis (whsec_…). Wird nur bei Anlegen und Wechsel einmal angezeigt./v1/webhooks/{id}Webhook lesenRecht: webhooks:manage
id im Pfad, string, Pflichtid string (uuid)url stringdescription string | nullevents 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 booleanstatus active | disabled | paused · paused = nach 3 Tagen ohne erfolgreiche Zustellung angehalten; mit active=true wieder einschaltenpaused_at pause_reason string | nullfailing_since last_success_at previous_secret_expires_at · Bis dahin wird nach einem Wechsel zusätzlich mit dem alten Geheimnis signiertcreated_at string (date-time)updated_at string (date-time)/v1/webhooks/{id}Webhook ändernOffene Zustellungen entfallen, wenn der Webhook ausgeschaltet oder das Ereignis abbestellt wird. active=true hebt auch eine Pause auf.
Recht: webhooks:manage
id im Pfad, string, Pflichturl stringdescription 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 aufhebenid string (uuid)url stringdescription string | nullevents 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 booleanstatus active | disabled | paused · paused = nach 3 Tagen ohne erfolgreiche Zustellung angehalten; mit active=true wieder einschaltenpaused_at pause_reason string | nullfailing_since last_success_at previous_secret_expires_at · Bis dahin wird nach einem Wechsel zusätzlich mit dem alten Geheimnis signiertcreated_at string (date-time)updated_at string (date-time)/v1/webhooks/{id}Webhook löschenOffene Zustellungen entfallen. Das Protokoll bleibt bis zum Ablauf der 30 Tage im Audit-Log.
Recht: webhooks:manage
id im Pfad, string, PflichtAntwort: 204 ohne Inhalt
/v1/webhooks/{id}/rotate-secretGeheimnis wechselnNeues Geheimnis, einmal angezeigt. Das alte gilt noch 24 Stunden: so lange enthält webhook-signature beide Signaturen.
Recht: webhooks:manage
id im Pfad, string, Pflichtid string (uuid)url stringdescription string | nullevents 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 booleanstatus active | disabled | paused · paused = nach 3 Tagen ohne erfolgreiche Zustellung angehalten; mit active=true wieder einschaltenpaused_at pause_reason string | nullfailing_since last_success_at previous_secret_expires_at · Bis dahin wird nach einem Wechsel zusätzlich mit dem alten Geheimnis signiertcreated_at string (date-time)updated_at string (date-time)secret string · Signatur-Geheimnis (whsec_…). Wird nur bei Anlegen und Wechsel einmal angezeigt./v1/webhooks/{id}/testTestereignis sendenSendet sofort ein Ereignis webhook.test (auch an ausgeschaltete Webhooks) und liefert das Ergebnis. Keine Wiederholung.
Recht: webhooks:manage
id im Pfad, string, Pflichtid string (uuid)webhook_id string (uuid)event_id string (uuid) · Gleich dem Header webhook-id; bleibt bei Wiederholungen gleichevent_type stringresource_type stringresource_id stringstatus pending | succeeded | failedattempts integernext_attempt_at last_attempt_at last_status_code last_error string | nulllast_duration_ms created_at string (date-time)/v1/webhooks/{id}/deliveriesZustellprotokollZustellungen der letzten 30 Tage, neueste zuerst.
Recht: webhooks:manage
id im Pfad, string, Pflichtlimit in der Adresse, integercursor in der Adresse, stringstatus in der Adresse, pending | succeeded | faileddata WebhookDelivery[]next_cursor string | null/v1/webhook-deliveries/{id}Zustellung lesenRecht: webhooks:manage
id im Pfad, string, Pflichtid string (uuid)webhook_id string (uuid)event_id string (uuid) · Gleich dem Header webhook-id; bleibt bei Wiederholungen gleichevent_type stringresource_type stringresource_id stringstatus pending | succeeded | failedattempts integernext_attempt_at last_attempt_at last_status_code last_error string | nulllast_duration_ms created_at string (date-time)/v1/webhook-deliveries/{id}/retryErneut sendenSendet die Zustellung sofort noch einmal, mit derselben webhook-id. Liefert das Ergebnis.
Recht: webhooks:manage
id im Pfad, string, Pflichtid string (uuid)webhook_id string (uuid)event_id string (uuid) · Gleich dem Header webhook-id; bleibt bei Wiederholungen gleichevent_type stringresource_type stringresource_id stringstatus pending | succeeded | failedattempts integernext_attempt_at last_attempt_at last_status_code last_error string | nulllast_duration_ms created_at string (date-time)