API Factur-X pour les développeurs
Un seul endpoint. Un PDF/A-3b avec XML CII conforme EN16931. Ledger ISCA SHA-256 inclus. Sans lire les 400 pages de la norme.
$api = ScellApiClient::withApiKey('sk_live_...');
$invoice = $api->invoices()->builder()
->outgoing()
->facturX()
->issueDate('2026-05-16')
->dueDate('2026-06-15')
->buyer('98765432109876', 'Acme SARL',
new Address('2 av Client', '75002', 'Paris'))
->addLine('Consultation', 10, 150.00, 20.0)
->create();
echo $invoice->invoice_number; // FAC-202605-00123✓ FAC-202605-00123 — PDF/A-3b + XML CII EN16931
Contexte client typique
Camille Martin
CTO ISV B2B
5–50 ETP · Laravel / Node.js
“Camille développe un ERP vertical pour le secteur logistique. Ses 150 clients B2B français exigent des factures Factur-X depuis janvier 2026. Elle a 2 semaines pour implémenter la conformité sans recruter de spécialiste EN16931.”
Blocages courants
- 1La norme EN16931 impose 400 pages de spécifications que personne ne veut lire ni maintenir
- 2Un seul champ manquant dans le XML CII suffit pour un rejet Peppol en production
- 3La conformité réforme 2026 (LFR 2022) n'est pas optionnelle pour les émetteurs B2B français
- 4Maintenir les mises à jour de normes (Factur-X V2.2, schematron FNFE) en interne coûte 200–400h/an
- 5Tester en sandbox sans risquer de déclencher des chaînes fiscales réelles est difficile
- 6Implémenter un ledger fiscal ISCA SHA-256 en interne prend 3–6 mois de développement
La réponse Scell.io
135 endpoints documentés Swagger UI. Trois SDKs : PHP (`composer require scell/sdk`), TypeScript (`npm i @scell/sdk`), MCP (`@scell/mcp-client` pour les agents IA). Sandbox isolé via préfixe de clé `sk_test_*` — même endpoint, base PostgreSQL distincte, zéro effet Peppol. Un appel API génère le PDF/A-3b avec les balises BT-84 (IBAN), BG-22 (déductions acompte) et les types 386/380 calculés automatiquement. Le ledger ISCA SHA-256 tourne en arrière-plan — ancré sur Bitcoin via OpenTimestamps sans configuration.
SDK PHP `scell/sdk`
`composer require scell/sdk`, builder pattern fluent, classes typées, premier appel en 30 min
SDK TypeScript `@scell/sdk`
types stricts, promesses, Node.js et Deno, même API que le SDK PHP
44 tools MCP `@scell/mcp-client`
Claude, GPT-4o, Cursor créent des factures en langage naturel, zéro glue code
Sandbox `sk_test_*`
même endpoint `api.scell.io`, base PostgreSQL isolée, pas de transmission Peppol
OpenAPI 3.0 + Swagger UI
135 endpoints avec exemples curl, PHP, TypeScript prêts à copier
PDF/A-3b + XML CII conforme schematron FNFE
zéro rejet Peppol, types 386/380/avoir gérés automatiquement
Contexte & enjeux
La norme EN16931 représente 400 pages de spécifications. Chaque type de transaction — acompte type 386, solde type 380, avoir, adresse de livraison BG-13 — impose ses propres balises obligatoires dans le XML CII embarqué. Un seul champ manquant suffit pour un rejet Peppol en production. Scell.io expose une API REST qui absorbe cette complexité : vous envoyez les données métier, vous recevez un PDF/A-3b avec XML CII conforme au schematron FNFE, prêt pour le réseau Peppol. Le ledger fiscal ISCA SHA-256 est automatique — une `FiscalEntry` est créée par trigger PostgreSQL `SECURITY DEFINER` à chaque émission, même si votre code bypasse le chemin normal. Ancrage Bitcoin via OpenTimestamps sur chaque clôture quotidienne.
Cas d'usage réels
- ERP vertical B2B qui émet des factures Factur-X pour 150+ clients français depuis la réforme 2026
- SaaS de gestion de projets qui gère le cycle complet devis → acompte → solde sans outil tiers
- Marketplace B2B qui génère une facture Factur-X par transaction entre vendeurs et acheteurs
- Application mobile de facturation qui signe les devis avec eIDAS avant conversion en facture
- Agent Claude/GPT qui crée des factures via 44 tools MCP (`scell_create_invoice`, `scell_send_quote`)
- Pipeline CI/CD qui génère automatiquement les factures récurrentes mensuelles avec ledger ISCA
Questions fréquentes
Combien de temps pour intégrer Scell.io dans un projet Laravel existant ?
En moyenne 1 journée de développement : `composer require scell/sdk`, configuration de la clé `sk_test_*`, premier appel à `$api->invoices()->builder()->create()`. Le SDK PHP gère les balises EN16931 obligatoires (BT-84, BG-22, type 386/380) sans configuration supplémentaire. La documentation Swagger UI est accessible sur `api.scell.io/api/documentation`.
Doit-on maintenir les mises à jour de la norme Factur-X après l'intégration ?
Non. Scell.io maintient la conformité Factur-X (V1.0 / V2.2), schematron FNFE, et EN16931:2017+A1:2019 côté serveur. Les mises à jour de normes sont déployées sans changement d'API côté client. Le SDK est versionnant SemVer : une mise à jour minor ou patch ne casse jamais l'interface.
Le sandbox Scell.io est-il vraiment isolé de la production ?
Oui. La clé `sk_test_*` pointe vers une base de données PostgreSQL distincte (`rdb_sandbox`). Aucune donnée de sandbox ne touche la base de production. Le même endpoint `api.scell.io` est utilisé — seul le préfixe de clé change. Les factures sandbox ne sont pas transmises au réseau Peppol.
Comment fonctionne le ledger fiscal ISCA SHA-256 ?
Chaque facture, avoir ou devis émis déclenche l'enregistrement d'une `FiscalEntry` avec un `chain_hash` SHA-256 calculé depuis le hash précédent. La chaîne est isolée par paire `(tenant_id, sub_tenant_id)`. Les triggers PostgreSQL `SECURITY DEFINER` garantissent l'enregistrement même si le code applicatif bypasse le chemin normal. Un ancrage OpenTimestamps Bitcoin gratuit est effectué sur chaque clôture quotidienne.
Les 44 tools MCP fonctionnent-ils avec Claude et GPT-4o ?
Oui. Le package `@scell/mcp-client` implémente le protocole MCP (Model Context Protocol). Les agents Claude (via claude-code ou API Anthropic), GPT-4o (via le client MCP OpenAI) et Cursor peuvent appeler `scell_create_invoice`, `scell_send_quote`, `scell_create_buyer` directement en langage naturel. Aucun glue code n'est nécessaire.
Scell.io supporte-t-il les factures d'acompte (type 386) et les factures de solde (type 380) ?
Oui. Le cycle complet est géré via l'API : devis `DEV-YYYY-NNNN` → `POST /quotes/{id}/convert-to-deposit` (type 386, TVA immédiatement exigible CGI art. 289) → `POST /quotes/{id}/convert-to-balance` (type 380, déduction BG-22 automatique depuis `parent_invoice_ids`). Chaque étape génère un Factur-X conforme EN16931 et une entrée dans la chaîne ISCA.
Votre première facture Factur-X en moins d'1 journée
`composer require scell/sdk` ou `npm i @scell/sdk`. Clé sk_test_* en 60 secondes. 135 endpoints documentés Swagger UI. Ledger ISCA SHA-256 automatique.