Zum Inhalt springen
Dokumentation
Deutsch
App öffnen

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
Hinweis

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.

Achtung

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.

Siehe auch