Aller au contenu
EN English versionDemander une démo

Facturation et tarifs

graal compte ce que vos traitements réservent sur le cluster : un type d’instance, pendant un certain nombre de minutes. Ce même moteur de mesure sert deux modèles de facturation, choisis par un réglage de déploiement. Les prix publics et les calculatrices sont sur la page Tarifs ; cette page explique ce qui est compté et comment.

Le réglage s’appelle graal.billing.mode (variable GRAAL_BILLING_MODE, valeur du chart billing.mode).

Mode Pour qui Ce qui est facturé
saas graal.systems, opéré par l’éditeur L’usage, à la minute, à la grille de l’éditeur. Une facture par mois et par locataire
self-hosted (défaut) Une installation chez vous ou chez votre hébergeur Un abonnement annuel au vCPU, facturé hors du produit. Le moteur sert à la refacturation interne : vous posez votre propre grille

En self-hosted, les écritures de factures de l’éditeur (émission, envoi, paiement en ligne) répondent 501 feature_disabled : une installation tirée de l’image ouverte n’émet jamais de facture au nom de l’éditeur, même si une grille de prix y est posée.

L’unité est l’alloué, pas le consommé : le type d’instance réservé (donc ses vCPU, sa mémoire et ses GPU) multiplié par ses minutes, comme chez un fournisseur de cloud.

  • Début et fin. La durée va du démarrage effectif de la charge, c’est-à-dire son premier passage en exécution, jusqu’à sa fin. La file d’attente et le tirage d’image ne sont pas comptés ; une charge qui n’a jamais démarré non plus.
  • Minute entamée. 61 secondes comptent 2 minutes.
  • Annulation. Une exécution annulée est facturée jusqu’à l’annulation, une seule fois.
  • Un seul tarif. Le prix dépend du type d’instance, pas de l’usage : job, run de workflow, notebook ou espace de travail, endpoint de serving, entrepôt et flux gérés.
  • Charges longues. Les espaces, endpoints, entrepôts et flux gérés sont clôturés par période, à chaque arrêt et à chaque changement de mois : le coût d’un mois ne déborde pas sur le suivant.
  • Rattachement. Chaque ligne d’usage porte son projet, son job, son run, son workflow et son run de workflow, son espace ou son endpoint : les coûts se lisent selon chacune de ces dimensions.

Ce qui n’est pas facturé : le stockage et le trafic sortant (ni mesurés, ni facturés), et les exécutions sur un boîtier edge, dont le matériel est le vôtre.

coût d'une charge = prix par minute du type × nombre d'instances × minutes entamées

La grille stocke pour chaque type d’instance un prix mensuel : prix par minute × 43 200 (30 jours de 1 440 minutes). Le calcul le ramène à la minute en divisant par 43 200, ce qui est exact. Exemple : General G2 (4 vCPU, 16 Go) stocke 190,08 € ; 190,08 ÷ 43 200 = 0,0044 € par minute ; une heure coûte 60 × 0,0044 = 0,264 €.

La grille SaaS (20 types d’instance) est publiée sur la page Tarifs : le site la lit dans le fichier même que les opérateurs posent sur la plateforme.

En installation, le prix est dégressif par tranches : chaque vCPU est facturé au prix de sa tranche, donc le total ne baisse jamais quand on ajoute un vCPU. Les vCPU 1 à 64 sont à 290 € HT par vCPU et par an (offre Essentiel) ; les vCPU 65 à 256 sont à 190 € (offre Entreprise). Exemple : 128 vCPU = 64 × 290 + 64 × 190 = 30 720 € HT par an. Au-delà de 256 vCPU, ou pour une offre Souverain : sur devis. L’engagement sur 3 ans (−15 %) et le support 24×7 (+25 %) s’appliquent au total : 30 720 × 0,85 × 1,25 = 32 640 €. Le prix affiché par la calculatrice est le prix moyen par vCPU, avec le détail des tranches sous le total.

Les coûts du mois en cours se lisent dans la console avant la facture, avec le même calcul : par projet, job, workflow et espace. L’écran « Coûts par projet » ajoute un taux d’utilisation par projet : le CPU et la mémoire réellement consommés divisés par ce qui a été réservé (par exemple « 8 vCPU réservés, 1,2 utilisés »), pour repérer ce qui est surdimensionné. Le taux est affiché à côté du montant ; il n’y entre pas. Les mêmes chiffres sont disponibles pour un agent par l’outil MCP get_costs_by_project.

  • Une facture par mois et par locataire, émise automatiquement une fois le mois clos, en plus de la demande manuelle.
  • La numérotation est continue, par année civile : une seule séquence pour l’éditeur (pas une par locataire), GS-2026-0001, GS-2026-0002…, qui repart à 0001 chaque 1er janvier. Le numéro est tiré au moment de l’émission, dans la même transaction que la facture : deux factures émises en même temps n’ont jamais le même numéro, et une émission qui échoue ne laisse pas de trou.
  • Les factures émises avant ce format gardent leur numéro (GS1, GS2…) : un numéro émis ne change pas.
  • Une facture émise ne se supprime pas. Une erreur se corrige par un avoir, numéroté dans la même séquence.
  • Le paiement est manuel par défaut ; le paiement par carte est une option.
  • Dans l’émission automatique, un mois sans rien à facturer ne produit ni facture ni numéro.

En installation, la console propose une page Abonnement réservée à l’administrateur de la plateforme. Elle montre :

  • les vCPU souscrits (valeur billing.subscription.vcpu du chart) ;
  • le quota CPU de l’espace d’exécution, lu dans le ResourceQuota de son namespace ;
  • le pic de vCPU réellement alloués sur la période, calculé à partir des usages d’instance.

Le vCPU compté par l’abonnement est ce quota : vous le fixez vous-même, il est plafonné et vérifiable. Utilisateurs et agents sont illimités.

L’administrateur de la plateforme pose sa propre grille de prix (POST /prices). La plateforme calcule alors, avec le même moteur, les coûts par projet, job, workflow et espace, et les exporte pour vos directions et vos équipes. Elle est incluse dans l’abonnement.

La grille SaaS de graal.systems est versionnée dans dev/billing/grille-saas.csv. La colonne price_per_minute fait foi ; amount est le prix mensuel stocké, égal à price_per_minute × 43 200. Le script dev/billing/poser-grille.sh la pose sur une plateforme par l’API :

Fenêtre de terminal
# plan : n'écrit rien, liste les prix à créer, à changer, identiques
dev/billing/poser-grille.sh dev
# écriture : crée les prix manquants et change les montants différents
dev/billing/poser-grille.sh dev --appliquer

Un prix présent sur la plateforme mais absent du fichier n’est jamais supprimé (il peut porter de l’usage) : il est signalé. L’écriture de la grille est réservée à l’administrateur de la plateforme. L’émission automatique des factures se règle par graal.billing.invoices.auto.enabled.