maesn
Für Entwickler

Pennylane anbinden: Vorab vereinbarte Scopes und vier Wochen Changelog

Pennylane gibt keine Zugangsdaten über ein Formular aus. Ein Partnerschaftsteam liest Ihre Integration, vereinbart eine Scope-Liste und stellt eine Client-ID dagegen aus, und diese Liste entscheidet, welche Objekte Sie je erreichen können. Die Schnittstelle dahinter ist gewöhnlich, bis Ihnen auffällt, dass drei ihrer Fehlerfälle mit einem Erfolgscode antworten.

Lennart Svensson, CTO und Mitgründer bei Maesn
Lennart Svensson
CTO und Mitgründer · · Aktualisiert
Illustration zu Pennylane anbinden: Fehler, die mit 2xx antworten
Das Problem

Ihre Client-Zugangsdaten kommen vom Partnerschaftsteam von Pennylane

Bei den meisten Buchhaltungsplattformen registrieren Sie eine Anwendung selbst, klicken sich durch einen Zustimmungsdialog und haben innerhalb von zehn Minuten funktionierende Zugangsdaten. Pennylane arbeitet anders. Für Integrationspartner gibt es keine Selbstregistrierung, und der erste Schritt beim Bauen ist eine E-Mail statt eines Formulars.

Pennylane sagt es in seinem OAuth-Leitfaden deutlich: „Bevor Sie OAuth verwenden, registrieren Sie Ihre App bei Pennylane, indem Sie unser Partnerschaftsteam kontaktieren.“ Erst nach dieser Prüfung erhalten Sie eine Client-ID und ein Secret.

Dieselbe Voraussetzung steht in den Pennylane-Integrationsnotizen von maesn: Es ist „notwendig, eine direkte Beziehung zu Pennylane aufzubauen und Ihre Client-Zugangsdaten von dort zu erhalten“. Wie die Verbindung danach Objekt für Objekt aussieht, steht auf der Seite zur Pennylane-Schnittstelle.

Diese Wartezeit lässt sich nicht verkürzen, sie gehört also in den Projektplan statt in den Sprint. Sie ändert auch, wie Ihr Weg zur Sandbox aussieht, denn der Sandbox-Zugang folgt derselben Aufteilung.

Wer eine Sandbox anlegen kann, und wer fragen muss
RolleAuthentifizierungSandbox
UnternehmenUnternehmens-API-TokenSelbstbedienung, über die Testumgebung im Konto
KanzleiKanzlei-API-TokenNicht nötig, das Kanzleikonto wird direkt genutzt
IntegrationspartnerOAuth 2.0Per E-Mail beim Partnerschaftsteam angefragt

Rollen, Authentifizierungsmethoden und Sandbox-Wege aus dem Einstiegsleitfaden von Pennylane, geprüft am 13. August 2026. Wer ein Produkt auf Pennylane aufbaut, ist die dritte Zeile, und das ist die, die wartet.

Speichern Sie das Secret beim ersten Mal, ein zweites gibt es nicht

Pennylane weist darauf hin, dass beide Hälften nur einmal gezeigt werden: „Speichern Sie Client ID und Client Secret sofort, denn sie lassen sich später nicht mehr abrufen. Gehen sie verloren, muss eine neue OAuth-App erstellt werden, was Zeit kosten kann.“ Ein verlorenes Secret bedeutet keinen Reset, sondern den erneuten Gang durch den Partnerprozess, der Ihnen das erste beschafft hat.

Für Pennylane gibt es eine Sandbox von maesn, neben denen für DATEV, Fortnox und Twinfield, und sie zählt hier mehr als sonst, weil Pennylane keinerlei kostenlosen Testzugang veröffentlicht. Der dokumentierte Weg dorthin lautet „bitte kontaktieren Sie uns“, sie verkürzt die Wartezeit bei Pennylane also, ohne das Gespräch zu ersetzen.

Sandbox-Verfügbarkeit je System aus der Sandbox-Tabelle von maesn, wo Pennylane ohne kostenlosen Testzugang und mit einer von maesn bereitgestellten Umgebung geführt wird, geprüft am 13. August 2026.

Das Problem

Elf Scopes werden vor dem ersten Aufruf vereinbart

