bimetricsEntwickler
Kostenstellen

Kostenstelle oder Verteilung ändern

Als Markdown ansehen

Benötigte Berechtigung:company:write(Firmendaten ändern)

Echte Wirkung

Ändert Daten der Firma; wird atomar mit Idempotenzbeleg und Herkunft protokolliert.
put/api/cost-centers/{id}

Kein Testversand aus der Dokumentation: Dieser Aufruf ist nicht als rein lesend gekennzeichnet. Nutze das Codebeispiel.

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.

Authentifizierung

headerAuthentifizierungBearer <bm_…>

Empfohlen: Authorization: Bearer bm_…. Der Schlüssel wird nur einmal angezeigt; nie in URLs, Logs oder Frontend-Code ablegen.

Pfadparameter

id*string

ID der Kostenstelle oder Verteilung (UUID).

Formatuuid

Header-Parameter

Idempotency-Key*string

Stabiler 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.

Muster^[!-~]+$
Länge1 <= length <= 128

Request-Body

name, code or shares; expectedUpdatedAt from the last read

application/json
  1. body

Kostenstelle oder Verteilung zum Anlegen oder Ändern.

code?string

Nur 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?string

Nur beim Ändern: das zuletzt gelesene updatedAt, unverändert mit allen Nachkommastellen. Für API-Schlüssel Pflicht.

Formatdate-time
kind?string

Beim Anlegen Pflicht: center für eine Kostenstelle, distribution für eine Verteilung. Beim Ändern ohne Wirkung.

Wert in"center""distribution"
name?string

Name, 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.

Antworten

Erfolg.

application/json
  1. response

Kostenstelle oder Verteilung der Firma.

archivedAt?string

Archiviert seit diesem Zeitpunkt: lässt sich nicht mehr auswählen, Belege behalten sie. Fehlt, solange aktiv.

Formatdate-time
code?string

Nur 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?string

ID der Firma.

Formatuuid
createdAt?string

Anlage in bimetrics.

Formatdate-time
documents?integer

Zahl der Belege, die sie tragen, ohne gelöschte.

id?string

ID der Kostenstelle oder Verteilung.

Formatuuid
kind?string

center für eine Kostenstelle, distribution für eine Verteilung.

Wert in"center""distribution"
name?string

Name, 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?string

Letzte Änderung.

Formatdate-time
used?boolean

true, 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.

Beispielanfrage
curl --fail-with-body "https://app.bimetrics.de/api/cost-centers/497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Authorization: Bearer $BIMETRICS_API_KEY" \  -H "Idempotency-Key: rechnung-2026-001" \  -H "Content-Type: application/json" \  -d '{}'
Beispielantwort
{  "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, Halle 1",  "updatedAt": "2026-11-12T09:30:00Z",  "used": true}

Kostenstelle oder Verteilung anlegen POST

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`.

Kostenstelle oder Verteilung archivieren POST

Archiviert eine Kostenstelle oder Verteilung: Sie lässt sich nicht mehr auswählen, Belege und Buchungen behalten sie, auch im DATEV-Export. Gelöscht wird sie nie. Eine Kostenstelle, die noch zu einer aktiven Verteilung gehört, archivierst du erst nach dieser Verteilung, sonst `409 CostCenterRejected`. Ist sie schon archiviert, ändert sich nichts. Benötigt einen Schlüssel mit der Berechtigung `company:write`.