Lizenz-Keys richtig integrieren — Activation-API in 15 Minuten
Schritt-für-Schritt-Tutorial: SellYourCode-License-Keys in deine SaaS-App einbauen — mit JS-SDK, Node-Backend und Offline-Fallback.
Von Michael Pasberg
Wer Code verkauft, will ihn auch geschützt ausliefern. Eine simple Download-URL reicht für Vorlagen, aber sobald deine Käufer eine laufende Software bekommen — SaaS-Starter, Bot, Browser-Extension — brauchst du einen Activation-Layer. Sonst landet dein Code in zwei Wochen auf GitHub als „free version".
SellYourCode liefert Lizenz-Keys automatisch beim Verkauf aus. In diesem Tutorial zeigen wir, wie du sie in einer eigenen App validierst — im Browser via JS-SDK oder im Backend über die REST-API. Aufwand: ungefähr 15 Minuten.
Was ein guter Lizenz-Key leistet
- Bindung an einen Käufer — nicht teilbar wie eine .zip
- Aktivierungs-Limits — z.B. 3 Geräte pro Lizenz
- Widerrufbar — bei Refund, Chargeback oder Missbrauch
- Offline-Toleranz — keine permanente Verbindung nötig
Unsere Keys (Format SYC-XXXX-XXXX-XXXX-XXXX, Crockford-Base32) sind HMAC-signiert — du kannst sie offline strukturell validieren bevor du den Activation-Server fragst. Spart Latenz und blockiert kaputte Eingaben sofort.
1. JS-SDK im Browser einbinden
Für reine Frontend-Produkte (Chrome-Extensions, statische Apps) reicht das SDK. Eine Zeile:
<script src="https://sellyourcode.de/sdk/sellyourcode-license.js"></script>Dann aktivieren beim ersten Start:
const result = await SellYourCodeLicense.activate({
productSlug: 'my-bot',
key: userInput, // 'SYC-A1B2-...'
fingerprint: navigator.userAgent + screen.width,
});
if (result.ok) {
localStorage.setItem('lic', result.token); // signiertes JWT
} else {
alert(result.error); // 'invalid' | 'consumed' | 'revoked'
}Bei jedem App-Start prüfst du nur noch das Token — kein Netzwerk-Call mehr nötig, solange das Token gültig ist (Standard: 7 Tage, dann Re-Validation).
2. Im Node-Backend validieren
Für SaaS mit Server-Komponente verlagerst du den Check ins Backend. Vorteil: der Käufer kann das Token nicht im DevTools manipulieren.
// POST https://sellyourcode.de/api/licenses/activate
const res = await fetch('https://sellyourcode.de/api/licenses/activate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
productSlug: 'my-saas',
key: req.body.key,
fingerprint: req.ip, // oder eine Tenant-ID
}),
});
const { ok, token, expiresAt } = await res.json();
if (!ok) return res.status(402).json({ error: 'license invalid' });
// Token in eigener DB speichern, bei jedem Auth-Request mit-prüfen
await db.users.update({ where: { id }, data: { license: token } });Wichtig: fingerprint ist frei wählbar — alles, was eine Installation eindeutig macht. Wir merken uns diese Werte und blockieren die 4., 5., …-te Aktivierung pro Lizenz. Bei Refund werden alle aktivierten Fingerprints in einem Schritt invalidiert.
3. Offline-Fallback
Was tun, wenn der Käufer offline ist oder unser Activation-Server gerade gewartet wird? Drei bewährte Strategien:
- Strukturvalidierung— Format & HMAC offline prüfen (Public-Key gehört dir, das Secret bleibt bei SellYourCode). Reicht für „nicht-vollständig-fake".
- Grace-Period — Token aus letzter erfolgreicher Aktivierung lokal cachen, z.B. 14 Tage gültig.
- Soft-Fail — bei Activation-Fehler nicht crashen, sondern Feature freischalten und im Hintergrund retry. Vermeidet schlechte Erfahrungen bei kurzen Outages.
4. Refund-Flow korrekt verkabeln
Bei Refund (über Stripe oder unseren Support) wird die Lizenz automatisch revoked. Dein Webhook bekommt:
{
"event": "license.revoked",
"key": "SYC-A1B2-...",
"reason": "refund", // oder "chargeback", "abuse", "expired"
"revokedAt": "2026-05-12T10:14:00Z"
}In deinem Webhook-Handler reicht ein UPDATE users SET license=null für den betroffenen Account. Beim nächsten Login zeigt deine App den Buy-Screen — sauber, ohne Drama.
Häufige Fehler
- Key im Frontend ausgeben statt zu prüfen — wer den Key sieht, kann ihn teilen. Lass die App den User nach dem Key fragen, gib ihn nie automatisch heraus.
- Fingerprints zu strikt — Browser-Updates ändern den User-Agent. Mische stabile Werte (E-Mail-Hash, Geräte-ID) mit flüchtigen.
- Aktivierungslimit zu niedrig— manche Käufer haben Arbeits-Laptop + Privat-Mac + Mobile. Standard 3 Slots ist okay, „pro"-Lizenzen sollten 5 oder unbegrenzt haben.
Nächste Schritte
Volle API-Referenz inkl. aller Endpoints (/activate, /deactivate, /verify, /list) findest du in der SDK-Dokumentation. Wer noch keinen Account hat: bei SellYourCode kostet die Aktivierungs-API nichts extra — sie ist Teil jeder Lizenz, die du verkaufst.