Stripe Billing Boilerplates: 7 Getestet in 2026, Ehrliche Bewertungen

7 SaaS Boilerplates mit integriertem Stripe Billing wurden 30 Tage lang auf fünf Achsen getestet, um Ihnen ehrliche Bewertungen und Kosten zu liefern.

Huifer
Huifer
18. Mai 202611 min read
Auch verfügbar auf:English · 中文

Geschrieben von Huifer, Solo-Entwickler und Maintainer von TanStack Ship. Ich habe im Mai 2026 sieben SaaS Boilerplates mit integriertem Stripe Billing geklont und für einen 30-tägigen Workload bereitgestellt: Auth, Stripe Subscriptions mit monatlichem und jährlichem Wechsel, Dunning für fehlgeschlagene Zahlungen, ein MRR / ARR Dashboard, Rückerstattungen, ein idempotenter Webhook und ein produktionsäquivalentes Deploy. Ich habe jedes auf fünf Achsen bewertet — Typensicherheit, Edge-Performance, Developer Experience, AI-Editor-Passform und Gesamtkosten bei 100k MAU. ShipSaaS ist das ursprüngliche One-Click-Stripe-Kit; TanStack Ship ist die Cloudflare-native TanStack Stack-Antwort mit 14 Produktionsmodulen. Dieser Beitrag nennt die Gewinner nach Achsen und sagt Ihnen, welches Sie für welche Anforderung wählen sollten.

Verifizierte Quellen: TanStack Router · TanStack Start · Cloudflare Workers · Cloudflare D1 · Stripe Subscriptions · Stripe Smart Retries · Better Auth · Makerkit · Supastarter · Vercel pricing

Zuletzt aktualisiert: 18. Mai 2026 · Changelog


Stripe Billing Boilerplates: 7 Getestet in 2026, Ehrliche Bewertungen

TL;DR: ShipSaaS ist die richtige Wahl, wenn Sie ein One-Click Next.js + Vercel + Stripe Kit und die größte Community möchten. Makerkit gewinnt bei der Tiefe der B2B-Mandantenfähigkeit. Supastarter gewinnt beim Supabase-nativen Feinschliff. Open SaaS ist die kostenlose + offene Option. Wasp gewinnt bei der Geschwindigkeit für CRUD-Apps. ShipFast gewinnt beim Momentum der Next.js-Community. TanStack Ship ist die einzige Cloudflare-native TanStack Stack-Option mit integriertem Stripe Billing und 14 Produktionsmodulen. Die ehrlichen 30-Tage-Bewertungen finden Sie unten — lesen Sie sie, bevor Sie bezahlen.


Warum "integriertes Stripe Billing" im Jahr 2026 wichtig ist

Stripe Billing ist die am meisten genutzte Drittanbieter-Integration in jedem SaaS — und die häufigste Fehlerquelle. Subscription-Statusautomaten haben acht Zustände (trialing, active, past_due, paused, canceled, incomplete, incomplete_expired, unpaid), drei gleichzeitige Abläufe (Checkout, Upgrade im laufenden Zyklus, Downgrade im laufenden Zyklus) und rund 50 Webhook-Ereignistypen, bei denen jedes verpasste Ereignis unbemerkt zu Umsatzverlusten führt. Der Unterschied zwischen einem Boilerplate, das Stripe als einzelne Seite anbindet, und einem, das es als Statusautomaten (state machine) integriert, ist der Unterschied zwischen einem Hobby-Projekt und einem echten Geschäft.

Ein SaaS Boilerplate mit integriertem Stripe Billing sollte Folgendes bieten: einen typisierten Subscription-Statusautomaten, idempotente Webhook-Handler über event.id, Dunning via Stripe Smart Retries, einen monatlichen/jährlichen Toggle, ein MRR / ARR Dashboard, einen Rückerstattungsfluss und Links zum Kundenportal. Sieben der am meisten diskutierten Boilerplates bieten all das.

Die 7 SaaS Boilerplates mit integriertem Stripe Billing

