eliDocs
Country Guides

France

Factur-X e-invoicing requirements for France, with Beliq configuration examples.

France commonly uses Factur-X. It is a hybrid PDF format (technically aligned with ZUGFeRD) that embeds CII D22B XML in a PDF/A-3 document. Beliq targets Factur-X 1.08 (the version in force since January 2026, jointly published with ZUGFeRD 2.x).

Factur-X is jointly maintained by the FNFE-MPE (France) and FeRD (Germany) and is fully aligned with EN 16931.

Factur-X 1.08 profiles

Profile Beliq value Description Status in Beliq
Minimum minimum Minimal structured data — invoice number, date, and totals only Supported (via Mustangproject — see secondary-source note below)
Basic WL basicwl Header-level data without individual line items Supported
Basic basic Full header and line items Supported (via Mustangproject — see secondary-source note below)
EN 16931 (Comfort) en16931 Full EN 16931 compliance — recommended Supported
Extended extended Additional fields beyond EN 16931, with optional sub-line nesting Supported
EXTENDED-CTC-FR extended-ctc-fr EXTENDED + the French B2B reform CTC overlay (BR-FR-CTC + EXTENDED-CTC-FR Schematron) Supported

minimum and basicwl are reduced profiles (header-only, and without individual line items) and are not complete EN 16931 invoices. Pick them only when the receiver specifically expects that profile; see the format reference for the per-profile compliance breakdown.

For most use cases, en16931 is the recommended profile. Pick extended-ctc-fr when the receiver requires the French B2B reform CTC overlay.

MINIMUM and BASIC — secondary source

The FNFE-MPE / FeRD joint pack distributes the BASIC_WL, EN 16931 and EXTENDED Schematron and XSDs via direct download. The MINIMUM and BASIC profile artifacts are gated behind an email-request information package on the FNFE-MPE side. Beliq sources MINIMUM and BASIC Schematron and per-profile XSDs from Mustangproject core-2.22.0 (Apache-2.0) — Mustangproject is listed by FNFE-MPE itself as a recommended downstream consumer and re-publishes the same artifacts at matching upstream tags. The Mustangproject provenance is recorded with SHA-pinned per-file paths.

All five Factur-X 1.08 profiles run through the same XSD + Schematron pipeline; documents arriving with a MINIMUM, BASIC, BASIC_WL, EN16931, or EXTENDED CustomizationID are validated against the matching profile rules without operator intervention.

Promotion of any Factur-X profile to fully-verified in Beliq’s status taxonomy still requires a public negative unit-test corpus from FNFE-MPE — that gap is tracked as an upstream gap and reviewed quarterly. The current supported status reflects positive-corpus coverage plus T3 spec-derived, cross-validated negative fixtures.

Generating Factur-X invoices

Use standard: "facturx" with output: "pdf":

generate-facturx-pdf.sh
curl -X POST https://api.beliq.eu/v1/generate \
  -H "Authorization: Bearer blq_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "standard": "facturx",
    "profile": "en16931",
    "output": "pdf",
    "invoice": {
      "number": "FA-2026-0123",
      "issueDate": "2026-04-13",
      "dueDate": "2026-05-13",
      "currencyCode": "EUR",
      "seller": {
        "name": "Exemple SARL",
        "vatId": "FR12345678901",
        "email": "facturation@exemple.example",
        "address": {
          "street": "12 Rue de la Paix",
          "city": "Paris",
          "postalCode": "75002",
          "countryCode": "FR"
        }
      },
      "buyer": {
        "name": "Client SAS",
        "vatId": "FR98765432109",
        "address": {
          "street": "8 Avenue des Champs-Élysées",
          "city": "Paris",
          "postalCode": "75008",
          "countryCode": "FR"
        }
      },
      "lines": [
        {
          "description": "Prestation de conseil — Avril 2026",
          "quantity": 5,
          "unitCode": "DAY",
          "unitPrice": 800.00,
          "lineTotal": 4000.00,
          "vatRate": 20,
          "vatCategoryCode": "S"
        }
      ],
      "paymentMeans": {
        "typeCode": "30",
        "iban": "FR7630006000011234567890189",
        "bic": "BNPAFRPPXXX"
      },
      "paymentTerms": "Net 30 jours",
      "totalNetAmount": 4000.00,
      "totalTaxAmount": 800.00,
      "totalGrossAmount": 4800.00
    }
  }' --output facture.pdf

XML output

To generate just the CII XML without the PDF wrapper:

generate-facturx-xml.sh
curl -X POST https://api.beliq.eu/v1/generate \
  -H "Authorization: Bearer blq_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "standard": "facturx",
    "profile": "en16931",
    "output": "xml",
    "invoice": { ... }
  }'

French B2B reform (CTC) readiness

