Identité · Mesure d'usage · Facturation

Connectez-les. Mesurez leur usage. Facturez-le.

Base316 réunit l'identité et la facturation à l'usage dans un seul plan de contrôle. Un seul appel indique si un compte peut faire quelque chose et qui le paie : droits d'accès, mesure d'usage et factures ne peuvent plus diverger.

  • Free inclut la production
  • Sans carte pour commencer
  • SDK dans 7 langages
Décision d'accèsPOST /v1/access/check
externalId
"acct_northwind"
feature
"ai.tokens"
externalUserId
"usr_ada"
permission
"reports.export"
requested
2 000
allowed: truePro · v3 · actif

Restant sur la période

237 600

  • Utilisé sur la période812 400
  • Quota du forfait1 000 000
  • Crédits prépayés50 000
  • Rôle autorisantadmin · direct

Chiffres d'illustration. Les champs sont la réponse réelle d'une vérification d'accès : la décision, l'usage qui la fonde et le rôle qui l'a accordée.

  • La production avec Free

    Des clés live dès le premier jour, pas un sandbox.

  • Vous êtes le marchand

    Les paiements sont réglés sur votre compte Stripe.

  • Aucune double facturation

    Chaque événement d'usage porte une clé obligatoire.

  • Des montants exacts

    Calculés en arithmétique décimale, arrondis une fois.

  • 7 SDK officiels

    Aucune dépendance tierce, dans aucun.

Pourquoi une seule plateforme

Deux systèmes qui finissent par diverger

L'identité et la facturation sont d'ordinaire des produits distincts reliés par des webhooks, et ils se contredisent dès que l'un d'eux prend du retard. Ici, ils partagent un même modèle — et un seul appel répond aux deux moitiés de la question.

La stack habituelle

Trois enregistrements, reliés par des webhooks

Fournisseur d'authentificationutilisateurs · sessions
webhook : en retard, relancé ou perdu
Système de facturationforfaits · factures
webhook : en retard, relancé ou perdu
Votre base de donnéesqui peut faire quoi
  • Un forfait résilié continue de débloquer des fonctionnalités jusqu'à l'arrivée d'un webhook.
  • Un nouvel utilisateur existe dans l'authentification avant que la facturation ne connaisse le compte.
  • L'usage est compté dans votre code, puis recompté pour la facture.

Base316

Un enregistrement, lu de trois façons

Un compte · une version de forfait · un registre d'usage

Identité

Utilisateurs, tenants, rôles et sessions

Droit d'accès

Ce que le forfait accorde, mesuré en direct

Facturation

Des factures issues du même usage

  • La vérification qui débloque une fonctionnalité lit le forfait qui la facture.
  • L'usage est mesuré une fois, et la facture est calculée à partir de lui.
  • Une permission et un quota sont évalués dans le même appel.

Visite du produit

De la connexion au chiffre d'affaires encaissé, dans un seul tableau de bord

Six étapes d'une même requête, chacune avec l'écran qui la pilote. Capturées dans le produit en fonctionnement, avec des données de démonstration.

01 · Identité

Notre page de connexion, ou la vôtre

Envoyez vos utilisateurs vers une page hébergée que Base316 habille à vos couleurs et maintient, et ils reviennent connectés. Mots de passe, passkeys, lien magique ou fournisseur d'identité de leur employeur — la même page, la même session. Ou gardez vos propres écrans et pilotez les mêmes flux via le SDK : la session, les facteurs MFA et le routage SSO sont identiques dans les deux cas.

app.base316.comDonnées de démo
Pages de connexion hébergées configurées dans Base316, avec un aperçu en direct de la page que voient les utilisateurs finaux

Plateforme

Ce que vous achèteriez sinon à quatre fournisseurs

Identité, facturation, multi-tenant et usage prépayé, sur un même modèle de vos comptes.

01 · Identité

Le fournisseur d'identité, pas une surcouche

Un émetteur par environnement, volontairement calqué sur Cognito, pour qu'une application déjà pointée vers un user pool puisse être redirigée sans modifier son code.

  • OIDC et SAML 2.0. Authorization code avec PKCE, rotation des refresh tokens, JWKS et userinfo. SAML uniquement initié par le SP, car une assertion non sollicitée n'a aucune requête à laquelle se rattacher.
  • SSO entreprise par domaine e-mail. Une adresse professionnelle est dirigée vers le fournisseur d'identité de l'employeur plutôt que vers une vérification de mot de passe, et le provisionnement just-in-time crée le compte à la première connexion.
  • Vos propres champs, typés. Déclarez une fois ce que vous devez savoir sur vos utilisateurs. Le SDK vous le renvoie typé, généré à partir d'un environnement réel plutôt qu'écrit à la main.
api.base316.com/hosted/sign-in
La page de connexion hébergée que voit un utilisateur final, aux nom et couleurs du client

02 · Facturation

Une facturation à l'usage qui tombe juste

