einvoicing — Facturation électronique EN 16931 pour Ruby
Gem Ruby open source pour générer des factures Factur-X (PDF/A-3), CII D16B et UBL 2.1. Cible la réforme française de facturation électronique B2B de septembre 2026 et la norme EN 16931.
Qu'est-ce que einvoicing ?
🏛️ La réforme 2026
À partir de septembre 2026, toutes les factures B2B françaises devront être transmises électroniquement via une plateforme certifiée (PPF ou PDP). Les PDF non structurés et le papier ne seront plus acceptés.
💎 Une gem Ruby
einvoicing permet à n'importe quelle application Ruby ou Rails de générer des factures conformes — sans dépendre d'un SaaS tiers ni de traitements manuels.
📄 Factur-X PDF/A-3
Factur-X intègre un XML structuré (CII D16B) dans un PDF standard. L'humain lit le PDF, la machine lit le XML. Les deux dans un seul fichier. Validé par Mustang (PDF:valid XML:valid).
✅ Validé & testé
196 specs, 0 échecs. Conformité PDF/A-3 confirmée par Mustang CLI. Schémas XSD officiels inclus. La CI GitHub valide chaque push avec Mustang.
Fonctionnalités actuelles
Modèle de données facture
Invoice, Party, LineItem, Tax — montants en BigDecimal, avoirs, moyens de paiement (IBAN, BIC)
Générateur XML CII D16B
XML Cross Industry Invoice conforme EN 16931, profil Factur-X EN16931
Générateur XML UBL 2.1
Conforme Peppol BIS Billing 3.0, BuyerReference, PaymentMeans, TaxCurrencyCode
Embedding Factur-X PDF/A-3
Intègre le XML CII dans n'importe quel PDF. Profil ICC sRGB inclus pour la conformité OutputIntent PDF/A-3
Validateurs B2B français
Vérification Luhn SIREN/SIRET, format TVA intracommunautaire, IBAN ISO 13616, format BIC, taux de TVA
Avoirs (notes de crédit)
TypeCode 381, BillingReference vers la facture d'origine, validation du numéro de facture original
Moyens de paiement
IBAN, BIC, code de type de paiement (virement SEPA, etc.) dans CII et UBL
Messages d'erreur i18n
Codes d'erreur symboliques { field:, error:, message: } avec traductions anglais et français
Concern Rails Invoiceable
Concern ActiveRecord clé en main, validateur configurable, mapping to_einvoice
Client Chorus Pro / PPF
OAuth2 (client_credentials), deposit_flux pour l'upload de PDF Factur-X, suivi du statut des factures
CI GitHub avec validation Mustang
Chaque push lance rspec + génère une facture exemple + la valide avec Mustang CLI
Démarrage rapide
# Gemfile
gem "einvoicing"
# Construire une facture
invoice = Einvoicing::Invoice.new(
invoice_number: "FAC-2026-001",
issue_date: Date.today,
currency: "EUR",
seller: Einvoicing::Party.new(...),
buyer: Einvoicing::Party.new(...),
lines: [Einvoicing::LineItem.new(...)]
)
# Valider, générer le XML, intégrer dans le PDF
errors = Einvoicing::Validators::FR.validate(invoice)
xml = Einvoicing::Formats::CII.generate(invoice)
pdf_out = Einvoicing::Formats::FacturX.embed(pdf_in, xml)
Ce qu'il reste à faire
API PPF B2B (DGFiP)
L'API officielle du portail public de facturation B2B. Sandbox non disponible — la DGFiP la construit. Intégration dès l'ouverture (attendue T2/T3 2026).
Intégration PDP (Pennylane, autres)
Les PDP certifiés relaient les factures vers le réseau PPF. En attente d'un accès sandbox chez Pennylane. D'autres PDP suivront.
Transmission réseau Peppol
Support du réseau paneuropéen Peppol pour les factures UBL 2.1. La génération UBL est déjà faite — la couche de transmission arrive.
Validation Schematron Peppol BIS 3.0
Exécution des règles Schematron Peppol officielles sur les sorties UBL (JAR dédié), en plus de la validation XSD existante.
Lookup SIRET pour les acheteurs
Lookup automatique du SIRET via l'API Sirene INSEE à partir du SIREN, pour compléter le champ manquant sur les parties acheteuses.
Vous voulez l'intégrer dans votre app ?
Besoin d'aide pour intégrer la génération Factur-X dans votre application Ruby on Rails ? Contactez-nous.
Nous contacter