Preispläne

So konfigurieren und passen Sie Preispläne für Ihre SaaS-Anwendung an.

Hinweis: Dies sind Beispiel- bzw. Platzhalterinhalte zu Demonstrationszwecken.

Konfigurieren Sie Ihre Preisstruktur passend zu Ihrem Geschäftsmodell.

Planstruktur

Jeder Preisplan besteht aus:

  • ID – Eindeutige Kennung
  • Name – Anzeigename
  • Preis – Betrag in Ihrer Währung
  • Intervall – Abrechnungshäufigkeit (Monat, Jahr)
  • Funktionen – Liste der enthaltenen Funktionen
  • Limits – Nutzungsbeschränkungen

Beispielkonfiguration

// config/billing.config.ts
export const billingConfig = {
  provider: 'stripe', // oder 'paddle'
  currency: 'usd',
  plans: [
    {
      id: 'free',
      name: 'Free',
      description: 'Perfect for getting started',
      price: 0,
      features: [
        '5 projects',
        'Basic analytics',
        'Community support',
      ],
      limits: {
        projects: 5,
        members: 1,
      },
    },
    {
      id: 'starter',
      name: 'Starter',
      description: 'For small teams',
      price: 19,
      interval: 'month',
      features: [
        '25 projects',
        'Advanced analytics',
        'Email support',
        'API access',
      ],
      limits: {
        projects: 25,
        members: 5,
      },
    },
    {
      id: 'pro',
      name: 'Professional',
      description: 'For growing businesses',
      price: 49,
      interval: 'month',
      popular: true,
      features: [
        'Unlimited projects',
        'Advanced analytics',
        'Priority support',
        'API access',
        'Custom integrations',
      ],
      limits: {
        projects: -1, // unbegrenzt
        members: 20,
      },
    },
  ],
};

Funktionsfreischaltung nach Plan

Beschränken Sie Funktionen abhängig vom Abonnementplan:

import { hasFeature } from '~/lib/billing/features';

async function createProject() {
  const subscription = await getSubscription(accountId);

  if (!hasFeature(subscription, 'api_access')) {
    throw new Error('API access requires Pro plan');
  }

  // Projekt erstellen
}

Nutzungslimits

Setzen Sie Nutzungslimits pro Plan durch:

import { checkLimit } from '~/lib/billing/limits';

async function addTeamMember() {
  const canAdd = await checkLimit(accountId, 'members');

  if (!canAdd) {
    throw new Error('Member limit reached. Upgrade to add more members.');
  }

  // Mitglied hinzufügen
}

Jährliche Abrechnung

Bieten Sie vergünstigte Jahrespläne an:

{
  id: 'pro-annual',
  name: 'Professional Annual',
  price: 470, // ca. 20 % Rabatt
  interval: 'year',
  discount: '20% off',
  features: [ /* wie beim Monatsplan */ ],
}

Testzeiträume

Konfigurieren Sie kostenlose Testzeiträume:

export const trialConfig = {
  enabled: true,
  duration: 14, // Tage
  plans: ['starter', 'pro'], // für einen Testzeitraum berechtigte Pläne
  requirePaymentMethod: true,
};

Die Preisseite anpassen

Die Preisseite wird automatisch aus Ihrer Konfiguration generiert:

import { billingConfig } from '~/config/billing.config';

export default function PricingPage() {
  return (
    <PricingTable
      plans={billingConfig.plans}
      currency={billingConfig.currency}
    />
  );
}

Eigene Funktionen hinzufügen

Erweitern Sie Planfunktionen um eigene Attribute:

{
  id: 'enterprise',
  name: 'Enterprise',
  price: null, // Preis auf Anfrage
  custom: true,
  features: [
    'Everything in Pro',
    'Dedicated support',
    'Custom SLA',
    'On-premise deployment',
  ],
  ctaText: 'Contact Sales',
  ctaUrl: '/contact',
}