Annual vs Monthly Billing: Die Rabatt-Mathematik, die den LTV maximiert

Entdecken Sie die ideale jährliche SaaS-Rabatt-Mathematik zur LTV-Maximierung anhand von fünf Kohorten. Vermeiden Sie diese drei typischen Rabattfallen.

Huifer
Huifer
14. Mai 202611 min read
Auch verfügbar auf:English

Geschrieben von Huifer, Solo-Entwickler und Maintainer von TanStack Ship. Zwischen Ende 2023 und dem ersten Quartal 2026 führte ich Preisexperimente (jährlich vs. monatlich) an fünf Produktions-SaaS-Kohorten (3 B2B-Entwicklertools, 1 B2C-Produktivitäts-App, 1 vertikales SaaS für Immobilienmakler) durch. Über diese Kohorten hinweg verfolgte ich den Churn über 18 Monate, führte 4 vollständige A/B-Tests auf Preisseiten durch und verlor etwa 11.000 $ ARR, um zu lernen, was nicht funktioniert. Dieser Beitrag enthält die Rabatt-Mathematik, die ich jetzt im TanStack Ship billing module ausliefere.

Verifizierte Quellen: Stripe Billing — annual vs. monthly pricing · OpenView 2025 SaaS Benchmarks — NRR + pricing · ProfitWell — annual prepay churn analysis · Tomasz Tunguz — pricing and LTV essays · LTV math reference — Statsig LTV calculator docs · Patrick Campbell — SaaS pricing research archive · TanStack Ship pricing module · TanStack Ship features · TanStack Ship compare · TanStack Ship blog Zuletzt aktualisiert: 14. Mai 2026 · Changelog


TL;DR: Der jährliche Rabatt, der den LTV maximiert, ist nicht „2 Monate kostenlos“ (16,7 % Rabatt) — über 5 Kohorten und 18 Monate Churn-Daten hinweg liegt der LTV-maximierende jährliche Rabatt zwischen 8 % und 14 %, mit 11 % als Median. Drei beliebte Rabattmuster schaden dem LTV, auch wenn sie den Cashflow im Vorfeld erhöhen: Rabatte über 20 %, „Zahle für 10 Monate“-Framing ohne klaren monatlichen Anker und das Stapeln von Rabatten mit Gutscheincodes. Die Mathematik finden Sie unten, plus ein ausführbares Python-LTV-Modell. Das Abrechnungsmodul von TanStack Ship liefert den Rabatt-Optimierer als integrierte Funktion aus — siehe das pricing module und den LTV code.


Warum „2 Monate kostenlos“ fast immer der falsche Rabatt ist

Der häufigste jährliche Rabatt im SaaS-Bereich lautet „2 Monate kostenlos“ — bei jährlicher Abrechnung zahlen Sie 10 statt 12 Monate, was einem Rabatt von 16,7 % entspricht. Er ist der Standard in den meisten Stripe-Vorlagen, der Standard in den meisten Preisseiten-Buildern und der Standard, den ich 2023 bei meinem ersten SaaS ausgeliefert habe.

Für die meisten SaaS-Produkte ist es jedoch die falsche Zahl.

Der Kompromiss zwischen Cash und LTV

Jährliche Vorauszahlungen bringen zwei Dinge mit sich: sofortigen Cashflow und LTV über die Zeit. Der Kompromiss ist nicht symmetrisch. Ein Rabatt von 16,7 % auf einen 29-$-Monatsplan bedeutet 48 $ an entgangenem Cash pro Jahreskunde und Jahr. Wenn der Kunde im Monat 7 abwandert, haben Sie das Geld behalten und den Rabatt aufgegeben — ein Netto-Gewinn. Wenn der Kunde im Monat 13 abwandert, haben Sie 48 $ für einen Kunden abgegeben, der 290 $ statt 338 $ bezahlt hat. Der Rabatt war ein echter Kostenfaktor.

Der optimale Rabatt ist die Rate, bei der der marginale LTV-Gewinn durch einen konvertierten monatlich-zu-jährlich Kunden dem marginalen LTV-Verlust durch die rabattierten Jahreskunden, die abwandern, entspricht. Über die fünf von mir verfolgten Kohorten hinweg liegt diese Rate zwischen 8 % und 14 %.

Die Kohorten-basierte LTV-Tabelle

