maesn
Use Case

Steuerautomatisierung beginnt mit einem Satz, der sich erklärt

Zwölf der angebundenen Buchhaltungssysteme geben ihre Steuersätze heraus, und sie sind sich nicht einig, was ein Steuersatz ist. Maesn liefert sie in einer Form, sagt, was ein System weggelassen hat, und schreibt die fertige Buchung in das Hauptbuch zurück, aus dem sie kam.

Ein Satz, wie geliefert/taxRates
percentage21
typeentscheidet den Rest
INCLUSIVEDie 21 steckt bereits im Betrag.
EXCLUSIVEDie 21 kommt auf den Betrag obendrauf.

Für dieses Feld sind vier Werte dokumentiert, und es steht in der Feldliste von einem einzigen System unter denen, die Steuersätze veröffentlichen.

Diese Software-Teams vertrauen uns
HubSpotTipaltiPaywiseRallyQredNordhealthFindityFintoClockinHEROHolviLanes & PlanesAgicapHubSpotTipaltiPaywiseRallyQredNordhealthFindityFintoClockinHEROHolviLanes & PlanesAgicap
Das Problem

Der Steuersatz kommt an, die Regel zu seiner Anwendung nicht

Ein Steuerprodukt liest Sätze aus den Buchhaltungssystemen seiner Kunden. Über die zwölf, die sie herausgeben, unterscheiden sich die dokumentierten Feldlisten auf eine Weise, die das Rechenergebnis verändert.

Worauf der Satz angewendet werden darfusage
nicht dokumentiert
bexio, Business Central, Dinero, Snelstart, Xero
INVOICEBILL
QuickBooks, Twinfield
INVOICEBILLCASH
DATEV Unternehmen Online, DATEV Rechnungswesen
INVOICEBILLALL
Exact Online, Procountor
INVOICEBILLJOURNAL_ENTRYALL
Moneybird
Zwei weitere Feldlisten, die zu lesen lohnen
  • Business Central dokumentiert vier Felder für einen Steuersatz, und percentage ist nicht darunter.
  • Procountor gibt an, dass je Buchung nur eines von code und percentage geliefert wird, und ein Satz kann damit als Code ganz ohne Zahl ankommen.

Beginnen Sie mit dem Feld, das am meisten entscheidet. Ein Satz kann inklusive oder exklusive sein, der Prozentsatz steckt also entweder schon im Betrag oder kommt obendrauf, und die Referenz sagt ausdrücklich, dass das Feld genau dafür da ist. Es taucht in der Feldliste eines einzigen Systems auf. Auf den anderen elf bekommen Sie eine Zahl und keine Angabe, wie sie zu verwenden ist.

Das ist kein Rundungsproblem. Ein Produkt, das jeden Prozentsatz gleich behandelt, ist nicht in einem Randfall falsch, es ist jedes Mal falsch, wenn es auf die andere Konvention trifft, und es ist genau um die Steuer falsch. Die einzelnen Zahlen waren nie der schwere Teil dieser Anbindung. Was jedes System mit ihnen meint, schon.

Die Liste darüber ist die zweite Hälfte davon. Worauf ein Satz angewendet werden darf, kommt in vier dokumentierten Formen, und auf mehreren Systemen ist es gar nicht dokumentiert. Zwei dieser Formen entscheiden darüber, ob ein System überhaupt zu einem bestimmten Produkt passt. Genau eine nennt Buchungssätze als zulässige Verwendung, und das ist die, die eine Plattform braucht, die bucht statt zu fakturieren, und nur die zwei DATEV-Produkte nennen eine Kassenverwendung, eine Unterscheidung, die die deutsche Buchführung macht und die meisten anderen nicht. Darunter liegen zwei weitere Feldlisten, die genaues Lesen lohnen. Business Central dokumentiert vier Felder für einen Steuersatz, und der Prozentsatz ist keines davon, während Xero insgesamt zwei Felder dokumentiert. Beide sind nützliche Systeme mit starker Abdeckung an anderer Stelle. Sie beantworten diese Frage nur nicht auf dieselbe Weise, und keine Cleverness auf der Clientseite macht aus einem undokumentierten Feld ein bekanntes.