Die Scope-Liste ist der Teil des Gesprächs, der es überdauert. Pennylane bittet Sie, „ihnen die Details Ihrer Integration einschließlich der benötigten Scopes zu übermitteln“, und was Sie dort benennen, trägt Ihr Token später im Produktivbetrieb.

Die Grammatik ist bewusst grob. Ein Scope ist entweder resource:readonly, was Pennylane als „Nur-Lese-Zugriff (nur GET-Endpunkte)“ definiert, oder resource:all, also „Vollzugriff (Lesen + Schreiben + Löschen)“. Ein Nur-Anlegen und ein Nur-Aktualisieren gibt es nicht. Sie wählen je Ressource, nicht je Verb.

Die Verbindung von maesn ist gegen elf davon konfiguriert. Acht sind :all, zwei sind nur lesend und einer trägt gar kein Suffix:

Die Scopes, die ein Pennylane-Client für diese Verbindung brauchtTEXT
customers:all suppliers:all
customer_invoices:all supplier_invoices:all
products:all quotes:all
categories:all file_attachments:all
ledger bank_accounts:readonly
transactions:readonly

Wörtlich aus den Voraussetzungen in unseren Pennylane-Integrationsnotizen, geprüft am 13. August 2026. ledger ist der eine in dieser Liste, der gar kein Suffix trägt, und Pennylane dokumentiert ihn als Lesen und Schreiben über Journale, Buchungszeilen und deren Anhänge.

Stellt man diese elf dem gegenüber, was die Verbindung tatsächlich freigibt, wird die Form der Integration sichtbar, bevor Sie eine Zeile schreiben. Zwei Objekte sind heute unterstützt, neunzehn weitere sind auf Anfrage lesbar und sechzehn sind hier gar nicht freigegeben.

37 Objekte, 11 vereinbarte Scopes2 live, 19 auf Anfrage
2
Heute unterstützt
Customers und Suppliers, beide les- und schreibbar.
19
Auf Anfrage lesbar
Rechnungen, Eingangsrechnungen, Gutschriften, Buchungssätze, Artikel, Angebote und mehr.
16
Hier nicht freigegeben
Zahlungen, Zahlungsbedingungen, Steuersätze, Ausgaben, Projekte, Aufträge.

Live ist das Paar, von dem jeder Hauptbuchablauf ausgeht. Kunden und Lieferanten werden heute gelesen und geschrieben. Über alles, was einen Betrag trägt, entscheidet ein Scope-Gespräch.

Objektzustände für Pennylane, gezählt aus unseren Abdeckungsdaten je System am 13. August 2026. Drei Zustände: von maesn unterstützt, auf Anfrage, und von Pennylane nicht unterstützt.
Live ist das Paar, keine Stichprobe

Die zwei unterstützten Objekte sind Customers und Suppliers, beide lesend und schreibend. Das ist das Geschäftspartner-Paar, von dem jeder Kreditoren- und Debitorenablauf ausgeht, und damit eine Basis, auf der Sie einen Ablauf bauen können.

Alles, was einen Betrag trägt, von Rechnungen bis zu Buchungssätzen, liegt im Band für Anfragen, und auf Anfrage heißt, dass ein Gespräch es freischaltet. Wie diese zwei Objekte aussehen, sobald sie über Systeme hinweg vereinheitlicht sind, ist die Aufgabe des Common Data Model.

Ihre Scope-Liste ist in einem Gespräch vereinbart worden, Ihr Code hat also keine Aufzeichnung darüber, was auf der anderen Seite tatsächlich gewährt wurde. Pennylane beantwortet das direkt: GET /me liefert die aktiven Scopes für Ihr Token zurück, und es ist der eine Endpunkt, der dafür keinen eigenen Scope braucht.

Der erste Aufruf, der sich lohnt: Was haben wir tatsächlich bekommen?HTTP
GET /api/external/v2/me HTTP/1.1
Host: app.pennylane.com
Authorization: Bearer <ACCESS_TOKEN>
Accept: application/json