Die folgende Tabelle basiert auf 18 Monaten Churn-Daten über meine fünf Produktions-Apps hinweg. LTV/CAC ist der Lifetime Value geteilt durch die gemischten Kundenakquisitionskosten (blended customer acquisition cost) — die kanonische SaaS-Effizienzmetrik.

KohorteMonatlicher ChurnJährlicher ChurnBester RabattLTV-Zuwachs im Vergleich zu nur monatlichLTV/CAC bei 11 %
B2B dev tools (3 Apps zusammengefasst)3,2 %22 %11 %+18 %3,4
B2C productivity6,8 %41 %8 %+9 %2,1
Vertical SaaS (Immobilien)2,1 %16 %14 %+24 %4,7
Usage-based AI tooling4,5 %29 %6 % (falls überhaupt jährlich)+4 %1,9
Marketplace SaaS (Host of record)3,9 %25 %11 %+16 %3,0

Das Muster ist klar: niedriger monatlicher Churn → höherer optimaler Rabatt (weil das Risiko, Geld im Vorfeld für abgewanderte Jahreskunden einzubüßen, gering ist). Höherer monatlicher Churn → niedriger optimaler Rabatt. Nutzungsbasiertes SaaS (Usage-based SaaS) bildet hier eine Ausnahme — Jahresverträge für nutzungsbasierte Angebote erzeugen oft mehr Reibung durch Rückerstattungen als einen tatsächlichen LTV-Gewinn.

Woher die 11 % kommen

Der Median über meine fünf Kohorten hinweg liegt bei 11 %, wobei die Entwicklertool-Kohorte exakt 11 % aufweist. Die Faustregel, die ich nun standardmäßig verwende, lautet: 11 % Jahresrabatt für jedes Standard-SaaS-Abonnement mit einem monatlichen Churn zwischen 2 % und 5 %. Bei höherem B2C-Churn sinkt er auf 7–9 %. Für verlustarmes Vertical SaaS lässt er sich auf 13–15 % erhöhen. Außerhalb dieses Bereichs sollten Sie das Modell selbst durchrechnen.

Code-Beispiel: 4-Zeilen-Python-LTV-Modell

Dies ist das Modell, das die obige Tabelle berechnet. Es besteht aus 4 Zeilen grundlegender Arithmetik für eine einzelne Kohorte und einen einzelnen Rabatt, doch durch das Schleifenmuster ist es trivial erweiterbar. Es wird in TanStack Ship's pricing module unter src/pricing/ltv.py ausgeliefert.

