---
title: "Erfasst eine Leistung – Stunden, Material oder Pauschale"
method: POST
path: "/api/v1/leistungen"
---

# Erfasst eine Leistung – Stunden, Material oder Pauschale

`POST /api/v1/leistungen`

## Request

- Base URL: `https://rechnungslotse.de`
- URL: `https://rechnungslotse.de/api/v1/leistungen`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://rechnungslotse.de/authorize`, token URL `https://rechnungslotse.de/api/oauth/token`, scopes: `schreiben`)

Erfasst eine Leistung – Stunden, Material oder Pauschale. Pflicht: `kunde` (Name) oder `kunde_id`, `datum` als `JJJJ-MM-TT`, `bezeichnung` und `menge` als Dezimalzahl (1,5 statt 1500). `einheit` als deutsches Wort, Vorgabe Stunde; `einzelpreis` in Euro und `ust_prozent` kommen aus `artikel`, wenn du einen nennst, und mitgeschickte Werte gewinnen. Ein unbekannter Kunde wird NICHT angelegt, sondern abgewiesen (404 `kunde_unbekannt`) – sonst füllt sich die Kartei mit Schreibweisen derselben Firma. Idempotent über `Idempotency-Key`.

## Headers

- `Idempotency-Key` string

## Response `201`

201 mit Kennung, Kunde, Menge in Tausendsteln, Einheit, Einzelpreis und Nettobetrag in Cent.

- object

## Other responses

- `400`: Eingabe unbrauchbar: invalid_input
- `401`: Kein oder ungültiger Zugangsschlüssel: api_schluessel_ungueltig, api_schluessel_abgelaufen
- `403`: Recht „schreiben“ fehlt am Schlüssel.
- `422`: Die Rechnung erfüllt EN 16931 nicht – `checks` nennt die Regeln.
- `429`: Ratengrenze oder Kontingent: quota_exhausted, rate_limited. Retry-After sagt, wann.
- `503`: Prüfdienst nicht erreichbar – später wiederholen.

---

[API](https://skmtc.dev/rechnungslotse/apis/rechnungslotse-schnittstelle-v1.md) · [All operations](https://skmtc.dev/rechnungslotse/apis/rechnungslotse-schnittstelle-v1/llms.txt) · [OpenAPI document](https://skmtc.dev/rechnungslotse/apis/rechnungslotse-schnittstelle-v1/revisions/0997b13254c2?raw)
