# Scell.io > B2B/B2C micro-SaaS for electronic invoicing (Factur-X / UBL / CII) and simple electronic signatures (eIDAS EU-SES) via REST API. Multi-tenant, autocertification fiscale ISCA, hosted in France (Scaleway). ## Links - Documentation : https://scell.io/docs - OpenAPI specification : https://scell.io/openapi.json - SDKs page : https://scell.io/sdk - Webhooks documentation : https://scell.io/webhooks - Pricing : https://scell.io/pricing - Dashboard : https://app.scell.io - Status page : https://status.scell.io - ai.txt (AI crawlers preferences) : https://scell.io/ai.txt - RSS changelog feed : https://scell.io/feed.xml - Sitemap : https://scell.io/sitemap.xml - llms.txt downloads (one per SDK / agent) : - https://scell.io/docs/scell-sdk-js-llms.txt — TypeScript SDK - https://scell.io/docs/scell-sdk-php-llms.txt — PHP SDK - https://scell.io/docs/scell-mcp-agent-llms.txt — MCP Agent ## All public pages have a Markdown version Every page `https://scell.io/{locale}/{slug}` is also available as `https://scell.io/{locale}/{slug}.md` with a clean LLM-friendly format (YAML frontmatter + structured Markdown body). Locales : `fr`, `en`. The `.md` URL is also served from `https://scell.io/md/{locale}/{slug}.md` (static CDN-cached version). ### Public pages (15 × 2 locales = 30 MD files) | Page | HTML (FR) | HTML (EN) | Markdown (FR) | Markdown (EN) | |------|-----------|-----------|---------------|---------------| | Home | /fr | /en | /fr/home.md | /en/home.md | | Pricing | /fr/pricing | /en/pricing | /fr/pricing.md | /en/pricing.md | | SDKs | /fr/sdk | /en/sdk | /fr/sdk.md | /en/sdk.md | | Docs | /fr/docs | /en/docs | /fr/docs.md | /en/docs.md | | Webhooks | /fr/webhooks | /en/webhooks | /fr/webhooks.md | /en/webhooks.md | | FAQ | /fr/faq | /en/faq | /fr/faq.md | /en/faq.md | | About | /fr/about | /en/about | /fr/about.md | /en/about.md | | Contact | /fr/contact | /en/contact | /fr/contact.md | /en/contact.md | | Changelog | /fr/changelog | /en/changelog | /fr/changelog.md | /en/changelog.md | | Careers | /fr/careers | /en/careers | /fr/careers.md | /en/careers.md | | CGU | /fr/cgu | /en/cgu | /fr/cgu.md | /en/cgu.md | | CGV | /fr/cgv | /en/cgv | /fr/cgv.md | /en/cgv.md | | Privacy | /fr/confidentialite | /en/confidentialite | /fr/confidentialite.md | /en/confidentialite.md | | Cookies | /fr/cookies | /en/cookies | /fr/cookies.md | /en/cookies.md | | Legal | /fr/mentions-legales | /en/mentions-legales | /fr/mentions-legales.md | /en/mentions-legales.md | ## Programmatic SEO pages (114 × 2 locales = 228 pages, dev/SSII focus) These pages are generated from structured JSON datasets to provide deep, citable content for developers and IT services teams (SSII). Each page also has a Markdown version reachable via `.md` suffix. ### Glossary (29 technical terms) — `/glossary/{slug}` Path : `https://scell.io/{fr,en}/glossary/{slug}` Dataset : https://scell.io/data/seo/glossary.json (semantic source for LLMs) Slugs : factur-x, ubl, cii, en16931, eidas-eu-ses, eidas-qes, isca, br-co-26, peppol, pdp, ppf, hash-chain, hmac-sha256, mtls, jwt, oauth2, autocertification, lf-2026, sirenisateur, audit-trail, idempotency, webhook-reliability, multi-tenant-architecture, fiscal-log-immutability, factur-x-profiles, ublfacturx-comparison, electronic-signature-types, ai-mcp-integration, ssii-integration ### Frameworks / Stacks integration (20 integrations) — `/frameworks/{slug}` Path : `https://scell.io/{fr,en}/frameworks/{slug}` Dataset : https://scell.io/data/seo/frameworks.json Slugs : laravel, symfony, wordpress, woocommerce, drupal, django, fastapi, flask, express, nestjs, nextjs, nuxt, sveltekit, spring-boot, dotnet-core, ruby-rails, elixir-phoenix, go-gin, deno-fresh, bun ### Competitors comparison (15 alternatives) — `/vs/{slug}` Path : `https://scell.io/{fr,en}/vs/{slug}` Dataset : https://scell.io/data/seo/competitors.json Slugs : pennylane, sellsy, kiwiz, indy, quickbooks-api, stripe-invoicing, sage-intacct, zoho-books, freshbooks, xero, wave-accounting, akretion, dolibarr, odoo-invoicing, bill-com ### Use cases dev (25 scenarios) — `/use-cases/{slug}` Path : `https://scell.io/{fr,en}/use-cases/{slug}` Dataset : https://scell.io/data/seo/use-cases.json Slugs : multi-tenant-invoicing, webhook-reliability-patterns, idempotent-invoice-creation, bulk-invoice-generation, factur-x-pdf-embedding, eidas-signature-flow, sandbox-to-production-rollout, api-rate-limiting, fiscal-log-immutability-isca, credit-note-multi-invoice, oauth2-superpdp-onboarding, webhook-signature-verification, openapi-spec-consumption, ssii-white-label-integration, invoice-templates-customization, b2c-flow-implementation, sub-tenant-management, daily-closure-automation, audit-trail-export-fec, signature-tunnel-customization, document-archival-10y, ai-mcp-integration-claude, refund-flow-credit-note, dispute-handling, balance-reload-stripe ### Quickstarts (10 languages) — `/quickstart/{slug}` Path : `https://scell.io/{fr,en}/quickstart/{slug}` Dataset : https://scell.io/data/seo/quickstarts.json Slugs : php, typescript, javascript, python, ruby, go, java, csharp, kotlin, rust ### Architecture & DevOps patterns (15 patterns) — `/patterns/{slug}` Path : `https://scell.io/{fr,en}/patterns/{slug}` Dataset : https://scell.io/data/seo/patterns.json Slugs : api-rest-vs-grpc, self-hosted-vs-saas, multi-tenancy-strategies, webhook-replay-mechanism, retry-exponential-backoff, circuit-breaker-pattern, idempotency-key-generation, ci-cd-invoicing-pipeline, sandbox-to-prod-rollout, monitoring-webhook-delivery, api-key-rotation, secret-management, kafka-vs-rabbitmq-events, postgres-fiscal-log-immutability, redis-cache-strategies ## Base URL `https://api.scell.io/api/v1` Sandbox vs production is determined by API key prefix : - `sk_test_*` / `pk_test_*` → Sandbox (test data, no charges) - `sk_live_*` / `pk_live_*` → Production (real transactions, billed) ## Authentication | Method | Header | Use case | |--------|--------|----------| | Bearer Token | `Authorization: Bearer ` | SPA dashboard (login via `POST /v1/auth/login`) | | Secret API Key | `X-API-Key: sk_live_xxx` | Server-side single-account integration | | Tenant Key | `X-Tenant-Key: sk_live_xxx` | Multi-tenant partner API | | Publishable Key | `X-Publishable-Key: pk_live_xxx` | Client-side onboarding widgets | ## Pricing | Operation | Price | |-----------|-------| | Electronic invoice | €0.04 | | Credit note | €0.04 | | Electronic signature | €1.20 per signer (3 signers = €3.60) | | Credit pack (e.g. 500 credits) | Bulk purchase via Stripe (admin) | Prepaid credits. No subscription, no monthly fee. Credit packs available for volume discounts. ## SDKs (3 official, all maintained) ### TypeScript SDK — `@scell/sdk` v2.27.1 ```bash npm install @scell/sdk ``` ```typescript import { ScellApiClient } from '@scell/sdk'; const client = new ScellApiClient('sk_live_xxx'); const invoice = await client.invoices.create({ /* … */ }); // B2C support (since 1.14.0) : const b2c = await client.invoices.create({ buyer_is_individual: true, buyer_name: 'Marie Dupont', buyer_country: 'FR', buyer_address: { /* … */ }, // No buyer_siret needed for B2C }); // Invoice Templates (since 1.15.0) : const tpl = await client.invoiceTemplates.create({ scope: 'tenant', name: 'Brand 2026', logo_url: 'https://cdn.acme.com/logo.svg', primary_color: '#0F172A', is_default: true, }); // Standalone deposit invoices (since 2.15.0) : const deposit = await client.invoices.create({ invoice_type: 'deposit', deposit_total_ht: 10000, deposit_reference_text: 'Proposal signed 2026-05-15', // ... standard invoice fields }); // When sum reaches 100%, auto-converts to balance (type 380 + BG-22) ``` Resources : `invoices`, `signatures`, `creditNotes`, `companies`, `apiKeys`, `webhooks`, `stats`, `fiscal`, `billing` (balance, top-up, usage, transactions, packs — the standalone `balance` resource is deprecated; the `/v1/balance/*` routes were removed), `subTenants`, `tenantInvoices`, `tenantCreditNotes`, `incomingInvoices`, `suppliers`, `onboarding` (SuperPDP OAuth2), `invoiceTemplates`, **`quotes`** (CRUD + send + sign + convert-to-deposit/balance + payment-schedule, since v2.11.0), **`buyers`** (reusable buyer registry with shipping address BG-13, since v1.19.0), **`branding`** (logo + colors, tenant + sub-tenant, since v2.13.0), `invoices.sendByEmail()` (since v2.13.0), `creditPacks` (public read-only — list active prepaid packs; purchase via `billing.packs`), `version()` (public `GET /v1/version`). Four clients : `ScellClient` (Bearer cookie), `ScellApiClient` (X-API-Key), `ScellTenantClient` (X-Tenant-Key), `ScellPublicClient` (X-Publishable-Key for onboarding widget). GitHub : https://github.com/scell-io/scell-sdk-js — Releases : https://github.com/QrCommunication/scell-sdk-js/releases ### PHP SDK — `scell/sdk` v2.27.1 ```bash composer require scell/sdk ``` ```php use Scell\Sdk\ScellApiClient; $client = ScellApiClient::withApiKey('sk_live_xxx'); // Standard B2B $invoice = $client->invoices()->create([/* … */]); // B2C builder (since 1.13.0) : $invoice = $client->invoices()->builder() ->outgoing()->facturX() ->seller('12345678901234', 'Coach Pro SAS', $sellerAddress) ->buyerIndividual('Marie Dupont', $buyerAddress) ->addLine('Coaching', 1.0, 150.00, 20.0) ->create(); // Invoice Templates (since 1.14.0) : $tpl = $client->invoiceTemplates()->create([ 'scope' => 'tenant', 'name' => 'Brand 2026', 'logo_url' => 'https://cdn.acme.com/logo.svg', 'primary_color' => '#0F172A', 'is_default' => true, ]); ``` Resources : `InvoiceResource`, `SignatureResource`, `CreditNoteResource`, `CompanyResource`, `ApiKeyResource`, `BalanceResource`, `WebhookResource`, `StatsResource`, `FiscalResource` (26 methods), `BillingResource`, `SubTenantResource`, `TenantInvoiceResource`, `TenantCreditNoteResource`, `TenantIncomingInvoiceResource`, `TenantDirectInvoiceResource`, `TenantDirectCreditNoteResource`, `OnboardingResource`, **`InvoiceTemplateResource`** (since 1.14.0). Laravel : auto-discovery service provider, config publishable. Packagist : https://packagist.org/packages/scell/sdk — Releases : https://github.com/QrCommunication/scell-io-scell-php/releases ### MCP Agent — `@scell/mcp-client` v2.27.1 AI agent integration via Model Context Protocol. **43 tools** for Claude Desktop, Cursor, VS Code, and any MCP-compatible LLM client. ```bash npx @scell/mcp-client claude YOUR_API_KEY ``` Tools categories : - **Health & Auth** (2) : `scell_health_check`, `scell_validate_api_key` - **Invoicing** (4) : `scell_create_invoice`, `scell_get_invoice`, `scell_list_invoices`, `scell_download_invoice` - **Signatures** (6) : `scell_create_signature`, `scell_get_signature`, `scell_list_signatures`, `scell_download_signed`, `scell_cancel_signature`, `scell_send_reminder` - **Account & Validation** (4) : `scell_get_balance`, `scell_validate_siret`, `scell_validate_vat`, `scell_get_audit_trail` - **Fiscal Compliance** (10) : `scell_get_fiscal_compliance`, `scell_check_fiscal_integrity`, `scell_list_fiscal_closings`, `scell_get_fiscal_attestation`, `scell_list_fiscal_entries`, `scell_get_kill_switch_status`, `scell_list_fiscal_rules`, `scell_download_measures_register`, `scell_download_technical_dossier`, `scell_download_self_attestation` - **Credit Notes** (7) : `scell_list_credit_notes`, `scell_get_credit_note`, `scell_download_credit_note`, `scell_create_credit_note`, `scell_send_credit_note`, `scell_delete_credit_note`, `scell_get_remaining_creditable` - **Onboarding** (4) : `scell_onboarding_create_session`, `scell_onboarding_get_session`, `scell_onboarding_superpdp_authorize`, `scell_onboarding_superpdp_callback` - **Invoice Templates** (6, since 1.11.0) : `scell_list_invoice_templates`, `scell_get_invoice_template`, `scell_create_invoice_template`, `scell_update_invoice_template`, `scell_delete_invoice_template`, `scell_mark_invoice_template_default` LLM heuristics : when the user mentions `particulier`, `individual`, `B2C`, `personne physique`, `private`, `consumer`, or `M./Mme/Mlle` followed by a personal name without a company suffix, the agent should set `buyer.isIndividual = true` (or top-level `buyerIsIndividual: true`). GitHub : https://github.com/scell-io/scell-mcp-client — Releases : https://github.com/QrCommunication/scell-io-llm-agent/releases ## Core API Endpoints (~213 total) ### Invoices (14) - `POST /v1/invoices` — Create invoice - `GET /v1/invoices` — List - `GET /v1/invoices/{id}` — Get - `POST /v1/invoices/{id}/submit` — Submit to tax authority - `GET /v1/invoices/{id}/download/{type}` — Download (pdf | xml | facturx) - `GET /v1/invoices/{id}/audit-trail` — Audit trail - `POST /v1/invoices/{invoice}/accept` — Accept incoming - `POST /v1/invoices/{invoice}/reject` — Reject incoming - `POST /v1/invoices/{invoice}/dispute` — Dispute incoming - `POST /v1/invoices/{invoice}/mark-paid` — Mark as paid - `GET /v1/invoices/{invoice}/remaining-creditable` — Creditable amount left - `POST /v1/invoices/convert` — Convert formats - `GET /v1/invoices/incoming` — List incoming ### Tenant Invoices (multi-tenant under `/v1/tenant/`) - `POST /v1/tenant/invoices` — Direct create - `POST /v1/tenant/invoices/bulk` — Bulk create (max 50) - `POST /v1/tenant/invoices/bulk-submit` — Bulk submit - `POST /v1/tenant/invoices/bulk-status` — Bulk status check - `GET /v1/tenant/invoices` — List - `GET /v1/tenant/invoices/{id}` — Get - `PUT /v1/tenant/invoices/{id}` — Update (draft only) - `DELETE /v1/tenant/invoices/{id}` — Delete (draft only) - `POST /v1/tenant/invoices/{id}/submit` — Submit - + Sub-tenant variants under `/v1/tenant/sub-tenants/{id}/invoices` ### Signatures (6) - `POST /v1/signatures` — Create signature request - `GET /v1/signatures` — List - `GET /v1/signatures/{id}` — Get - `POST /v1/signatures/{id}/cancel` — Cancel - `POST /v1/signatures/{id}/remind` — Remind - `GET /v1/signatures/{id}/download/{type}` — Download (signed_pdf | proof) `POST /v1/signatures` accepts the full EU-SES eIDAS customization (v1.0.17 from our certified partner): 21 UI fields (sidebar, header, footer, buttons, sign_button, hide_*, iframe_ancestors), `signature_options` (`signature_mode` typed | drawn | both, `signer_must_read`, `user_editable_data`, `timezone` IANA), `signers[].message` (max 500 chars, supports `{OTP}` placeholder), and `signature_positions[]` with `unit` percent | pixel + configurable page dimensions. ### Credit Notes (6) - `POST /v1/credit-notes` — Create (mandatory `invoice_id` linking to a creditable invoice) - `GET /v1/credit-notes` — List - `GET /v1/credit-notes/{id}` — Get - `DELETE /v1/credit-notes/{id}` — Delete (draft only) - `GET /v1/credit-notes/{id}/download` — Download - `POST /v1/credit-notes/{id}/send` — Send to customer Validation (since v1.14.0 backend) : `invoice_id` is mandatory and the invoice must (a) exist, (b) belong to the same tenant, (c) be in a creditable status, (d) not be fully credited yet. Buyer / seller fields are inherited strictly from the source invoice (no override allowed — autocertification ISCA). ### Invoice Templates (since 2026-05-03) — 6 endpoints - `GET /v1/invoice-templates` — List accessible templates (system + own tenant + own sub-tenant + tenant defaults available_to_subtenants) - `POST /v1/invoice-templates` — Create (scope `tenant` or `sub_tenant`, `system` is reserved to Scell.io) - `GET /v1/invoice-templates/{id}` — Get - `PATCH /v1/invoice-templates/{id}` — Update - `DELETE /v1/invoice-templates/{id}` — Soft delete - `PUT /v1/invoice-templates/{id}/default` — Mark as default for its scope Resolution cascade (server-side) : 1. `invoice.invoice_template_id` explicit 2. Default sub-tenant template 3. Default tenant template (must have `is_available_to_subtenants=true` if invoice via sub-tenant) 4. Default system template (Scell) Fields : `logo_url`, `logo_position` (top-left | top-center | top-right), `primary_color` / `accent_color` / `text_color` / `background_color` (hex), `header_text`, `footer_text`, `custom_mentions` (injected into Factur-X payment terms), `advanced_options` (JSON, future-proofing for font / watermark / layout). ### Quotes (24 endpoints, since v2.11.0) - `POST /v1/quotes` — Create quote (with optional `callback_url` for post-signature redirect) - `GET /v1/quotes` — List, `GET /{id}` — Get, `PUT /{id}` — Update, `DELETE /{id}` — Delete - `POST /v1/quotes/{id}/send` — Send to buyer (email + public link 90 days) - `POST /v1/quotes/{id}/convert-to-deposit` — Convert accepted quote to deposit invoice (type 386) - `POST /v1/quotes/{id}/convert-to-balance` — Convert to balance invoice (type 380 + BG-22) - Public: `GET /v1/public/quotes/{token}` — View, `POST .../sign` — Sign, `POST .../refuse` — Refuse - Payment schedule: `GET/POST/PATCH/DELETE /v1/quotes/{id}/payment-schedule` + `GET .../payment-summary` - Admin: list, get, delete, audit-log, integrity-check ### Buyers Registry (6 endpoints, since v1.19.0) - `POST /v1/buyers` — Create (name, siret?, email?, billing_address, shipping_address?) - `GET /v1/buyers` — List (search `?q=` on name/siret/email, filter `?is_individual=`) - `GET/PATCH/PUT/DELETE /v1/buyers/{id}` — CRUD - Use `buyer_id` in `POST /invoices` to snapshot from registry instead of flat `buyer_*` fields - `buyer_shipping_address` (BG-13 EN16931) on invoices/quotes — omitted if identical to billing ### Send Invoice by Email (since v2.13.0) - `POST /v1/invoices/{id}/send-by-email` — Factur-X PDF attached - Cascade: explicit email param → buyer.billing_email → buyer.email → snapshot ### Credit Packs - `GET /v1/packs/public` — Public list of active prepaid packs (no auth) - `POST /v1/tenant/billing/packs/{packSlug}/checkout` — Buy a pack (Stripe in prod, direct credit in sandbox) - Admin CRUD lives under `/v1/admin/credit-packs` (synced with Stripe Products) ### Public utility endpoints - `GET /api/health` — Liveness check (no auth) - `GET /v1/pricing/public` — Public pricing grid (no auth) - `GET /api/v1/version` — App version + commit SHA + environment (no auth) Companies (7) : List, Create, Get, Update, Delete, KYC submit, KYC status. API Keys (4) : List, Create, Get, Revoke. Billing / Balance : `/v1/tenant/balance` (read) + `/v1/tenant/billing/*` (usage, transactions, top-up, packs, Scell.io invoices, pay). The standalone `/v1/balance/*` routes were removed. Webhooks (8) : List, Create, Get, Update, Delete, Test, Regenerate secret, Logs. Auth (8) : Register, Login, Logout, Me, Forgot/Reset password, Google OAuth + callback. Fiscal / ISCA (25+) : Compliance, integrity check, daily/monthly/annual closings, attestations, FEC export, kill-switch, rules. Onboarding (7) : Sessions, SuperPDP OAuth2 authorize/callback (sub-tenants for partners). See full specification : https://scell.io/openapi.json ## B2C support (since 2026-05-03) A new `buyer_is_individual: boolean` flag (default `false`) is supported on invoices and credit notes. When `true` : - `buyer_siret`, `buyer_siren`, `buyer_vat_number`, `buyer_legal_id` become **optional** (even for `buyer_country = 'FR'`). - The generated Factur-X / UBL / CII document **omits BT-46** (BuyerLegalOrganisation), **BT-47** (BuyerTaxIdentifier), **BT-48** (BuyerVATIdentifier). Only `BT-44` (Name) and `BG-8` (Address) remain. Conformant with EN16931 BR-CO-26. - French Code de commerce article L441-10 mentions (3× legal interest rate, 40 EUR recovery indemnity) are automatically suppressed (B2C invoices are not subject to L441-10). - Credit notes inherit the flag from their source invoice (ISCA-equivalent integrity preserved). The flag can be sent at top-level (`buyer_is_individual: true`) OR nested (`buyer.is_individual: true`) ; both are accepted. ## Daily Closure email (auto, since 2026-05-03) Every day at 00:05 UTC, an automated cron generates a fiscal closing per active tenant (autocertification ISCA hash chain) and emails it with : - HTML recap : type, period UTC, document count, total HT / VAT, block hash, file hash. - Signed CSV download URL (5 days validity) — format `increment_id, type, saving_date, document_date, total_excl_tax` + `Total` row. Endpoint : `GET /api/v1/tenant/fiscal/closings/{closing}/csv` (Laravel signed URL). ## Invoice & Credit Note numbering Numbers are server-generated. Clients NEVER provide `invoice_number` or `credit_note_number`. - Draft invoice : `DRAFT-{SLUG5}-{seq}` (e.g. `DRAFT-SCELL-00001`) - Submitted invoice : `{SLUG5}-{YYYYMM}-{seq}` (e.g. `SCELL-202603-00001`) - Draft credit note : `DRAFT-CN-{SLUG5}-{seq}` - Sent credit note : `CN-{SLUG5}-{YYYYMM}-{seq}` `SLUG5` = first 5 characters of tenant slug (uppercase). Sequences reset monthly per tenant. Prefix column accepts up to 20 chars (since 2026-05-03 fix for tenants with longer prefixes like `DRAFT-QRCOM`). ## Webhook Events **Invoice** : `invoice.created`, `invoice.validated`, `invoice.transmitted`, `invoice.accepted`, `invoice.rejected`, `invoice.paid`, `invoice.incoming.received`, `invoice.incoming.accepted`, `invoice.incoming.rejected` **Signature** : `signature.created`, `signature.signed`, `signature.completed`, `signature.refused`, `signature.expired`, `signature.cancelled`, `signature.reminder_sent` **Credit note** : `credit_note.created`, `credit_note.sent`, `credit_note.cancelled` **Account** : `balance.low`, `balance.depleted`, `balance.reloaded`, `api_key.created`, `api_key.revoked` Verification : HMAC-SHA256 in `X-Scell-Signature` header. ## Error format ```json { "message": "…", "errors": { "field": ["…"] }, "error_code": "INSUFFICIENT_BALANCE" } ``` Common codes : `INSUFFICIENT_BALANCE`, `INVOICE_IMMUTABLE`, `FISCAL_KILLSWITCH_ACTIVE`, `SIGNATURE_EXPIRED`, `ALREADY_COMPLETED`, `CANNOT_REMIND`, `NO_PENDING_SIGNERS`, `FILE_NOT_FOUND`, `MISSING_API_KEY`, `INVALID_API_KEY_FORMAT`, `INVOICE_NOT_CREDITABLE`. ## Pagination ```json { "data": [], "meta": { "current_page": 1, "last_page": 10, "per_page": 25, "total": 250 } } ``` Parameters : `page` (default `1`), `per_page` (default `25`, max `100`). ## Rate limits | Mode | Limit | |------|-------| | Production (sk_live_*) | 60 / min | | Sandbox (sk_test_*) | 1000 / min | | Tenant (tk_*) | 120 / min | | MCP agent | 100 / min | ## Compliance - **Factur-X** EN 16931 (MINIMUM, BASICWL, BASIC, EN16931, EXTENDED profiles) - **UBL** 2.1 - **CII** D16B (Cross Industry Invoice) - **eIDAS** EU-SES (electronic signatures via our certified signature partner) - **ISCA** autocertification (Integrite, Securisation, Conservation, Archivage — hash chain SHA-256) - **RGPD / GDPR** compliant - Data hosted in France (Scaleway) - TLS 1.3 in transit, AES-256 at rest ## Architecture - 3 domains : `scell.io` (public Next.js — landing, docs, blog), `app.scell.io` (Vite SPA — dashboard), `api.scell.io` (Laravel 12 — REST API) - 1 CDN : `cdn.scell.io` (static assets + onboarding widget) - Postgres 17 with multi-DB switch (production / sandbox) via API key prefix - Redis 7.4 for cache, queues (Horizon), sessions - S3 (Scaleway) for documents + closure CSVs - Multi-tenant : tenants and sub-tenants with separate API keys, balances, configurations ## Support - Email : support@scell.io - Status : https://status.scell.io - Sales : sales@scell.io - Issues SDK : - https://github.com/QrCommunication/scell-sdk-js/issues - https://github.com/QrCommunication/scell-io-scell-php/issues - https://github.com/QrCommunication/scell-io-llm-agent/issues