Files
myeasycms-v2/apps/web/config/billing.config.ts
Zaid Marzguioui a6c9537195
Some checks failed
Workflow / ʦ TypeScript (push) Failing after 6m2s
Workflow / ⚫️ Test (push) Has been skipped
feat(billing): update pricing tiers to MyEasyCMS plans (EUR)
Replace MakerKit sample billing config with actual MyEasyCMS tiers:
- Starter: 29€/mo (250 members) — Mitgliederverwaltung, SEPA, Website, Newsletter
- Pro: 59€/mo (1.000 members) — Kursverwaltung, Buchungen, unbegrenzte Benutzer
- Verband: 199€/mo (10.000 members) — Mehrebenen-Hierarchie, Verbandssuche
- Enterprise: 349€/mo (unlimited) — dedizierte Infrastruktur, SLA, API

All plans: EUR currency, German feature labels, yearly = ~2 months free.
Also update marketing i18n subtitles.
2026-04-02 16:13:54 +02:00

217 lines
6.0 KiB
TypeScript

/**
* MyEasyCMS Billing Configuration
*
* Four tiers based on club/organization size:
* Starter — 29 €/mo (up to 250 members)
* Pro — 59 €/mo (up to 1.000 members)
* Verband — 199 €/mo (up to 10.000 members, multi-level hierarchy)
* Enterprise — 349 €/mo (unlimited, dedicated support)
*
* Yearly plans get ~2 months free (billed annually).
*/
import { BillingProviderSchema, createBillingSchema } from '@kit/billing';
const provider = BillingProviderSchema.parse(
process.env.NEXT_PUBLIC_BILLING_PROVIDER,
);
export default createBillingSchema({
provider,
products: [
// ── Starter ──────────────────────────────────────────────
{
id: 'starter',
name: 'Starter',
description: 'Für kleine Vereine bis 250 Mitglieder',
currency: 'EUR',
badge: 'Einstieg',
plans: [
{
name: 'Starter Monatlich',
id: 'starter-monthly',
paymentType: 'recurring',
interval: 'month',
lineItems: [
{
id: 'price_starter_monthly',
name: 'Starter',
cost: 29,
type: 'flat' as const,
},
],
},
{
name: 'Starter Jährlich',
id: 'starter-yearly',
paymentType: 'recurring',
interval: 'year',
lineItems: [
{
id: 'price_starter_yearly',
name: 'Starter',
cost: 290,
type: 'flat' as const,
},
],
},
],
features: [
'Bis zu 250 Mitglieder',
'Mitgliederverwaltung',
'SEPA-Lastschrifteinzug',
'Veranstaltungsmanagement',
'Vereins-Website (Baukasten)',
'Newsletter-Versand',
'Dokumenten-Generator',
'E-Mail-Support',
],
},
// ── Pro ───────────────────────────────────────────────────
{
id: 'pro',
name: 'Pro',
badge: 'Beliebt',
highlighted: true,
description: 'Für aktive Vereine bis 1.000 Mitglieder',
currency: 'EUR',
plans: [
{
name: 'Pro Monatlich',
id: 'pro-monthly',
paymentType: 'recurring',
interval: 'month',
lineItems: [
{
id: 'price_pro_monthly',
name: 'Pro',
cost: 59,
type: 'flat' as const,
},
],
},
{
name: 'Pro Jährlich',
id: 'pro-yearly',
paymentType: 'recurring',
interval: 'year',
lineItems: [
{
id: 'price_pro_yearly',
name: 'Pro',
cost: 590,
type: 'flat' as const,
},
],
},
],
features: [
'Bis zu 1.000 Mitglieder',
'Alles aus Starter',
'Kursverwaltung (VHS-Modus)',
'Buchungssystem (Räume & Gäste)',
'Rechnungswesen & Mahnungen',
'Unbegrenzte Benutzer',
'Benutzerdefinierte Module',
'Telefon-Support',
],
},
// ── Verband ──────────────────────────────────────────────
{
id: 'verband',
name: 'Verband',
badge: 'Verbände',
description: 'Für Verbände und Dachorganisationen',
currency: 'EUR',
plans: [
{
name: 'Verband Monatlich',
id: 'verband-monthly',
paymentType: 'recurring',
interval: 'month',
lineItems: [
{
id: 'price_verband_monthly',
name: 'Verband',
cost: 199,
type: 'flat' as const,
},
],
},
{
name: 'Verband Jährlich',
id: 'verband-yearly',
paymentType: 'recurring',
interval: 'year',
lineItems: [
{
id: 'price_verband_yearly',
name: 'Verband',
cost: 1990,
type: 'flat' as const,
},
],
},
],
features: [
'Bis zu 10.000 Mitglieder',
'Alles aus Pro',
'Mehrebenen-Verbandshierarchie',
'Verbandsweite Mitgliedersuche',
'Geteilte Vorlagen & Events',
'Verbands-Berichtswesen',
'Fischerei-Modul (optional)',
'Sitzungsprotokolle (optional)',
'Prioritäts-Support',
],
},
// ── Enterprise ───────────────────────────────────────────
{
id: 'enterprise',
name: 'Enterprise',
description: 'Für große Organisationen mit individuellen Anforderungen',
currency: 'EUR',
plans: [
{
name: 'Enterprise Monatlich',
id: 'enterprise-monthly',
paymentType: 'recurring',
interval: 'month',
lineItems: [
{
id: 'price_enterprise_monthly',
name: 'Enterprise',
cost: 349,
type: 'flat' as const,
},
],
},
{
name: 'Enterprise Jährlich',
id: 'enterprise-yearly',
paymentType: 'recurring',
interval: 'year',
lineItems: [
{
id: 'price_enterprise_yearly',
name: 'Enterprise',
cost: 3490,
type: 'flat' as const,
},
],
},
],
features: [
'Unbegrenzte Mitglieder',
'Alles aus Verband',
'Dedizierte Infrastruktur',
'Individuelle Modulentwicklung',
'SLA & Uptime-Garantie',
'Persönlicher Account-Manager',
'Onboarding & Schulung',
'API-Zugang',
'Datenmigration inklusive',
],
},
],
});