Ab Release v308 (11-2026) gehört eine Rechnung nicht mehr zu einer Buchungsperiode, sondern zum Mandanten. Für die API ist das ein Breaking Change: Scripts, die mit Rechnungen arbeiten, musst du anpassen.
Wenn du Webling nur im Browser nutzt, musst du nichts tun.
Warum wir das ändern
Bisher musste man offene Rechnungen am Jahresende ins neue Jahr verschieben. Dafür brauchte es eine Folgeperiode mit den passenden Konten und ein Übertragskonto. Wurde eine Rechnung vergessen, liess sie sich nach dem Abschluss der Periode nicht mehr bezahlen.
Neu bleibt eine Rechnung offen, bis sie bezahlt ist, unabhängig vom Geschäftsjahr. Der Umsatz bleibt im Jahr, in dem er entstanden ist. Die Zahlung wird in der Periode gebucht, in der das Geld eingeht. So arbeitet eine Offene-Posten-Buchhaltung üblicherweise.
Bin ich betroffen?
Du bist betroffen, wenn ein Script oder eine Integration über die API:
- Rechnungen erstellt,
- Rechnungen nach Buchungsperiode filtert oder
children.debitoreiner Periode liest, -
parentseiner Rechnung als Buchungsperiode verwendet, - Rechnungen in eine andere Periode verschiebt oder
- Zahlungen für Rechnungen aus einer früheren Periode bucht.
Hat dein Webling in den letzten Wochen über die API auf Rechnungen oder Buchungsperioden zugegriffen, siehst du als Administrator in Webling einen Hinweis. Die Details stehen unter Administration › API.
Was sich in der API ändert
| Bisher | Neu | |
|---|---|---|
parents einer Rechnung |
Buchungsperiode | Mandant (periodgroup) |
POST /debitor |
"parents": [<Perioden-ID>] |
"parents": [<Mandanten-ID>] |
PUT /debitor/{id} mit anderem parents
|
Verschieben in eine andere Periode, zusammen mit allen Buchungen | wird abgelehnt (A debitor cannot be moved) |
GET /period/{id} |
children.debitor |
entfällt |
GET /periodgroup/{id} |
– | neu children.debitor
|
| Buchungen einer Rechnung | alle in derselben Periode | in beliebigen Perioden desselben Mandanten |
Die Properties der Rechnung, die Rechnungsnummer und die Verknüpfungen (revenue, payment, writeoff) bleiben gleich. Eine Buchungsgruppe (entrygroup) gehört weiterhin zu einer Periode.
So passt du deine Scripts an
Rechnung erstellen
Gib als Parent den Mandanten statt der Periode an. Die Mandanten-ID ist der Parent der Periode: GET /period/2230 liefert "parents": [800].
- "parents": [2230], + "parents": [800],
Es ändert sich nur der Parent der Rechnung. Die Buchungsgruppe der Rechnungsposten bleibt in der Periode, in der der Umsatz gebucht wird.
Rechnungen abfragen
| Du willst … | Bisher | Neu |
|---|---|---|
| alle Rechnungen eines Mandanten | $parents.$parents.$id = 800 |
$parents.$id = 800 |
| Rechnungen mit einer Buchung in einer Periode | $parents.$id = 2230 |
$links.entry.$parents.$parents.$id = 2230 |
| Rechnungen mit Rechnungsposten in einer Periode | $parents.$id = 2230 |
$links.revenue.$parents.$parents.$id = 2230 |
| Rechnungen mit Zahlung in einer Periode | – | $links.payment.$parents.$parents.$id = 2230 |
Bisher lieferten diese Abfragen dasselbe Ergebnis. Neu kann eine Rechnung aus 2025 im Jahr 2026 bezahlt werden. $links.entry… findet sie dann in beiden Perioden, $links.revenue… nur in 2025.
Die Periode einer Rechnung findest du über den ersten Rechnungsposten. GET /debitor/{id} liefert ihn unter links.revenue[0], sein parents[0] ist die Buchungsgruppe. GET /entrygroup/{id} liefert unter parents[0] die Periode.
Zahlung in einer späteren Periode buchen
Wird eine Rechnung aus einer früheren Periode bezahlt, gehört die Zahlung in die Periode, in der das Geld eingeht. Dort muss sie auf das Debitorenkonto dieser Periode gebucht werden. Mit dem Konto der alten Periode lehnt die API die Zahlung ab (Accounts and its entries must be in the same period).
Im Beispiel liegt der Rechnungsposten in der Periode 2023 (ID 7233), bezahlt wird in der Periode 2024 (ID 6150).
- Das Debitorenkonto steht beim Rechnungsposten: In
GET /debitor/8612istlinks.revenue[0].links.debit[0]das Konto7295. Seine Kontovorlage liefertGET /account/7295unter"accounttemplate": [6827]. - Hol das Konto dieser Vorlage in der neuen Periode:
POST /period/6150/accountmit{"accounttemplateId": 6827}liefert{"id": 6828}. Fehlt das Konto in der Periode, wird es angelegt. Die Periode muss offen sein. - Buche die Zahlung mit diesem Konto im Haben, hier gegen das Bankkonto 6971 der Periode 2024.
PUT /debitor/8612:
{
"links": {
"payment": [{
"type": "entry",
"properties": { "amount": 100, "title": "Mitgliederbeitrag 2023 bezahlt" },
"parents": [{
"type": "entrygroup",
"properties": { "date": "2024-02-01", "title": "Zahlung" },
"parents": [6150]
}],
"links": { "credit": [6828], "debit": [6971] }
}]
}
}Achtung: links.payment ersetzt die bisherigen Zahlungen der Rechnung. Hat sie schon eine Teilzahlung, gib deren ID mit: "payment": [8662, { …neue Zahlung… }].
Fehlermeldungen
Gibt ein Request noch die Periode als Parent an, antwortet die API mit einem Fehler, der die Lösung nennt:
Since release 11-2026 the parent of a debitor is the periodgroup. The instance 2230 is a period, use its periodgroup 800 as parent.
Das gilt für parents beim Erstellen und Ändern einer Rechnung und für die Filter $parents.$id = <Perioden-ID> und $parents.$parents auf /debitor.
Achtung: Nicht jeder alte Filter löst einen Fehler aus. Filter wie $parents.title = "Rechnungsjahr 2026" oder Pfade über andere Objekte wie /member?filter=$links.debitor.$parents.$id = 2230 liefern ohne Fehlermeldung ein leeres Ergebnis. Prüfe deshalb jedes $parents in deinem Script, das sich auf Rechnungen bezieht.
Stichtag und Umstellung
Betroffene Webling stellen wir nicht sofort um. Bis zum Stichtag bleibt dein Webling auf der bisherigen Version und bekommt keine weiteren Updates. Danach wird es umgestellt. Den Stichtag findest du unter Administration › API.
- Umstellung testen: Auf Anfrage können wir dir eine Kopie deines Webling auf der neuen Version erstellen. Dort kannst du deine Scripts ausprobieren, ohne deine echten Daten zu verändern. Melde dich bei Bedarf beim Support.
- Früher umstellen: Sind deine Scripts bereit, klicke unter Administration › API auf Jetzt umstellen. Die Umstellung lässt sich nicht rückgängig machen. Dein Webling ist währenddessen einige Minuten nicht erreichbar.
Hilfe
Hast du Fragen oder möchtest du eine Testkopie? Melde dich über Administration › Support.
Alle Änderungen findest du auch im Changelog der API-Dokumentation.