PayPal verbinden
Aktualisiert am
PayPal wird über eine eigene REST-App in deinem PayPal-Konto verbunden. Das dauert einmalig ein paar Minuten, danach läuft alles automatisch. Was Rechnungskit aus PayPal-Zahlungen macht, von der E-Rechnung bis zur Gebührenbuchung, zeigt die Produktseite.
- Abruf alle paar StundenTransaction Search, letzte 7 Tage: Zahlungen, Erstattungen, Gebühren
- Webhook sofortnur für Zahlungen über den Rechnungskit Checkout, signiert
- ZuordnungBestellnummer aus custom_id oder invoice_id, bei Shopify notfalls die PayPal-Transaktionsnummer
- Abhebungentäglich aus der Transaktionshistorie der letzten 30 Tage
Bevor du startest
Du brauchst dein PayPal-Geschäftskonto, und zwar genau das Konto, auf dem deine Shop-Zahlungen eingehen. Mit denselben Zugangsdaten meldest du dich im PayPal Developer Dashboard an (developer.paypal.com), ein eigenes Entwicklerkonto ist nicht nötig. Für die Einrichtung reichen rund fünf Minuten. Danach dauert es bis zu 9 Stunden, bis PayPal die Transaktionsdaten für die neue App freigibt; die ersten Zahlungen siehst du deshalb oft erst am nächsten Morgen.
Einrichtung
- Oben auf Live umschaltennicht Sandbox, auch für den Rechnungskit-Testmodus
- Apps & Credentials → Create AppName zum Beispiel Rechnungskit
- Transaction search anhakenunter Add-on services, standardmäßig aus. Customer disputes bleibt an
- Client ID und Secret kopierendas Secret zeigt PayPal erst nach einem Klick
- Verbindungen → Connectauf der PayPal-Karte „Verbinden“ klicken
- Beide Werte einfügenPayPal Client-ID und Secret Key, dann verbinden
Im PayPal Developer Dashboard (direkt im Live-Bereich) unter Apps & Credentials eine eigene REST-App anlegen (Create App, Name z. B. Rechnungskit). Wichtig: oben Live auswählen, nicht Sandbox. Rechnungskit braucht Live-Zugangsdaten, auch im Rechnungskit-Testmodus.


In der App unter Add-on services das Häkchen Transaction search AKTIVIEREN (standardmäßig aus). Wichtig: PayPal schaltet die Daten erst mit bis zu 9 Stunden Verzögerung frei. Direkt nach dem Aktivieren liefert der Abruf also noch nichts, und „Jetzt synchronisieren“ unter Zahlungen meldet „0 Zahlungen geprüft“, obwohl die Verbindung korrekt ist. Das ist normal: Rechnungskit ruft alle paar Stunden automatisch ab und holt die letzten 7 Tage nach, sobald PayPal die Daten bereitstellt, meist am nächsten Morgen. Bleibt es auch nach einem Tag bei 0, prüfe, ob die REST-App wirklich zu dem PayPal-Konto gehört, auf dem die Shop-Zahlungen eingehen. Customer disputes ist standardmäßig an und bleibt an. Alle anderen Häkchen (Checkout, SDKs, Vault, Subscriptions, Invoicing, Payouts) sind für Rechnungskit ohne Bedeutung.

Client-ID und Client-Secret unter Verbindungen → Connect bei PayPal eintragen (Knopf „Verbinden“ auf der PayPal-Karte). Rechnungskit erkennt automatisch, ob es sich um Live- oder Sandbox-Zugangsdaten handelt: Es probiert sie zuerst gegen Live, dann gegen Sandbox. Die Karte zeigt danach „Live-Modus“ oder „Testmodus“. Steht dort „Testmodus“, hast du eine Sandbox-App erwischt, in der deine echten Zahlungen nie auftauchen. Für Checkout und Abos im Testmodus trägst du die Sandbox-App zusätzlich im Feld „Test-Zugangsdaten“ unter der Karte ein, siehe Checkout und Abos im Testmodus.


