Skip to main content

eFacturePy — ads-facturx

Génération, validation et assemblage de factures électroniques Factur-X / EN 16931 en Python.

Python Version Build Status


🧭 Sommaire


📖 À propos

eFacturePy est le dépôt de travail du package Python ads-facturx, un outil qui permet de :

  • produire un XML Cross Industry Invoice conforme au profil urn:cen.eu:en16931:2017 ;
  • générer le PDF/A-3 associé à l’aide de ReportLab ;
  • embarquer ce XML dans le PDF pour obtenir une Factur-X valide (via factur-x) ;
  • valider la facture via XSD (EN16931) et Schematron (moteur SaxonC-HE).

✨ Fonctionnalités

  • ✅ Génération d’un XML Factur-X / EN 16931 à partir d’un dict métier
  • ✅ Génération d’un PDF de facture (template par défaut + logo personnalisable)
  • ✅ Fusion PDF + XML → fichier Factur-X conforme
  • ✅ Validation XSD (profil en16931)
  • ✅ Validation Schematron via XSLT précompilé (SaxonC)
  • ✅ Modèles Pydantic v2 pour typer et valider les données métier

🏗️ Architecture du dépôt

eFacturePy/
├─ ads_facturx/              # Package distribué sur PyPI
│  ├─ Builders/              # Génération XML + PDF + Factur-X
│  ├─ Validators/            # XSD + Schematron (XSLT EN16931-CII)
│  ├─ models/                # Schémas Pydantic (DevisData, Invoice, …)
│  ├─ Samples/               # Jeu de données et XML de référence
│  └─ tests/                 # Tests unitaires pytest
├─ eFacturePy/               # Sorties d’exemple (PDF/XML générés)
├─ archive/                  # Ressources brutes : XSD, XSL, Schematron, Saxon
├─ dist/                     # Wheels et sdist historiques                   
├─ pyproject.toml            # Configuration Poetry
└─ poetry.lock

📦 Installation

Depuis PyPI :

pip install ads-facturx

Prérequis : Python ≥ 3.12. SaxonC-HE est installé automatiquement via la dépendance saxonche.


🚀 Démarrage rapide

from ads_facturx import (
    generate_xml, write_xml_from_string,
    xml_check_xsd, xml_check_schematron,
    generate_invoice, generate_facturx,
)
from ads_facturx.Samples.data import sample_raw_data as data

DESTINATION = "eFacturePy"

xml_string = generate_xml(data)
xml_path   = write_xml_from_string(xml_string, DESTINATION, "my_first_xml")

xml_check_xsd(xml_string)
report = xml_check_schematron(xml_path=xml_path)
print(report)

generate_invoice(file_name="my_first_invoice.pdf",
                 destination_folder=DESTINATION,
                 data=data, title="Ma facture",
                 logopath="TA_logo_reduced.jpg")

generate_facturx(file_name="my_first_invoice.pdf",
                 destination_folder=DESTINATION,
                 xml=xml_string)

🔌 API publique

Exposée via from ads_facturx import ... :

Fonction Rôle
generate_xml(data) Construit la chaîne XML CII EN 16931 à partir d’un dict.
write_xml_from_string Sérialise l’XML sur disque (destination_folder, file_name).
xml_check_xsd Valide l’XML avec le XSD facturx / niveau en16931.
xml_check_schematron Applique les règles Schematron EN16931-CII via SaxonC.
generate_invoice Génère le PDF de facture (ReportLab, logo + annexes optionnels).
generate_facturx Embarque le XML dans le PDF pour produire la Factur-X finale.

🧾 Modèle de données

Le package fournit des schémas Pydantic v2 dans ads_facturx/models (notamment DevisData, Invoice, InvoiceLine, Company, Partner, …). generate_invoice valide les données via DevisData.model_validate(data) et applique des règles EN 16931 critiques (ex. obligation du numéro de TVA vendeur pour la catégorie S).

Un exemple complet de payload est fourni dans ads_facturx/Samples/data.py.


✅ Validation EN 16931

  • XSD : xml_check_xsd s’appuie sur factur-x (flavor="facturx", level="en16931").
  • Schematron : xml_check_schematron exécute Validators/xslt/EN16931-CII-validation.xslt avec SaxonC et renvoie la liste des failed-assert (id, location, message).

📚 Dépendances

factur-x, saxonche, pydantic, reportlab (voir pyproject.toml et poetry.lock).

👤 Auteur

Antoine DucoulombierAlchimie Data Solutions · antoine.ducoulombier@alchimiedatasolutions.com

Release files for ads-facturx 0.7.15

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ads-facturx 0.7.15
File Size Uploaded
ads_facturx-0.7.15.tar.gz 1.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for ads-facturx 0.7.15
File Interpreter ABI Platform
ads_facturx-0.7.15-py3-none-any.whl Python 3 none any Details

Total release size:2.1 MB

Release files / ads_facturx-0.7.15.tar.gz

Download URL ads_facturx-0.7.15.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
ba51b274139fbf836e3bb9895ee93e716c447540baa4673c8514e2ae45d7c5f6
BLAKE2b-256 checksum
How to use checksums
45ac063a7ef08bc1839fe260946927b19769820e3c1c9901839f068efe9291f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.3 CPython/3.10.11 Windows/10

Release files / ads_facturx-0.7.15-py3-none-any.whl

Download URL ads_facturx-0.7.15-py3-none-any.whl
Size 1.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
566256201d20289cab25b854ef2bb7a43da0d320ad6fe7342cabdd01f0655d66
BLAKE2b-256 checksum
How to use checksums
2ced61a398aa2e211a7535b7508e1c53acb88239d38a2627db82c0f0eb943bdc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.3 CPython/3.10.11 Windows/10

Release history Release notifications | RSS feed

0.7.16

2 release files

This release

0.7.15 This release

2 release files

0.7.12

2 release files

0.7.11

2 release files

0.7.10

2 release files

0.7.9

2 release files

0.7.8

2 release files

0.7.7

2 release files

0.7.6

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.16

2 release files

0.6.15

2 release files

0.6.14

2 release files

0.6.13

2 release files

0.6.12

2 release files

0.6.11

2 release files

0.6.10

2 release files

0.6.9

2 release files

0.6.8

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page