Die Lizenz abfragen
Anwendungsfall Schritt für Schritt, um die Lizenz einer Kanzlei über die API zu lesen, ihre Obergrenzen und ihre monatliche Schätzung zu ermitteln und einen Aktivierungsschlüssel zu aktivieren.
Die Lizenz einer Kanzlei bestimmt ihren Plan, ihre Obergrenzen für Mandate und Benutzer und ihre Abrechnungsschätzung. Ihre Integration kann sie lesen, um zu prüfen, ob noch ein Mandat angelegt werden kann, oder um den Verbrauch in einem Dashboard anzuzeigen.
Voraussetzungen: ein Token mit der Berechtigung read, das einem Mitglied der Kanzlei gehört, und das public_token der Kanzlei. Die Aktivierung eines Schlüssels erfordert zusätzlich write und die Rolle Administrator oder Manager.
Schritt 1: die Lizenz lesen
curl "https://api.novafisko.com/v1/firms/Fd7hQ2mN8sXa/licence?lang=fr" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"
{
"status": "active",
"subscription": {
"id": 31,
"status": "active",
"billing_interval": "monthly",
"current_period_start": "2026-10-01",
"current_period_end": "2026-10-31",
"trial_ends_at": null,
"source": "licence_key",
"billed": true,
"pilot": {"active": false, "until": null}
},
"plan": {
"code": "firm",
"name": "Cabinet",
"kind": "firm",
"features": ["peppol", "document_import", "bank"],
"base_price_monthly": 49.0,
"tiers": [{"from": 1, "to": 10, "unit_price": 9.0}, {"from": 11, "to": null, "unit_price": 7.0}],
"max_companies": null,
"peppol_fair_use_per_company": 200,
"annual_discount_pct": 10.0
},
"usage": {
"month": "2026-10",
"companies": 12,
"users": 4,
"bank_accounts": 15,
"rows": [
{"company_id": 318, "token": "k3Jd9fPq2LmX", "name": "Le Comptoir Montois SRL", "code": "COMPTOIR", "bank_accounts": 2, "status": "active", "activated_at": "2026-01-06T09:00:00+00:00", "deactivated_at": null}
],
"max_companies": 25,
"over_limit": false,
"suggestion": null
},
"estimate": {
"month": "2026-10",
"base": 49.0,
"companies_breakdown": [
{"from": 1, "to": 10, "quantity": 10, "unit_price": 9.0, "total": 90.0},
{"from": 11, "to": null, "quantity": 2, "unit_price": 7.0, "total": 14.0}
],
"options": [],
"discount": 0.0,
"subtotal": 153.0,
"vat_rate": 21.0,
"vat_amount": 32.13,
"total_incl_vat": 185.13,
"billed": true
},
"next_month_preview": {"companies": 12, "total": 153.0},
"over_limit": false,
"limits": {"max_users": 10, "max_companies": 25, "users_count": 4, "companies_count": 12},
"expires_at": "2027-09-30",
"warning": null,
"activation": {
"key_masked": "NF-••••-••••-••••-7K2Q",
"activated_at": "2026-01-06T08:55:12+00:00",
"valid_until": "2027-09-30",
"services": ["peppol", "document_import"]
},
"statements": [
{"id": 904, "reference": "NF-2026-09-0031", "kind": "monthly", "period": "2026-09", "subtotal": 146.0, "vat_amount": 30.66, "total": 176.66, "status": "paid", "issued_at": "2026-10-01", "paid_at": "2026-10-03"}
],
"options_available": [
{"code": "extra_bank_account", "name": "Compte bancaire supplémentaire", "price_monthly": 2.0, "unit": "par compte"}
],
"can_manage": true
}
Die Antwort ist gekürzt: Sie enthält außerdem entitlements, companies_detail, comparison und einige ältere Felder, die für frühere Versionen der Anwendungen beibehalten werden. Die oben genannten Zahlenwerte sind Beispiele: Die tatsächliche Preistabelle veröffentlicht GET /v1/pricing.
Für eine Integration nützliche Felder
| Feld | Verwendung |
|---|---|
status |
none, wenn die Kanzlei kein nutzbares Abonnement hat, sonst der Status des Abonnements |
limits.max_companies, limits.companies_count |
Feststellen, ob noch Platz für ein neues Mandat ist. null bedeutet ohne Obergrenze |
limits.max_users, limits.users_count |
Dieselbe Logik für die Mitarbeiter |
over_limit |
Die Kanzlei überschreitet die Obergrenze ihres Plans |
expires_at |
Ende der Gültigkeit des Aktivierungsschlüssels, null ohne Schlüssel |
warning |
Anzuzeigende Warnung (nahender Ablauf, Überschreitung), sonst null |
estimate |
Schätzung für den laufenden Monat, ohne und mit MwSt. |
can_manage |
Der Benutzer kann einen Schlüssel aktivieren oder freigeben |
Die Beträge der Lizenz sind JSON-Zahlen und keine Zeichenfolgen. Es handelt sich um kaufmännische Beträge und nicht um Buchungen. Siehe Konventionen.
Ein Benutzer, der kein Mitglied der Kanzlei ist, erhält 404.
Schritt 2: vor dem Anlegen eines Mandats prüfen
def can_add_company(licence):
limits = licence["limits"]
if limits["max_companies"] is None:
return True # no ceiling on this plan
return limits["companies_count"] < limits["max_companies"]
Wenn Sie dennoch ein Mandat anlegen, obwohl die Obergrenze erreicht ist, antwortet POST /v1/companies mit 422 und dem Code company_limit_reached. Ebenso antwortet das Hinzufügen eines Mitarbeiters über die Obergrenze hinaus mit 422 und user_limit_reached.
Schritt 3: einen Schlüssel aktivieren
Ein Aktivierungsschlüssel hat die Form NF-XXXX-XXXX-XXXX-XXXX. Er gewährt für eine bestimmte Dauer einen Plan, Optionen und Obergrenzen.
curl -X POST https://api.novafisko.com/v1/firms/Fd7hQ2mN8sXa/licence/activate \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"key": "NF-8H2K-P4QM-7TZD-7K2Q"}'
Im Erfolgsfall ist die Antwort 200 die aktualisierte Lizenz, in derselben Form wie in Schritt 1. Bei einer Ablehnung lautet die Antwort 422:
{
"message": "Cette clé d'activation a expiré.",
"code": "expired_key",
"errors": {"key": ["Cette clé d'activation a expiré."]}
}
code |
Bedeutung |
|---|---|
invalid_key |
Schlüssel unbekannt oder falsch eingegeben |
expired_key |
Schlüssel abgelaufen |
exhausted_key |
Erlaubte Anzahl an Aktivierungen bereits erreicht |
key_reserved |
Schlüssel ist einer anderen Kanzlei vorbehalten |
already_active |
Schlüssel in dieser Kanzlei bereits aktiv |
Die Route ist auf 10 Versuche pro Minute begrenzt.
Einen Schlüssel freigeben
curl -X DELETE https://api.novafisko.com/v1/firms/Fd7hQ2mN8sXa/licence/activation \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"
Der Schlüssel wird wieder verfügbar, und das davon abhängige Abonnement wird gekündigt. Die Antwort ist die aktualisierte Lizenz.
Das Aktivieren und das Freigeben eines Schlüssels sind in der Demo-Kanzlei blockiert (403, Code demo_mode).
Öffentliche Preistabelle
Zwei öffentliche Routen ohne Authentifizierung versorgen einen Simulator:
curl https://api.novafisko.com/v1/pricing
curl "https://api.novafisko.com/v1/pricing/simulate?companies=12"
Ihr detailliertes Schema finden Sie in der Referenz.