Den Webhook registriert Rechnungskit automatisch in deiner App, inklusive Signatur-Prüfung der Meldungen. Der Bereich Live Webhooks im PayPal-Dashboard kann leer bleiben. Lässt sich der Webhook nicht anlegen, speichert Rechnungskit die Verbindung nicht. Danach fragt Rechnungskit einmal kurz die Transaktionen der letzten Stunde ab. Lehnt PayPal das ab, bleibt die Verbindung gespeichert, die PayPal-Karte zeigt sofort die Anleitung und es entsteht eine dringende Aufgabe, siehe „Transaction search“ fehlt.
Gut zu wissen: PayPal schickt Webhooks nur für Zahlungen, die über genau diese App laufen. Zahlungen aus Shopify oder WooCommerce laufen über deren eigene PayPal-Anbindung, dafür kommen also keine Webhooks an. Das ist kein Fehler. Rechnungskit holt diese Zahlungen und Erstattungen über den Transaktionsabruf (Transaction Search). Der Webhook greift bei Zahlungen über den Rechnungskit Checkout.
Wenn es hakt
- Meldung „PayPal-Zugangsdaten ungültig (Client-ID/Secret prüfen)“, meist mit HTTP 401: PayPal hat die Werte weder live noch in der Sandbox angenommen. Kopiere Client-ID und Secret neu aus der Live-App; häufig fehlt ein Zeichen oder die beiden Werte sind vertauscht.
- Roter Hinweis „PayPal verweigert den Transaktionsabruf: „Transaction Search“ fehlt“ auf der PayPal-Karte (dazu eine dringende Aufgabe und einmal eine E-Mail): An deiner App ist Transaction search nicht angehakt. So behebst du es, siehe „Transaction search“ fehlt.
- Die PayPal-Karte zeigt „Testmodus“ statt „Live-Modus“: Die Zugangsdaten gehören zu einer Sandbox-App. Lege die App im Live-Bereich an und trage die neuen Werte über „Schlüssel erneuern“ ein.
- „Jetzt synchronisieren“ meldet „0 Zahlungen geprüft“: Transaction search ist aus oder PayPal hat es noch nicht freigeschaltet (bis zu 9 Stunden). Häkchen prüfen und bis zum nächsten Morgen warten.
- Nach einem Tag kommen immer noch keine Zahlungen: Die App gehört vermutlich zu einem anderen PayPal-Konto. Meldet dein Shop Bestellungen mit PayPal, während die PayPal-Verbindung noch keine Zahlung geliefert hat, legt Rechnungskit dazu eine Aufgabe an.
- Meldung „Verbindung fehlgeschlagen: PayPal API nicht erreichbar“: PayPal war nicht erreichbar oder hat das Anlegen des Webhooks abgelehnt, zum Beispiel weil an der App schon zehn Webhooks hängen (mehr erlaubt PayPal je App nicht). Versuch es später erneut und lösch nicht mehr genutzte Webhooks der App im PayPal-Dashboard.
- Hinweis „PayPal läuft bei dir bereits über Mollie“ (oder Stripe, Unzer): Die direkte Verbindung erfasst dieselben Zahlungen doppelt. Duplikate von Mollie- und Stripe-Zahlungen erkennt Rechnungskit automatisch und stuft sie als Kein Umsatz ein, bei Unzer geht das technisch nicht. Laufen alle PayPal-Zahlungen über den anderen Anbieter, trenn die direkte PayPal-Verbindung.
„Transaction search“ fehlt
Ohne das Häkchen Transaction search an deiner REST-App lehnt PayPal jeden Transaktionsabruf mit „403 NOT_AUTHORIZED“ ab („Authorization failed due to insufficient permissions“). Solange das so ist, kommen bei Rechnungskit keine Abhebungen aufs Bankkonto und keine Erstattungen an (also auch keine Stornos), und Zahlungen, deren Webhook verloren ging, werden nicht nachgeholt. Zahlungen über den Rechnungskit Checkout kommen weiter per Webhook.
Rechnungskit meldet das sofort, nicht erst nach dem nächsten nächtlichen Lauf:
- beim Verbinden über einen kurzen Probeabruf, und bei jedem späteren Abruf (Zahlungen, Erstattungen, Abhebungen),
- als roter Hinweis auf der PayPal-Karte unter Verbindungen → Connect, mit der Anleitung und dem Knopf „Behoben, jetzt prüfen“,
- als dringende Aufgabe „PayPal: „Transaction Search“ fehlt“, als roter Hinweis oben auf dem Dashboard und in der Kachel „Verbindungen reparieren“,
- einmal per E-Mail an Inhaber und Admins. Danach steht die offene Aufgabe in deiner Aufgaben-Erinnerung, eine zweite E-Mail kommt nicht.
So behebst du es:
- Melde dich auf developer.paypal.com an und öffne „Apps & Credentials“.
- Wechsle oben auf „Live“ und öffne die App, die mit Rechnungskit verbunden ist.
- Kreuze im Abschnitt „Add-on services“ (je nach Ansicht „Features“) „Transaction search“ an und speichere.
- Warte, bis PayPal die Freigabe aktiviert. Das kann bis zu 9 Stunden dauern.
- Klicke in Rechnungskit auf der PayPal-Karte auf „Behoben, jetzt prüfen“ oder unter Zahlungen auf „Jetzt synchronisieren“.
„Behoben, jetzt prüfen“ macht einen kurzen Probeabruf. Gibt PayPal die Transaktionen frei, schließt sich die Aufgabe und Rechnungskit holt Zahlungen, Erstattungen und Abhebungen sofort nach. Lehnt PayPal noch ab, bleibt die Aufgabe offen. Prüfst du nicht selbst, schließt der nächste gelungene Abruf die Aufgabe, spätestens nach vier Stunden. Jede Prüfung steht mit Zeitpunkt und Ergebnis in der Aufgabe.
Ist das Häkchen gesetzt und PayPal lehnt nach einem Tag immer noch ab, gehört die App vermutlich zu einem anderen PayPal-Konto als dem, auf dem deine Shop-Zahlungen eingehen. Lege die App dann im richtigen Geschäftskonto an und trag die neuen Zugangsdaten über „Schlüssel erneuern“ ein.
Was automatisch passiert
- Zahlungen und Erstattungen ruft Rechnungskit alle paar Stunden über den Transaktionsabruf ab (letzte 7 Tage), Zahlungen über den Rechnungskit Checkout kommen zusätzlich sofort per signiertem Webhook. Eine Erstattung erzeugt automatisch die Stornorechnung, sobald die Original-Zahlung einer Bestellung zugeordnet ist.
- Meldet dein Shop eine Erstattung über PayPal, wartet Rechnungskit auf die passende Erstattung bei PayPal und erstellt den Storno daraus. Liegt die Shop-Erstattung weiter zurück, holt der Abruf automatisch bis zu 31 Tage nach. Kommt nach einem Tag trotzdem keine Erstattung bei PayPal an, entsteht die Aufgabe „Shop-Änderung nach der Rechnung“ (siehe Shop-Korrektur prüfen). Sie schließt sich von selbst, sobald der Storno da ist.
- Die PayPal-Gebühr wird je Transaktion erfasst und als eigene Buchung ausgewiesen, nicht mit dem Umsatz verrechnet. Im DATEV-Export hat PayPal ein eigenes Geldtransitkonto (vorbelegt 1362 im SKR03, 1462 im SKR04): Zahlungen, Gebühren und Erstattungen buchen darauf, Zahlungen und Erstattungen gegen den Debitor der Rechnung (Erlös und Umsatzsteuer kommen nur aus dem Erlösstapel), Abhebungen aufs Bankkonto als Umbuchung vom Transitkonto auf die Bank. Die Gebühr bucht je Zahlung am Zahlungstag (Gebühren an Geldtransit). Gibt PayPal bei einer Erstattung einen Teil der Gebühr zurück, bucht dieser Teil umgekehrt. Ändern lässt sich das Konto in den DATEV-Einstellungen im Tab „Zahlungskonten“.
- Rücklastschriften (Disputes) öffnen den Posten wieder und landen zur Klärung in den Aufgaben, inklusive Dispute-Gebühr. Gewonnene Disputes werden entsprechend aufgelöst, ein automatischer Storno entsteht nicht.
- Die Bestellnummer wird aus den PayPal-Feldern (custom_id, invoice_id) gelesen und für die Zuordnung genutzt.
- Bei Shopify steht in invoice_id nicht immer die Bestellnummer, sondern teils ein interner Schlüssel der Checkout-Sitzung. Für diese Zahlungen liest Rechnungskit die PayPal-Transaktionsnummer aus der Shopify-Bestellung und ordnet darüber eindeutig zu. Das braucht keine Einstellung, nur die verbundene Shopify-Verbindung (siehe Zahlungen, Zuordnung und Auszahlungs-Abgleich).
So bucht der DATEV-Export eine PayPal-Zahlung
Vorbelegt bucht der Zahlungsstapel eine PayPal-Zahlung als PayPal-Geldtransit an Debitor. Die Gebühr läuft als Nebenkosten des Geldverkehrs an Geldtransit (SKR03 4970, SKR04 6855), die Abhebung als Bank an Geldtransit (SKR03 1200, SKR04 1800). Eine Erstattung ist die umgekehrte Zahlung, also Debitor an Geldtransit; Erlös und Umsatzsteuer mindert die Stornorechnung im Erlösstapel. Nach Zahlung, Gebühr und Abhebung stehen Debitor und PayPal-Transitkonto auf null, und deine Steuerkanzlei kann das Transitkonto direkt gegen den PayPal-Kontoauszug abstimmen.
Belege bekommen auch diese Buchungen: Zu den Gebühren eines Monats erzeugt Rechnungskit eine Gebührenaufstellung als PDF, zu jeder Abhebung einen Auszahlungsbeleg. Mit eingeschaltetem Belegtransfer zeigt jede Gebühren- und Abhebungsbuchung per Beleglink darauf (Auszahlungsbelege im Zahlungsstapel).
Abhebungen aufs Bankkonto
PayPal hat keine Auszahlungs-API wie Stripe oder Mollie. Rechnungskit liest stattdessen täglich die Transaktionshistorie (Transaction Search, letzte 30 Tage) und erkennt Abhebungen auf dein Bankkonto als Umbuchungen.
PayPal zahlt immer dein Guthaben aus. Unter /payouts zerlegt Rechnungskit deshalb jede Abhebung in alles, was das Guthaben seit der Abhebung davor bewegt hat: Verkäufe mit ihrer Gebühr, Erstattungen (samt zurückgegebener Gebühr), eigene Gebührenbuchungen von PayPal und sonstige Bewegungen wie Konfliktfälle, Einbehalte oder Währungsumrechnungen. Was vorher auf dem Guthaben lag oder danach stehen bleibt, steht als eigene Position „Saldo-Übertrag (PayPal)“. Verkäufe und Erstattungen werden über die PayPal-Transaktionsnummer mit ihren Zahlungen verknüpft, deshalb zeigt die Spalte Positionen zum Beispiel „870/876“. Ein Verkauf vor dem Belegstart steht mit dem Hinweis „vor Belegstart“ da und zählt nicht als „ungeklärt“. Das gilt auch für eine Erstattung, deren Verkauf vor dem Belegstart lag: Rechnungskit fragt das Verkaufsdatum bei PayPal ab und markiert sie automatisch „vor Belegstart“. Fehlt ein Verkauf aus der Zeit nach dem Belegstart, holt Rechnungskit ihn samt Erstattung nach, dann bekommt er Rechnung und Storno wie jeder andere. Eine andere Position ohne Zahlung bei Rechnungskit bleibt sichtbar „ungeklärt“.