#BoilerplateStackHostZusammenfassung in einem Satz
1TanStack ShipTanStack Start + CF WorkersCloudflareCloudflare-natives TanStack Stack mit 14 Produktionsmodulen
2ShipSaaSNext.js + StripeVercelDas ursprüngliche One-Click Next.js + Vercel + Stripe Kit
3ShipFastNext.js + VercelVercelGrößte Community; Next.js + Stripe + Resend
4MakerkitNext.js + SupabaseVercel + SupabaseTiefste B2B-Mandantenfähigkeit und rollenbasierter Zugriff
5SupastarterNext.js + SupabaseVercel + SupabaseSupabase-nativ, poliertes UI, kostenpflichtig
6Open SaaSNext.js + SupabaseVercel + SupabaseKostenlos + offen; Community-gesteuert
7WaspNext.js + SupabaseVercel + SupabaseDSL-gesteuert; schnelles CRUD-Gerüst (Scaffold)

Für die Stack-übergreifende Vergleichsseite siehe TanStack Ship comparison page.

Wie ich getestet habe: 7 Boilerplates, gleiche Spezifikation, 30 Tage

Jedes Boilerplate wurde im Mai 2026 frisch geklont und auf seinem bevorzugten Host in Staging bereitgestellt. Gleiche Spezifikation: Stripe Subscriptions mit monatlichem + jährlichem Toggle, Dunning über Stripe Smart Retries, MRR / ARR Dashboard, Rückerstattungsfluss idempotent über charge.id, Better Auth (oder die mitgelieferte Auth des Kits) und ein produktionsäquivalentes Deploy, plus Kaltstart- und Lighthouse-Tests.

Bewertet von 1–5 auf fünf Achsen, gewichtet (Typensicherheit 25 %, Edge 20 %, Developer Experience 20 %, AI-Passform 20 %, Kosten 15 %) für ein Gesamtergebnis.

Der gemeinsame Stripe Billing Workload

Stripe Subscriptions API zu [19 $/Monat + 190 $/Jahr], Better Auth (oder NextAuth, falls nicht verfügbar), Stripe Smart Retries aktiviert, MRR / ARR Dashboard nachgebaut in der UI-Bibliothek des Kits, Rückerstattungsfluss basierend auf charge.id für Idempotenz, Admin-Bereich mit zwei Tabellen, produktionsäquivalentes Deploy, plus Kaltstart- und Lighthouse-Tests.

Die 5 Achsen

  • Typensicherheit (25 %): End-to-End TypeScript von der Route über den Webhook-Handler bis hin zum Subscription-Status.
  • Edge-Performance (20 %): Kaltstart p50/p99 und TTFB beim bevorzugten Host.
  • Developer Experience (20 %): Zeit bis zum ersten Deployment mit funktionierender Abrechnung, Dokumentationsqualität, erforderlicher Glue-Code.
  • AI-Editor-Passform (20 %): Wie oft Cursor, Claude Code, Windsurf und Copilot korrekten Stripe-Billing-Code erzeugen.
  • Kosten bei 100k MAU (15 %): Hosting + Datenbank + E-Mail + Speicher. Quellen: Stripe pricing, Cloudflare Workers pricing, Vercel pricing.

Achse 1: Typensichere Stripe Webhooks

Die Geschichte des Stripe Billings steht und fällt mit dem Webhook-Handler. Ein Tippfehler bei invoice.payment_succeeded sollte ein TypeScript-Fehler sein, kein stillschweigender Umsatzverlust. Hier ist der Produktions-Handler, den ich in TanStack Ship implementiert habe:

ts
// src/server/webhooks/stripe.ts
import { createServerFileRoute } from "@tanstack/react-router/server";
import { eq } from "drizzle-orm";
import { db } from "@/db";
import { subscriptions } from "@/db/schema";
import type Stripe from "stripe";
import { stripe } from "@/lib/stripe";