Wie Maesn das löst

Ein Steuersatz-Objekt, und ein Platz für das, was fehlt

Derselbe Endpunkt auf jedem System, dieselben Feldnamen in der Antwort, und ein Umschlag, der sagt, wenn ein System eines davon nicht gefüllt hat.

Dieselben Schlüssel auf jedem System

Ein Steuersatz ist ein Objekt mit einem Satz Feldnamen, ob er aus einem niederländischen, deutschen oder finnischen System kam. Ihr Code liest eine Form und hört auf, je Hersteller zu verzweigen.

Die Anwendungsregel als Feld

Wo das System veröffentlicht, wie ein Satz anzuwenden ist, kommt das in einem typisierten Feld mit dokumentierten Werten an und nicht in einer Beschriftung, die ein Mensch geschrieben hat.

Ein benannter Ort für das Fehlende

Der Antwortumschlag trägt ein Warnungs-Array, und das Beispiel in der Referenz lautet genau "Field not used by target system". Ein nicht gefülltes Feld wird benannt und nicht still vorbelegt.

GET /accounting/taxRates
{
"meta": {
"warnings": ["Field not used by target system"],
"pagination": { "total": 125, "perPage": 50, "currentPage": 1 }
},
"data": [
{
"id": "b0450a0a-4164-4b5a-b006-1f3e835c32ff",
"code": "02",
"name": "21 PERCENT",
"description": "BTW hoog tarief, exclusief",
"percentage": 21,
"type": "EXCLUSIVE",
"usage": "INVOICE"
}
]
}

Die Form rechts ist das ganze Normalisierungsargument in einer Antwort. Ein Steuersatz ist ein Satz, ein Code, eine Bezeichnung, eine Anwendungsregel und eine zulässige Verwendung, und er trägt diese Namen, ob er aus einem niederländischen, einem deutschen oder einem finnischen System kam. Das ist dasselbe Prinzip, auf dem der Rest der Schnittstelle steht, vollständig beschrieben unter Common Data Model, und bei der Steuer zahlt es sich am schnellsten aus, denn die Alternative ist eine Zuordnungstabelle je Hersteller, die beim Rechnen richtig liegen muss.

Was Maesn nicht tut, ist die Regel zu ergänzen, die ein System nie veröffentlicht hat. Das ist die ehrliche Hälfte der Antwort, und es ist dieselbe Zwei-Schichten-Unterscheidung, die durch diese Seiten läuft: Normalisierung macht aus zwölf Feldlisten eine Form, und sie kann keine Information erfinden, die in keiner davon stand. Wo das Quellsystem die Anwendungsregel veröffentlicht, bekommen Sie sie in einem typisierten Feld. Wo es das nicht tut, sagt die Antwort es, statt still einen Standard zu setzen, denn das warnings-Array im Umschlag ist genau dafür da, und das Beispiel der Referenz dazu lautet Field not used by target system.

Ein praktisches Detail vor dem ersten Aufruf. Sieben der Feldlisten tragen den Hinweis, dass eine Firmenkennung, und bei einem System ein Umgebungsname, mitgegeben werden muss, sofern Sie nicht den interaktiven Authentifizierungsablauf nutzen, bei dem der Kunde sie einmal wählt und die Wahl an der Verbindung hinterlegt wird. Das ist eine Eigenschaft der Authentifizierungsschicht und nicht der Steuer, und es ist der Unterschied zwischen einer Anbindung und einem Support-Ticket über die Sätze der falschen Firma.

Was Sie bekommen

Vom Steuersatz, den Sie lesen, bis zum Buchungssatz, den Sie schreiben

