Rechnungen
25 OperationenRechnungen und Gutschriften anlegen, ausstellen, versenden und als PDF oder XML abrufen – inklusive Validierung.
Die vollständige API-Referenz, direkt aus der OpenAPI-Spezifikation generiert. Alle Endpunkte, Request-/Response-Schemata und Felder. Read-only — für den interaktiven Zugang mit eigenem Test-Key siehe die Entwickler-Plattform.
OpenAPI-Spezifikation herunterladen (YAML) — für die Generierung eigener Clients & SDKs (OpenAPI 3.0)
Backend contract for the invoicing application. This service owns business logic, validation, totals/VAT calculation, persistence, and schema. Money and quantity values are transmitted as DECIMAL STRINGS (e.g. "9542.50", "86.75") to preserve exact precision. Totals are ALWAYS computed server-side; any totals supplied in a request body are ignored. The model is aligned with EN 16931 / ZUGFeRD concepts so a compliant export can be added later. v1 exposes only a subset.
The published base URL authenticates programmatic API keys (Authorization: Bearer sk_live_… / sk_test_…). Present a key on every request; an access token issued to a signed-in person is not accepted here and is refused before the request reaches the application.
That is why a large part of this reference is marked as requiring a signed-in session rather than a key: account and administration work — team and membership changes, company master data, key and webhook management, billing and the archive — is performed in the web dashboard, and those operations are documented here so the behaviour they implement is inspectable, not because they are callable from this base URL. If an operation is documented as requiring a signed-in session, reach for the dashboard rather than a key.
Issuing, sending and retrieving documents — the surface an integration actually automates — is fully available with a key.
A refused request returns 429 with the rate_limited error code, a Retry-After header and the X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset trio. Honour Retry-After, and treat the headers as the authoritative budget for the current window.
Any request budget we state is a FLOOR — the number we guarantee to accept — and never a ceiling. Observing more being accepted than the stated figure is not a promise that it will continue, so do not calibrate a client against what it happens to get away with. No figure is published yet; it will be stated only once it has been measured against real traffic.
Each API key has its own request budget: traffic on one key never uses up another key's budget, even when both come from the same address.
A JSON request body may be at most 1 MiB, and any other body (for example the XML document sent to POST /validate) at most 10 MiB. A larger body is refused with 413 and the payload_too_large error code. An invoice, offer or subscription carries at most 1000 line items; more is a 400 validation_error naming lineItems.
An Idempotency-Key is scoped to the mode of the request (test or live) and to the company it acts for. Reusing one value — say, your order id — first with a test key and then with a live key runs two separate requests; it never replays the test result as the live one.
Rechnungen und Gutschriften anlegen, ausstellen, versenden und als PDF oder XML abrufen – inklusive Validierung.
Angebote erstellen, versenden, annehmen oder ablehnen und in Rechnungen umwandeln.
Kundenstamm und den wiederverwendbaren Positionskatalog mit Kundenpreisen verwalten.
Wiederkehrende Rechnungen: Abonnement-Vorlagen, ihre Einstellungen und die daraus erzeugten Rechnungen.
Überfällige Rechnungen verfolgen, Mahnregeln festlegen und Zahlungserinnerungen versenden.
Zahlungseingänge empfangen und automatisch den passenden Rechnungen zuordnen.
Das GoBD-Archiv lesen und Exporte erzeugen – DATEV und GoBD-Exportpakete.
Unternehmensprofil, DATEV-Zuordnung und E-Mail-Versand (SMTP) konfigurieren.
Unternehmen, Mitgliedschaften, Einladungen und die Zugriffsprüfung verwalten.
Tarif, Abrechnung, Nutzung, Audit-Protokoll und Kontoschließung.
API-Schlüssel ausstellen, rotieren, sperren und widerrufen – mit den Scopes, die jede Operation verlangt.
Webhook-Endpunkte registrieren und Zustellungen einsehen oder erneut senden.
Testmodus: Testdaten einspielen, zurücksetzen und die Test-Uhr vorstellen.
| Methode | Pfad | Operation | Scope | Zugang |
|---|---|---|---|---|
| Rechnungen | ||||
GET | /invoices | List invoice summaries (newest first, paginated) | documents:read | Schlüssel oder Sitzung |
POST | /invoices | Create an invoice (server computes all totals) | documents:write | Schlüssel oder Sitzung |
POST | /invoices/preview-totals | Preview the totals for a set of line items (nothing is created) | documents:read | Schlüssel oder Sitzung |
GET | /invoices/next-number | Preview the next auto-generated invoice number (no side effects) | documents:read | Schlüssel oder Sitzung |
GET | /invoices/{id} | Get a full invoice by id | documents:read | Schlüssel oder Sitzung |
PUT | /invoices/{id} | Replace a draft invoice (full replace of all mutable fields; server recomputes totals) | documents:write | Schlüssel oder Sitzung |
DELETE | /invoices/{id} | Delete a draft invoice | documents:write | Schlüssel oder Sitzung |
GET | /invoices/{id}/pdf | Download the stored ZUGFeRD PDF for an issued invoice | documents:read | Schlüssel oder Sitzung |
GET | /invoices/{id}/xml | Download the stored XRechnung 3.0 CII XML for an issued invoice | documents:read | Schlüssel oder Sitzung |
GET | /invoices/{id}/preview.pdf | Render a non-persisted, watermarked WYSIWYG preview PDF for a draft | documents:read | Schlüssel oder Sitzung |
PATCH | /invoices/{id}/retry-pdf | Reset a failed PDF render to pending and retry generation | documents:write | Schlüssel oder Sitzung |
PATCH | /invoices/{id}/retry-xml | Reset a failed XML render to pending and retry generation | documents:write | Schlüssel oder Sitzung |
PATCH | /invoices/{id}/processing-restriction | Set or clear the DSGVO Art. 18 processing restriction | documents:write | Schlüssel oder Sitzung |
PATCH | /invoices/{id}/schedule | Transition a draft to 'scheduled' with an auto-issuance date | documents:write | Schlüssel oder Sitzung |
PATCH | /invoices/{id}/finalize | Issue a draft (compliance gate). Runs the KoSIT gate synchronously: assigns the invoice number (sticky — reused on a retry after a gate failure), renders + validates both XRechnung and ZUGFeRD in parallel, and either commits (artifacts + report + email outbox) or rejects with actionable findings. the validation gate in report-only mode (rollout default) never blocks — the commit runs regardless of verdict, with `validationState` recording the outcome; the validation gate in enforce mode blocks on any error-severity finding. The invoice date (`issueDate`) is set to the day of issue (Europe/Berlin), whatever date the draft carried. | documents:write | Schlüssel oder Sitzung |
POST | /invoices/{id}/credit-note | Derive a Stornorechnung (credit note, UNTDID 381) from an issued invoice | documents:write | Schlüssel oder Sitzung |
POST | /invoices/{id}/validate | Dry-run preflight (compliance gate). Draft or scheduled only. Runs the same local preflight + parallel render+validate calls as `PATCH /invoices/{id}/finalize`, but never assigns a number (a placeholder BT-1 is used when the invoice is unnumbered) and never commits — no state change on the invoice, regardless of verdict. The report is stored with `kind=preflight`. | documents:read | Schlüssel oder Sitzung |
POST | /validate | Stateless Validation-as-a-service. Runs a submitted invoice through the SAME KoSIT + §14 compliance gate and returns the report — persisting NOTHING (no invoice, no stored report, no numbering, no metering). Requires the `validation:run` scope. Mounted only where standalone validation is enabled (off by default → 404). | validation:run | Schlüssel oder Sitzung |
GET | /invoices/{id}/validation-reports | List validation report metadata for an invoice: every attempt (issue attempts, successful issuance, preflight dry-runs), verdict, kind, artifact/validator versions, and findings. Byte-exact report XML is not included — see `GET /invoices/{id}/validation-reports/{reportId}`. | documents:read | Schlüssel oder Sitzung |
GET | /invoices/{id}/validation-reports/{reportId} | Retrieve a stored Prüfbericht (native KoSIT XML, byte-exact). 404 (not the report) if `reportId` belongs to a different invoice than `id` — no cross-invoice leakage. | documents:read | Schlüssel oder Sitzung |
GET | /invoices/{id}/section14 | The typed §14 Abs. 4 UStG Pflichtangaben result for an invoice — the clean three-state `Section14Summary` the frontends bind to (the raw `kind='section14'` row also remains in the validation-reports list). For an issued document the stored result is returned (`evaluatedAt` = when it was computed); a lost post-commit persist is transparently recomputed over the immutable issued document and re-persisted (recompute-on-read), so the result is always retrievable. Advisory-only: `status` is `passed`/`has_warnings` (or `unavailable`) — NEVER `failed`; a `not_applicable` item is never counted as a warning. RLS-scoped — a cross-tenant request 404s (indistinguishable from missing). PII-free. | documents:read | Schlüssel oder Sitzung |
POST | /invoices/{id}/send | Manually (re-)send an issued invoice's delivery email | documents:write | Schlüssel oder Sitzung |
GET | /invoices/{id}/sends | The append-only send history of an invoice | documents:read | Schlüssel oder Sitzung |
POST | /invoices/{id}/external-send | Record a dispatch you performed yourself | documents:write | nur Sitzung |
POST | /invoices/{id}/sends/{sendId}/retraction | Withdraw a dispatch record | documents:write | nur Sitzung |
| Angebote | ||||
POST | /offers | Create an Angebot draft | documents:write | Schlüssel oder Sitzung |
GET | /offers | List Angebote (offset-paginated, derived expiry) | documents:read | Schlüssel oder Sitzung |
GET | /offers/next-number | Preview the next Angebotsnummer | documents:read | Schlüssel oder Sitzung |
GET | /offers/{id} | Get an Angebot | documents:read | Schlüssel oder Sitzung |
PUT | /offers/{id} | Replace a draft/sent Angebot's content | documents:write | Schlüssel oder Sitzung |
DELETE | /offers/{id} | Delete a draft Angebot | documents:write | Schlüssel oder Sitzung |
GET | /offers/settings | Read the Angebotsnummer format | documents:read | Schlüssel oder Sitzung |
PUT | /offers/settings | Update the Angebotsnummer format (admin) | documents:write | Schlüssel oder Sitzung |
POST | /offers/{id}/mark-sent | Record a draft→sent transition | documents:write | Schlüssel oder Sitzung |
POST | /offers/{id}/accept | Record the accepted outcome | documents:write | Schlüssel oder Sitzung |
POST | /offers/{id}/decline | Record the declined outcome | documents:write | Schlüssel oder Sitzung |
POST | /offers/{id}/convert-to-invoice | Convert an Angebot into a NEW invoice draft | documents:write | Schlüssel oder Sitzung |
GET | /offers/{id}/pdf | Render the Angebot as a plain PDF | documents:read | Schlüssel oder Sitzung |
POST | /offers/{id}/send | Send the Angebot as a plain-PDF email | documents:write | Schlüssel oder Sitzung |
| Kunden & Artikel | ||||
GET | /customers | List customers (master data), ordered by customer number (paginated) | customers:read | Schlüssel oder Sitzung |
POST | /customers | Create a customer (customerNumber is assigned by the server) | customers:write | Schlüssel oder Sitzung |
GET | /customers/{id} | Get a customer by id | customers:read | Schlüssel oder Sitzung |
PUT | /customers/{id} | Update a customer (full replace of editable fields) | customers:write | Schlüssel oder Sitzung |
DELETE | /customers/{id} | Delete a customer (linked invoices keep their snapshot) | customers:write | Schlüssel oder Sitzung |
GET | /customers/{id}/positions | This customer's COMPLETE set of position assignments (Zuordnungen) | customers:read | Schlüssel oder Sitzung |
PUT | /customers/{id}/positions | Replace this customer's COMPLETE set of position assignments (Zuordnungen) | customers:write | Schlüssel oder Sitzung |
GET | /positions | List the position catalog (Positionsvorlagen), ordered by description (paginated) | customers:read | Schlüssel oder Sitzung |
POST | /positions | Create a position | customers:write | Schlüssel oder Sitzung |
GET | /positions/{id} | Get a position by id (with its customer assignments) | customers:read | Schlüssel oder Sitzung |
PUT | /positions/{id} | Update a position (full replace of editable fields) | customers:write | Schlüssel oder Sitzung |
DELETE | /positions/{id} | Delete a position (ALWAYS succeeds — never 409) | customers:write | Schlüssel oder Sitzung |
GET | /customers/{id}/open-items | Per-customer open-items statement (Kontoauszug / Offene Posten) | documents:read | Schlüssel oder Sitzung |
| Abonnements | ||||
GET | /subscription-settings | Read the company's recurring-billing defaults | – | nur Sitzung |
PATCH | /subscription-settings | Store the company's recurring-billing defaults | – | nur Sitzung |
GET | /subscriptions | List subscription templates, ordered by creation date (paginated) | subscriptions:read | Schlüssel oder Sitzung |
POST | /subscriptions | Create a subscription template | subscriptions:write | Schlüssel oder Sitzung |
GET | /subscriptions/{id} | Get a subscription by id | subscriptions:read | Schlüssel oder Sitzung |
PUT | /subscriptions/{id} | Update a subscription template (full replace) | subscriptions:write | Schlüssel oder Sitzung |
PATCH | /subscriptions/{id}/status | Update subscription status (active / paused / cancelled / ended) | subscriptions:write | Schlüssel oder Sitzung |
GET | /subscriptions/{id}/invoices | List invoices generated from this subscription | subscriptions:read | Schlüssel oder Sitzung |
POST | /subscriptions/{id}/generate-invoice | Manually trigger invoice generation from a subscription template | subscriptions:write , documents:write | Schlüssel oder Sitzung |
| Mahnwesen | ||||
GET | /dunning/overdue | List overdue invoices (cursor-paginated, derived) | documents:read | Schlüssel oder Sitzung |
GET | /dunning/policy | Get the entity's Mahnstufen policy | documents:read | Schlüssel oder Sitzung |
PUT | /dunning/policy | Replace the entity's reminder ladder (admin-gated) | documents:write | Schlüssel oder Sitzung |
PATCH | /dunning/policy | Set which record of sending a reminder requires | documents:write | Schlüssel oder Sitzung |
PUT | /dunning/policy/charges | Set the late-payment interest and fee configuration, and nothing else | documents:write | Schlüssel oder Sitzung |
GET | /invoices/{id}/reminders | The per-invoice reminder history / Mahnverlauf | documents:read | Schlüssel oder Sitzung |
POST | /invoices/{id}/reminders | Send the next-due Mahnstufe for an invoice | documents:write | Schlüssel oder Sitzung |
GET | /invoices/{id}/reminders/preview | Preview the next-due reminder (byte-faithful dry-run) | documents:read | Schlüssel oder Sitzung |
GET | /invoices/{id}/reminders/preview.pdf | Preview the next-due Mahnung as a PDF (byte-faithful) | documents:read | Schlüssel oder Sitzung |
GET | /invoices/{id}/reminders/{reminderId}/artifact.pdf | Read the frozen per-reminder Mahnung letter | documents:read | Schlüssel oder Sitzung |
| Zahlungsabgleich | ||||
GET | /inbound-sources/summary | How many inbound sources are configured (counts only) | payments:read | Sitzung oder Schlüssel |
GET | /inbound-sources | List inbound sources for the active tenant/entity | – | nur Sitzung |
POST | /inbound-sources | Register an inbound source | – | nur Sitzung |
GET | /inbound-sources/{id} | Get one inbound source (masked config) | – | nur Sitzung |
PATCH | /inbound-sources/{id} | Update an inbound source (subscribedTypes / status) | – | nur Sitzung |
DELETE | /inbound-sources/{id} | Disable an inbound source (soft-delete) | – | nur Sitzung |
POST | /inbound-sources/{id}/reveal-config | Reveal the full verification config (audit-logged, repeatable) | – | nur Sitzung |
POST | /inbound-sources/{id}/rotate-secret | Rotate the verification secret (signed source-types only) | – | nur Sitzung |
PUT | /inbound-sources/{id}/auto-reconcile | Switch automatic booking on or off for ONE payment source | – | nur Sitzung |
POST | /inbound-sources/{id}/simulate | Testanfrage simulieren — sandbox-locked synthetic received-event | – | nur Sitzung |
POST | /inbound/{slug} | Public signed inbound-event receiver (the security spine) | – | ohne Anmeldung |
GET | /inbound-events | List received inbound events (cursor-paginated, metadata-only) | payments:read | Schlüssel oder Sitzung |
GET | /inbound-events/{id} | One inbound event + its processing-step timeline (metadata-only) | payments:read | Schlüssel oder Sitzung |
POST | /inbound-events/{id}/reprocess | Re-dispatch (replay) a logged inbound event | payments:write | Schlüssel oder Sitzung |
POST | /inbound-events/{id}/confirm | Human-confirm the suggested payment match (Zahlungsabgleich) | payments:write | Schlüssel oder Sitzung |
POST | /invoices/{id}/payments | Record a payment against an invoice | payments:write | Schlüssel oder Sitzung |
GET | /invoices/{id}/payments | The per-invoice payment ledger | payments:read | Schlüssel oder Sitzung |
POST | /invoices/{id}/payment-allocations/{allocationId}/reversal | Reverse a recorded payment allocation | payments:write | Schlüssel oder Sitzung |
| Archiv & Export | ||||
GET | /exports/datev | DATEV-Format Buchungsstapel (EXTF CSV) export of issued documents for a period | – | nur Sitzung |
GET | /invoices/{id}/archive-dossier | The GoBD compliance dossier for a document: every archived object (xml_original, pdf_hybrid, validation_report and sendeprotokoll), ordered by kind. Metadata only, no bytes (the single-artifact download is the browse surface). RLS-scoped to the caller's entity/mode — a cross-entity request returns an empty dossier, never a leak. A not-yet-archived document (or one without a Sendeprotokoll yet) returns fewer objects, not an error. | archive:read | Schlüssel oder Sitzung |
GET | /entities/{id}/archive-documents | Browse a entity's archived documents (cursor-paginated) | archive:read | Schlüssel oder Sitzung |
GET | /entities/{id}/archive-documents/{documentId}/artifacts/{kind} | Download one archived artifact (synchronous stream) | archive:read | Schlüssel oder Sitzung |
GET | /entities/{id}/purge-requests | The entity's active pre-deletion purge request | – | nur Sitzung |
POST | /entities/{id}/purge-requests | Create a purge request — approval | – | nur Sitzung |
POST | /entities/{id}/purge-requests/{jobId}/approvals | Approve a purge request — approval | – | nur Sitzung |
POST | /entities/{id}/export-jobs | Request an async export of an entity's archive | – | nur Sitzung |
GET | /export-jobs/{id} | Poll an export job's status | – | nur Sitzung |
GET | /export-jobs/{id}/download | Download a built export bundle | – | nur Sitzung |
POST | /export-jobs/{id}/confirm-delivery | Confirm a checksum-verified export download | – | nur Sitzung |
| Einstellungen | ||||
GET | /settings/company | Get company profile (seller master data and invoice settings) | – | nur Sitzung |
PUT | /settings/company | Create or update company profile (upsert) | – | nur Sitzung |
PATCH | /settings/company | Partially update company settings (§19 Kleinunternehmer flag) | – | nur Sitzung |
GET | /settings/auto-reconcile | Is automatic booking authorised for this company and environment? | – | nur Sitzung |
PUT | /settings/auto-reconcile | Grant or withdraw the authority to book matched credits automatically | – | nur Sitzung |
GET | /settings/datev-mapping | Get the current (or a specific historical) DATEV mapping config | – | nur Sitzung |
PUT | /settings/datev-mapping | Create a new immutable DATEV mapping-config version | – | nur Sitzung |
PUT | /settings/invoice-numbering | Set the invoice-number format (prefix and minimum length) | – | nur Sitzung |
PUT | /settings/invoice-number-counter | Set the invoice-number counter | – | nur Sitzung |
GET | /settings/email | Read the entity's SMTP/email settings (password never returned) | – | nur Sitzung |
PUT | /settings/email | Create or replace the entity's SMTP/email settings | – | nur Sitzung |
PUT | /settings/email/password | Replace the stored SMTP password, and nothing else | – | nur Sitzung |
POST | /settings/email/test | Send a one-off test email using the saved SMTP settings | – | nur Sitzung |
GET | /settings/sending/reply-to | Read the reply address for platform-provided sending | – | nur Sitzung |
PUT | /settings/sending/reply-to | Set the reply address and start confirming it | – | nur Sitzung |
POST | /settings/sending/reply-to/resend | Send a fresh confirmation code for the pending reply address | – | nur Sitzung |
POST | /settings/sending/verify-reply-to | Confirm the pending reply address with the six-digit code | – | nur Sitzung |
GET | /settings/sending | Read who the recipient will see as sender, before the first send | – | nur Sitzung |
POST | /settings/sending/acknowledge | Acknowledge the sender strings and switch on platform-provided sending | – | nur Sitzung |
POST | /public/sending/verify-reply-to | Confirm a reply address from the emailed link (no sign-in required) | – | ohne Anmeldung |
| Team & Zugriff | ||||
GET | /me/memberships | List the authenticated caller's active tenant memberships | – | nur Sitzung |
GET | /me/invitations | List the invitations waiting for the authenticated caller | – | nur Sitzung |
POST | /me/invitations/{id}/accept | Accept one of the caller's own invitations by id | – | nur Sitzung |
POST | /tenants | Create a tenant (self-serve, member-less principal becomes owner) | – | Sitzung oder Schlüssel |
GET | /tenants/{tenantId}/plan | The tenant's plan-tier readout | – | Sitzung oder Schlüssel |
GET | /tenants/{tenantId}/entities | List the tenant's entities (cursor-paginated) | entities:read | Schlüssel oder Sitzung |
POST | /tenants/{tenantId}/entities | Create an entity (admin/owner or API key with entities:write) | entities:write | Schlüssel oder Sitzung |
GET | /tenants/{tenantId}/entities/{id} | Get one entity (the settings read) | entities:read | Schlüssel oder Sitzung |
PATCH | /tenants/{tenantId}/entities/{id} | Update entity settings (admin/owner or API key with entities:write) | entities:write | Schlüssel oder Sitzung |
DELETE | /tenants/{tenantId}/entities/{id} | Soft-delete (deactivate) an entity (admin/owner or API key with entities:write) | entities:write | Schlüssel oder Sitzung |
POST | /tenants/{tenantId}/entities/{id}/activate-live-operation | Move this company into live operation — deliberate, audited, once | entities:write | nur Sitzung |
GET | /tenants/{tenantId}/live-operation-status | Whether this company operates live | – | nur Sitzung |
GET | /tenants/{tenantId}/memberships | List the tenant's members (the Team table) | – | nur Sitzung |
PATCH | /tenants/{tenantId}/memberships/{userId} | Change a member's role (admin/owner, inline role change) | – | nur Sitzung |
DELETE | /tenants/{tenantId}/memberships/{userId} | Remove a member (admin/owner) | – | nur Sitzung |
POST | /tenants/{tenantId}/memberships/leave | Leave the organisation ("Organisation verlassen") | – | nur Sitzung |
GET | /tenants/{tenantId}/access-review | The access-review stamp (admin) | – | nur Sitzung |
POST | /tenants/{tenantId}/access-review/mark-reviewed | Mark tenant access as reviewed (admin, non-idempotent) | – | nur Sitzung |
GET | /tenants/{tenantId}/invitations | List the tenant's pending invitations ("ausstehend") | – | nur Sitzung |
POST | /tenants/{tenantId}/invitations | Create or re-invite an invitation (admin/owner) | – | nur Sitzung |
DELETE | /tenants/{tenantId}/invitations/{id} | Withdraw a pending invitation (admin/owner, "Zurückziehen") | – | nur Sitzung |
POST | /tenants/{tenantId}/invitations/{id}/resend | Resend a pending invitation (admin/owner) | – | nur Sitzung |
POST | /invitations/accept | Accept an invitation by token (any signed-in user) | – | nur Sitzung |
GET | /invitations/{token}/preview | Preview an invitation by token (UNAUTHENTICATED) | – | ohne Anmeldung |
| Konto & Abrechnung | ||||
GET | /me/account/close-disclosure | The counsel-owned retention disclosure shown before account closure | – | nur Sitzung |
GET | /me/account/close-blockers | Preconditions that must be resolved before the caller can close their account | – | nur Sitzung |
POST | /me/account/close | Close the caller's account and erase their identity (Art. 17) | – | nur Sitzung |
GET | /legal/current-versions | The legal documents currently published, and the sentence each is accepted by | – | Sitzung oder Schlüssel |
GET | /tenants/{tenantId}/audit-log | Tenant-scoped audit log (cursor-paginated, owner-only) | – | nur Sitzung |
GET | /tenants/{tenantId}/usage | Usage snapshot for the period (finalized-document rollup, admin/owner) | – | nur Sitzung |
GET | /tenants/{tenantId}/billing | The tenant's billing status (tier + effective price + masked account + usage) | – | Sitzung oder Schlüssel |
POST | /tenants/{tenantId}/billing/subscribe | Start a subscription — obtain permission to charge this account | – | Sitzung oder Schlüssel |
POST | /tenants/{tenantId}/billing/payment-method/replace | Replace the payment method this account already holds | – | Sitzung oder Schlüssel |
GET | /tenants/{tenantId}/billing-recovery | The billing status read that still answers a SUSPENDED account | – | nur Sitzung |
POST | /tenants/{tenantId}/billing-recovery/subscribe | Start a subscription from a SUSPENDED account whose mandate is revoked | – | nur Sitzung |
POST | /tenants/{tenantId}/billing-recovery/payment-method/replace | Replace the payment method from a SUSPENDED account whose mandate is active | – | nur Sitzung |
POST | /tenants/{tenantId}/legal-acceptances | Accept the currently published legal documents | – | nur Sitzung |
POST | /tenants/{tenantId}/processing-instructions | Submit an instruction or an objection to the processor | – | nur Sitzung |
GET | /tenants/{tenantId}/processing-instructions | List this account's instructions and objections, newest first | – | nur Sitzung |
GET | /tenants/{tenantId}/processing-instructions/{id} | One instruction or objection with its full text | – | nur Sitzung |
POST | /feedback | Send feedback about the screen you are on | – | nur Sitzung |
GET | /tenants/{tenantId}/legal-acceptances/{document}/document | Retrieve the record of an accepted legal document | – | nur Sitzung |
GET | /tenants/{tenantId}/legal-acceptance-status | Which legal documents this account still has to accept | – | nur Sitzung |
GET | /billing/plans | The self-serve plan catalog (unauth-safe) | – | ohne Anmeldung |
POST | /billing/provider-webhook | Inbound payment-provider webhook receiver (POC) | – | ohne Anmeldung |
| API-Schlüssel | ||||
GET | /tenants/{tenantId}/api-key-status | Whether the tenant has ≥1 usable live API key | – | Sitzung oder Schlüssel |
GET | /tenants/{tenantId}/api-keys | List the tenant's API keys (masked) | – | nur Sitzung |
POST | /tenants/{tenantId}/api-keys | Issue an API key | – | nur Sitzung |
POST | /tenants/{tenantId}/api-keys/{id}/rotate | Rotate a key | – | nur Sitzung |
POST | /tenants/{tenantId}/api-keys/{id}/revoke | Revoke a key immediately | – | nur Sitzung |
POST | /tenants/{tenantId}/api-keys/{id}/suspend | Suspend a key (operator-driven, reversible) | – | nur Sitzung |
POST | /tenants/{tenantId}/api-keys/{id}/unsuspend | Clear a key's suspension | – | nur Sitzung |
DELETE | /tenants/{tenantId}/api-keys/{id} | Revoke a key (REST alias for /revoke) | – | nur Sitzung |
| Webhooks | ||||
GET | /webhook-endpoints | List webhook endpoints for the active tenant/entity | – | nur Sitzung |
POST | /webhook-endpoints | Register a webhook endpoint | – | nur Sitzung |
GET | /webhook-endpoints/{id} | Get one webhook endpoint (masked secret) | – | nur Sitzung |
PATCH | /webhook-endpoints/{id} | Update a webhook endpoint (url / subscribedTypes / status) | – | nur Sitzung |
DELETE | /webhook-endpoints/{id} | Disable a webhook endpoint (soft-delete) | – | nur Sitzung |
POST | /webhook-endpoints/{id}/reveal-secret | Reveal the full signing secret (audit-logged, repeatable) | – | nur Sitzung |
POST | /webhook-endpoints/{id}/rotate-secret | Rotate the signing secret | – | nur Sitzung |
POST | /webhook-endpoints/{id}/test-event | Send a synthetic test event (async, "Testereignis senden") | – | nur Sitzung |
GET | /webhook-endpoints/{id}/deliveries | Per-endpoint delivery log (cursor-paginated) | – | nur Sitzung |
GET | /webhook-deliveries | Tenant-wide webhook delivery log (cursor-paginated) | – | nur Sitzung |
GET | /webhook-deliveries/{id} | One delivery + its ordered attempt timeline | – | nur Sitzung |
POST | /webhook-deliveries/{id}/replay | Replay a delivery (async, "Erneut senden") | – | nur Sitzung |
| Sandbox | ||||
POST | /sandbox/seed | Seed the caller's sandbox (test mode) with a deterministic German dataset. | sandbox:write | Schlüssel oder Sitzung |
POST | /sandbox/test-clock/advance | Fast-forward the sandbox clock, materializing all due runs. | sandbox:write | Schlüssel oder Sitzung |
POST | /sandbox/reset | Reset the sandbox to empty (optionally re-seed). TEST MODE ONLY. | sandbox:write | Schlüssel oder Sitzung |
GET | /sandbox/jobs/{id} | Poll a sandbox seed/advance/reset job. TEST MODE ONLY. | sandbox:write | Schlüssel oder Sitzung |