Skip to main content
Factur-X · UBL · CII · EN16931 · 2026 Reform · Peppol

Factur-X EN16931 invoices in 1 API call — 2026 reform ready.

POST /invoices → PDF/A-3b + CII XML. Auto Schematron validation, B2C without SIRET, shipping BG-13, Peppol submit. 0 rejection guaranteed. PHP and TypeScript SDK.

$api = ScellApiClient::withApiKey('sk_live_...');

$invoice = $api->invoices()->builder()
    ->buyer('12345678901234', 'Acme SAS',
        new Address('1 rue Test', '75001', 'Paris'))
    ->line('Prestation conseil', 1, 2500.00, 20.0)
    ->dueDate(new DateTime('+30 days'))
    ->outputFormat('facturx')
    ->create();

echo 'Invoice: ' . $invoice->invoice_number;
echo 'Factur-X PDF: ' . $invoice->download_url;

The problem

  • 2026 mandatory reform — from September 2026, all B2B invoices in France must be in structured electronic format (Factur-X, UBL, CII). SaaS editors generating non-compliant HTML PDFs will be breaking the law.
  • Underestimated CII XML complexity — the EN16931 schema has 54 mandatory fields, 12 FNFE Schematron rules, and 3 distinct invoice types (380, 386, 381). A regular PDF never passes Peppol validators.
  • Prohibitive integration cost — a horstoeko/zugferd integration from scratch takes 2 to 6 senior developer weeks, for a result that drifts with each standard update.

Our solution

  • 1 POST /invoices — passing buyer, lines and format (facturx/ubl/cii), you get a PDF/A-3b with embedded CII XML EN16931. The number automatically follows the ISCA ledger FAC-YYYY-NNNN sequence.
  • Automatic EN16931 validation — FNFE Schematron passed before each generation. 0 Peppol rejection. The 12 critical rules (BR-CO-*, BR-AE-*) are verified API-side, never client-side.
  • B2C, B2B and Peppol — B2C invoices without SIRET (buyer_is_individual), shipping address BG-13, automatic submit to SuperPDP/Peppol for regulated B2B flows.

6 Factur-X guarantees

Factur-X / UBL / CII format choice

The output_format parameter selects the format: facturx (PDF/A-3b + CII XML, FR/DE standard), ubl (OASIS, UK/BE/NL), cii (ISO 19005, B2G). All 3 pass EN16931 and Peppol validators.

3 EN16931 formats

Automatic Schematron validation

Before each generation: 12 FNFE rules, 7 CIUS-FR rules, BR-CO-* and BR-AE-* rules verified API-side. If input is invalid, 422 with the exact rule code. No non-compliant file ever exits.

0 Peppol rejection guaranteed

B2C without SIRET (buyer_is_individual)

For consumer invoices: buyer_is_individual: true removes BT-46/47/48 tags (SIRET/VAT/legal ID) and L441-10 notices. Compliant EN16931 BR-CO-26. One endpoint, two modes.

B2B + B2C in 1 call

Shipping address BG-13

buyer_shipping_address in the payload activates BG-13 tags (ship-to party EN16931). When absent or identical to billing address, the generator does not emit BG-13 (FNFE Schematron compliance, 0 warning).

Shipping EN16931 BG-13

Templates and sequential numbering

invoice_template_id customizes logo, colors, footer. FAC-YYYY-NNNN numbering is managed by the ISCA ledger with contiguous sequence_number: no gap, no duplicate.

Sequential ISCA numbering

S3 WORM archiving + ISCA hash

Each Factur-X file is stored on Scaleway S3 with Object Lock COMPLIANCE (11 years, deletion impossible). The SHA-256 hash enters the ISCA chain isolated by (tenant, sub_tenant). Two independent proofs.

DGFiP 11-year preservation
Hébergé en FranceScaleway Paris
RGPDDonnées FR
Factur-X conformeDGFiP EN16931
eIDAS SESRègl. 910/2014
ISCA SHA-256Ledger immuable
TLS 1.3Chiffrement bout-à-bout

Frequently asked questions

Ready for the 2026 reform?

Free sandbox. No credit card. First EN16931 Factur-X invoice in 5 minutes.

Start for freeView SDKs

Your cookie preferences

We use cookies to improve your experience. Essential cookies are always active. Cookie policy.