Auch noch ausstehende Abhebungen (PayPal-Status „ausstehend“) zählt Rechnungskit als Abhebung, denn das Geld ist in dem Moment vom Guthaben weg. Einbehalte von PayPal, etwa bei einem Konfliktfall oder einer offenen Autorisierung, senken das auszahlbare Guthaben. Bei ihren Freigaben meldet PayPal den Status nicht einheitlich. Bleibt deshalb zwischen Positionen und Abhebung eine Lücke, die nicht größer ist als die Einbehalte und Freigaben des Zeitraums, steht sie als eigene Position „Einbehalte und Freigaben (PayPal)“ mit den zugehörigen PayPal-Transaktionen da, und die Abhebung gilt als abgeglichen. Manchmal bucht PayPal Geld aufs Guthaben, ohne dafür eine eigene Zeile zu liefern. Das zeigt der Kontostand, den PayPal zu jeder Transaktion mitschickt: Er springt dann um mehr als den Betrag der Zeile. Erklären solche Sprünge die Lücke auf den Cent, steht jeder als Position „Saldobewegung ohne Einzelzeile (PayPal)“ mit Datum und Betrag da. Eine größere Lücke bleibt als „Differenz“ mit Aufgabe sichtbar. Beim nächsten „Jetzt synchronisieren“ unter Zahlungen baut Rechnungskit auch ältere Abhebungen mit Differenz neu auf (bis zu sechs Monate zurück).