Pennylane dokumentiert die Antwort so, dass sie Ihre Unternehmens-ID, Ihre Benutzerinformationen und „die Liste der aktiven Scopes für Ihr Token“ trägt, und hält fest: „Dieser Endpunkt erfordert keinen eigenen Scope“. Aus der Scope-Referenz, geprüft am 13. August 2026. Lohnt sich bei jeder Verbindung zu protokollieren, denn ein fehlender Scope zeigt sich sonst erst als 403 im Produktivbetrieb.

Ein Vorbehalt zu dieser Seite von ihr selbst: Sie datiert ihre eigene Scope-Liste auf „Stand Oktober 2025“ und verweist für die verbindliche Fassung auf die Referenz. Nehmen Sie die Namen als Ausgangspunkt für das Partnergespräch und bestätigen Sie sie gegen die Referenz.

So funktioniert es

Access-Tokens halten einen Tag, Refresh-Tokens neunzig

Sobald die Zugangsdaten existieren, ist der Ablauf ein gewöhnlicher Authorization Code Grant gegen app.pennylane.com. Der Token-Tausch ist unauffällig, und die Zahl, die Sie aus der Antwort lesen, ist expires_in.

Den Code tauschen, und die Lebensdauer, die zurückkommtHTTP
POST /oauth/token HTTP/1.1
Host: app.pennylane.com
 
client_id=...&client_secret=...&code=AUTH_CODE
&redirect_uri=...&grant_type=authorization_code
 
{
"access_token": "abc123...",
"token_type": "Bearer",
"expires_in": 86400,
"refresh_token": "def456..."
}

Form der Anfrage und Antwortkörper aus dem OAuth-2.0-Leitfaden von Pennylane, geprüft am 13. August 2026. expires_in sind 86.400 Sekunden, also 24 Stunden.

Zwei Dauern, von derselben Seite: „Access-Tokens laufen nach 24 Stunden ab“ und „Refresh-Tokens sind 90 Tage gültig“. In Sekundärtexten über dieses System kursiert eine Gültigkeit von sieben Tagen, die zu keiner der beiden Zahlen passt und auch zu nichts anderem in der Dokumentation von Pennylane.

Die Rotation selbst ist gewöhnlich. Genau lesen sollte man, wie unmittelbar Pennylane sie vollzieht, denn das entscheidet, ob Ihre Refreshes serialisiert werden müssen.

Immer nur ein Refresh, sonst verlieren Sie beide Tokens

In den Worten von Pennylane: „Jedes Mal, wenn Sie ein Refresh-Token verwenden, wird es sofort ungültig ... Sobald ein Refresh-Token verwendet wurde, funktionieren weder dieses Token noch das alte Access-Token.“ Die Anweisung, die darauf folgt, ist die, um die herum man entwirft: „stellen Sie sicher, dass Ihre Anwendung Tokens korrekt zwischenspeichert und keine gleichzeitigen Refresh-Anfragen mit demselben Token unternimmt“.

Es genügt, dass zwei Worker im selben Moment einen Ablauf bemerken. Einer gewinnt, der andere macht das Paar des Gewinners ungültig, und der Kunde steht wieder vor dem Zustimmungsdialog.

Den Refresh hinter einem Lock zu zentralisieren ist die ganze Lösung, und sie ist vor dem Start erheblich billiger als danach. Das ist die Klasse von Problemen, für die es Unified Authentication gibt.

Es gibt eine zweite Folge, die erst im Betrieb auftaucht. Ein Refresh-Token übersteht 90 Tage Inaktivität, eine Integration, die still wird, behält ihre Zugangsdaten also weit länger, als das Access-Token mit seinen 24 Stunden nahelegt. In Kombination mit dem Changelog-Fenster wird daraus ein Problem, und der Abschnitt zum Abgleich weiter unten arbeitet es durch.

Produkte mit mehreren Mandanten haben hier eine Entscheidung mehr. Pennylane stellt Tokens in zwei Kontexten aus: Ein Unternehmens-Token erreicht ein einzelnes Unternehmen, während ein Kanzlei-Token „auf Ressourcen über mehrere von der Kanzlei betreute Mandantenunternehmen hinweg zugreifen kann“.

Die sichtbare Menge „hängt davon ab, wer den Zugriff gewährt hat und welche internen Berechtigungen gelten“. Für ein Produkt, das an Kanzleien verkauft, entscheidet dieser Unterschied zwischen einer Verbindung und hunderten.

