Supabase + Stripe integrieren
Supabase und Stripe bilden eine leistungsstarke Kombination im No-Code-Ökosystem. App Studio hat diese Integration für Dutzende von Kunden konfiguriert, hier ist unser vollständiger Leitfaden.
Wie Supabase + Stripe funktioniert
Jedes SaaS braucht ein Billing-System, und Stripe ist dafür der professionelle Standard. Supabase Edge Functions (Deno-Runtime) sind der ideale Ort, um den Stripe-Webhook-Handler und die Erstellung von Payment Sessions zu hosten, sie laufen nah an der eigenen Datenbank, haben Zugriff auf den Service Role Key und lassen sich in Sekunden deployen. Das Ergebnis ist ein Billing-System, bei dem Stripe die Quelle der Wahrheit für Zahlungen ist und Supabase die Quelle der Wahrheit für die App-Daten, über Webhooks synchron gehalten. Dazu wird in Supabase eine customers-Tabelle angelegt, die stripe_customer_id gebunden an auth.users speichert. Eine subscriptions-Tabelle speichert Stripe-Abonnement-ID, Status, Plan und current_period_end. Zwei Supabase Edge Functions werden geschrieben: eine, die eine Stripe Checkout Session erstellt (vom Frontend aufgerufen), und eine, die Stripe-Webhooks verarbeitet (im Stripe-Dashboard registriert). Die Webhook-Funktion aktualisiert die subscriptions-Tabelle anhand der Events checkout.session.completed, customer.subscription.updated und customer.subscription.deleted.
Anwendungsfälle für Supabase + Stripe
Sobald der Abonnement-Status in Supabase liegt, lassen sich Plan-Limits auf Datenbankebene mit Row-Level-Security-Policies durchsetzen. Eine Policy könnte INSERT auf der projects-Tabelle nur erlauben, wenn der Abo-Plan des Nutzers pro oder höher ist. Das bedeutet, die Plan-Durchsetzung erfolgt automatisch, ganz ohne Frontend-Code, und es gibt keine Möglichkeit für einen Nutzer, sie zu umgehen. Kombiniert mit PostgreSQL-Funktionen lässt sich so auch die Nutzung zählen und gegen Limits prüfen. App Studios Standard-Setup für SaaS-Billing: Supabase Auth + WeWeb- oder Next.js-Frontend + Stripe Checkout für die Planauswahl + Supabase Edge Function als Webhook-Handler + über RLS durchgesetzte Feature-Flags. Dieser Stack deckt alles ab, von kostenlosen Testphasen bis zu jährlichen Enterprise-Verträgen. Das Customer Portal (von Stripe generiert, aus der App verlinkt) übernimmt Plan-Wechsel, Aktualisierung der Zahlungsmethode und Kündigungen, ganz ohne eigenen Code.
Häufige Probleme und deren Lösung
Die Webhook-URL der Supabase Edge Function sollte im Stripe-Dashboard registriert und die Webhook-Signatur mit Stripes constructEvent() verifiziert werden, um gefälschte Requests zu verhindern. Webhooks können in falscher Reihenfolge ankommen, vor jedem Update sollte der created-Zeitstempel des Events mit dem in der Datenbank verglichen werden. Stripes Idempotency Keys sollten bei der Erstellung von Payment Sessions genutzt werden, um doppelte Belastungen bei Frontend-Retries zu verhindern. Vor dem Launch sollte der komplette Billing-Lebenszyklus (abonnieren, upgraden, kündigen, erneut abonnieren) im Stripe-Testmodus getestet werden.
- SaaS subscription billing
- Plan tier enforcement
- Usage-based billing
- Free trial management
- Enterprise contracts
Benötigen Sie Hilfe bei dieser Integration?
App Studio konfiguriert diese Integrationen für Sie. Kostenloses Angebot innerhalb von 48h.