Zahlungsabgleich, gebucht dort, wo das Hauptbuch liegt
Ihre Engine weiß bereits, welche Zahlung welche Rechnung ausgleicht. Was sie nicht weiß, ist, ob das System dieses Kunden das als zweiseitigen Buchungssatz erwartet oder als Zahlung auf einen Beleg, den es schon führt. Maesn liefert beide Wege und die Konten, die jeder braucht.
- DEBITDas Bankkonto, auf dem sie landete
- CREDITDie Forderung, die sie ausgleicht
Es gibt kein Feld für das Gegenkonto. Die zweite Seite ist eine zweite Zeile, und der Leitfaden erwartet, dass Sie beide benennen.
Ein abgeglichenes Ergebnis, zwei unvereinbare Ziele
Die Abgleich-Engine zu bauen ist schwer und begrenzt. Ihr Ergebnis ins Hauptbuch zu bringen ist weder das eine noch das andere, denn das Hauptbuch ist bei jedem Kunden ein anderes, und sie sind sich nicht einig, wie ein Ausgleich aussieht.
Die Arbeit, die Ihr Produkt vorgelagert leistet, ist der Teil, den niemand sonst für Sie tun kann: verzögerte Gutschriften, gebündelte Auszahlungen, Gebühren, Währung, Erstattungen. Das Ergebnis davon ist sauber und einfach, ein Satz Buchungen, bereit zum Buchen. Dann sagt ein Kunde, er sei auf DATEV, oder auf Twinfield, oder seine niederländische Gesellschaft laufe auf Exact Online, und aus einem begrenzten Entwicklungsproblem wird ein offenes.
Offen wird es nicht durch die Zahl der Anbindungen, sondern dadurch, dass sie sich über das Objekt uneinig sind. Ein Buchungssatz verlangt, beide Seiten der Buchung zu benennen, und das heißt, den Kontenrahmen des Kunden zu kennen und zu entscheiden, welches Konto jede Seite trifft. Eine Zahlung verlangt weniger und etwas anderes: ein Konto, einen Betrag, und die Kennung der Rechnung, die sie ausgleicht, denn das System führt diese Rechnung bereits und ordnet ihr das Geld zu. Das sind verschiedene Funktionen in Ihrem Produkt und nicht zwei Adapter um eine Funktion.
Und die Aufteilung ist auf eine Weise ungleich, die bei der Planung zählt. Der Weg, der die meisten Systeme erreicht, ist zugleich der, der Ihnen am meisten abverlangt, also erreicht ein Produkt, das nur den leichteren umsetzt, eine Handvoll Systeme, und eines, das nur den schwereren umsetzt, verfehlt die, die ihn nicht annehmen. Die Lesezugriffe hinter beiden Wegen kommen aus Stammdaten, die vorher zusammenpassen müssen, und das ist ein eigener dokumentierter Use Case.
Eine Buchungsform, und die Konten, auf die sie verweisen muss
Was eine abgeglichene Buchung tragen darf, ist je System dokumentiert, und die Felder, die jedes System annimmt, sind genau die, die eine Buchung zu einer Buchung machen.
Die zwei Felder, die jedes System hat, sind das Konto und die Seite, und das ist die ganze doppelte Buchführung und der Grund, warum eine abgeglichene Buchung überhaupt übertragbar ist. Alles darüber hinaus ist die Stelle, an der sich Systeme unterscheiden, und die Unterschiede sind vor dem Bau bekannt: dieselben normalisierten Objekte liefern den Kontenrahmen, die Steuersätze und die Journale, auf die Ihre Buchung verweist, und ein Steuersatz kommt häufig ohne Regel zu seiner Anwendung an, und das ist eine Entscheidung, die bei Ihnen bleibt, und keine, die die Anbindung trifft.
Zwei Dinge, die die Buchung trägt, sind zu nennen, weil man sie leicht übersieht. Sie nimmt eine Buchungsperiode, eine Buchung kann also in der Periode landen, in die sie gehört, und nicht in der, in der sie gesendet wurde. Und sie nimmt ein Storno-Kennzeichen, eine Korrektur hat also eine dokumentierte Form. Anhänge funktionieren genauso: die Anfrage ist mehrteilig, und eine Datei kann an eine bestimmte Zeile gebunden werden, so landet ein Kontoauszug an der Buchung statt in einem Ordner. Wo ein System etwas führt, wofür das gemeinsame Modell kein Feld hat, ist am Modell vorbeizugreifen dokumentiert, und der Kunde gibt das alles einmal frei.
Was die Anbindung nicht tut, ist die Buchführung zu entscheiden. Der Leitfaden verlangt, für jede Buchung das Konto und das Gegenkonto anzugeben, und das ist die richtige Aufteilung: welches Konto eine Gebühr trifft, wie sich eine gebündelte Auszahlung aufteilt, und in welche Periode sie gehört, sind Fragen an die Bücher Ihres Kunden, die keine Integrationsschicht beantworten kann.
Ein Stapel Buchungen, gebucht so, wie jedes System sie annimmt
Ein Abgleichlauf erzeugt nicht eine Buchung, er erzeugt einen Zyklus davon. Ein System im Besonderen ist genau dafür gebaut, und sein Weg ist verschieden genug, um ihn einzuplanen.
Ein Buchungssatz je Aufruf, und die Antwort sagt Ihnen, ob er gebucht wurde. Das ist der Weg, den die Feldlisten darüber beschreiben, und die neun Feldlisten auf diesem Endpunkt sind sich darüber alle einig.
Eine Liste von Buchungssätzen in einem Aufruf, und die Antwort ist eine Aufgabe und kein Ergebnis. Sein eigener Leitfaden nennt dafür GET /asyncTask und darüber erfahren Sie, ob der Stapel angenommen wurde.
DATEV Rechnungswesen steht nicht auf der Feldliste des Endpunkts für die einzelne Buchung, und das liest sich wie fehlende Unterstützung, bis man seinen eigenen Leitfaden findet. Es bucht von Haus aus über den Stapelweg, und das ist auch die Form, die ein Abgleichlauf will: ein Ausgleichszyklus erzeugt viele Buchungssätze auf einmal und nicht einen.
Der Stapelweg passt besser zu diesem Use Case, und der Grund ist strukturell und keine Frage der Bequemlichkeit: ein Ausgleichszyklus erzeugt viele Buchungen auf einmal, und sie mit je einem Aufruf zu buchen macht aus einem einzigen Geschäftsvorfall eine Warteschlange, die Sie verwalten müssen. Eine Liste zu übergeben und das Ergebnis abzufragen ist die Form, die die Arbeit ohnehin hat. Von Anfang an für diese Antwort zu bauen ist weit billiger als Nachrüsten, denn ein Schreibvorgang, der eine Aufgabe zurückgibt, und einer, der ein Ergebnis zurückgibt, brauchen verschiedene Fehlerbehandlung um sich herum.
Die praktische Folge ist ein zweiter Codepfad, und er sollte früh eingepreist werden. An DATEV Rechnungswesen zu buchen heißt, eine Liste zusammenzustellen, sie zu übergeben und eine Auftragskennung gegen das zu halten, was Sie gesendet haben. An Xero zu buchen heißt ein Aufruf je Buchung und eine Antwort in der Rückmeldung. Dieselbe Buchung, zwei verschiedene Programme darum herum, und der Unterschied ist unsichtbar, bis der erste Kunde auf dem anderen System ankommt.
Das System, um das es hier geht, in den Worten eines Kunden
Rally hat eine direkte DATEV-Integration durch eine Schnittstelle ersetzt.
“Maesn hat vollständig verändert, wie wir an DATEV anbinden. Was eine komplexe Direktintegration geworden wäre, wurde dank ihrer REST-API und der DATEV-Sandbox ein reibungsloses, eingängiges Verfahren.”