So funktioniert es

Jedes Objekt braucht einen eigenen Aufruf und einen eigenen Scope

Ein Geschäftsdokument in v2 anzulegen heißt einen Aufruf je Objekt, und Pennylane bindet das direkt an die Scope-Liste zurück, die Sie am Anfang vereinbart haben: „jedes Objekt muss separat angelegt werden, über einen eigenen Endpunkt. Das wird auch durch die Granularität der Scopes erzwungen.“

Pennylane nennt das Beispiel, auf das es bei der Fakturierung ankommt. Ein Kunde lässt sich nicht zusammen mit einer Rechnung anlegen: Es ist „zwingend, zuerst den Kunden anzulegen“ und dann dessen ID zu übergeben. Dateianhänge laufen genauso: an /file_attachments hochladen, die ID nehmen, und sie beim Import als file_attachment_id referenzieren.

Die Zahl der Roundtrips je Geschäftsdokument ist also eine Funktion davon, wie viele Objekte es berührt, und jedes dieser Objekte braucht seinen eigenen Scope. Das ist derselbe Satz wie im Scope-Abschnitt, von der Schreibseite her erreicht.

Drei v2-Regeln, aus denen Support-Tickets werden

Beträge sind Strings. Pennylane hat es „zwingend gemacht, sie als Strings zu übergeben“, um Float-Fehler zu vermeiden, und 120.00 als Zahl zu senden ist als Ursache eines 400 aufgeführt.

Buchungssätze müssen ausgeglichen sein. „Alle Buchungssätze müssen ausgeglichen sein: Summe Soll = Summe Haben“, und eine Abweichung kommt als 422 zurück, mit beiden Summen im details-Objekt.

Verschachtelte Sammlungen sind Links. Rechnungszeilen kommen als „ein Link auf die Sammlung“ statt als eingebettetes Array, und deshalb sind Zeilen in jeder Abdeckungstabelle eine eigene Zeile und in Ihrem Code ein eigener Lesezugriff.

Alle drei aus dem Leitfaden v1 gegen v2 von Pennylane und seiner Referenz zur Fehlerbehandlung, geprüft am 13. August 2026. Dieselbe v2-Seite sagt weiterhin, v1 werde „bis Ende 2025 vollständig abgekündigt“, und das war zehn Monate vor dem Entstehen dieses Textes, bestätigen Sie den aktuellen Stand also bei Pennylane, bevor Sie darum herum planen.

Zwei Dinge übernimmt v2 laut den unterstützten Anwendungsfällen von Pennylane überhaupt nicht: eine Anzahlungsrechnung oder einen Lieferschein anlegen. Steht eines davon in Ihrem Produktablauf, klären Sie es vor dem zweiten Sprint.

Was Sie bekommen

Filter, Cursor und Dubletten: Drei stille Wege, Daten zu verlieren

Die Fehlerbehandlung von Pennylane ist wirklich gut, mit einem konsistenten JSON-Schema, einem nützlichen details-Objekt und einer dokumentierten Retry-Matrix. Teuer sind die Fälle, die sie nie erreichen, weil sie mit einem Erfolgscode antworten.

Der erste ist die Paginierung. Version zwei ist auf Cursor umgestiegen, und der Cursor trägt weniger, als es aussieht:

Ein Cursor merkt sich die Position, nicht den Filter

„Der Cursor kodiert nur die Position in der Ergebnismenge, er speichert keinen Filterzustand ... Werden die Filter ab Seite 2 weggelassen, kommen ungefilterte Ergebnisse ab der Cursor-Position zurück.“

Seite eins ist gefiltert, Seite zwei nicht, und beide sind 200. Ein Abgleich von Rechnungsentwürfen, der im Test gegen zwanzig Datensätze korrekt aussieht, zieht jede Rechnung des Unternehmens, sobald ein Kunde eine Seite überschreitet. Senden Sie filter und sort bei jeder Anfrage erneut. Genau diesen Punkt vereinheitlicht ein Weg, zu filtern und zu paginieren, über alle Systeme hinweg.