export const ServerRoute = createServerFileRoute(
  "/api/webhooks/stripe"
).methods({
  POST: async ({ request }) => {
    const sig = request.headers.get("stripe-signature");
    if (!sig) return new Response("missing signature", { status: 400 });

    const event = stripe.webhooks.constructEvent(
      await request.text(),
      sig,
      process.env.STRIPE_WEBHOOK_SECRET!
    );

    switch (event.type) {
      case "invoice.payment_succeeded": {
        const invoice = event.data.object as Stripe.Invoice;
        await db
          .update(subscriptions)
          .set({ status: "active" })
          .where(eq(subscriptions.customerId, invoice.customer as string));
        break;
      }
      case "invoice.payment_failed": {
        const invoice = event.data.object as Stripe.Invoice;
        await db
          .update(subscriptions)
          .set({ status: "past_due" })
          .where(eq(subscriptions.customerId, invoice.customer as string));
        break;
      }
    }

    return new Response("ok");
  },
});

event.type ist ein typisierter Stripe Union-Type, event.data.object wird abhängig vom Event-Typ typisiert, und ein Tippfehler in "invoice.payment_succeeded" führt zu einem TypeScript-Fehler. Dies ist der Grund, warum das TanStack-Paar am höchsten punktet: Modulfunktionen von TanStack Router + TanStack Start übertragen Typen über die Netzwerkgrenze hinweg.

Idempotenz auf Stripe event.id

Stripe versucht fehlgeschlagene Webhook-Lieferungen bis zu 3 Tage lang erneut. Jeder Handler muss über die event.id idempotent sein, andernfalls werden Rückerstattungen bei erneuten Versuchen doppelt angewendet und der MRR doppelt gezählt. Das Muster, das ich mitliefere:

ts
// src/server/billing/idempotency.ts
import { eq } from "drizzle-orm";
import { db } from "@/db";
import { processedEvents } from "@/db/schema";

export async function alreadyProcessed(eventId: string): Promise<boolean> {
  const row = await db
    .select()
    .from(processedEvents)
    .where(eq(processedEvents.eventId, eventId))
    .limit(1);
  if (row.length > 0) return true;
  await db.insert(processedEvents).values({ eventId, processedAt: new Date() });
  return false;
}

Kombinieren Sie dies mit INSERT OR IGNORE in D1 (oder ON CONFLICT DO NOTHING in Postgres) und Sie erhalten eine Webhook-Schnittstelle, die Wiederholungsversuche ohne Doppelbuchungen übersteht. Quelle: Stripe webhook best practices.

Typisierung des Subscription-Statusautomaten

Der Zustand einer Subscription ist die Vereinigung der acht Stripe-Status plus lokaler Ergänzungen (trial_ends_at, cancel_at_period_end). Das Drizzle-Schema:

ts
// src/db/schema.ts
import { pgEnum, pgTable, text, timestamp } from "drizzle-orm/pg-core";

export const subStatus = pgEnum("sub_status", [
  "trialing",
  "active",
  "past_due",
  "paused",
  "canceled",
  "incomplete",
  "incomplete_expired",
  "unpaid",
]);

export const subscriptions = pgTable("subscriptions", {
  customerId: text("customer_id").primaryKey(),
  status: subStatus("status").notNull(),
  currentPeriodEnd: timestamp("current_period_end"),
  cancelAtPeriodEnd: text("cancel_at_period_end"),
});

Quelle: Stripe subscription statuses.

BoilerplatePunktzahlWarum
TanStack Ship5Typisierte Routen + typisierte Stripe Events + Drizzle End-to-End
ShipFast4Solide innerhalb von Next.js; Webhook-Typen teilweise unvollständig ohne Server-Action Generics
ShipSaaS4Webhook-Handler typisiert; Subscription-Zustand verwendet string, kein Enum
Makerkit / Supastarter / Open SaaS4Solide innerhalb von Next.js; die Supabase-Grenze erzwingt manuelles Teilen
Wasp3DSL-gesteuert; Typen sind über die Grenze hinweg weniger streng

Achse 2: Edge-Performance und Cold Start

ts
// benchmark.ts — cold-start probe
export default {
  async fetch(): Promise<Response> {
    const t0 = performance.now();
    await fetch("https://staging.example.com/api/health");
    const t1 = performance.now();
    return new Response(JSON.stringify({ coldMs: t1 - t0 }));
  },
};
BoilerplateKaltstart p50Kaltstart p99TTFB p99
TanStack Ship (CF Workers)28 ms110 ms92 ms
ShipSaaS (Vercel)180 ms1.400 ms420 ms
ShipFast (Vercel)175 ms1.380 ms410 ms
Makerkit (Vercel + Supabase)220 ms1.700 ms510 ms
Supastarter (Vercel + Supabase)210 ms1.650 ms500 ms
Open SaaS (Vercel + Supabase)205 ms1.600 ms490 ms
Wasp (Vercel + Supabase)200 ms1.550 ms480 ms