France’s B2B e-invoicing reform replaces unstructured invoices with EN 16931-compliant Factur-X documents transported through certified Plateformes Agréées (PA). The current legal timeline (DGFiP / AIFE) is:

DateWhat changes
1 September 2026All businesses must be able to receive; large enterprises and mid-caps (ETI) must issue and e-report.
1 September 2027Small and medium enterprises (PME) and micro-enterprises (TPE) must issue and e-report.

The 1 September 2026 and 2027 calendar was reconfirmed in April 2025; a further delay was rejected. Dates can still move by decree, so re-confirm against DGFiP before relying on them.

Last verified against DGFiP / AIFE and the European Commission eInvoicing country page on 9 July 2026. Official source.

Always check the official impots.gouv.fr e-invoicing portal for the latest dates and the B2B “Spécifications externes” v3.2 for the full technical requirements.

What Beliq covers today

For the French B2B reform, Beliq generates Factur-X 1.08 documents that pass the FNFE-MPE BR-FR-CTC Flux 2 Schematron. Concretely:

  • We emit Factur-X 1.08 / D22B documents (and PDF/A-3 hybrids) that satisfy the EN 16931 baseline.
  • We validate against FNFE-MPE’s BR-FR-CTC Flux 2 Schematron (france_ctc_schematron, currently 1.3.0) whenever the document carries an AFNOR XP Z12-012 Flux 2 BusinessProcess code (S8, B8, M8) or you opt in by sending franceCtc=true.
  • We additionally apply the EXTENDED-CTC-FR overlay when the document is in the EXTENDED profile and the CTC mode is on.
  • The FR-specific structural fields (SIREN / SIRET on seller and buyer, French VAT codes, Flux 2 process codes, line-level legal IDs and parent-line linkage) are recognised by both the builder and the validator, with rule IDs surfaced in the validation result.
validate-facturx-ctc.sh
# Opt in to the BR-FR-CTC overlay when validating an existing document
curl -X POST 'https://api.beliq.eu/v1/validate?franceCtc=true' \
  -H 'Authorization: Bearer blq_live_abc123...' \
  -H 'Content-Type: application/xml' \
  --data-binary @facture.xml
// Generate a CTC-enabled invoice
{
  "standard": "facturx",
  "facturxProfile": "extended-ctc-fr",
  "output": "pdf",
  "invoice": {
    /* …seller / buyer with SIREN/SIRET and FR VAT IDs, lines, totals… */
    "franceCtc": true,
    "businessProcessId": "B8"
  }
}

What Beliq does not do (transmission / Annuaire / e-reporting)

Beliq is not a Plateforme Agréée (PA) immatriculée operator and does not (yet) intermediate transmission through the AIFE network. Specifically, the following are out of scope of this release:

  • Plateforme Agréée (PA) immatriculation with AIFE (a separate regulatory and operational program).
  • Operating the AIFE Annuaire (recipient lookup) interface.
  • The CDAR (Cross-Domain Acknowledgement and Response) message envelope used between Plateformes Agréées.
  • E-reporting flows (Flux 8 / 9 / 10) used for transaction reporting to DGFiP.

If your workflow requires a registered Plateforme Agréée (PA) today, please pair Beliq’s compliant Factur-X output with a partner PA for transmission. Reach out if you would like us to track your PA requirements as we expand this work.

French VAT specifics

VAT rate Category code Description
20% S Standard rate
10% S Intermediate rate
5.5% S Reduced rate
2.1% S Super-reduced rate
0% Z Zero-rated (e.g. intra-community supplies)
0% AE Reverse charge
0% E Exempt

Use the appropriate vatRate and vatCategoryCode combination on each invoice line.

Parsing Factur-X invoices

Upload a Factur-X PDF to extract the embedded data:

parse-facturx.sh
curl -X POST https://api.beliq.eu/v1/parse \
  -H "Authorization: Bearer blq_live_abc123..." \
  -H "Content-Type: application/octet-stream" \
  --data-binary @facture.pdf

The engine extracts the factur-x.xml attachment from the PDF and returns the normalized JSON invoice data.

Validation

Beliq validates Factur-X 1.08 invoices against:

  1. CII D22B XSD schema (the per-profile XSD subset is used when the document declares a Factur-X CustomizationID).
  2. EN 16931 core Schematron rules (currently v1.3.16).
  3. The Factur-X 1.08 profile-specific Schematron (BASIC_WL / EN16931 / EXTENDED), vendored from FNFE-MPE / FeRD.
  4. The FNFE-MPE BR-FR-CTC Flux 2 overlay when a Flux 2 BusinessProcess code (S8 / B8 / M8) is present or franceCtc=true is requested.
  5. The FNFE-MPE EXTENDED-CTC-FR overlay on top of (4) when the document is in the EXTENDED profile.

See validation artifacts for the exact versions in use.

Resources