Die Gebühren im Kopf einer Abhebung zeigen nur, woraus sie sich zusammensetzt. Gebucht werden sie weiter je Zahlung am Zahlungstag (siehe oben), nie ein zweites Mal aus der Abhebung.
„Nicht aufgeschlüsselt“ mit „nur Summe“ steht bei einer Abhebung, deren Vorgängerin Rechnungskit nicht kennt: der ersten nach dem Verbinden, einer, deren Abhebung davor mehr als sechs Monate zurückliegt, oder einer, die schon älter als 30 Tage war, als Rechnungskit am 20.10.2026 mit dem Aufschlüsseln begann. Bei der ältesten Abhebung im 30-Tage-Fenster holt Rechnungskit den fehlenden Zeitraum einmal nach. Für „nicht aufgeschlüsselt“ musst du nichts tun und keine Berechtigung ändern: Die Zahlungen selbst stehen mit ihren Gebühren unter Zahlungen.
Grenzen, ehrlich benannt
- Rückzahlungen eines PayPal-Geschäftskredits (Transaktionscodes T9701/T9702) bucht Rechnungskit nicht von selbst, weil PayPal deren Buchungscodes nicht verlässlich dokumentiert. Standardmäßig erscheinen sie als monatliche Klärungsaufgabe. Schaltest du in den DATEV-Einstellungen „PayPal Businesskredit-Tilgungen buchen“ ein, bucht der Export sie über die Zuordnung paypal_credit_repayment (Darlehensverbindlichkeit an PayPal-Geldtransit). Stimm das vorher mit deiner Steuerkanzlei ab.
- Läuft PayPal bei dir über Mollie, brauchst du die direkte PayPal-Anbindung nicht, das übernimmt die Mollie-Integration.
- Ohne aktivierte Transaction-Search-Funktion in der REST-App bleiben Gebühren und Abhebungen unvollständig.
Häufige Fragen
PayPal läuft schon in meinem Shopify-Shop. Warum brauche ich trotzdem eine eigene App?
Shopify wickelt PayPal über seine eigene PayPal-Anbindung ab, WooCommerce ebenso. Auf diese Daten hat Rechnungskit keinen Zugriff. Über deine eigene REST-App liest Rechnungskit die Transaktionen deines Geschäftskontos mit, auch die Zahlungen aus dem Shop. An der PayPal-Einbindung in deinem Shop änderst du dafür nichts.
Was kann Rechnungskit mit der App tun?
Rechnungskit liest Transaktionen, Gebühren, Erstattungen und Streitfälle und legt beim Verbinden seinen Webhook auf der App an. Zahlungen oder Erstattungen löst es nicht aus. Nutzt du PayPal im Rechnungskit Checkout, wickelt Rechnungskit dort über dieselbe App die Zahlung deines Käufers ab.
Muss ich unter Live Webhooks etwas eintragen?
Nein. Rechnungskit legt den Webhook beim Verbinden selbst an. Taucht in der Webhook-Liste der App danach eine Rechnungskit-Adresse auf, ist das genau dieser Webhook. Lösch ihn nicht.
Kann ich das erst mit der Sandbox ausprobieren?
Verbinden lässt sich auch eine Sandbox-App, die Karte zeigt dann „Testmodus“. Deine echten Zahlungen erscheinen dort aber nie. Nimm deshalb gleich die Live-App, auch wenn dein Rechnungskit-Projekt noch im Testmodus ist. Für deinen Shop liest Rechnungskit ohnehin nur mit.
Ich habe verbunden, aber es kommt nichts an. Was jetzt?
Erst einmal abwarten: PayPal gibt Transaction search mit bis zu 9 Stunden Verzögerung frei. Danach holt Rechnungskit beim nächsten Abruf die letzten 7 Tage nach, oder sofort über „Jetzt synchronisieren“ unter Zahlungen. Bleibt es nach einem Tag leer, prüf das Häkchen und ob die App im richtigen PayPal-Konto liegt (siehe Wenn es hakt).
Mehrere WooCommerce-Shops mit einer PayPal-Verbindung
Laufen zwei WooCommerce-Shops im selben Projekt über dasselbe PayPal-Konto, reicht eine PayPal-Verbindung. Gib jedem Shop in WooCommerce PayPal Payments ein eigenes „Invoice prefix“, zum Beispiel „SHOPA-“ und „SHOPB-“. PayPal erhält dann „SHOPB-1234“ statt „1234“, und Rechnungskit ordnet die Zahlung nur Bestellungen von Shop B zu. Das Präfix liest Rechnungskit aus dem Shop oder du trägst es auf der WooCommerce-Karte unter „PayPal-Rechnungspräfix“ ein. Gibt es ohne Präfix dieselbe Bestellnummer in beiden Shops, entsteht eine Aufgabe zum Zuordnen (siehe woocommerce).
So findest du es in der App
Rechnungskit ist keine Steuerberatung und keine Rechtsberatung. Dieser Beitrag erklärt allgemeine Zusammenhänge und ersetzt weder die Beratung durch deine Steuerkanzlei (§ 5 StBerG) noch eine Rechtsberatung (§ 3 RDG). Rechnungskit richtet sich an in Deutschland ansässige Unternehmen und bereitet Belege, Steuersätze und Buchungen automatisch auf. Wie dein Einzelfall zu bewerten ist, entscheidest du, im Zweifel gemeinsam mit deiner Steuerkanzlei oder einer Anwaltskanzlei.