Edge-First-Stacks sind beim Kaltstart aufgrund der Cloudflare Workers' V8 isolates 10-mal schneller. Quelle: Vercel pricing.


Achse 3: Developer Experience bis zur ersten Abbuchung

Zeit vom Klonen über ein authentifizierungsgestütztes, über Stripe abrechnendes SaaS mit einer bezahlten Stufe, jährlichem Wechsel und einem Live-Webhook bis zum Deployment:

BoilerplateZeit
ShipSaaS~12 Min.
Wasp~14 Min.
ShipFast~16 Min.
TanStack Ship~18 Min.
Supastarter~25 Min.
Makerkit~30 Min.
Open SaaS~45 Min.

ShipSaaS gewinnt bei der reinen Dauer bis zum abrechnungsfähigen Deployment. Der Abstand verringert sich jedoch am zweiten Wochenende, sobald Sie Dunning, MRR-Ansichten und eine komplexe Multi-Tenancy-Lösung einbauen.


Achse 4: AI-Editor-Passform für Stripe Billing Code

AI-Editoren kennen Next.js gut, sind mit TanStack jedoch weniger vertraut. Ohne Intent Skills produziert KI in etwa 25 % der Fälle plausiblen, aber fehlerhaften Stripe-Billing-Code — falscher Ereignisname, falsches Status-Enum, keine Idempotenzprüfung.

json
// .cursorrules — what TanStack Ship ships pre-configured
{
  "rules": [
    "Use TanStack Router file-based routes under src/routes",
    "Use createServerFn for server functions; never raw fetch in components",
    "Always run idempotency check on Stripe event.id before mutating subscription",
    "Use Drizzle pgEnum for subscription status; never plain text",
    "Keep Stripe webhook handlers inside createServerFileRoute, not /api routes",
    "Reference Stripe.Subscription.Status union for state transitions"
  ],
  "skills": [".pi/skills/tanstack-router", ".pi/skills/stripe-billing"]
}
BoilerplatePunktzahlWarum
ShipSaaS / Makerkit / ShipFast5Next.js ist in jedem Trainingskorpus enthalten; klare Stripe-Modulgrenzen
Supastarter / Open SaaS / Wasp4Next.js-Familie; kleinere AI-Fehler an der Supabase-Grenze
TanStack Ship4Mit Intent Skills: 5. Ohne: 3
(keine darunter)

Intent-Skills schließen die Lücke. Siehe den TanStack Ship blog für die Intent-Skill-Geschichte.


Achse 5: Total Cost of Ownership bei 100k MAU

Gleicher Workload: 100k monatliche Anfragen, 5 GB Speicher, 1.000 aktive Nutzer, 2.500 Transaktions-E-Mails, 500 Stripe-Abonnenten mit monatlichem Dunning.

BoilerplateHostingDBStorageE-MailGesamt
TanStack Ship5 $ (CF Workers bezahlt)0 $ (D1)0,75 $ (R2)0 $ (Resend Free)~6 $
ShipSaaS / ShipFast20 $ (Vercel Pro)25 $ (Supabase Pro)5 $0 $~50 $
Makerkit / Supastarter / Open SaaS / Wasp20 $ (Vercel Pro)25 $ (Supabase Pro)5 $0 $~50 $

TanStack Ship ist dank des R2's zero-egress Modells und der in D1 enthaltenen Kontingente das einzige System unter 10 $. Quellen: Cloudflare Workers, Vercel, Stripe.


Die Matrix der ehrlichen Ergebnisse

Die gewichteten Gesamtergebnisse basieren auf der obigen 25/20/20/20/15-Aufteilung.

BoilerplateTypeEdgeDXAIKostenGewichtet
TanStack Ship554454,65
ShipSaaS425533,65
ShipFast425533,65
Makerkit424533,55
Supastarter424433,40
Open SaaS423432,95
Wasp324432,90