Sätze zu lesen ist der Anfang der Aufgabe und nicht die Aufgabe. Ein Steuerprodukt bewährt sich, wenn die Buchung korrekt im Hauptbuch des Kunden landet, und der dokumentierte Ablauf dafür ist eine kurze Kette von Lesezugriffen gefolgt von einem einzigen Schreibvorgang.

Was der Leitfaden Sie lesen lässt
GET /accounts
Das Konto und das Gegenkonto
GET /taxRates
Die genutzten Sätze oder Steuerschlüssel
GET /dimensions
Klassen, Standorte, Abteilungen
GET /journals
Wo ein System mehrere führt

Die letzten zwei sind bedingt: der Leitfaden verlangt sie nur dort, wo ein Kunde sie nutzt.

eine Anbindung, eine Form
Was im Hauptbuch landet
  • Ein Buchungssatz in der Struktur des Systems
  • Belege in derselben Anfrage angehängt
  • Stapel-Upload, wo ein System ihn nimmt
  • Ein prüfbarer Status, keine Hoffnung

Der Schreibvorgang ist ein Aufruf, und zwei seiner Eigenschaften sollte man kennen, bevor man darum herum entwirft. Belege, Auszüge und Quittungen gehen in derselben mehrteiligen Anfrage hoch wie die Buchung, Beleg und Buchung sind also nie zwei Aufträge, von denen einer halb gelingt. Und wo ein System Buchungen als Stapel nimmt, wie DATEV Rechnungswesen es tut, ist der dokumentierte Schritt nach dem Hochladen, einen Auftrags-Endpunkt zu fragen, ob der Stapel tatsächlich verarbeitet wurde. Das ist kein Sondermechanismus für die Steuer, es ist dasselbe asynchrone Muster, das der Rest der Schnittstelle nutzt, und es ist der Unterschied zwischen glauben, dass ein Stapel angekommen ist, und es wissen.

Die Kette erklärt auch, warum es bei der Steuerautomatisierung selten nur um Steuern geht. Die Sätze sind einer von vier Lesezugriffen, und die anderen drei sind die Hauptbuchstrukturen, die die Buchung braucht, um überhaupt gültig zu sein. Eingangsrechnungen tragen Sätze auf der Verbindlichkeitsseite, beschrieben unter Kreditorenbuchhaltung, und Rechnungen tragen sie auf der Forderungsseite, unter Rechnungserstellung. Das Feld für die zulässige Verwendung nennt diese zwei Belege auf den meisten beim Namen, und damit sagt Ihnen die Dokumentation in einem Enum, dass diese drei Use Cases eine Anbindung sind.

Beleg

Ein veröffentlichter Kunde in genau dieser Kategorie

Ein Kunde in dieser Kategorie
Smarta Steuern
Smarta Steuern, ein SaaS für Steuerautomatisierung, läuft auf dieser API.

Es ist einer der namentlich genannten Kunden, die Maesn veröffentlicht, und zwar genau in dieser Kategorie. Was sie damit gebaut haben, ist ihre Sache zu beschreiben, und diese Seite tut es deshalb nicht.

Vier Kunden haben ihre Geschichte vollständig erzählt, in anderen Kategorien.

Das ist ein Kunde, und es steht als ein Kunde da. Die benannten Kategorien, die Maesn veröffentlicht, reichen weit über Steuern hinaus, und die Plattformen, die einen Steuerablauf neben ihrem eigenen tragen, sind auf der Branchenseite für SaaS gesammelt, wo dieselbe Anbindung der letzte Schritt von fünfzehn verschiedenen Berufen ist.

Die Eckdaten

Was die Buchungskette braucht, je System gezählt

Eine Zeile je Schritt des dokumentierten Ablaufs, gezählt aus der Dokumentation des jeweiligen Systems.

