MonKey Office Connect API – Splitbuchungen via buchungAdd
Beantwortet# MonKey Office Connect API – Splitbuchungen via buchungAdd
## Betreff (E-Mail / Support-Ticket)
**buchungAdd mit mehreren BuchungPositionAddItem erzeugt Fehler "Soll und Haben sind nicht gleich"**
---
## Problembeschreibung
Die Funktion `buchungAdd` der MonKey Office Connect API (JSON, v23.0.0, Schema 109) akzeptiert keine Splitbuchungen mit mehreren `BuchungPositionAddItem`-Einträgen.
Laut API-Dokumentation ist dies vorgesehen:
> *"Standardbuchungen enthalten ein BuchungPositionAddItem. Mehrere BuchungPositionAddItem werden für Splitt-Buchungen verwendet."*
In der Praxis scheitert jedoch **jeder** Aufruf mit 2+ Positionen mit der Fehlermeldung:
> *"Datensatzprüfung (Tabelle BUCHUNG, Zeile 0): Die Summen von Soll und Haben sind nicht gleich!"*
Dies betrifft auch triviale Fälle, bei denen Soll und Haben mathematisch exakt gleich sind.
---
## Reproduktion
### Funktioniert: Einzelne Position (1 BuchungPositionAddItem)
```json
{
"buchungAdd": {
"BuchungAddItem": {
"Datum": "2026-03-24",
"Text": "Testbuchung einfach",
"BelegNr": "TEST-SIMPLE",
"Waehrung": "EUR",
"BuchungPositionItemList": {
"BuchungPositionAddItem": [
{
"Betrag": "100,00",
"KontoSoll": 1200,
"KontoHaben": 1365,
"Steuersatz": "",
"Text": "Einzelbuchung"
}
]
}
}
}
}
```
**Ergebnis:** Statuscode 0, Buchung wird korrekt erstellt.
---
### Scheitert: Zwei identische Positionen (simpelster Fall)
```json
{
"buchungAdd": {
"BuchungAddItem": {
"Datum": "2026-03-24",
"Text": "Test Splitbuchung",
"BelegNr": "TEST-SPLIT",
"Waehrung": "EUR",
"BuchungPositionItemList": {
"BuchungPositionAddItem": [
{
"Betrag": "50,00",
"KontoSoll": 1200,
"KontoHaben": 1365,
"Steuersatz": "",
"Text": "Teil 1"
},
{
"Betrag": "50,00",
"KontoSoll": 1200,
"KontoHaben": 1365,
"Steuersatz": "",
"Text": "Teil 2"
}
]
}
}
}
}
```
**Ergebnis:** Statuscode 1 – *"Die Summen von Soll und Haben sind nicht gleich!"*
Soll = 50 + 50 = 100. Haben = 50 + 50 = 100. Die Summen **sind** gleich.
---
### Scheitert: Splitbuchung wie im GUI erstellt (Brutto + negative Gebühren)
Über die MonKey Office Benutzeroberfläche lässt sich folgende Splitbuchung problemlos erstellen (Funktion "Einnahme splitten"):
- Soll 1200 (Bank): 95,00
- Haben 1365 (Geldtransit): 100,00
- Haben 9998 (Verrechnungskonto): -5,00
Über die API scheitert der gleiche Vorgang:
```json
{
"buchungAdd": {
"BuchungAddItem": {
"Datum": "2026-03-24",
"Text": "SumUp Payout",
"BelegNr": ".........",
"Waehrung": "EUR",
"BuchungPositionItemList": {
"BuchungPositionAddItem": [
{
"Betrag": "100,00",
"KontoSoll": 1200,
"KontoHaben": 1365,
"Steuersatz": "",
"Text": "Bruttobetrag"
},
{
"Betrag": "-5,00",
"KontoSoll": 1200,
"KontoHaben": 9998,
"Steuersatz": "",
"Text": "Gebühren"
}
]
}
}
}
}
```
**Ergebnis:** Statuscode 1 – *"Die Summen von Soll und Haben sind nicht gleich!"*
---
## Getestete Varianten (alle gescheitert)
| Variante | Pos 1 | Pos 2 | Ergebnis |
|---|---|---|---|
| Identische Konten | Soll=1200, Haben=1365, 50€ | Soll=1200, Haben=1365, 50€ | Fehler |
| Gleicher Soll, anderer Haben | Soll=1200, Haben=1365, 100€ | Soll=1200, Haben=9998, -5€ | Fehler |
| Gleicher Haben, anderer Soll | Soll=1200, Haben=1365, 95€ | Soll=9998, Haben=1365, 5€ | Fehler |
| KontoSoll=0 für Split | Soll=1200, Haben=1365, 100€ | Soll=0, Haben=9998, -5€ | Fehler |
| KontoHaben=0 für Split | Soll=1200, Haben=1365, 95€ | Soll=9998, Haben=0, 5€ | Fehler |
| Alle Felder aus Template | (vollständig inkl. BuchungBetragBasis, OSS_Daten) | (vollständig) | Fehler |
| HTTP/1.0 mit Content-Length | (wie oben) | (wie oben) | Fehler |
---
## Erwartetes Verhalten
`buchungAdd` sollte mit mehreren `BuchungPositionAddItem`-Einträgen eine Splitbuchung erstellen, wie es die Dokumentation beschreibt und wie es über die GUI möglich ist.
Eine über die GUI erstellte Splitbuchung zeigt via `buchungGet` folgende Struktur:
```
KontoSoll: 1200, KontoHaben: 0 (= Split auf der Haben-Seite)
Journal:
Konto 1200: Soll=95,00 Haben=0,00
Konto 1365: Soll=0,00 Haben=100,00
Konto 9998: Soll=0,00 Haben=-5,00
```
---
## Umgebung
- MonKey Office Connect v23.0.0
- API Schema Version: 109
- Schnittstelle: JSON (`/monkeyOfficeConnectJSON`)
- Betriebssystem Server: Windows (VM)
- Client: Python httpx (HTTP/1.0 und HTTP/1.1 getestet)
---
---
*Erstellt am 27.03.2026*
-
Offizieller Kommentar
Sehr geehrte Damen und Herren,
Sie können einen Splitt so nicht erzeugen. Zuerst muss der Gesamtbetrag mit dem Konto angegeben werden, danach die Teilbeträge mit den entsprechenden Konten.
--- Soll gesplittet ---
{
"buchungAdd": {
"BuchungAddItem": {
"Datum": "2026-03-31",
"Text": "co_test3",
"BelegNr": "",
"Referenz": "",
"Notizen": "",
"Waehrung": "EUR",
"Kurs": "",
"BuchungPositionItemList": {
"BuchungPositionAddItem": [
{
"Betrag": "1200",
"KontoSoll": 0,
"KontoHaben": 1200,
"Kostenstelle1": "",
"Kostenstelle2": "",
"Steuersatz": "",
"Text": "",
"BuchungBetragBasis": 0,
"OSS_Daten": {
"OSSDatenItem": {
"Isocode": "",
"Steuersatz": "",
"Typ": 0
}
}
},
{
"Betrag": "400",
"KontoSoll": 4600,
"KontoHaben": 0,
"Kostenstelle1": "",
"Kostenstelle2": "",
"Steuersatz": "",
"Text": "",
"BuchungBetragBasis": 0,
"OSS_Daten": {
"OSSDatenItem": {
"Isocode": "",
"Steuersatz": "",
"Typ": 0
}
}
},
{
"Betrag": "800",
"KontoSoll": 4605,
"KontoHaben": 0,
"Kostenstelle1": "",
"Kostenstelle2": "",
"Steuersatz": "",
"Text": "",
"BuchungBetragBasis": 0,
"OSS_Daten": {
"OSSDatenItem": {
"Isocode": "",
"Steuersatz": "",
"Typ": 0
}
}
}
]
}
}
}
}
--- Haben gesplittet ---
{
"buchungAdd": {
"BuchungAddItem": {
"Datum": "2026-03-31",
"Text": "co_test4",
"BelegNr": "",
"Referenz": "",
"Notizen": "",
"Waehrung": "EUR",
"Kurs": "",
"BuchungPositionItemList": {
"BuchungPositionAddItem": [
{
"Betrag": "1200",
"KontoSoll": 1200,
"KontoHaben": 0,
"Kostenstelle1": "",
"Kostenstelle2": "",
"Steuersatz": "",
"Text": "",
"BuchungBetragBasis": 0,
"OSS_Daten": {
"OSSDatenItem": {
"Isocode": "",
"Steuersatz": "",
"Typ": 0
}
}
},
{
"Betrag": "400",
"KontoSoll": 0,
"KontoHaben": 8400,
"Kostenstelle1": "",
"Kostenstelle2": "",
"Steuersatz": "",
"Text": "",
"BuchungBetragBasis": 0,
"OSS_Daten": {
"OSSDatenItem": {
"Isocode": "",
"Steuersatz": "",
"Typ": 0
}
}
},
{
"Betrag": "800",
"KontoSoll": 0,
"KontoHaben": 8300,
"Kostenstelle1": "",
"Kostenstelle2": "",
"Steuersatz": "",
"Text": "",
"BuchungBetragBasis": 0,
"OSS_Daten": {
"OSSDatenItem": {
"Isocode": "",
"Steuersatz": "",
"Typ": 0
}
}
}
]
}
}
}
}Aktionen für Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
1 Kommentar