Der zweite ist der Changelog-Checkpoint, und Pennylane hebt ihn als ausdrückliche Warnung hervor: „Aktualisieren Sie Ihren start_date-Checkpoint erst, wenn Sie vollständig durch alle Seiten paginiert haben (has_more: false). Brechen Sie mitten in der Paginierung ab, setzen Sie bei Ihrem letzten next_cursor wieder auf.“ Wer den Checkpoint nach Seite eins von vier weiterstellt, verliert die Seiten zwei bis vier, und nirgends meldet etwas eine Lücke.

Der dritte ist die Dublette beim Schreiben. Pennylane sagt es direkt: „Wird dieselbe Anfrage zweimal gesendet, können Sie Dubletten erzeugen“, und Idempotenz wird „an Anlage-Endpunkten nicht erzwungen“, etwa an /customer_invoices und /ledger_entries. Es gibt genau eine Ausnahme, und sie ist eigentümlich spezifisch.

Drei dokumentierte Wege zu falschen Daten bei grüner Antwort
Was passiertWas zurückkommtDie Lösung
Filter fällt auf Seite zwei weg200, mit ungefilterten Zeilen ab der Cursor-Positionfilter und sort mit jedem Cursor erneut senden
Checkpoint zu früh bewegt200, und die ungelesenen Seiten werden nie wieder angebotenstart_date erst bei has_more: false weiterstellen
Anlage-Anfrage zweimal gesendetzweimal 201, und zwei Datensätze im HauptbuchVor dem Aufruf deduplizieren, einen Idempotenzschlüssel gibt es nicht

Das Verhalten der Paginierung aus dem Leitfaden zur Cursor-Paginierung, die Checkpoint-Warnung aus dem Changelog-Leitfaden und die Aussage zur Idempotenz aus der Fehlerreferenz, alle geprüft am 13. August 2026.

Die eine Stelle, an der Pennylane für Sie dedupliziert

Der Import von Lieferantenrechnungen ist die Ausnahme: „Idempotenz wird außer beim Import von Lieferantenrechnungen nicht erzwungen“. Importieren Sie ein PDF erneut, das schon vorhanden ist, bekommen Sie einen 409, der das bestehende Dokument benennt, und es entsteht keine zweite Kopie, der wirksame Idempotenzschlüssel ist also die file_attachment_id. Nützlich, und eng genug, dass es sich lohnt, es dort aufzuschreiben, wo Ihr Team es findet.

Was bleibt, ist der gewöhnliche Teil, und der ist gut gebaut. Ein 403 heißt, dem Token fehlt der Scope, mit dem fehlenden Namen in der Meldung. Ein 422 heißt, eine Geschäftsregel ist verletzt, mit dem auslösenden Feld in details.

Pennylane veröffentlicht außerdem, welche Codes einen Retry verdienen, 429 und 500 und 503, und welche nie, 400 und 401 und 403 und 404 und 422. Sie über Systeme hinweg auf ein Verhalten abzubilden, dafür gibt es ein Fehlermodell.

Was Sie bekommen

Webhooks sind in der Beta, und das Changelog hält vier Wochen

Pennylane sendet Events. Es sendet drei, sie sind in der Beta, und Pennylane rät selbst davon ab, sich heute schon auf sie zu stützen: „Die Webhook-Funktion ist in der Beta. Wir empfehlen, in dieser Phase auf die Changelog-Endpunkte zurückzugreifen.“

Die drei sind customer_invoice.e_invoicing_status_updated, dms_file.created und supplier_invoice.e_invoicing_received. Alle drei drehen sich um den E-Rechnungs-Status oder den Eingang eines Dokuments, alles sehr französische Anliegen und angesichts der Rechnungsstellungsregeln des Landes ein sinnvoller Anfang.

Achten Sie darauf, was in dieser Liste fehlt. Keines der zwei Objekte, die diese Verbindung heute unterstützt, Kunden und Lieferanten, meldet seine eigenen Änderungen. Dafür fragen Sie ab, und dafür gibt es die Changelog-Endpunkte. Genau das muss das Event-Modell umgehen, wenn ein System für ein Objekt kein Event anbietet.

