Dauerbuchungen suchen
Benötigte Berechtigung:read(Daten lesen)
Sucht die Dauerbuchungen der Firma: ein fester Betrag im festen Rhythmus ohne eigene Rechnung, etwa die Büromiete. Gelöschte fehlen, auch wenn ihre Belege bleiben.
Benötigt einen Schlüssel mit der Berechtigung read.
AuthentifizierungBearer <bm_…>Empfohlen: Authorization: Bearer bm_…. Der Schlüssel wird nur einmal angezeigt; nie in URLs, Logs oder Frontend-Code ablegen.
Filter, Sortierung und Seite. Dokumentierte Filterattribute: x-bimetrics-filter.
application/json- body
Suche mit Filter, Sortierung und Seiten. Der Filterausdruck steht auf oberster Ebene; {} liefert alle Einträge.
attribute?stringFilterattribut für eq, in, range und oneof, siehe x-bimetrics-filter der Operation. Groß-/Kleinschreibung und Punkte werden ignoriert.
children?array<>Teilfilter für and, or und not.
direction?|array<>Richtung je Eintrag in sort; Standard asc.
includeDeleted?booleantrue liefert auch gelöschte Einträge, erkennbar an deletedAt, aber nur bei Belegen, Kontakten, Bankkonten, Umsätzen und Buchungen; die übrigen Suchrouten ignorieren das Feld. Ohne das Feld oder mit false nur Einträge, die nicht gelöscht sind. Für Abgleiche von Löschungen mit range auf deletedAt, siehe Delta-Sync.
falsekind?stringArt des Filters: and/or verknüpfen children, not verneint children, eq vergleicht attribute mit value (null prüft auf leer), in sucht value als Text im Attribut (enthält, ohne Groß-/Kleinschreibung), range prüft lower ≤ Attribut ≤ upper (eine Grenze genügt), oneof prüft, ob das Attribut einem Wert der Liste value entspricht. Leer: alle Einträge.
"""and""or""eq""not""in""range""oneof"limit?integerTreffer je Seite. Standard und Höchstwert 1000; größere Werte werden auf 1000 begrenzt.
0 <= value1000lower?unknownUntergrenze für range, einschließlich.
offset?integerAnzahl übersprungener Treffer. Haben mehrere Treffer dieselben Werte in sort, ist ihre Reihenfolge nicht festgelegt, und sie können zwischen zwei Seiten doppelt kommen oder fehlen; id als letztes Attribut in sort oder ein Abgleich mit Überlappung (Delta-Sync) hilft dagegen.
0 <= value <= 10000000sort?|array<string>Attribute, nach denen sortiert wird; nur sortierbare Attribute (sortable in x-bimetrics-filter). Ein Attribut mit sortable: false ergibt 400.
upper?unknownObergrenze für range, einschließlich.
value?unknownVergleichswert: für eq ein Wert oder null, für in ein Text, für oneof eine Liste.
Filterattribute
Dokumentiert sind diese Attribute für attribute; für sort nur die als sortierbar markierten. Aufbau des Filters: Filtern und Paginieren.
| Attribut | Typ | Sortierbar | Beschreibung |
|---|---|---|---|
id | uuid | ja | ID der Dauerbuchung. |
friendlyName | string | ja | Bezeichnung. |
collectionNumber | string | ja | Nummer der Dauerbuchung. |
kind | string | ja | Art der erzeugten Belege: `receipt` (Eingangsbeleg) oder `invoice` (Ausgangsrechnung). |
issuer.name | string | ja | Name des Ausstellers der erzeugten Belege. |
recipient.name | string | ja | Name des Empfängers der erzeugten Belege. |
updatedAt | date-time | ja | Zeitpunkt der letzten Änderung. |
Eine Seite der Treffer.
application/json- response
Eine Seite gefundener Dauerbuchungen.
items?array<>|Die Treffer dieser Seite.
limit?|Verwendetes limit.
offset?integerVerwendetes offset.
total?integerAnzahl aller Treffer des Filters.
curl --fail-with-body "https://app.bimetrics.de/api/document/collection/contract/filter" \ -H "Authorization: Bearer $BIMETRICS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"direction":["asc","asc"],"limit":100,"offset":0,"sort":["friendlyName","id"]}'{ "items": [ { "collectionNumber": "MIETE", "companyId": "9c388e1f-04a6-4770-80bd-66cd98dd00d5", "createdAt": "2026-01-05T09:00:00Z", "documentContractRepetitionFixed": { "end": null, "repetitionPeriodDays": 0, "repetitionPeriodMonth": 1, "start": { "day": 1, "month": 1, "year": 2026 } }, "friendlyName": "Büromiete", "id": "6d0e3f52-81a4-4b7c-9f26-2a7e5c1d4b83", "issuer": { "address": "", "customerNumber": null, "iban": "", "name": "Muster Immobilien GmbH", "taxId": "" }, "kind": "receipt", "positionTemplate": [ { "additionalInfo": { "freeOfVat": false, "reverseCharge": false }, "category": "rent_payment", "label": "Miete", "totalFixed": 120000, "totalRatio": null, "vatPercentage": "19" } ], "recipient": { "address": "", "customerNumber": null, "iban": "", "name": "", "taxId": "" }, "updatedAt": "2026-01-05T09:00:00Z", "uploadDocument": null, "uploadDocumentId": null } ], "limit": 100, "offset": 0, "total": 1}Dauerbuchung anlegen POST
Legt eine Dauerbuchung an, wie in der App: Für jede Periode entsteht sofort ein Beleg mit Buchung, auch für vergangene. `POST /api/document/collection/contract/preview` zeigt das vorher. Der Rhythmus ist 1, 3, 6 oder 12 Monate, `end` gilt ausschließlich und liegt nach `start`. Zeilen haben einen festen Betrag. Geprüft wird wie im Formular der App: Bezeichnung, Art `invoice` oder `receipt`, 1 bis 100 Zeilen mit Betrag oder Anteil, Kategorie passend zu Art, Verwendung und Kontenrahmen, Steuersatz 19, 7 oder 0 %, auf Eingangsbelegen auch 9 oder 5,5 %, soweit die Kategorie ihn zulässt, Steuerfall bei 0 % auf Eingangsbelegen und die Gegenpartei der Art, außer alle Kategorien werden direkt gebucht. Verstöße ergeben `400 InvalidBookkeepingChange` mit `context.field`. Bezeichnung, Kategorie und Steuersatz werden nur geprüft, wenn sie neu sind. Eine Wiederholung mit gleichem Idempotency-Key wirkt nicht doppelt. Benötigt einen Schlüssel mit der Berechtigung `collections:write`.
Änderung einer Dauerbuchung prüfen POST
Sagt, was Anlegen, Ändern, Beenden oder Löschen mit den Periodenbelegen täte, und ändert nichts. Gerechnet wird wie beim Speichern, Ablehnungen sind dieselben. `action` ist `create`, `update`, `end` oder `delete`; außer bei `create` nennt `id` die Dauerbuchung. `end` nennt bei `action` `end` das neue Ende: Es darf nie verlängern (`422 DocumentContractEndExtends`). `pastDocuments` gilt bei `delete`. Benötigt einen Schlüssel mit der Berechtigung `collections:write`.