Facturation Electronique
est une bibliothèque Python qui simplifie l'interaction avec les principales API de facturation électronique en France, notamment Chorus Pro, et d'autres partenaires privés. Elle supporte également le format Factur-X pour la création et l'envoi de factures électroniques.
Le concept repose sur l'instanciation d’une classe Facture (actuellement largement inspirée de l’API Chorus Pro), qui fournit ensuite les outils nécessaires pour interagir avec diverses API publiques, principalement Chorus Pro, ainsi qu’avec des plateformes de dématérialisation partenaires telles que Qonto, Sage, et Pennylane. La vérification de cohérence et de logique des factures s'appuie sur le format Factur-X, pris en charge par Chorus Pro, et particulièrement adapté pour les contrôles de cohérence avancés.
- Chorus Pro : Ce module permet la création, l'envoi et le suivi des factures destinées aux entités publiques. Il intègre également des fonctionnalités de recherche d’entités via le SIRET, permettant par exemple de retrouver l’identifiant Chorus Pro d’une entité.
- Factur-X : Ce module prend en charge la génération de factures au format PDF/Factur-X, en particulier les profils minimum et basic. Il valide le fichier factur-x.xml en conformité avec les schémas XSD via le module facturx. De plus, il offre la possibilité d'une validation plus poussée du fichier XML en appliquant les règles avancées définies dans les fichiers XSLT, ce que le module facturx ne propose pas nativement, via la fonction valider_xml_xslt.
-
Clonez ce dépôt ou téléchargez-le :
git clone https://github.com/thierryjmartin/facturation_electronique.git
-
Installez les dépendances à l'aide du fichier requirements.txt :
pip install -r requirements.txt
Vous devez fournir vos clés API et les URL des différentes plateformes dans un fichier de configuration ou via des variables d'environnement.
Exemple d'un fichier config.py :
from .template_config import *
PISTE_CLIENT_ID = "votre-clientid-piste"
PISTE_CLIENT_SECRET = "votre-secret-piste"
# Configuration API Chorus Pro
CHORUS_PRO_BASE_URL = 'https://chorus-pro.gouv.fr/api'
CHORUS_PRO_API_KEY = 'votre-api-key-chorus-pro'
# Autres configurations...
Un exemple d'utilisation est dans le script exemples/exemple_*.py
python -m facture_electronique.api.chorus_pro
On utilise l'API Chorus Pro pour retrouver les identifiants de personnes morales. On génère une facture en instanciant la classe Facture. On modifie le PDF de la facture pour le transformer en PDF/A Factur-X que l'on envoie à Chorus Pro.
Si vous souhaitez contribuer à ce projet, veuillez suivre les étapes suivantes :
Clonez le dépôt.
Créez une branche pour votre fonctionnalité : git checkout -b nouvelle-fonctionnalité.
Faites vos modifications et testez-les.
Soumettez une merge request.
Le code dans generated est généré par cette commande qui convertit les xsd Factur-X en classes python :
xsdata generate xsd/facturx-minimum/Factur-X_1.07.2_MINIMUM.xsd
Ce projet est sous licence MIT.
Developpé par Thierry Martin
- Maj validation XML via Schematron
- Ajout des XSD de factur-x au package, en particulier pour pouvoir utiliser utils.facturx.valider_xml_xldt plus facilement.
- Ajout d'exemple de code pour signer les PDFs avec PyHanko, car cela devrait être nécessaire pour faire des Factur-X (Qualified eSeal). Pour le moment la signature casse la validité PDF/A...
- Ajout de la génération de Factur-X EN16931 (en plus des profils Minimum et Basic).
- Mise à jour pour le support de Factur-X 1.0.7.2.