Der Beta-Status aus der Webhook-Übersicht von Pennylane und die drei Events aus seiner Ereignisliste, geprüft am 13. August 2026. Beide Seiten haben sich in den letzten drei Wochen geändert, eine Beta-Angabe altert hier also schneller als der Rest dieses Artikels.

Die Changelog-Endpunkte decken sieben Ressourcen ab, darunter beide Live-Objekte: customer_invoices, supplier_invoices, customers, suppliers, products, ledger_entry_lines und transactions. Jede Änderung liefert Ihnen eine ID und eine Operation, das Muster ist also ein Delta-Lesezugriff gefolgt von einem Batch-Abruf.

Änderungen abfragen, dann die Datensätze in einem Batch holenHTTP
GET /api/external/v2/changelogs/customers
?start_date=2026-08-06T00:00:00Z&limit=1000
 
{ "items": [ { "id": 123, "operation": "insert" } ],
"has_more": false, "next_cursor": null }
 
GET /api/external/v2/customers?filter=
[{"field":"id","operator":"in","value":[123,456]}]

Die Endpunkte, der Operator in und die Operationen insert, update und delete aus dem Changelog-Leitfaden, geprüft am 13. August 2026. start_date und cursor schließen sich gegenseitig aus, der wiederaufgenommene Lauf nutzt also den Cursor und der frische Lauf das Datum.

Dann die Grenze, die Ihre Architektur entscheidet: „Änderungen werden 4 Wochen lang vorgehalten“, und Sie „können keine Änderungen anfordern, die älter als 4 Wochen sind“. Diese Zahl zählt neben dem Refresh-Token mit seinen 90 Tagen, weil beide unterschiedlich schnell ablaufen. Zugangsdaten überstehen 90 Tage Stille. Ein inkrementelles Nachholen ist nach 28 Tagen nicht mehr möglich. Eine Integration kann also fünf Wochen pausieren, sich ohne einen einzigen Fehler wieder verbinden und trotzdem zwei Wochen Änderungen vermissen, die sie nicht mehr anfordern kann.

Wie lange was hältAchse: 90 Tage
Access-Token
24 Stunden
Wird planmäßig erneuert, dieses hier begrenzt Sie also nie.
Changelog-Vorhaltezeit
4 Wochen
Die älteste Änderung, die Sie noch anfordern können.
Refresh-Token
90 Tage
Noch lange gültig, nachdem das Changelog vergessen hat.

Tag 29 bis Tag 90 ist die teure Strecke. Nach einer so langen Pause funktionieren die Zugangsdaten noch, der inkrementelle Abgleich ist nicht mehr zu retten, und keine der beiden Antworten sagt Ihnen, dass Sie die Grenze überschritten haben.

Die drei Dauern, die Pennylane veröffentlicht, auf einer Achse. Access-Token und Refresh-Token aus dem OAuth-Leitfaden, die Vorhaltezeit aus dem Changelog-Leitfaden, beides geprüft am 13. August 2026.
Die Zugangsdaten überleben das Changelog um 62 Tage

Eine Integration, die fünf Wochen pausiert hat, verbindet sich ohne Fehlermeldung wieder, denn das Refresh-Token ist 90 Tage gültig. Ihr Changelog-Cursor liegt inzwischen allerdings außerhalb des Vorhaltefensters, und der einzige Weg zurück zu einer korrekten lokalen Kopie ist ein vollständiges Neulesen jeder betroffenen Ressource.

Keine der beiden Antworten sagt Ihnen, auf welcher Seite von Tag 28 Sie stehen. Ein festgehaltener Zeitstempel des letzten erfolgreichen Abgleichs und eine Regel für alles jenseits von 28 Tagen sind ein paar Stunden Arbeit, die sich beim ersten länger laufenden Ausfall bezahlt machen.

Die Ratenbegrenzung gibt das Tempo dieser Wiederherstellung vor, und die dokumentierte Angabe ist ein Fenster statt einer Rate je Sekunde. Pennylane erlaubt „bis zu 25 Anfragen alle 5 Sekunden“, angewendet „auf Token-Ebene“, in der Sandbox wie im Produktivbetrieb, und „alle Endpunkte ... sind betroffen“. Je Token ist wichtig: Das Budget wächst mit der Zahl der angebundenen Unternehmen, statt sich über Ihre ganze Anwendung zu verteilen.

