Zahlungs-Stack für Solo-Gründer: Stripe, Paddle, Lemon Squeezy oder WeChat Pay?

"Paddle: Zugriff per Webhook bereitstellen und Abonnementstatus verarbeiten"
Hinweis: Dieser Artikel ist keine Steuer-, Rechts-, Gründungs-, Devisen- oder Zulassungsberatung. Für Merchant-of-Record-Verträge, VAT/GST/sales tax, in- oder ausländische Gesellschaften und Auszahlungswege gelten Anbieterbedingungen und qualifizierte Beratung.
In deiner pricing.ts stehen starter_monthly, pro_yearly, lifetime_license und wechat_one_time, doch die Datenbank kennt nur is_paid. Ein checkout.session.completed-Webhook trifft ein und der Kunde kehrt über success_url zurück, aber entitlements bleibt leer. Nicht der Zahlungsbutton ist kaputt. Das Zahlungssystem verbindet Produkte, Bestellungen, Abonnements und Zugriffsrechte nicht.
Vor der Anbieterwahl muss ein Solo-Gründer fünf Fragen beantworten: Was wird verkauft? Wie wird abgerechnet? Wer kauft? Wer trägt Verantwortung für Transaktion und Umsatzsteuer? Wer schaltet nach der Zahlung den Zugriff frei? Stripe, Paddle, Lemon Squeezy und WeChat Pay sind keine vier gleichwertigen Buttons, sondern decken verschiedene Ebenen ab.
Erst das Verkaufsmodell, dann den Zahlungsanbieter wählen
Bei Einmalkäufen zählen Bestellung und Auslieferung, bei SaaS-Abonnements der gesamte Billing-Lifecycle. Nutzungsbasierte Abrechnung erfordert zusätzlich nachvollziehbare Usage-Daten. Übertrage das Modell zuerst in products, prices und lokale Tabellen.
| Verkaufsmodell | Mögliche Ausgangspunkte | Wichtige asynchrone Ereignisse | Lokale Kerntabellen |
|---|---|---|---|
| Einmaliges Digitalprodukt | Stripe / Paddle / Lemon Squeezy | checkout.session.completed / transaction.completed / order_created | orders + entitlements |
| SaaS-Abonnement | Stripe Billing / Paddle Billing / Lemon Squeezy | customer.subscription.* / subscription.* | subscriptions + entitlements + bei Verbrauch usage_events |
| Mischung aus Abonnement und Einmalkauf | Stripe Billing / Paddle Billing | Mehrere Ereignistypen | orders + subscriptions + entitlements |
| Festlandchina oder WeChat-Ökosystem | WeChat Pay (JSAPI/H5/Native) | Zahlungs-Callback und Bestellabfrage | orders + wechat_prepay |
Drei Punkte sind entscheidend:
- Ein Einmalprodukt braucht vor allem Bestellung, Auslieferung, Erstattung und erneute Zustellung, nicht den vollständigen Abonnement-Lifecycle.
- Ein SaaS-Abonnement benötigt eine
subscriptions-Tabelle mitcurrent_period_start/end,cancel_atundstatus. Verbrauchsabrechnung braucht zusätzlich auditierbareusage_events. - WeChat Pay ist Zahlungsweg und Händlersystem, kein Ersatz für einen globalen Merchant of Record oder eine SaaS-Billing-Plattform.
Die Fähigkeiten von Stripe Billing, Paddle Billing und WeChat Pay können sich ändern. Prüfe vor der Implementierung Kontoregion, Produktmodus, Zahlungsarten, API-Version und Bedingungen.
Ein Merchant of Record beseitigt nicht jede Verantwortung
Ein Merchant of Record, kurz MoR, ist der rechtlich erfasste Verkäufer einer Transaktion. Paddle und Lemon Squeezy nutzen dieses Modell für zulässige Digitalprodukte und bearbeiten im Umfang dieser Transaktionen Zahlungen, Umsatzsteuer, Erstattungen oder Streitfälle. Das senkt den Aufwand für globale Umsatzsteuer und Billing-Betrieb, beseitigt aber nicht Pflichten zu Ertragsteuern, Rechtsform, Produkt-Compliance, Datenschutz und Buchhaltung.
Bei Stripe bleibt üblicherweise der Händler Verkäufer. Stripe Tax hilft bei der Berechnung von sales tax, VAT und GST sowie bei Schwellenüberwachung und registrierungsbezogenen Abläufen, macht Stripe aber nicht automatisch zum Merchant of Record. Registrierung, Meldung und Pflichten hängen von Rechtsraum und Transaktion ab.
Wähle einen MoR nicht anhand einer festen Umsatzgrenze, sondern vergleiche diese Dimensionen:
| Dimension | Eigener Payment- und Billing-Stack | Merchant of Record |
|---|---|---|
| Anpassbarkeit | Checkout, Billing, Tax, Rechnungen und interne Abläufe frei kombinieren | Produktregeln, Checkout, Vertrag und Auszahlungsregeln der Plattform einhalten |
| Steuer- und Billing-Betrieb | Händler prüft Registrierung, Meldung, Rechnungen, Erstattungen und Streitfälle | MoR übernimmt für abgedeckte Transaktionen Umsatzsteuer, Zahlung und ausgewählte Compliance-Aufgaben |
| Kostenmodell | Neben Transaktionsgebühren auch Steuerwerkzeuge, Entwicklung, Finanzen und Support zählen | Nicht nur Prozentsatz, sondern Auszahlungen, Erstattungen, Zusatzgebühren und Grenzen prüfen |
| Geeignet für | Starke Anpassung, vorhandener Betrieb oder besondere Vertragsabläufe | Weniger globale Umsatzsteuer- und Abonnementarbeit für zulässige Produkte |
Die genaue Vertrags- und Steuergrenze hängt von Gesellschaft, Rechtsraum, Produkt und Kundentyp ab. Marketingseiten erklären Positionierung, ersetzen aber weder Bedingungen noch Beratung.
Stripe, Paddle, Lemon Squeezy oder WeChat Pay auswählen
Wenn du Abonnements und WeChat Pay brauchst, trenne zuerst die Aufgaben. Abonnement-Lifecycle, globale Zahlungen und Festlandchina-Zahlungen müssen nicht von einem Anbieter stammen. Eine gelistete Zahlungsart funktioniert nicht automatisch für jede Kontoregion, jeden Checkout-Modus oder wiederkehrende Zahlungen.
| Anbieter | Verantwortungsmodell | Abonnements und Einmalkäufe | China-Zahlungen | Native Lizenzierung | Guter Ausgangspunkt |
|---|---|---|---|---|---|
| Stripe | Payment-, Billing- und Tax-Werkzeuge; normalerweise kein MoR | Checkout und Billing mit hoher Anpassbarkeit | Alipay/WeChat Pay abhängig von Kontoregion, Währung und Produktmodus | Kein allgemeines License-Key-Produkt | SaaS mit Kontrolle über Zahlung, Abonnement, Steuerwerkzeuge und interne Abläufe |
| Paddle | Merchant of Record | Paddle Billing und Checkout | Zulässigkeit aktuell in Dashboard und Dokumentation prüfen | Anwendung verwaltet Rechte | Softwaregeschäft mit weniger globaler Umsatzsteuer- und Abonnementarbeit |
| Lemon Squeezy | Merchant of Record | Digitalprodukte, einfache Abonnements und Verbrauchsabrechnung | Einmalkauf kann Alipay/WeChat Pay zeigen; Abonnementarten stärker begrenzt | License Keys | Digitalprodukte, Lizenzen und frühe Abonnements |
| WeChat Pay | Zahlungsweg und Händlersystem | JSAPI/H5/Native; Billing-Lifecycle selbst bauen | Festlandchina und WeChat-Ökosystem | Keine | RMB-Einmalkäufe und WeChat-Checkout |
Die offiziellen Dokumente bestätigten am 18. Juli 2026:
- Stripe Checkout unterstützt gehostete, eingebettete und kombinierbare Komponenten. Zahlungsarten hängen von Region, Währung und Checkout-Modus ab.
- Paddle-Webhooks werden mindestens einmal zugestellt. Antwortet ein Endpoint nicht innerhalb von fünf Sekunden mit
200, wird erneut zugestellt. Ereignisse können doppelt oder vertauscht eintreffen; nutzeevent_idzur Deduplizierung undoccurred_atfür die Reihenfolge. - Lemon Squeezy listet Cards, PayPal, Apple Pay, Google Pay, Alipay, WeChat Pay, Cash App Pay und bank debits. Abonnementprodukte unterstützen derzeit nur Cards, Apple Pay, Google Pay und PayPal.
- Ein WeChat-Pay-H5-Ablauf braucht serverseitige Bestellung, Zahlungs-Callback und aktive Bestellabfrage. Die Browser-Rückleitung allein ist nicht maßgeblich.
Gebühren, Zahlungsarten, Auszahlungszyklen, Länder und Produktrichtlinien ändern sich. Öffne für das Budget die aktuellen Preis- und Vertragsseiten, statt alte Prozentwerte zu kopieren.
Webhooks sind die Grenze für die Rechtevergabe
Zwei typische Fehler:
checkout.session.completedtrifft ein undsuccess_urlwird aufgerufen, aberentitlementsbleibt unverändert und der zahlende Kunde ohne Zugriff.- Dasselbe Ereignis landet zweimal in
webhook_events, worauf der Handler zwei Lizenzen ausstellt.
Beide Fehler entstehen, wenn eine HTTP-Anfrage oder Erfolgsseite als endgültige Geschäftswahrheit gilt. Zahlungsereignisse können doppelt, verspätet oder in falscher Reihenfolge eintreffen. Einige Zustände müssen per Abfrage oder Folgeereignis bestätigt werden.
Prinzipien für Webhook-Endpoints
| Prinzip | Stripe | Paddle | Lemon Squeezy | WeChat Pay |
|---|---|---|---|---|
| HTTPS endpoint | Erforderlich | Erforderlich | Erforderlich | Erforderlich |
| Signaturprüfung | Stripe-Signature | Paddle-Signature | X-Signature | WeChat Pay API v3-Signatur |
| Idempotenzschlüssel | Ereignis- oder Geschäftsobjekt-ID | event_id | Ereignistyp + Objekt-ID oder eigener eindeutiger Schlüssel | out_trade_no und Anbieter-Transaktions-ID |
| Antwortstrategie | Nach Prüfung und Speicherung schnell antworten, dann asynchron arbeiten | Binnen fünf Sekunden 200 | Erfolg antworten, dann asynchron arbeiten | Aktuellen API-Vertrag einhalten |
| Kompensation | Zahlungs- oder Abonnementstatus abfragen | Entitäten abfragen und abgleichen | Bestell- oder Abonnementstatus abfragen | Bestellung abfragen, Abrechnung abgleichen, manuell reparieren |
Die Betriebsregeln sind eindeutig:
- Webhook oder Zahlungs-Callback startet die Rechtevergabe.
success_urlzeigt nur die Verarbeitung an und erteilt keinen Zugriff. - Prüfe zuerst die Signatur und speichere das Rohereignis oder notwendige Felder in
webhook_events. Komplexe Arbeit läuft in einem asynchronen Job. - Sichere Idempotenz per Unique Constraint und speichere
event_id,source,occurred_at,processed_at,statusundpayload_hash. - Vergleiche bei vertauschter Reihenfolge Ereigniszeit, Objekt-Aktualisierungszeit oder Statusversion. Überschreibe nicht nach reiner Empfangsreihenfolge.
- Führe regelmäßig Reconciliation aus, frage Bestell- oder Abonnementstatus ab und behalte eine manuelle Reparaturmöglichkeit.
Tabellen für Bestellungen, Abonnements, Rechte und Ereignisse
| Tabelle | Kernfelder | Stripe-Zuordnung | Paddle-Zuordnung | Lemon-Squeezy-Zuordnung |
|---|---|---|---|---|
orders | provider_order_id, customer_id, amount, currency, status, created_at | Checkout Session / PaymentIntent | transaction | order |
subscriptions | provider_subscription_id, customer_id, status, current_period_end, cancel_at | subscription | subscription | subscription |
entitlements | user_id, product_id, feature_key, source, status, expires_at | Aus order oder subscription abgeleitet | Aus transaction oder subscription abgeleitet | Aus order, subscription oder license abgeleitet |
webhook_events | provider, event_id, occurred_at, processed_at, status, payload_hash | Idempotenz und Audit | Idempotenz und Reihenfolge | Idempotenz und Audit |
Kopiere nicht jedes API-Objekt eines Anbieters in lokale Tabellen. Definiere stabile Felder für Zugriffsprüfungen und speichere Anbieter-IDs für Abfragen und Reconciliation.
Strategien zur Synchronisierung von Entitlements
| Strategie | Einsatz | Umsetzung |
|---|---|---|
| Lean cache | Die meisten SaaS-Abonnements | Nur customer, subscription, status, price und product für Zugriffsprüfungen speichern und per Ereignis aktualisieren |
| State mirror | Offline-Billing-Ansichten oder komplexe Betriebsoberflächen | Mehr Abonnementdaten spiegeln, Aktualisierungszeit erfassen und Drift per Reconciliation vermeiden |
| License key | Einmalige Digitalprodukte oder Desktopsoftware | Nach Aktivierung instance ID speichern und store, product, variant sowie customer prüfen; ein Schlüssel ist kein vollständiges Benutzersystem |
Paddles offizielle Provisioning-Dokumentation empfiehlt für die meisten Anwendungen einen lean cache. Nutze einen state mirror nur für tatsächlich benötigte lokale Abfragen. Auch Lemon-Squeezy-Lizenzschlüssel erfordern eine Prüfung von Produkt und Kunde in der Anwendung sowie die Zuordnung der instance zum eigenen Konto- und Gerätemodell.
Hinweise zur Integration der einzelnen Anbieter
Diese Hinweise definieren die erste Umsetzungsgrenze und ersetzen keine vollständige Anbieterdokumentation.
Stripe integrieren
Ein frühes SaaS kann mit gehostetem Checkout und Customer Portal beginnen, statt ein eigenes Kartenformular zu warten. Stripe Billing verarbeitet Abonnements, Rechnungen, Verbrauchsabrechnung und Revenue Recovery. Stripe Tax ist ein Steuerberechnungs- und Ablaufwerkzeug, kein Merchant of Record.
Produkte und Preise müssen lokalen Entitlements entsprechen: product_id steht für Produkt oder Zugriffspaket, price_id für monatlich, jährlich, seat oder usage. Belasse nicht nur is_paid in users.
Ein Beispiel liefert das Next.js-Tutorial zu Warenkorb und Stripe-Zahlung mit Checkout Session, Webhook-Endpoint und Bestellverarbeitung.
Paddle integrieren
Prüfe zuerst, ob ein Tutorial Paddle Billing statt Paddle Classic behandelt. APIs, Webhooks, Paddle.js sowie Product/Price-Modelle unterscheiden sich.
Paddle Checkout zeigt die Kasse, doch die Anwendung verantwortet Provisioning. Meist reichen customer, subscription, status, price, product und scheduled change für Zugriffsentscheidungen. Ein state mirror lohnt sich nur, wenn der Betrieb vollständige Billing-Daten benötigt.
Aktualisiere beide Cache-Modelle per Webhook und führe Reconciliation aus. Ein Merchant of Record teilt der Anwendung nicht automatisch mit, wer welche Funktion nutzen darf.
Lemon Squeezy integrieren
Lemon Squeezy eignet sich als Startpunkt für frühe Digitalprodukte, Lizenzen und relativ einfache Abonnements. Angeboten werden Merchant of Record, Checkout, Abonnements, usage-based billing, Webhooks und License Keys. Gebühren und Umfang prüfst du im aktuellen Store-Plan und in der Dokumentation.
Speichere nach Aktivierung eines License Key die instance ID und prüfe store_id, product_id, variant_id sowie customer. Ein Schlüssel für ein anderes Produkt oder ein weiterverkaufter Schlüssel darf nicht direkt Pro-Rechte erhalten.
Für ein WeChat-Pay-Abonnement musst du Abonnement-Zahlungsarten separat prüfen. Die Dokumentation listet WeChat Pay und Alipay, unterstützt bei Abonnementprodukten aber nur Cards, Apple Pay, Google Pay und PayPal.
Grenzen von WeChat Pay
WeChat Pay passt zu Festlandchina und WeChat-Checkout, ist aber weder globaler Merchant of Record noch vollständiger SaaS-Billing-Lifecycle. Der Händler braucht Bestellstatus, Callback-Signaturprüfung, Abfragen, Erstattungen, Reconciliation, Rechnungen und Rechtevergabe.
H5, JSAPI, Mini Program und Native sind Zahlungsszenarien, keine getrennten Abonnementsysteme. Bei H5 erstellt das Backend die Bestellung und gibt h5_url an das Frontend. Nach der Browser-Rückkehr fragt das Backend weiterhin die Bestellung ab und wendet den Callback auf dieselbe über out_trade_no identifizierte Bestellung an.
Produktberechtigung, Händlergesellschaft, Domains, Gebühren und API-Parameter müssen gegen die aktuelle WeChat-Pay-Händlerdokumentation geprüft werden.
Nächster Schritt: Aus dem Zahlungsbutton einen testbaren Zustandsautomaten machen
Nach der Anbieterwahl zerlegst du die Integration in prüfbare Aufgaben:
- Erstelle
orders,subscriptions,entitlementsundwebhook_events; ergänzeusage_eventsfür Verbrauchsabrechnung. - Implementiere Signaturprüfung, Idempotenz, Umgang mit vertauschter Reihenfolge, schnelle Bestätigung und Fehlerbehebung für jeden Webhook oder Zahlungs-Callback.
- Lass die Erfolgsseite lokalen Bestellstatus abfragen, statt
is_paid=truezu setzen. - Ergänze Tests für Anbieterabfragen, Reconciliation, Erstattungen, fehlgeschlagene Verlängerungen und manuelle Reparatur.
- Sende in der Sandbox Ereignisse erneut und Statusänderungen in umgekehrter Reihenfolge. Rechte dürfen weder doppelt erteilt noch fälschlich zurückgesetzt werden.
Für Backend-Betrieb und Datenbankwahl folgen der Praxisartikel zu Supabase Edge Functions sowie die Backend- und Datenbankartikel dieser Serie. Fertig ist nicht die erfolgreiche Rückleitung der Zahlungsseite, sondern ein korrekter Endzustand von Bestellungen, Abonnements und Rechten trotz Duplikaten, Verzögerungen, falscher Reihenfolge und Erstattungen.
Einen Zahlungs-Stack für Solo-Gründer auswählen und umsetzen
Vom Verkaufsmodell über Verantwortungsgrenzen und Zielmarkt zum Anbieter und zu einem prüfbaren Pfad für die Rechtevergabe.
⏱️ Estimated time: 45 min
- 1
Step 1: Verkaufsmodell festlegen
Definiere Einmalkauf, SaaS-Abonnement, nutzungsbasierte Abrechnung oder ein Mischmodell und dokumentiere Erstattung, Verlängerung, Upgrade, Downgrade und Zugriffsende. - 2
Step 2: Steuer- und Betriebsverantwortung zuordnen
Entscheide, ob du Payment-, Billing- und Tax-Werkzeuge selbst kombinierst oder einen Merchant of Record nutzt. Prüfe Rechtsform und Steuerpflicht anhand der Anbieterbedingungen und professioneller Beratung. - 3
Step 3: Zahlungswege pro Markt wählen
Bewerte Stripe, Paddle und Lemon Squeezy für globale Kartenzahlungen und Abonnements. Prüfe WeChat Pay für Einmalkäufe in Festlandchina oder im WeChat-Ökosystem sowie Kontoregion, Produktkategorie und Zulässigkeit der Zahlungsart. - 4
Step 4: Lokales Statusmodell anlegen
Erstelle orders, subscriptions, entitlements und webhook_events. Eindeutige Ereignis- oder Bestell-IDs des Anbieters sichern Idempotenz und Auditierbarkeit. - 5
Step 5: Asynchrone Rechtevergabe testen
Teste Signaturprüfung, Duplikate, vertauschte Reihenfolge, Timeouts, Erstattungen, fehlgeschlagene Verlängerungen und manuelle Wiederherstellung. Die Erfolgsseite zeigt nur den Verarbeitungsstatus.
FAQ
Was unterscheidet Stripe, Paddle und Lemon Squeezy im Kern?
Sollte ein Solo-Gründer mit einem Merchant of Record oder mit Stripe starten?
Schalten Paddle oder Lemon Squeezy SaaS-Zugriff automatisch frei?
Ermöglicht WeChat Pay bei Lemon Squeezy auch WeChat-Pay-Abonnements?
Kann WeChat Pay Stripe für globales SaaS-Billing ersetzen?
Wie behandelt man doppelte, vertauschte oder fehlende Webhooks?
Welche Tabellen braucht ein minimales Zahlungssystem?
9 Min. Lesezeit · Veröffentlicht am: 21. Okt. 2026
Tech-Stack-Leitfaden fuer Solo-Founder
Wenn du über die Suche hier gelandet bist, kommst du am schnellsten weiter, indem du zum vorherigen oder nächsten Beitrag dieser Serie springst.
Vorheriger
Datenbank für Soloselbstständige wählen: D1, Postgres, R2, S3 oder SQLite
Ordne Geschäftsdaten, Ereignisse, Dateien, Caches, lokale Daten und Backups ein und wähle D1, Postgres, R2, S3 oder SQLite anhand von Kosten- und Migrationssignalen.
Teil 8 von 9
Nächster
Dies ist bisher der neueste Beitrag dieser Serie.



Kommentare
Melde dich mit GitHub an, um einen Kommentar zu hinterlassen