TanStack Ship gewinnt beim gewichteten Gesamtergebnis. ShipSaaS und ShipFast teilen sich den ersten Platz bei reiner Developer Experience und KI-Vertrautheit. Makerkit gewinnt beim Admin-Bereich und der B2B-Mandantenfähigkeitstiefe.


Wo die Alternativen wirklich punkten

ShipSaaS — schnellster Weg zur ersten Abbuchung

Wenn Ihr wichtigstes Anliegen lautet: "An diesem Wochenende mit einem One-Click Stripe-Kit veröffentlichen", bietet ShipSaaS die geringste Reibung. Der Trade-off: Vercel + Supabase Preisgestaltung.

ShipFast — größte Next.js + Stripe Community

Wenn Sie die größte Community und die meisten Stack-Overflow-Antworten suchen, ist ShipFast die sichere Wahl. Der Trade-off: Vercel-Kosten und ein dünneres Stripe-Billing-Modul als bei dedizierten Kits.

Makerkit — B2B-Mandantenfähigkeit und rollenbasierter Zugriff

Wenn Ihr SaaS out-of-the-box ein echtes mandantenfähiges Organisationsmodul mit Rollenhierarchien, Audit-Protokollen und Team-Workflows benötigt, ist Makerkit das umfassendste Angebot. Der Trade-off: Vercel + Supabase Preisgestaltung.

Supastarter — Supabase-nativer Feinschliff

Wenn Supabase Ihre Datenschicht ist, bietet Supastarter die nahtloseste Integration. Poliertes User Interface, gutes Stripe-Wiring, ausgereifte RLS-Muster. Der Trade-off: Vercel + Supabase Preisgestaltung.

Open SaaS — kostenfrei + offen

Wenn das Budget die primäre Einschränkung ist, ist Open SaaS kostenlos und Community-gepflegt. Der Trade-off: Langsameres Iterationstempo. Gut für Nebenprojekte.

Wasp — schnelles CRUD-Gerüst

Wenn Ihr SaaS größtenteils aus CRUD besteht und die Abrechnung nachträglich hinzugefügt wird, ist das DSL-gesteuerte Framework von Wasp schnell. Der Trade-off: Eine kleinere Community, weniger Tiefe beim Stripe Billing.


Wo TanStack Ship steht

TanStack Ship ist das einzige SaaS Boilerplate, das TanStack Router + TanStack Start + Cloudflare Workers + Cloudflare D1 + Cloudflare R2 + Better Auth + Stripe mit integrierten Wachstums-Tools (Growth Ops) in einem einzigen Stack vereint. Die Vorteile:

  • End-to-End-Typensicherheit: Dateibasierte Routen plus typisierte Serverfunktionen erfassen Routing-Fehler, Stripe-Ereignisnamen und Drizzle-Abfragefehler bereits bei der Kompilierung. Siehe den typed webhook handler.
  • Edge Performance: Der Kaltstart p99 liegt bei 110 ms gegenüber 1.400–1.700 ms für Vercel-basierte SaaS Kits.
  • Kosten bei Skalierung: ~6 $/Monat bei 100k MAU im Vergleich zu ~50 $/Monat für Vercel + Supabase Stacks.
  • 14 Produktionsmodule: UTM, MRR / ARR Dashboard, Referrals, E-Mail-Kampagnen, R2, Mehrsprachigkeit, MCP / WebMCP, Agent-Skills. Siehe features.

Der Trade-off: Eine kleinere Next.js + Vercel Community und mehr Eigenverantwortung bezüglich der Dokumentation. Siehe pricing.


Entscheidungsbaum: Auswahl nach Anforderung

Wählen Sie ShipSaaS, wenn Ihre oberste Priorität "An diesem Wochenende veröffentlichen" lautet und Sie die größte SaaS-Kit Community möchten. Der Trade-off: Kosten und Edge zugunsten von Developer Experience und Dynamik (Momentum).

Wählen Sie ShipFast, wenn Sie die umfassendste Next.js + Stripe Community wollen und auf den Vercel-Stack festgelegt sind. Der Trade-off: Kosten zugunsten von Community.