Was ein Wiederherstellungslauf kostet, folgt allein aus diesen zwei Zahlen. 10.000 Änderungen bei der Standard-Seitengröße von 20 zu lesen sind 500 Changelog-Aufrufe plus 500 Batch-Lesezugriffe, also 1.000 Anfragen, das sind 40 Fenster und rund 200 Sekunden.

Dieselbe Wiederherstellung kostet beim dokumentierten Maximum von 1.000 je Seite 20 Anfragen und passt in ein einziges Fenster. Der Standardwert ist die teure Wahl, und er ist der, den Sie bekommen, wenn Sie limit nicht mitgeben.

Ein hilfreiches Detail beim Justieren: Die Header ratelimit-limit, ratelimit-remaining und ratelimit-reset kommen auch bei erfolgreichen Antworten zurück, nicht nur bei einem 429. Das verbleibende Budget ist lesbar, bevor Sie die Obergrenze erreichen, Sie können sich also daran ausrichten.

Grenze, Geltungsbereich und Header-Verhalten aus der Seite zur Ratenbegrenzung von Pennylane, geprüft am 13. August 2026. Die Seitengrößen aus dem Changelog-Leitfaden. Die 200 Sekunden sind eine Rechnung aus diesen zwei Zahlen.

Die Eckdaten

Was maesn abdeckt, und was bei Ihnen bleibt

Eine vereinheitlichte Schnittstelle übernimmt das meiste von dem, was die Abschnitte oben beschreiben. Die Partnerbeziehung übernimmt sie nicht, und diese Aufteilung entscheidet den Zeitplan eines Pennylane-Projekts, denn die Hälfte, die bei Ihnen bleibt, trägt die längste Vorlaufzeit.

Was die Verbindung Ihnen abnimmt:

  • Der Token-Lebenszyklus samt Rotationsfalle. Der Ablauf nach 24 Stunden, das einmal verwendbare Refresh-Token und die Serialisierung, die verhindert, dass zwei Worker einander die Zugangsdaten zerstören.
  • Eine Form für Kunden und Lieferanten. Die zwei unterstützten Objekte kommen in derselben vereinheitlichten Form an wie bei jedem anderen angebundenen System, die Zuordnung wird also einmal geschrieben.
  • Das Takten gegen das Token-Budget. Anfragen werden gegen die Obergrenze von 25 je 5 Sekunden eingereiht und wiederholt, ein 429 erreicht Ihren Code also nie.
  • Die Cursor-Behandlung mit dem Filter daran. Der Fehlerfall aus dem Leseabschnitt ist nichts mehr, woran sich jede Integration erinnern muss.
  • Eine Sandbox für ein System ohne kostenlosen Testzugang. Pennylane bietet kein Testkonto an, und eine Umgebung von maesn gibt es auf Anfrage.

Was bei Ihnen bleibt, und der erste Punkt ist eine kaufmännische Aufgabe statt einer technischen:

  • Die Beziehung zu Pennylane. Client-ID und Secret werden Ihnen ausgestellt, vom dortigen Partnerschaftsteam, gegen Ihre Scope-Liste. Dieses Gespräch kann niemand an Ihrer Stelle führen, und es ist die lange Vorlaufzeit im Plan.
  • Die Entscheidung über die Scope-Liste. Welche Objekte Ihr Produkt braucht, ist eine Produktfrage. Sie ist zudem nahezu unumkehrbar, denn die Liste später zu erweitern heißt, zurück zum selben Team zu gehen.
  • Ihre eigene Regel für den Abgleich jenseits von 28 Tagen. Das Changelog-Fenster gehört Pennylane, und was Ihr Produkt tut, wenn es überschritten ist, gehört Ihnen.
  • Die Deduplizierung beim Schreiben. Da es außerhalb des Imports von Lieferantenrechnungen keinen Idempotenzschlüssel gibt, bleibt es Ihre Aufgabe, dieselbe Anlage nicht zweimal zu senden.
Zwei Objekte heute, und was auf Anfrage tatsächlich heißt