Über die 30+ angebundenen Systeme
Was Sie brauchenHeuteAuf AnfrageSystem kann es nicht
Kontenrahmen, lesen1982
Steuersätze, lesen12143
Dimensionen, lesen3179
Journale, lesen5159
Buchungssätze, schreiben10118
Summen- und Saldenliste, für Auswertungen2819
Die Zeilen drei und vier sind die zwei Schritte, die der Buchungsleitfaden selbst als bedingt markiert, und das passt dazu, wie dünn sie abgedeckt sind: er verlangt Dimensionen, wo der Kunde sie nutzt, und Journale, wo ein System mehrere führt. Die letzte Zeile ist die ehrliche Grenze dieses Use Cases. Eine Summen- und Saldenliste wäre das, was ein Melde- oder Auswertungsprodukt wollte, und kaum ein System gibt sie heute heraus, nichts auf dieser Seite sagt deshalb eine zu.

Die zwei Zeilen, die diesen Use Case tragen, sind der Kontenrahmen und die Steuersätze, und beide gehören zu den besser abgedeckten Objekten des Modells. Buchungen zurückzuschreiben wird auf genau so vielen Systemen unterstützt wie das Lesen, und das ist die Zahl, die entscheidet, ob ein Steuerprodukt seinen eigenen Ablauf zu Ende bringt oder den letzten Schritt einem Menschen mit einer CSV-Datei übergibt.

Lesen Sie die dünnen Zeilen so, wie der Leitfaden sie liest, und nicht als Unterdeckung. Dimensionen und Journale sind die zwei Schritte, die er als bedingt markiert, und verlangt sind sie nur dort, wo ein Kunde mit Dimensionen arbeitet oder ein System mehrere Journale führt, und eine kleine Zahl beschreibt dort die Seltenheit der Anforderung ebenso wie die der Unterstützung. Wo ein System eine Steuerstruktur führt, für die das gemeinsame Modell kein Feld hat, ist am Modell vorbeizugreifen ebenfalls dokumentiert: auf den meisten steht ein Rohdaten-Schalter bereit, und er gibt die eigene Nutzlast des Systems neben dem normalisierten Objekt zurück. Nur das zu lesen, was sich seit Ihrem letzten Lauf geändert hat, funktioniert hier genauso wie auf jedem anderen Listen-Endpunkt, und das zählt für Sätze weniger, weil sie sich selten ändern, als für die Buchungen, die Sie dagegen schreiben.

DATEVÜber die Systeme, nicht über einen KundenMaesn ist offizieller DATEV Schnittstellenanbieter.Beide DATEV-Produkte in der Referenz veröffentlichen Steuersätze, und sie sind die zwei, die neben invoice und bill eine Nutzung cash dokumentieren. Die deutsche Steuerpraxis läuft dort, und deshalb zählt die Partnerschaft hier mehr als jede Aussage über Abdeckung.
Wo die Grenze verläuft

Wir liefern die Sätze, Sie entscheiden, welcher gilt

Auf einer Steuerseite ist das der Abschnitt, den man zuerst liest. Die Grenze zwischen dem Liefern eines Satzes und seiner Anwendung ist zugleich die Grenze zwischen einem Integrationsproblem und einem regulierten.

Was Maesn liefert
  • Die Sätze wie veröffentlicht
  • Überall dieselbe Form
  • Die Regel, wo es sie gibt
  • Die Buchung, zurückgeschrieben
Was Ihr Produkt bleibt
  • Welchen Satz eine Zeile bekommt
  • Regeln nach Land und Zeitraum
  • Wann eine Buchung gesendet wird
  • Was eine Meldung zeigen muss

Alles links ist eine Eigenschaft der Anbindung. Die Sätze kommen so an, wie das Zielsystem sie veröffentlicht, in einer Form über alle Systeme hinweg, die sie veröffentlichen, mit der Anwendungsregel dort, wo das System sie angibt, und als fehlend markiert, wo es das nicht tut. Die Buchung geht denselben Weg zurück, in die Struktur, in der der Steuerberater des Kunden ohnehin arbeitet, und nicht in ein Format, das jemand importieren muss.