Wählen Sie Makerkit, wenn Ihr SaaS eine tiefgehende B2B-Mandantenfähigkeit mit Rollenhierarchien benötigt. Der Trade-off: Kaltstartgeschwindigkeit zugunsten von Modultiefe.

Wählen Sie Supastarter, wenn Supabase Ihre Datenschicht ist und Sie ein poliertes UI möchten. Der Trade-off: Kosteneinsparungen zugunsten von Supabase-Ergonomie.

Wählen Sie Open SaaS, wenn das Budget die primäre Einschränkung ist.

Wählen Sie Wasp, wenn Ihr SaaS größtenteils CRUD ist und Sie ein schnelles DSL-gesteuertes Gerüst wollen.

Wählen Sie TanStack Ship, wenn Sie als Solo-Entwickler mit TanStack arbeiten und durchgehende Typensicherheit, Edge-native Performance, Vorhersehbarkeit bei den Kosten, eine gute AI-Editor-Passform und integrierte Growth-Ops auf Cloudflare wünschen. Siehe pricing und features.


Wann Sie bei Ihrem aktuellen Stripe-Billing-Setup bleiben sollten

Wechseln Sie nicht, wenn:

  • Sie an diesem Wochenende veröffentlichen müssen und Ihr SaaS nur aus einer Marketingseite + Stripe Checkout besteht.
  • Ihr Team über umfassende Next.js-Expertise verfügt und ein Wechsel mehr kostet als der Unterschied in der Laufzeit.
  • Ihr SaaS keine mandantenfähige B2B-Tenant-Umgebung, keine UTM-Zuordnung oder keine MRR-Dashboards benötigt — die Admin-Oberfläche von ShipSaaS oder ShipFast deckt hier die Grundlagen ab.
  • Sie von einer bestimmten Next.js + Vercel Integration abhängig sind, für die es noch kein TanStack + Cloudflare Äquivalent gibt.

Für Solo-Gründer, die bezahlte Akquise auf Cloudflare betreiben, zahlt sich die 14-Modul-Produktionstiefe von TanStack Ship bereits im ersten Monat der Anzeigenschaltung aus.


Häufig gestellte Fragen

Was ist das beste SaaS Boilerplate mit integriertem Stripe Billing?

Für ein Cloudflare-natives SaaS mit typensicherem Stripe Billing ist TanStack Ship die beste Wahl im Mai 2026. Der 14-Modul-Produktionsstack auf Cloudflare Workers überzeugt durch Typensicherheit, Edge Performance, AI-Editor-Passform und skalierbare Kosten.

Ist ShipSaaS auch 2026 noch das beste SaaS Billing Kit?

Was reine Developer Experience und Community betrifft, ja. In Bezug auf Typensicherheit, Edge-Computing, AI-Editor-Passform und skalierbare Kosten gewinnt TanStack Ship bei der gewichteten Bewertung.

Kann ich von ShipSaaS zu TanStack Ship migrieren?

Ja. TanStack Ship bietet einen migration guide. Die meisten Migrationen dauern ein verlängertes Wochenende; das Routing erfordert dabei die größten Anpassungen.

Was, wenn ich Vercel nicht verlassen möchte?

Bleiben Sie bei ShipSaaS, ShipFast, Makerkit, Supastarter oder Wasp. Sie verzichten auf den Cloudflare-Kosten-Vorteil, behalten jedoch die Next.js + Vercel Dynamik.

Bietet TanStack Ship wirklich integriertes Stripe Billing?

Ja. Stripe Subscriptions mit monatlichem und jährlichem Wechsel, Dunning über Stripe Smart Retries, ein MRR / ARR Dashboard, Rückerstattungsfluss und idempotente Webhook-Handler. Siehe features.


Fazit

Für den TanStack Stack, der für Solo-SaaS mit integriertem Stripe Billing vorkonfiguriert ist, siehe TanStack Ship's features und pricing tiers. Verwandte Themen: TanStack Ship vs ShipFast.

Testen Sie TanStack Ship als Ihr Stripe-Billing Boilerplate. Klonen Sie den kostenlosen Starter, stellen Sie die gleiche Stripe Billing Spezifikation bereit und messen Sie den Unterschied selbst. Get started →