Kostenstelle oder Verteilung anlegen
Benötigte Berechtigung:company:write(Firmendaten ändern)
Echte Wirkung
/api/cost-centersKein Testversand aus der Dokumentation: Dieser Aufruf ist nicht als rein lesend gekennzeichnet. Nutze das Codebeispiel.
Legt eine Kostenstelle (kind center, mit code und name) oder eine Verteilung an (kind distribution, mit name und shares), wie in den Einstellungen der App. Die Nummer ist die KOST1 im DATEV-Export: 1 bis 8 Ziffern ohne führende Null oder 1 bis 8 Buchstaben ohne Umlaute, je Firma eindeutig, auch gegenüber archivierten, ohne Unterschied zwischen Groß- und Kleinschreibung. Die Steuerberatung muss sie in DATEV genauso anlegen, sonst führt DATEV die Buchungen als „nicht berücksichtigt“. Eine Verteilung braucht mindestens zwei verschiedene Kostenstellen, die nicht archiviert sind, und ihre Anteile ergeben zusammen 10000 Basispunkte (100 %). Verstößt die Anfrage gegen eine Regel, antwortet die Route mit 400 CostCenterRejected, context.field nennt das Feld und context.message den Satz der App; eine vergebene Nummer ergibt 409 CostCenterRejected. Bei einer Wiederholung schickst du denselben Idempotency-Key.
Benötigt einen Schlüssel mit der Berechtigung company:write.
AuthentifizierungBearer <bm_…>Empfohlen: Authorization: Bearer bm_…. Der Schlüssel wird nur einmal angezeigt; nie in URLs, Logs oder Frontend-Code ablegen.
Idempotency-Key*stringStabiler Schlüssel für genau diese Änderung: 1–128 druckbare ASCII-Zeichen ohne Leerzeichen. Bei Wiederholungen denselben Schlüssel und unveränderten Inhalt senden; das Ergebnis wird nicht nochmals erzeugt.
^[!-~]+$1 <= length <= 128cost center or distribution
application/json- body
Kostenstelle oder Verteilung zum Anlegen oder Ändern.
code?stringNur bei einer Kostenstelle: die KOST1 im DATEV-Export, 1 bis 8 Ziffern ohne führende Null oder 1 bis 8 Buchstaben ohne Umlaute, je Firma eindeutig. Fehlt bei einer Verteilung.
expectedUpdatedAt?stringNur beim Ändern: das zuletzt gelesene updatedAt, unverändert mit allen Nachkommastellen. Für API-Schlüssel Pflicht.
date-timekind?stringBeim Anlegen Pflicht: center für eine Kostenstelle, distribution für eine Verteilung. Beim Ändern ohne Wirkung.
"center""distribution"name?stringName, höchstens 60 Zeichen, etwa „Standort Nord“.
shares?array<>Nur bei einer Verteilung: die Kostenstellen mit ihren Anteilen, zusammen 10000 Basispunkte. Fehlt bei einer Kostenstelle.
Erfolg.
application/json- response
Kostenstelle oder Verteilung der Firma.
archivedAt?stringArchiviert seit diesem Zeitpunkt: lässt sich nicht mehr auswählen, Belege behalten sie. Fehlt, solange aktiv.
date-timecode?stringNur bei einer Kostenstelle: die KOST1 im DATEV-Export, 1 bis 8 Ziffern ohne führende Null oder 1 bis 8 Buchstaben ohne Umlaute, je Firma eindeutig. Fehlt bei einer Verteilung.
companyId?stringID der Firma.
uuidcreatedAt?stringAnlage in bimetrics.
date-timedocuments?integerZahl der Belege, die sie tragen, ohne gelöschte.
id?stringID der Kostenstelle oder Verteilung.
uuidkind?stringcenter für eine Kostenstelle, distribution für eine Verteilung.
"center""distribution"name?stringName, höchstens 60 Zeichen, etwa „Standort Nord“.
shares?array<>Nur bei einer Verteilung: die Kostenstellen mit ihren Anteilen, zusammen 10000 Basispunkte. Fehlt bei einer Kostenstelle.
updatedAt?stringLetzte Änderung.
date-timeused?booleantrue, sobald ein Beleg oder eine Buchung sie trägt, auch über eine Verteilung oder bei einem gelöschten Beleg mit Buchungen. Dann stehen Nummer und Anteile fest.
curl --fail-with-body "https://app.bimetrics.de/api/cost-centers" \ -H "Authorization: Bearer $BIMETRICS_API_KEY" \ -H "Idempotency-Key: rechnung-2026-001" \ -H "Content-Type: application/json" \ -d '{}'{ "code": "100", "companyId": "9c388e1f-04a6-4770-80bd-66cd98dd00d5", "createdAt": "2026-11-12T08:00:00Z", "documents": 12, "id": "5b0f8c3e-2a71-4d9e-8f16-7c4a9e2d3b58", "kind": "center", "name": "Standort Nord", "updatedAt": "2026-11-12T08:00:00Z", "used": true}Kostenstellen lesen GET
Liefert alle Kostenstellen und Verteilungen der Firma, auch archivierte, jeweils mit der Zahl der Belege (`documents`). `used` sagt, ob ein Beleg oder eine Buchung sie schon trägt, direkt oder über eine Verteilung: Dann stehen Nummer und Anteile fest. Benötigt einen Schlüssel mit der Berechtigung `read`.
Kostenstelle oder Verteilung ändern PUT
Ersetzt Name und Nummer einer Kostenstelle bzw. Name und Anteile einer Verteilung; `kind` bleibt, wie es ist. Schick deshalb immer alle Werte, auch die unveränderten. Den Namen kannst du jederzeit ändern. Nummer und Anteile stehen fest, sobald ein Beleg oder eine Buchung die Kostenstelle oder Verteilung trägt (`used`), damit ein erneuter Export alter Monate dieselben Zeilen ergibt. Eine Änderung daran lehnt die Route mit `409 CostCenterRejected` ab. Für andere Anteile legst du eine neue Verteilung an und archivierst die alte. `expectedUpdatedAt` ist das gelesene `updatedAt`; hat sich der Eintrag seitdem geändert, antwortet die Route mit `409 VersionConflict` und ändert nichts. Eine ID einer anderen Firma ergibt `404 CostCenterNotFound`. Benötigt einen Schlüssel mit der Berechtigung `company:write`.