L'abonnement payé d'avance après tout essai, l'usage à terme échu, le prorata lors d'un changement de forfait et un avoir pour la part inutilisée. Les montants sont calculés en décimal et arrondis une seule fois.

  • Un appel décide du droit d'accès. Il indique si un compte peut utiliser une fonctionnalité, au regard de sa limite plus ses crédits, et explique pourquoi en cas de refus au lieu de renvoyer false.
  • Vous restez le merchant of record. Les paiements directs de Stripe Connect sont réglés sur votre propre compte : vous gardez votre tableau de bord Stripe et les rétrofacturations touchent votre solde, pas le nôtre.
  • Devis, conditions de paiement et paiement hors ligne. L'essentiel du chiffre d'affaires B2B ne passe jamais par une carte. Établissez le devis, soumettez-le pour approbation, puis enregistrez le virement sur la facture — y compris un paiement partiel.
app.base316.com
Le chiffre d'affaires d'un projet : revenu récurrent mensuel normalisé par devise, et ce qui reste dû

03 · Tenants et rôles

Les utilisateurs, tenants et rôles de vos clients

Un utilisateur final appartient à une organisation via une adhésion, et l'adhésion porte un rôle. Les rôles accordent des permissions issues d'un catalogue défini par votre propre application : ce qu'une personne peut faire devient une question qui a une réponse, et non une convention.

  • Un appel pour les deux questions. `access.check` accepte une fonctionnalité ou une permission. Le même appel répond à « ce compte y a-t-il droit ? » et à « cet utilisateur peut-il le faire ? », de sorte que l'autorisation et la facturation ne peuvent jamais diverger sur une même requête.
  • Des rôles que vous définissez. Owner, admin et member ne sont qu'un point de départ. Un rôle est une clé et une liste de permissions, et les clés de permission sont des chaînes que votre code vérifie déjà.
  • Un tenant n'est pas un client. L'organisation à laquelle se connecte votre utilisateur et le compte que vous facturez sont des enregistrements distincts, liés quand ils correspondent. Une entreprise peut être plusieurs tenants, ou plusieurs entreprises une seule facture.
app.base316.com
Les utilisateurs finaux d'un projet Base316, chacun avec son tenant et le rôle qui porte ses permissions

04 · Usage prépayé

Vendre l'usage avant qu'il soit consommé

Tous les produits ne facturent pas un mois à terme échu. Vendez un pack de tokens, un bloc de minutes ou un solde rechargeable, et laissez les mêmes compteurs le décompter : ce que le client achète et ce qu'il consomme ne forment qu'un seul chiffre, pas deux à rapprocher.

  • Des crédits sur un compteur. Une attribution est une quantité d'une fonctionnalité mesurée, avec une date d'expiration. L'usage la consomme avant de devenir facturable, de sorte qu'un client n'est jamais facturé pour ce qu'il avait déjà acheté.
  • Un portefeuille qui règle les factures. Un solde prépayé par compte, imputé sur la facture avant toute tentative de paiement par carte, avec un seuil qui signale quand il s'épuise.
  • Refusé avant la dépense. Demandez la quantité que vous vous apprêtez à utiliser. Une requête qui dépasserait le quota est refusée avant que le travail ait lieu, au lieu d'apparaître comme un dépassement sur une facture que personne n'attendait.
app.base316.com
Le catalogue d'un projet : les compteurs qui mesurent l'usage, les fonctionnalités qu'accorde un forfait et les forfaits qui les vendent

Pour les développeurs

Un appel, et il vous dit pourquoi

Un simple false envoie quelqu'un deviner dans le tableau de bord. Chaque refus indique la raison, la limite, ce qui a été utilisé et ce qui reste — pour que l'erreur que voit votre client puisse dire quelque chose d'utile. La même surface existe en API REST, sept bibliothèques clientes, une CLI et un serveur MCP.

400
opérations d'API dans la spécification OpenAPI publiée
7
SDK officiels, de TypeScript à C#
0
dépendance tierce dans chacun d'eux
entitlement.ts
const decision = await base316.access.check({
  externalId: "acct_globex",
  feature: "api.calls",
  requested: 1,
});

// Refused, and it says why — not a bare false.
{
  allowed: false,
  reason: "USAGE_LIMIT_EXCEEDED",
  usage: {
    used: 1_000_000,
    limit: 1_000_000,
    credits: 0,
    remaining: 0,
  },
}

Comment ça marche

Quatre appels, et vous facturez

