Aller au contenu
Documentation
Français
Ouvrir l'application

Consulter la licence

Cas d'usage pas à pas pour lire la licence d'un cabinet par l'API, connaître ses plafonds et son estimation mensuelle, et activer une clé d'activation.

La licence d'un cabinet détermine son plan, ses plafonds de dossiers et d'utilisateurs et son estimation de facturation. Votre intégration peut la lire pour vérifier qu'un dossier peut encore être créé, ou pour afficher la consommation dans un tableau de bord.

Prérequis : un jeton avec la capacité read, détenu par un membre du cabinet, et le public_token du cabinet. L'activation d'une clé demande en plus write et le rôle d'administrateur ou de gestionnaire.

Étape 1 : lire la licence

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
}

La réponse est abrégée : elle contient aussi entitlements, companies_detail, comparison et quelques champs historiques conservés pour les anciennes versions des applications. Les valeurs chiffrées ci-dessus sont des exemples : la grille réelle est publiée par GET /v1/pricing.

Champs utiles à une intégration

Champ Usage
status none si le cabinet n'a pas d'abonnement utilisable, sinon le statut de l'abonnement
limits.max_companies, limits.companies_count Savoir s'il reste de la place pour un nouveau dossier. null signifie sans plafond
limits.max_users, limits.users_count Même logique pour les collaborateurs
over_limit Le cabinet dépasse le plafond de son plan
expires_at Fin de validité de la clé d'activation, null sans clé
warning Avertissement à afficher (échéance proche, dépassement), null sinon
estimate Estimation du mois en cours, hors TVA et TVA comprise
can_manage L'utilisateur peut activer ou libérer une clé
Note

Les montants de la licence sont des nombres JSON et non des chaînes. Il s'agit de montants commerciaux et non d'écritures comptables. Voir Conventions.

Un utilisateur qui n'est pas membre du cabinet reçoit 404.

Étape 2 : vérifier avant de créer un dossier

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"]

Si vous créez tout de même un dossier alors que le plafond est atteint, POST /v1/companies répond 422 avec le code company_limit_reached. De la même manière, l'ajout d'un collaborateur au-delà du plafond répond 422 avec user_limit_reached.

Étape 3 : activer une clé

Une clé d'activation a la forme NF-XXXX-XXXX-XXXX-XXXX. Elle accorde un plan, des options et des plafonds pour une durée donnée.

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"}'

En cas de succès, la réponse 200 est la licence mise à jour, de la même forme qu'à l'étape 1. En cas de refus, la réponse est 422 :

{
  "message": "Cette clé d'activation a expiré.",
  "code": "expired_key",
  "errors": {"key": ["Cette clé d'activation a expiré."]}
}
code Signification
invalid_key Clé inconnue ou mal saisie
expired_key Clé expirée
exhausted_key Nombre d'activations autorisé déjà atteint
key_reserved Clé réservée à un autre cabinet
already_active Clé déjà active sur ce cabinet

La route est limitée à 10 tentatives par minute.

Libérer une clé

curl -X DELETE https://api.novafisko.com/v1/firms/Fd7hQ2mN8sXa/licence/activation \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN"

La clé redevient disponible et l'abonnement qui en dépend est résilié. La réponse est la licence mise à jour.

Attention

L'activation et la libération d'une clé sont bloquées dans le cabinet de démonstration (403, code demo_mode).

Grille tarifaire publique

Deux routes publiques, sans authentification, alimentent un simulateur :

curl https://api.novafisko.com/v1/pricing
curl "https://api.novafisko.com/v1/pricing/simulate?companies=12"

Leur schéma détaillé figure dans la référence.

Voir aussi