Alles rechts ist Ihr Produkt, und in diesem Use Case ist das eine schärfere Aussage als sonst. Den Satz für eine Zeile zu wählen ist eine Steuerentscheidung. Ebenso zu wissen, welcher Satz in einem bestimmten Zeitraum galt, was eine Rechtsordnung auf dem Beleg erwartet und was eine Meldung enthalten muss. Diese Antworten ändern sich nach Land und nach Jahr, sie haben Folgen für Ihren Kunden, und eine Datenschicht, die sie anböte, würde an Ihrer Stelle raten, in einem Feld, in dem Raten einen Preis hat.

Zwei kleinere Eigenschaften gehören hierher und nicht in eine Fußnote. Anfragen werden verarbeitet, wie sie hereinkommen, und was Maesn behält, ist der Nachweis, dass eine Übertragung stattgefunden hat, und nicht die übertragenen Daten, und das ist ein kürzeres Gespräch mit einem Kunden, dessen Steuerdaten Sie anfassen. Und die Entscheidung, wann eine Buchung Ihr Produkt verlässt, liegt von Haus aus bei Ihnen: der dokumentierte Ablauf legt den Auslöser in Ihre Hand, ob das nun ein Knopf, ein Ereignis oder ein nächtlicher Lauf ist.

Der Satz auf einer Zeile ist das, wofür beim Periodenabschluss Finanzteams geradestehen müssen.

Steuerautomatisierung FAQ

Häufige Fragen

Berechnet Maesn die Steuer?

Nein, und diese Grenze ist gewollt und keine Lücke. Maesn liefert die Steuersätze, die ein System veröffentlicht, in einer Form, samt dem, was das System über ihre Anwendung sagt. Welcher Satz auf welche Zeile gehört, in welchem Land, zu welchem Zeitpunkt, ist das Urteil Ihres Produkts und oft ein reguliertes. Eine Schicht, die das für Sie entschiede, nähme eine Haftung auf sich, die sie nicht tragen kann.

Aus welchen Systemen können wir heute Steuersätze lesen?

Zwölf der angebundenen Systeme unterstützen es heute, vierzehn weitere sind in ihrer eigenen Dokumentation als auf Anfrage verfügbar markiert, und drei können es überhaupt nicht. Die zwölf sind bexio, Business Central, beide DATEV-Produkte, Dinero, Exact Online, Moneybird, Procountor, QuickBooks, Snelstart, Twinfield und Xero. Diese Menge lohnt sich genau zu kennen, denn es sind dieselben zwölf, deren Feldlisten die Referenz einzeln beschreibt.

Was ist das Feld type, und warum zählt es so sehr?

Es gibt an, wie der Satz sich zu einem Betrag verhält, mit vier dokumentierten Werten: inclusive, exclusive, zero tax und no tax. Es ist der Unterschied zwischen einem Prozentsatz, der schon im Preis steckt, und einem, der darauf kommt, und das ist der Unterschied zwischen einer Rechnung, die stimmt, und einer, die um genau diesen Prozentsatz falsch ist. In der Referenz steht es in der Feldliste eines einzigen Systems.

Was tun wir dann auf den anderen elf?

Sie bekommen den Satz so, wie das System ihn veröffentlicht, und die Anwendungsregel kommt von woanders: aus Ihrer eigenen Konfiguration, aus der Einrichtung des Kunden oder aus einer Gepflogenheit dieses Marktes. Das eigene Beispiel der Referenz ist eine Warnung, die zweimal zu lesen lohnt, denn seine Musterbeschreibung lautet "BTW hoog tarief, exclusief". Die Regel steckt dort in einer von Hand geschriebenen Beschriftung, auf Niederländisch. Das ist ein Hinweis für einen Menschen und kein Feld zum Auswerten, und jeden Prozentsatz gleich zu behandeln ist der Fehler, um den es auf dieser Seite geht.