Installez le client, connectez vos utilisateurs, enregistrez ce qui se passe et demandez avant de faire le travail. Forfaits, prorata, factures, relances et rapports en découlent sans que rien d'autre ne change dans votre code.

  1. 01

    Installez-le et pointez-le vers votre clé

    Un seul client pour toute la surface : authentification, accès, événements, clients et abonnements. Le préfixe de la clé indique à quel environnement elle appartient, de sorte qu'une clé sandbox ne peut pas toucher aux données de production par accident.

    install.ts
    # Node, or any of six others
    pnpm add @base316/sdk
    
    import { Base316 } from "@base316/sdk";
    
    const base316 = new Base316();
    // Reads BASE316_SECRET_KEY from the environment.
  2. 02

    La connexion, à votre façon ou à la nôtre

    Envoyez les utilisateurs vers une page hébergée par Base316 à vos couleurs, et échangez le code renvoyé contre une session. Ou gardez vos propres écrans et appelez directement les mêmes flux — la session, les facteurs MFA et le routage SSO sont identiques dans les deux cas.

    signin.ts
    // Our hosted page — send them here, they come back with a code.
    const session = await base316.auth.exchangeCode({ code });
    
    // Or your own screens, against the same flows.
    await base316.auth.signUp({ email, password });
    await base316.auth.session(token);
  3. 03

    Enregistrez ce que vos clients utilisent

    Envoyez un événement là où le travail a lieu. La clé d'idempotence est obligatoire et non facultative, car une nouvelle tentative après un timeout réseau ne doit pas facturer deux fois le même travail — et vous seul savez ce que « le même travail » signifie.

    usage.ts
    await base316.events.record({
      event: "api.call",
      externalId: "acct_globex",
      payload: { count: 1 },
      idempotencyKey: requestId,
    });
    
    // Required, not optional: a retry after a timeout
    // must not bill the same work twice.
  4. 04

    Demandez avant de faire le travail

    Le même appel accepte une fonctionnalité ou une permission ; il répond donc à « ce compte a-t-il encore du quota ? » et à « cet utilisateur peut-il le faire ? ». Un refus indique la raison, la limite et ce qui reste — de quoi dire quelque chose d'utile au lieu d'un simple « non ».

    gate.ts
    const { allowed, reason, usage } =
      await base316.access.check({
        externalId: "acct_globex",
        feature: "api.calls",
      });
    
    if (!allowed) {
      return tooManyRequests(reason);
    }
    
    // The same call, asking about a person in that account.
    await base316.access.check({
      externalId: "acct_globex",
      userId,
      permission: "billing.manage",
    });
Bibliothèques clientesTypeScriptPythonGoRubyPHPJavaC#

Sécurité

Le tenant vient de la clé, jamais de la requête

L'espace de travail, le projet et l'environnement de chaque requête sont lus depuis la clé d'API qui l'a émise. Un id dans une URL ou dans un corps de requête ne prouve jamais une permission.

  • Une isolation testée comme le ferait un attaquant

    La substitution d'ids entre tenants fait partie de la suite de tests. Une ressource qui ne vous appartient pas et une ressource inexistante reçoivent la même réponse.

  • Des secrets que nous ne pouvons pas divulguer

    Les clés secrètes ne sont stockées que sous forme d'empreinte SHA-256 et ne sont affichées qu'une fois. Les identifiants de fournisseurs que vous nous confiez sont chiffrés en AES-256-GCM.

  • Le Sandbox ne peut pas atteindre la production

    Chaque projet dispose d'un environnement Sandbox et d'un environnement Production, et le préfixe de la clé est revérifié par rapport à l'environnement à chaque requête.

  • Des pages hébergées sans JavaScript

    Les pages de connexion sont rendues côté serveur sous une politique de contenu stricte, avec PKCE, protection CSRF et codes à usage unique valables 60 secondes.

Tarifs

Commencez gratuitement. Évoluez quand les limites se font sentir.

Des forfaits simples qui évoluent avec votre équipe. Passez à la vitesse supérieure quand vous êtes prêt.

Gratuit

Explorez le produit sans engagement.

0 $US
  • 1 project, with production access
  • 1,000 end users · 100 customers
  • 100k metered events a month
  • Multi-factor authentication included
  • 7-day event retention
  • Fonctionnalités produit essentielles
  • Support communautaire
Recommandé

Pro

Pour les équipes qui collaborent entre workspaces.

49 $US/mois

14 jours d'essai gratuit

  • 5 projects · 5 seats
  • 25,000 end users · 5,000 customers
  • 5M metered events a month
  • Invoicing, payment collection and dunning
  • Custom branding and impersonation
  • 90-day event retention
  • Fonctionnalités produit avancées
  • Jusqu'à 5 membres
  • Support par e-mail

Scale

Pour les produits à fort trafic en production.

249 $US/mois
  • Unlimited projects and API keys · 20 seats
  • 250,000 end users · unlimited customers
  • 50M metered events a month
  • Custom authentication domain
  • 400-day event retention
  • Projets et clés d'API illimités
  • 250 000 utilisateurs runtime, 50 M d'événements mesurés
  • Domaine d'authentification personnalisé
  • Rétention des événements sur 400 jours

Entreprise

Sécurité, support et conditions adaptés à votre organisation.

Sur mesure
  • Negotiated limits rather than a table
  • Enterprise SSO, SAML 2.0 and your own issuer
  • Dedicated support and an agreed response time
  • Invoicing on your terms, security review, DPA
  • Support dédié
  • Workspaces illimités

Questions

Les questions des équipes avant de changer

Des réponses franches sur la facturation, l'identité et la migration.

Pour commencer

Livrez le produit, pas le moteur de facturation

Free est une vraie offre avec accès à la production, pas un sandbox. Commencez là et passez au niveau supérieur quand les limites se font vraiment sentir.

  • Accès à la production avec Free
  • Sans carte pour commencer
  • Modèles d'import pour Chargebee, Lago, Stripe et Clerk