Rally ist der Gegenstand dieser Seite von der anderen Seite her. Das Zitat nennt DATEV, und es nennt die Sandbox, und das ist der Teil, auf den es einem Team ankommt, das Buchungen schreibt: ein Ort, an dem man die Form eines Buchungssatzes richtig hinbekommt, bevor er in den Büchern eines Kunden landet. Ihr veröffentlichter Bericht beschreibt, wie eine komplexe Direktintegration ersetzt wurde, und der Abschnitt darüber ist die konkrete Fassung dessen, was damit ersetzt wird. Systeme wie Business Central sitzen auf der anderen Seite der Teilung und nehmen beide Wege, und sevdesk nimmt nur die Zahlung, und um diesen Unterschied geht es im ersten Abschnitt.
Beide Wege und ihre Bezüge, je System gezählt
Die zwei Wege, auf denen ein abgeglichenes Ergebnis ankommen kann, dann die Bezüge einer Buchung, gezählt aus der Dokumentation des jeweiligen Systems.
| Was Sie brauchen | Heute | Auf Anfrage | System kann es nicht |
|---|---|---|---|
| Buchungssätze, schreiben | 10 | 11 | 8 |
| Zahlungen, schreiben | 6 | 16 | 7 |
| Kontenrahmen, lesen | 19 | 8 | 2 |
| Steuersätze, lesen | 12 | 14 | 3 |
| Journale, lesen | 5 | 15 | 9 |
| Dimensionen, lesen | 3 | 17 | 9 |
| Bankzeilen, lesen | 0 | 21 | 8 |
Lesen Sie die oberen zwei Zeilen zusammen statt getrennt. Sie sind fast getrennte Mengen von Systemen, sie zu addieren beschreibt also nichts, und eine von beiden als die Zahl zu nehmen würde die eine zu groß machen und die andere verbergen. Die Zeilen darunter sind das, worauf ein Buchungssatz verweisen muss, und sie dünnen in der üblichen Richtung aus: Konten fast überall, Steuersätze auf den meisten, Journale und Dimensionen auf einer Handvoll.
Die letzte Zeile ist die, um die herum diese Seite gebaut ist. Bankzeilen sind auf keinem der angebundenen Systeme lesbar, hier vergleicht also nichts einen Kontoauszug mit offenen Rechnungen. Deshalb hören auch die Debitorenseite und die Kreditorenseite beide beim Beleg auf und nicht bei der Bank, und deshalb ist nur das zu lesen, was sich geändert hat, der Weg, die offenen Posten aktuell zu halten, mit denen Sie abgleichen.
Sie gleichen ab, wir buchen das Ergebnis
Das ist die eine Seite dieser Familie, auf der die Grenze schon von ihrer Vorgängerin richtig gezogen war, und die Abdeckung ist der Grund, warum sie hält.
- Beide dokumentierten Buchungswege
- Die Konten, Sätze und Journale
- Stapelbuchung, wo es sie gibt
- Der Anhang, am Buchungssatz
- Was jede Zahlung ausgleicht
- Welches Konto jede Seite trifft
- Wie sich eine Sammelzahlung teilt
- Wann die Buchung geschrieben wird
Alles links ist die Anbindung: zwei Wege ins Hauptbuch statt einer Anbindung je Buchhaltungsplattform, die Stammdaten, auf die ein Buchungssatz verweisen muss, unter einem Satz Feldnamen, der Stapelweg, wo ein System ihn anbietet, und eine Datei, die mit der Buchung mitreist. Das ist der Teil, der sonst mit jedem Kunden wächst, der etwas Neues einsetzt.
Alles rechts ist Ihre Engine, und in diesem Use Case ist das die Substanz. Welche Zahlung welche Rechnung ausgleicht, ist eine Frage nach Daten, die wir nicht sehen, denn Bankzeilen sind über kein angebundenes System lesbar. Wie sich eine gebündelte Auszahlung aufteilt, auf welches Konto eine Gebühr gehört und wann ein Zyklus bucht, sind Entscheidungen über die Bücher Ihres Kunden und den Ablauf Ihres Produkts.
Zwei Dinge gehören hierher, weil die Seite, die diese ersetzt, sie unter die falsche Überschrift gestellt hat. Dass eine Buchung zweimal gebucht wird, verhindert Ihr Schreibvorgang dadurch, dass er einmal stattfindet, und keine Zusage von uns, und weil kein Objekt Löschen freigeschaltet hat, ist die Korrektur einer Doppelbuchung eine Stornierung und keine Entfernung. Und die steuerliche Behandlung eines Buchungssatzes bleibt bei Ihnen: wir liefern die Sätze, die das System veröffentlicht, in der Form, in der es sie veröffentlicht. Der lastModified-Filter sorgt dafür, dass die Konten und Sätze, die Sie zwischengespeichert haben, nicht von denen abweichen, die Ihr Kunde sieht.
Eine Zahlung einem offenen Posten zuzuordnen ist die Monatsabschlussarbeit von Finanzteams, und sie ist der Grund, warum die zwei Schreibwege für sie überhaupt zählen.
Häufige Fragen
Gleicht Maesn die Zahlungen für uns ab?
Wie kommt ein abgeglichenes Ergebnis ins Hauptbuch?
Warum gibt es kein Feld für das Gegenkonto?
Können wir einen ganzen Ausgleichsstapel auf einmal buchen?
Können wir den Kontoauszug oder den Beleg anhängen?
Was ist mit Kostenstellen auf der Buchung?
Bildet Maesn unsere Kategorien auf ihre Konten ab?
Wie vermeiden wir, dieselbe Buchung zweimal zu schreiben?
Können wir eine Buchung stornieren, die sich als falsch erwiesen hat?
In welche Systeme können wir abgeglichene Buchungen schreiben?
Einmal bauen, auf der Unified API.
Sehen Sie, wie Zahlungsabgleich für Ihre Integration funktioniert, oder steigen Sie in die technische Referenz ein.