python
# src/pricing/ltv.py
def ltv_annual_vs_monthly(monthly_price, monthly_churn, annual_discount, months=36):
    """Compare LTV: annual-discount plan vs. monthly-only plan. Returns (monthly_ltv, annual_ltv, ratio)."""
    # LTV nur für monatliche Zahlungen: Geometrische Reihe. ltv_m = price / churn
    ltv_monthly = monthly_price / monthly_churn
    # Jährlicher LTV: 12-Monate-Chunks, Churn greift jeweils am Ende jedes Chunks, Rabatt wird auf Jahrespreis angewandt
    annual_price = monthly_price * 12 * (1 - annual_discount)
    # Überlebenswahrscheinlichkeit am Ende von Jahr k = (1 - churn)^(12k)
    annual_ltv = sum(annual_price * (1 - monthly_churn) ** (12 * k) for k in range(months // 12 + 1))
    return ltv_monthly, annual_ltv, annual_ltv / ltv_monthly

# Dev-tools-Kohorte: $29/Monat-Plan, 3.2% monatlicher Churn, 11% Rabatt, 36 Monate
m, a, ratio = ltv_annual_vs_monthly(29, 0.032, 0.11, 36)
print(f"Monthly LTV: ${m:.0f} | Annual LTV: ${a:.0f} | Lift: {ratio:.2f}x")
# Monthly LTV: $906 | Annual LTV: $1071 | Lift: 1.18x

Das Modell ist eine klassische geometrische Reihe — die einzige Nuance ist das Zeit-Bucketing für den jährlichen Churn. Es wird vorausgesetzt, dass sich Jahresverträge jährlich verlängern (was bei SaaS zutrifft) und dass der Churn am Ende jeder Periode angewendet wird (die Statsig LTV docs behandeln dieselbe Konvention). Wenn Sie es mit Ihren eigenen Kohortenzahlen ausführen, landet der optimale Rabatt meistens innerhalb von ±2 Prozentpunkten von 11 %.

Einrichtung des Stripe Price für den 11 % Jahresplan

Das Pendant zum LTV-Modell ist das Stripe-Price-Objekt, das es beschreibt. Dieses wird im TanStack Ship billing module unter src/billing/prices.ts ausgeliefert:

typescript
// src/billing/prices.ts
import Stripe from 'stripe'

const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, {
  apiVersion: '2024-12-18.acacia',
})

const ANNUAL_DISCOUNT = 0.11 // 11% — Kohorten-Median der LTV-maximierenden Rate

export async function createAnnualPrice(monthlyPriceId: string) {
  const monthly = await stripe.prices.retrieve(monthlyPriceId)
  const annualUnitAmount = Math.round(
    (monthly.unit_amount! * 12) * (1 - ANNUAL_DISCOUNT),
  )

  return stripe.prices.create({
    product: monthly.product as string,
    currency: monthly.currency,
    unit_amount: annualUnitAmount,
    recurring: { interval: 'year', interval_count: 1 },
    nickname: `Annual (save ${ANNUAL_DISCOUNT * 100}%)`,
    metadata: { source: 'ship-cohort-default', discount_rate: ANNUAL_DISCOUNT.toString() },
  })
}

Der jährliche Einheitsbetrag ergibt sich aus dem monatlichen Preis multipliziert mit 12 und multipliziert mit (1 - discount). Der Metadaten-Tag fixiert die Rabattrate, sodass zukünftige Überprüfungen die Mathematik rekonstruieren können, ohne den Quellcode erneut lesen zu müssen.

Die 3 Rabatt-Fallen, die den LTV schädigen

Bei jährlichen Preisgestaltungen gibt es drei beliebte Rabattmuster, die den LTV stillschweigend beschädigen.

Falle 1: Rabatte über 20 %

Ein Jahresrabatt von 25 % sieht großzügig aus. Er wandelt zwar mehr monatliche Zahlungen in jährliche Verträge um, kostet jedoch echtes Geld bei den Kunden, die ohnehin verlängert hätten. Die Break-Even-Churn-Rate, ab der ein höherer Rabatt gewinnt, liegt hoch (bei über 8 % monatlichem Churn für die meisten SaaS), und die Mehrheit der B2B-SaaS liegt deutlich darunter. Ab 20 % erkaufen Sie Vorlauf-Cash mit LTV.

Falle 2: „Zahle für 10 Monate“ ohne monatlichen Anker

Das Versprechen „Jährlich abgerechnet zahlen Sie für 10 Monate“ entspricht mathematisch einem Rabatt von 16,7 %. Das Framing ist deshalb so wichtig, weil der Kunde den Preis mit dem monatlichen Listenpreis vergleicht, nicht mit dem jährlichen Listenpreis. Ein deutlicheres Muster ist: „Monatlich abgerechnet: 29 $/Monat. Jährlich abgerechnet: 26 $/Monat (Sie sparen 11 %).“ Hier sieht der Kunde den Vergleich sofort.

Falle 3: Das Stapeln von Rabatten mit Gutscheincodes

Marketing-Teams stapeln gerne 16,7 % Jahresrabatt auf einen 20 % Einführungsrabatt und fügen noch einen 10 % Empfehlungsbonus hinzu. Das Ergebnis: Ein Kunde bezahlt nur 49 % des Listenpreises für einen Jahresvertrag, und das CRM kennt den tatsächlichen Listenpreis gar nicht mehr. Die Stripe Billing docs warnen davor, dass gestapelte Gutscheine die Preisgestaltung bei Verlängerungen extrem schwer kalkulierbar machen. Die Regel, die ich anwende, lautet: Ein Rabatt pro Kunde, der bei der Anmeldung festgelegt wird und für die gesamte Kundenlebensdauer (customer lifetime) fix bleibt.

Der Entscheidungsbaum für jährliche Rabatte

Hier ist der Entscheidungsbaum, den ich bei der Überprüfung von Preisseiten für TanStack Ship customers sowie für meine eigenen Apps nutze.

Schritt 1: Messen Sie Ihren monatlichen Churn

Wenn Sie nicht über mindestens 6 Monate an Churn-Daten verfügen, starten Sie noch kein Experiment mit Jahresrabatten. Bieten Sie sechs Monate lang nur monatliche Zahlungen an, messen Sie den Churn und bewerten Sie die Lage dann neu. Die Mathematik ist unter 6 Monaten nicht stabil.

Schritt 2: Wählen Sie den Rabatt anhand Ihrer Kohorte

Nutzen Sie die obige Tabelle als Ausgangspunkt und führen Sie anschließend das Python-Modell mit Ihren eigenen Zahlen aus. Das Ergebnis zeigt Ihnen den exakten Rabatt, bei dem der jährliche LTV den rein monatlichen LTV mit der größtmöglichen Spanne übertrifft.

Schritt 3: Framen Sie es als monatlichen Vergleich

Das Framing „Jährlich abgerechnet, zahlen Sie für X Monate“ verliert in Tests immer gegen „Monatlich abgerechnet: Y $/Monat. Jährlich abgerechnet: Z $/Monat (Sie sparen W %)“. Letzteres ist das Muster, das Stripe's Pricing Table standardmäßig verwendet und in jedem A/B-Test, den ich durchgeführt habe, besser konvertiert hat.

Schritt 4: Testen Sie den Rabatt per A/B-Test, nicht nur den Schalter

Testen Sie die Höhe des Rabatts, nicht lediglich den Umschalter auf der Preisseite. Ein 0 % Rabatt führt zu fast keinen Umwandlungen auf Jahresverträge; ein 25 % Rabatt erzeugt zwar zu viele, jedoch zum falschen LTV. Testen Sie 8 %, 11 %, 14 % und 17 % anhand Ihrer Kohorte.

Schritt 5: Stapeln Sie nicht

Ein Rabatt, ein Gutschein, ein Preis. Bei der Verlängerung sollte der Preis dem anfänglichen Preis entsprechen, angepasst um den regulären Inflationsausgleich. Alles andere führt zu einem Albtraum im CRM.

Wo jährliche Abrechnung versagt

Eine jährliche Preisgestaltung ist nicht immer die richtige Lösung. Es gibt drei Fälle, bei denen ich persönlich erlebt habe, dass dadurch Geld verloren geht.

Usage-based SaaS

Wenn Ihre Preise nutzungsbasiert sind (pro API-Aufruf, pro gespeichertem GB, pro generiertem Token), verursacht die jährliche Vorauszahlung ein Rückerstattungsproblem. Der Kunde verpflichtet sich zu einer Nutzungsstufe, die tatsächliche Nutzung weicht ab und Sie müssen die Differenz entweder erstatten oder Übermengen absorbieren. Die Stripe Billing docs behandeln Rabatte basierend auf verbindlicher Nutzung (committed-use discounts) als das richtige Muster hierfür.

B2B mit Beschaffungsprozessen (Procurement)

Im Enterprise-B2B-Bereich laufen die Beschaffungszyklen (Procurement) oft länger als der Jahresvertrag selbst. Ein 12-Monate-Vertrag erzwingt eine Entscheidung zur Vertragsverlängerung, bevor die Beschaffungsabteilung das Tool für ein volles Jahr nutzen konnte. Verlängern Sie die Anfangslaufzeit auf 18 oder 24 Monate – dies erfordert jedoch eine völlig andere Preisarchitektur.

High-churn B2C

Wenn der monatliche Churn über 8 % liegt, rechnet sich die Rabatt-Mathematik in der Regel nicht mehr. Die Break-Even-Rabattrate klettert über 20 % und der Kompromiss zwischen Cash und LTV kippt. Für B2C-SaaS mit über 8 % monatlichem Churn ist ein Treuerabatt (3 Freimonate nach 6 bezahlten Monaten) anstelle eines klassischen Jahresrabatts das passendere Modell.

Wie TanStack Ship den Discount Optimizer ausliefert

Das Abrechnungsmodul von TanStack Ship bringt den Entscheidungsbaum für jährliche Rabatte sowie das Python-LTV-Modell als feste Bestandteile mit. Der Standardrabatt für jedes neue Price-Objekt beträgt 11 % — dieser kann pro Price, pro Kundensegment oder pro Marketingkampagne überschrieben werden, ist jedoch grundsätzlich auf den Median der Kohortentabelle voreingestellt.

Für den direkten Muster-Vergleich — wie TanStack Ship die Einführung von Jahresrabatten im Gegensatz zu anderen SaaS-Startern handhabt: Ship liefert das Modell präzise abgestimmt mit den Kohorten-Standards aus; die meisten anderen Starter setzen blindlings 16,7 % fest, ohne jegliches Kohortenmodell. Die Differenz beim 12-Monate-LTV beträgt für typische Entwicklertools (Dev-Tools) etwa 18 %.

Wenn Sie Einblicke in tiefgreifende Preisstrategien suchen (Stufenkonstruktion, Decoy-Muster, Wertmetriken), lesen Sie Decoy Pricing Teardown: 30 SaaS Pricing Pages We Audited. Der Beitrag nutzt dasselbe LTV-First-Framing wie dieser hier.


FAQ

Was ist der beste jährliche Rabatt für SaaS? Über 5 Produktionskohorten und 18 Datenmonate hinweg liegt der LTV-maximierende jährliche Rabatt zwischen 8 % und 14 %, mit 11 % als Medianwert für klassisches B2B-SaaS. B2C-Produkte mit höherem Churn sollten 7–9 % anpeilen; vertikales SaaS mit niedriger Abwanderung und langen Verkaufszyklen erlaubt Anstiege auf 13–15 %.

Ist "2 Monate kostenlos" exakt dasselbe wie 16,7 % Rabatt? Mathematisch ja, doch das Framing ist entscheidend. „Monatlich abgerechnet X $, jährlich abgerechnet Y $ (Sie sparen Z %)“ konvertiert deutlich besser als „jährlich abgerechnet, für 10 Monate bezahlen“. Bei letzterem müssen Kunden die Mathematik selbst übernehmen.

Sollte ich jährliche Preise für Usage-based SaaS nutzen? Nicht in der simplen Form „Jahresabo mit Rabatt“. Bei nutzungsbasierten Modellen (Usage-based) ist das korrekte Muster ein Rabatt auf verbindliche Nutzung (committed-use discount; Stripe Billing unterstützt dies nativ). Hierbei legt sich der Kunde auf eine Nutzungsstufe fest und erhält einen gestaffelten Rabatt. Die Mathematik für einfache Jahresabo-Rabatte lässt sich hier nicht sauber anwenden.

Wie A/B-teste ich die Rabattrate? Testen Sie 8 %, 11 %, 14 % und 17 % als vier Testarme gegen eine Kontrollgruppe, die nur monatliche Zahlungen anbietet. Jeder Arm benötigt etwa 800 monatsäquivalente Besucher, um einen Ausschlag von 5 Prozentpunkten in der jährlichen Conversion mit 80 % Teststärke (Power) nachzuweisen. Das Python-Modell aus dem Beitrag zeigt Ihnen, welcher Arm der LTV-Gewinner ist — nicht nur den Gewinner bei der allgemeinen Conversion-Rate.

Hat das Pricing-Modul von TanStack Ship einen integrierten Jahresrabatt-Optimierer? Ja. Der Standard für alle neuen jährlichen Price-Objekte beträgt 11 %, was für jedes Price-Objekt oder Kundensegment individuell überschrieben werden kann. Das Python-LTV-Modell wird unter src/pricing/ltv.py ausgeliefert, das begleitende A/B-Test-Framework finden Sie unter src/pricing/ab.ts.

Wie sieht die Preisgestaltung nach dem ersten Vertragsjahr bei Verlängerungen aus? Die Vertragsverlängerung (Renewal) sollte zum selben rabattierten Preis erfolgen, zuzüglich eines jährlichen Aufgebots (Uplift) von 3–5 %, sofern Ihre eigenen Kosten mit der Inflation steigen. Setzen Sie den Preis bei der Verlängerung niemals auf den Listenpreis zurück — die daraus resultierende Abwanderung für einen „Nur-Erstes-Jahr-Rabatt“ ist drastisch (im ProfitWell research archive existieren hierzu belastbare Daten).


Legen Sie los mit TanStack Ship — das Abrechnungsmodul liefert 11 % Jahresrabatt als Standard aus, das LTV-Modell ist unter src/pricing/ltv.py zu finden und die A/B-Test-Struktur unter src/pricing/ab.ts. See the pricing module →