Zwei unterstützte Objekte lesen sich wie eine dünne Verbindung, und das ist nicht das ganze Bild. Neunzehn weitere Objekte sind mit „On demand - contact us“ gekennzeichnet, und das ist ein Zustand, den ein Gespräch ändert, und die zwei, die live sind, sind das Paar, auf dem Kreditoren und Debitoren beide aufbauen.

Die Planungsfrage lautet also nicht, ob Pennylane abgedeckt ist. Sie lautet, welche dieser neunzehn Ihre Roadmap braucht und wann Sie sie anfragen wollen.

Objektzustände gezählt aus unseren Abdeckungsdaten je System am 13. August 2026. Die drei Zustandsbezeichnungen sind aus der Legende unserer Pennylane-Integrationsnotizen zitiert. Die unterstützten Anwendungsfälle und ihre Ausschlüsse aus der Übersicht der Anwendungsfälle von Pennylane.

FAQ

Häufige Fragen

Wie bekomme ich Pennylane-Client-Zugangsdaten?

Nicht über ein Anmeldeformular. Sie wenden sich an das Partnerschaftsteam von Pennylane, beschreiben die Integration und benennen die Scopes, die Sie brauchen, und nach der Prüfung stellt es eine Client-ID und ein Secret aus. Speichern Sie beides sofort: Pennylane gibt an, dass sie sich später nicht mehr abrufen lassen, und ein Verlust bedeutet eine neue App.

Wo finde ich die Partnerliste von Pennylane?

Auf der Seite für Technologiepartner von Pennylane, die unsere Integrationsnotizen direkt verlinken. Es ist derselbe Weg wie bei den Zugangsdaten: Die Registrierung eines OAuth-Clients läuft über das Partnerschaftsteam, das kaufmännische Gespräch und die technische Einrichtung beginnen also an derselben Stelle.

Wie lange sind Pennylane-Tokens gültig?

Access-Tokens laufen nach 24 Stunden ab, Refresh-Tokens sind 90 Tage gültig. Pennylane nutzt Refresh-Token-Rotation, jeder Refresh macht also das gerade benutzte Token ungültig und liefert ein neues zurück. Zwei Worker, die dasselbe Token gleichzeitig erneuern, zerstören sich gegenseitig.

Wie hoch sind die Ratenbegrenzungen von Pennylane?

Fünfundzwanzig Anfragen alle fünf Sekunden, angewendet je Token statt je Anwendung, im Produktivbetrieb wie in der Sandbox. Jede Antwort trägt ratelimit-limit, ratelimit-remaining und ratelimit-reset, auch die erfolgreichen, Sie können sich also an den Headern ausrichten statt an einem 429.

Unterstützt Pennylane Webhooks?

Drei, und sie sind in der Beta. Pennylane empfiehlt für die Beta selbst, auf seine Changelog-Endpunkte zurückzugreifen. Alle drei decken den E-Rechnungs-Status und den Dokumenteneingang ab, weder Kunden noch Lieferanten melden also ihre eigenen Änderungen, und beide werden abgefragt.

Wie weit zurück kann ich aus dem Pennylane-Changelog neu abgleichen?

Vier Wochen. Änderungen werden für dieses Fenster vorgehalten, und der Endpunkt weist ein älteres Startdatum ab, eine Lücke von mehr als 28 Tagen lässt sich also nicht inkrementell schließen. Die Wiederherstellung ist ein vollständiges Neulesen der Ressource, und das ist ein anderer Aufwand, den Sie einplanen.

Warum liefert mein Pennylane-Aufruf einen 403?

Das Token ist gültig, ihm fehlt aber der Scope für diese Ressource. Weil die Scopes vor dem Bauen mit einem Team von Menschen vereinbart werden, lohnt es sich, die Schnittstelle zu fragen, was tatsächlich gewährt wurde: GET /me liefert die aktiven Scopes für Ihr Token und braucht keinen eigenen Scope.

Einmal bauen, auf der Unified API.

Der Partnerprozess von Pennylane, seine rotierenden Refresh-Tokens und sein Changelog über vier Wochen sind je eine Woche der Zeit von jemandem. Bauen Sie gegen eine Schnittstelle, und aus jedem davon wird eine Zeile in einer Tabelle statt eines Projekts.