Monetarisierung ohne Tebex: Selbst gehosteter Shop mit Stripe & Webhooks
Schritt-für-Schritt-Tutorial zur Monetarisierung ohne Tebex – mit selbst gehostetem Shop, Stripe, Webhooks und ratenlimitierten Downloads. Vollständiger Guide für 2026.

Einleitung: Lies das, bevor du anfängst
Lies das, bevor du anfängst. Wenn du einen FiveM/RedM-Server betreibst und planst, In-Game-Vorteile zu verkaufen, musst du Tebex verwenden. Die Cfx.re-Dokumentation und die PLA besagen, dass „die Nutzung einer anderen Plattform oder eines anderen Zahlungsanbieters" für die Server-Monetarisierung verboten ist. Stripe selbst zu hosten ist für server-externe Verkäufe in Ordnung (eigenständige Skripte, MLOs, UI-Pakete, Dienstleistungen, Kurse). Verknüpfe diese Verkäufe nicht mit In-Game-Vorteilen auf Live-Servern.
Dieser Guide ist Teil unseres vollständigen FiveM-Server-Management-Hubs, der alles vom Ersteinrichtung bis zur Skalierung deiner Community abdeckt.
Was du ohne Tebex monetarisieren kannst
Erlaubt (außerhalb des Servers):
- Eigenständige Skripte/MLOs, die du zur Selbstinstallation lizenzierst.
- Texturpakete, UI-Kits, Soundpakete.
- Beratung, individuelle Entwicklungsarbeit, Installationsdienstleistungen.
- Dokumentation, Kurse, Vorlagen.
Vermeiden (erfordert Tebex oder verstößt gegen die Richtlinien):
- In-Game-Währung, Pay-to-Win, Loot-Boxen, NFTs.
- Priority-Queue, VIP-Rollen, Whitelist-Boosts, die an deinen Live-Server gebunden sind.
Architektur im Überblick
Ziel: ein selbst gehosteter Shop, der digitale Produkte (Skripte/MLOs) verkauft und Lizenzen automatisch bereitstellt.
Stack:
- Frontend: Next.js (App Router), React.
- Zahlungen: Stripe Checkout (einfach) oder Payment Element + Payment Intents (individuelle Abläufe).
- Webhooks: Events empfangen, Signaturen prüfen, Bestellungen aktualisieren, Dateien/Keys liefern.
- Speicherung/Lieferung: S3/R2 + signierte URLs; oder Lizenzserver mit ratenlimitierten Downloads.
- Steuern/Rechnungen: Stripe Tax + Billing-Rechnungen für B2B.
Datenfluss:
- Produkt + Preis in Stripe erstellen.
- Checkout-Session mit Metadaten starten (productId, buyerId).
- Bei
checkout.session.completedoderpayment_intent.succeededSignatur prüfen. - Bestellung als bezahlt markieren; Lizenz generieren; signierten Download-Link erstellen; Quittung und Lizenz per E-Mail senden.
Schritt-für-Schritt-Einrichtung
1) Stripe-Konto-Hygiene
- Onboarding abschließen und Unternehmen verifizieren (KYC).
- Statement-Descriptor, Support-E-Mail, Rückerstattungsrichtlinien-URL festlegen.
- Apple Pay / Google Pay aktivieren; Bankkonto hinzufügen.
- Radar-Regeln für grundlegende Betrugsprüfungen aktivieren.
2) Produkte und Preise
- Für jedes Skript/MLO ein Stripe-Produkt erstellen.
- Einmalige Preise in der Währung des Käufers (EUR/USD) verwenden.
- Metadaten-Keys hinzufügen, die du später benötigst:
sku,product_slug,license_policy.
3) Zahlungsablauf wählen
- Stripe Checkout: am schnellsten und SCA-bereit. Handhabt Wallets, 3DS, Quittungen. Für die meisten Shops empfohlen.
- Payment Element + Payment Intents: mehr Kontrolle; verwenden, wenn du individuelle UI oder zusätzliche Zahlungsmethoden benötigst.
4) Webhooks absichern
- Einen
POST /api/stripe/webhook-Endpunkt erstellen. - Den Raw Body lesen; kein JSON-Parsing vor der Verifizierung.
- Mit dem Endpunkt-Secret verifizieren; ablehnen, wenn die Signatur fehlschlägt.
- Idempotenz für ausgehende Aufgaben verwenden, die du von Webhooks aus auslöst (z. B. Lizenzerstellung), damit Wiederholungen keine Duplikate erzeugen.
5) Bestellungs- und Lizenzerfüllung
- Nach verifiziertem Erfolg:
orders-Datensatz mitstatus='paid'erstellen.- Einen Lizenzschlüssel (UUID v4) oder käuferbezogenen Freischalttoken generieren.
- Einen unveränderlichen Build des ZIPs speichern (hashen).
- Einen zeitlich begrenzten signierten URL ausstellen (z. B. 24 Stunden, 3 Downloads).
- Den Käufer per E-Mail informieren: Rechnungslink, Lizenz, Download-Button.
- Eine Kundenportal-Seite mit Bestellhistorie und erneuten Downloads hinzufügen.
6) Steuern, Rechnungen und Quittungen
- Stripe Tax aktivieren; Artikel als digitale Güter markieren.
- Käuferstandort (IP + Rechnungsadresse) und Steuernummern erheben (z. B. EU-USt-IdNr.).
- Für EU-B2C Ziel-MwSt. berechnen; für gültige EU-B2B-USt-IdNrn. Nullsatz anwenden und die ID aufzeichnen.
- Rechnungs-PDFs zusammen mit dem Bestelldatensatz speichern.
7) Compliance und Richtlinien
- Verkaufsbedingungen (Lizenzumfang, kein Weiterverkauf, Anti-Cheat-Klausel, DMCA-Takedown).
- Rückerstattungen: EU-Fernabsatzregeln gelten, aber digitale Downloads verlieren das 14-tägige Widerrufsrecht, wenn der Käufer ausdrücklich zustimmt und dies vor dem Download bestätigt. Eine Checkbox anzeigen und Zustimmung protokollieren.
- Datenschutz: eine DSGVO-Seite pflegen; Webhook-Payloads protokollieren, ohne vollständige Kartendaten zu speichern.
- Sicherheit: Webhook-Secrets rotieren; Prinzip der minimalen Rechte für API-Keys; Lizenztabelle verschlüsselt speichern.
Minimalimplementierung (Next.js + Stripe Checkout)
Server Action (Session erstellen):
Server Action (Session erstellen):
// app/api/checkout/route.ts
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, { apiVersion: '2024-06-20' });
export async function POST(req: Request) {
const { sku, successUrl, cancelUrl } = await req.json();
const priceId = await mapSkuToPriceId(sku);
const session = await stripe.checkout.sessions.create({
mode: 'payment',
line_items: [{ price: priceId, quantity: 1 }],
metadata: { sku },
success_url: successUrl, cancel_url: cancelUrl,
});
return Response.json({ url: session.url });
}
Webhook-Route:
// app/api/stripe/webhook/route.ts
import Stripe from 'stripe';
import { headers } from 'next/headers';
export const config = { api: { bodyParser: false } } as any; // Raw Body beibehalten
function buffer(body: ReadableStream<Uint8Array>) {
const reader = body.getReader();
const chunks: Uint8Array[] = [];
return reader.read().then(function process({ done, value }): any {
if (done) return Buffer.concat(chunks);
chunks.push(Buffer.from(value));
return reader.read().then(process);
});
}
export async function POST(req: Request) {
const sig = headers().get('stripe-signature')!;
const buf = await buffer(req.body!);
let event: Stripe.Event;
try {
event = new Stripe(process.env.STRIPE_SECRET_KEY!, { apiVersion: '2024-06-20' })
.webhooks.constructEvent(buf, sig, process.env.STRIPE_WEBHOOK_SECRET!);
} catch {
return new Response('Bad signature', { status: 400 });
}
if (event.type === 'checkout.session.completed') {
const session = event.data.object as Stripe.Checkout.Session;
await fulfill(session); // Bestellung erstellen, Lizenz, E-Mail
}
return new Response('OK', { status: 200 });
}
Idempotenz-Tipp: Wenn dein Webhook externe Aufgaben auslöst (z. B. E-Mail-Versand, Lizenzerstellung), verwende für diese Aufrufe deinen eigenen Idempotency-Key, um Duplikate bei Wiederholungen zu verhindern.
Lizenz- und Dateiauslieferung
- Jede Lizenz an Käufer-E-Mail + Produkt-SKU binden.
- Download-URLs signieren; nach Zeit und Versuchen begrenzen; IPs für Missbrauchskontrolle protokollieren.
- Einen kleinen Lizenz-Validator-Snippet in deinen Ressource-Loader einbauen, der den Key gegen deine API prüft (ratenlimitiert).
Risiko- und Betrugskontrollen
- 3DS/SCA über Checkout oder Payment Intents aktivieren.
- Wegwerf-E-Mails und nicht übereinstimmendes Rechnungsland für Hochrisiko-Bestellungen blockieren.
- Streitfall-Beweisvorlagen bereithalten: Produktbeschreibung, Lizenzprotokolle, Download-Protokolle, Einwilligung zum digitalen Inhaltsverzicht.
Cfx.re-Regeln nicht verletzen
- Tebex für alle Vorteile verwenden, die deinen laufenden Server berühren (Priority-Queue, VIP-Kits, Fahrzeuge, Skins).
- Stripe nur für server-externe digitale Produkte und Dienstleistungen verwenden.
Interne Links (FiveMX)
- Monetarisierungsrichtlinie → https://vertexmods.com/shop/monetization-policy
- Rückerstattung & Retouren für digitale Güter → https://vertexmods.com/shop/refund-policy-digital
- Skript-Lizenzvorlage → https://vertexmods.com/shop/script-license-template
- DMCA-Takedown → https://vertexmods.com/dmca
- Performance & Anti-Cheat-Hinweise → https://vertexmods.com/performance
Externe Referenzen
- Cfx.re PLA + Tebex-exklusive Monetarisierung und Dokumentation.
- Stripe-Webhooks und Signaturverifizierung.
- Stripe-Idempotenz-Keys und SCA.
- EU-Verbraucherrecht: Ausnahmen vom Widerrufsrecht für digitale Inhalte.
- Stripe Tax: digitale Güter und OSS.
Versandfertige Checkliste
- Stripe-Konto verifiziert; Unternehmensdaten vollständig.
- Produkte + Preise erstellt; Metadaten gesetzt.
- Checkout-Session-API live; Erfolgs-/Abbruchrouten eingerichtet.
- Webhook-Endpunkt live; Signatur verifiziert; Wiederholungen getestet.
- Erfüllung: Lizenzgenerator, signierter Download-URL, E-Mail.
- Steuern aktiviert; Rechnungs-PDFs gespeichert; USt-Validierung eingerichtet.
- Rechtsseiten: AGB, Rückerstattungen, Datenschutz, Lizenz.
- Protokolle + Dashboards: Bestellungen, Fehler, Wiederholungen, Streitfälle.
- Audit: keine server-gebundenen Perk-Verkäufe außerhalb von Tebex.
FAQ (kurz)
- Kann ich VIP-Rollen mit Stripe verkaufen? Ja, wenn du Discord verwendest.
- Kann ich meine MLOs mit Stripe verkaufen? Ja, wenn die Lieferung server-extern erfolgt und nicht an Live-Perks gebunden ist.
- Erhalten Käufer 14-tägige Rückerstattungen? In der EU nicht mehr, nachdem sie der sofortigen digitalen Lieferung zugestimmt und den Download gestartet haben. Einwilligung protokollieren.
- Welcher Stripe-Ablauf ist am besten? Checkout für Geschwindigkeit; Payment Intents für starke Individualisierung.

