Cas d’usage
Facturation multi-tenant (architecture B2B2B)
Un tenant SSII, N sub-tenants clients finaux
Scell.io expose deux niveaux d'isolation : le tenant (compte de l'éditeur SaaS / SSII partenaire) et les sub-tenants (clients finaux du partenaire). Chaque sub-tenant possède son propre numéroteur de factures, ses templates PDF, ses séries de numérotation conformes ISCA. Le tenant parent utilise sa clé `sk_live_*` et passe l'identifiant `sub_tenant_id` dans chaque requête de création de facture. Les données sont strictement isolées en base via `tenant_id`/`sub_tenant_id`. Idéal pour les SSII françaises qui revendent une couche e-invoicing à leurs clients tout en gardant un seul contrat Scell.io.
À retenir
- 1 clé `sk_live_*` parent, N sub-tenants enfants
- Numéroteur de facture indépendant par sub-tenant
- Templates PDF (logo, couleurs) par sub-tenant
- Champ `sub_tenant_id` dans le body (méthode recommandée ; header `X-Sub-Tenant-Id` accepté en alias historique)
- Webhooks routés au tenant parent avec `sub_tenant_id` dans le payload
- Balance partagée au niveau tenant parent (facturation centralisée)
Exemple de code
import { ScellClient } from '@scell/sdk';
const scell = new ScellClient({ apiKey: process.env.SCELL_SECRET_KEY! });
// 1. Créer un sub-tenant pour un client final
const subTenant = await scell.subTenants.create({
name: 'Boulangerie Dupont SARL',
legal_id: '12345678901234',
invoice_numbering_prefix: 'BD',
});
// 2. Émettre une facture au nom de ce sub-tenant
const invoice = await scell.invoices.create({
sub_tenant_id: subTenant.id,
format: 'factur-x',
buyer: { siret: '98765432109876', name: 'Client Final SAS' },
lines: [{ description: 'Prestation', quantity: 1, unit_price: 1000, vat_rate: 20 }],
});