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.
- 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. Ob Transaction search aktiv ist, kann Rechnungskit beim Verbinden nicht prüfen; das zeigt erst der erste Abruf.
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.
- 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.
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-Ereignis prüfen“ (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.
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).
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.