Issuing electronic invoices — SMEs and micro-businesses (1 September 2027)

Status as of 21/07/2026: scope delivered = generation, validation (Epic 1), documentation (Epic 2), public validator (Epic 3), self-service accounts/billing (Epic 4), Factur-X/CII extraction (Epic 5), and UBL generation/conversion/extraction (Epic 6).

What the reform says

After large companies and mid-caps (ETI) (1 September 2026), SMEs and micro-businesses will have to issue their invoices in a structured electronic format from 1 September 2027. This is the primary market window targeted by Heartwood (see the project's PRD).

What Heartwood covers today

  • Factur-X generation compliant with the two profiles retained by the French minimum core standard (AFNOR standard XP Z12-012): EN 16931 and EXTENDED-CTC-FR — the only two profiles of the French minimum core standard (AFNOR standard XP Z12-012). The generic BASIC profile is absent from this core standard: it does not carry the French extensions (EXT-FR-FE-*) and will be rejected on inspection. A necessary nuance: no official text explicitly states "BASIC is refused" — it is an exclusion by omission (the word appears nowhere in the external DGFiP v3.2 specifications), not a written prohibition.
  • Structural validation (XSD) of the embedded CII, with a detailed report.
  • Versioned and listable rule packs (GET /v1/rulepacks) — the rule repository applied is always identified in each response.

What Heartwood also covers since Epic 4

  • Self-service signup (POST /signup + email verification) and account area (/account/) to manage API keys and track usage — see the getting started guide and the accounts and billing page.
  • Paid tiers (Starter/Pro/Éditeur) via Stripe Checkout, card/invoice/ cancellation management via the Stripe Customer Portal — see accounts and billing.

What Heartwood also covers since Epic 5/6

What Heartwood does NOT cover yet

  • XRechnung (Germany): not exposed (J4 license/corpus spike not done) — see XRechnung Germany.
  • Schematron validation (BR- rules)*: real since Story 3.7/3.8 for Factur-X/CII and UBL (EN16931 and EXTENDED-CTC-FR profiles, official FNFE-MPE reference repository, schematronChecked: true, automatic format detection submitted to POST /v1/validate) — see validation report. No automated non-regression corpus in CI for either format (spot-checked on a few official examples only, see rulepacks/README.md).
  • 80%/100% quota alerts and Stripe accounting reconciliation: counting and billing work, but these two operational mechanisms are not yet wired up (see Story 4.4, Dev Notes).

Fidelity to the EXTENDED-CTC-FR profile

The EXTENDED-CTC-FR profile carries requirements specific to the French context (specific tax mentions, rounding tolerances, multi-delivery at line level). The current model covers the common core with EN 16931; the particularities specific to EXTENDED-CTC-FR are not all modeled yet — do not presume full compliance with this profile before a story dedicated to its complete fidelity.