Was sagt uns das Feld usage?

Worauf der Satz angewendet werden darf. Es kommt in vier dokumentierten Formen, und mehrere Systeme dokumentieren es gar nicht. Zwei DATEV-Produkte führen neben invoice und bill eine Option cash, andere führen eine Option all, und allein Moneybird schließt Buchungssätze ein. Wenn Ihr Produkt Sätze für Buchungen wählt und nicht für Rechnungen, entscheidet dieser eine Unterschied, welche Systeme Sie ohne eine Zuordnung von Hand bedienen können.

Können wir über die API einen Steuersatz anlegen oder ändern?

Kein System unterstützt das heute. Steuersätze sind in der Praxis ein Lesezugriff: die Zahlen in den Tabellen hier sind durchweg Lesezugriffe, und Anlegen, Aktualisieren und Löschen stehen über alle angebundenen Systeme hinweg auf null, der Rest ist als auf Anfrage verfügbar oder als nicht unterstützt markiert. In diesem Use Case ist das ohnehin die richtige Richtung, denn die Steuerkonfiguration gehört dem Buchhalter, der sie eingerichtet hat, und nicht dem Produkt, das sie verbraucht.

Wie wird eine Buchung tatsächlich zurückgeschrieben?

Über den dokumentierten Ablauf, auf dem diese Seite steht. Ihr Kunde gibt einmal frei, Sie lesen den Kontenrahmen, die Steuersätze und, wo nötig, Dimensionen und Journale, danach entscheidet Ihr eigener Auslöser, wann übertragen wird, und ein Aufruf legt den Buchungssatz an. Belege und Nachweise reisen in derselben mehrteiligen Anfrage mit und nicht als zweiter Auftrag, und das zählt, wenn eine Buchung später prüfbar sein muss.

Können wir Buchungen gebündelt senden, und woher wissen wir, dass sie angenommen wurden?

Wo das System es unterstützt, ja. DATEV Rechnungswesen nimmt Buchungssätze als Stapel, und der dokumentierte Folgeschritt ist, einen Aufgaben-Endpunkt abzufragen, um die Verarbeitung des Stapels zu bestätigen, statt sie anzunehmen. Das ist dasselbe asynchrone Muster, das die übrige API für länger laufende Arbeit nutzt, es ist also ein Mechanismus zum Lernen und kein Sonderfall für Steuern.

Was, wenn ein System eine Steuerstruktur führt, die das gemeinsame Modell nicht trägt?

Es gibt einen dokumentierten Weg dorthin. Ein Rohdaten-Schalter gibt die eigene Nutzlast des Zielsystems neben dem normalisierten Objekt zurück, und er ist auf den meisten Systemen dokumentiert, die Steuersätze veröffentlichen. Für alles, wofür das Modell überhaupt kein Feld hat, erreicht ein nativer Aufruf über den Durchleitungs-Endpunkt das System direkt, auf der Anbindung, die Sie ohnehin haben.

Liefern Sie Umsatzsteuervoranmeldungen oder eine Summen- und Saldenliste?

Nein, und das sagen die Zahlen und nicht das Marketing. Eine Summen- und Saldenliste wäre das, worauf ein Melde- oder Auswertungsprodukt aufsetzt, und kaum ein angebundenes System gibt heute eine heraus. In diesem Use Case geht es deshalb um die Sätze, die Hauptbuchstrukturen und das Zurückschreiben von Buchungen, und alles, was die Form einer Steuererklärung hat, bleibt davor. Diese Grenze zu benennen ist für uns beide günstiger, als sie in einer Integration zu entdecken.

Einmal bauen, auf der Unified API.

Sehen Sie, wie Steuerautomatisierung für Ihre Integration funktioniert, oder steigen Sie in die technische Referenz ein.