LuaBill — Guide d’utilisation

LuaBill crée localement, avec LuaLaTeX, des factures, devis, commandes et autres documents professionnels. Vous saisissez les données dans les formulaires, sans modifier de fichier .bill. Ce guide suit la langue de l’interface ; la langue du document produit se choisit séparément.

Sommaire : Premier document · Ouvrir et enregistrer · Document et TVA · Vendeur et client · Articles et totaux · Remarques · Acomptes · Sortie, QR et images · Factures électroniques · Composants · Préférences et réinitialisation · Problèmes · Clavier · Licences

Le guide peut rester ouvert pendant la saisie. Utilisez Ctrl+F (Cmd+F sur macOS) pour chercher un terme, les commandes précédent/suivant pour parcourir les résultats et le bouton du sommaire pour revenir à la navigation.

1. Créer le premier document

  1. Choisissez Fichier → Nouveau ou Fichier → Exemple. Toutes les coordonnées, références fiscales et immatriculations de l’exemple sont fictives : remplacez-les.
  2. Dans Document, choisissez type, langue, numéro, dates, devise et régime fiscal. Vérifiez le filigrane brouillon.
  3. Complétez Vendeur et Client : adresses structurées, pays, coordonnées bancaires et identifiants fiscaux.
  4. Ajoutez les articles, les remarques et, le cas échéant, les acomptes réellement reçus.
  5. Dans Fichiers et sortie, sélectionnez format et dossier. Un PDF ordinaire convient à une première vérification visuelle.
  6. Lancez Document → Vérifier les totaux (F7), corrigez les erreurs, puis Créer PDF / XML (F9). Un nouveau document doit d’abord recevoir un nom de projet.
  7. Examinez le PDF et le panneau de résultats. Pour une facture électronique, vérifiez aussi la réussite de la validation externe avant tout envoi.

2. Projets, ouverture et enregistrement

FichierUtilisation
.luabillProjet modifiable au format JSON, à conserver pour reprendre le travail. Ce n’est pas la facture à transmettre au client.
.billAncien format d’entrée Lua, importé par Fichier → Ouvrir…. L’enregistrement produit un nouveau projet .luabill et conserve l’original. Importez uniquement des entrées Lua de confiance.
.pdf, .xmlRésultats générés. Pour les corriger, modifiez le projet et générez-les à nouveau.

Enregistrer écrit le projet courant. Enregistrer sous… choisit un autre emplacement. Un brouillon incomplet peut être enregistré. Fichier → Exporter .bill… crée explicitement une entrée pour l’ancien traitement. Le profil vendeur est un fichier JSON distinct, enregistré depuis les Paramètres.

Ouvrir un projet ou un exemple ne crée pas de modifications non enregistrées. L’astérisque du titre signale une modification des données. La génération enregistre d’abord un projet nouveau ou modifié ; un .luabill ouvert et inchangé ne demande ni nouveau nom ni réécriture. La sauvegarde des préférences à la fermeture ne remplace pas l’enregistrement du document.

Les boîtes d’ouverture et de premier enregistrement mémorisent le dernier dossier de projets. « Enregistrer sous » propose le dossier du projet courant. Une association de fichiers permet d’ouvrir un projet d’un double-clic. Le programme d’installation Windows propose cette option. Pour une installation depuis les sources, utilisez Paramètres → Associer les fichiers .luabill à LuaBill… ; recommencez après avoir déplacé le programme.

3. Document, langues, devise et TVA

Le code de la devise actuelle reste visible dans la barre d’outils et le titre de la fenêtre, quel que soit l’onglet. Il se met à jour quand vous changez de devise ou ouvrez un document.

Les types comprennent devis, facture, bon de livraison, confirmation de commande, facture pro forma, bon de commande, avoir, facture d’annulation, demande de devis et lettre. L’étape de facturation distingue facture complète, acompte, partielle et à solde. Saisissez votre numéro : LuaBill ne gère pas une séquence unique pour toute l’entreprise. Indiquez les dates réelles d’émission et de livraison/prestation. Le délai de paiement et la durée de validité du devis sont distincts. Pour un avoir ou une annulation, référencez la facture initiale et, si disponible, sa date.

Langue du document choisit EN, DE, FR, IT ou RU pour les libellés et textes standard imprimés. Paramètres → Langue de l’interface change séparément menus, aide et boutons. Vos descriptions et textes libres ne sont pas traduits. Changer la langue du document modifie ses données ; changer uniquement l’interface ne les modifie pas.

Utilisez un code de devise de trois lettres, par exemple EUR, USD, JPY, RUB ou CNY, indépendamment du pays du client. RUB et CNY sont également disponibles dans la liste des devises. Saisissez les montants dans cette devise : aucune conversion de change n’est effectuée. Les totaux monétaires électroniques acceptent au plus deux décimales. Les devises normalement à trois ou quatre décimales nécessitent un réglage explicite à deux décimales dans l’entrée sous-jacente ; ce réglage n’a pas de champ spécifique dans l’interface.

Choisissez le régime correspondant à l’opération : Allemagne, biens à une entreprise UE, exportation de biens hors UE, service B2B ordinaire dans l’UE ou hors UE. Pour les biens, complétez le Pays de livraison réel. Un client étranger ne suffit pas à justifier une exonération.

Le taux du document s’applique aux lignes sans taux propre. Une Catégorie TVA vide utilise la détermination automatique. Une catégorie ou un motif d’exonération explicite doit correspondre à l’opération. Petite entreprise (§19 UStG) est un raccourci réservé aux opérations nationales allemandes. Le passage à un régime étranger remet le taux général à zéro et supprime les taux/catégories particuliers des lignes. L’option petite entreprise supprime aussi ces particularités : revérifiez les articles après un changement.

LuaBill ajoute les explications et références légales correspondant au régime et aux groupes de TVA calculés. Liens législatifs cliquables contrôle les liens, sans supprimer explications ni références. Les cas particuliers, B2C/OSS et les preuves d’exonération demandent une appréciation distincte. Le choix du régime dans le logiciel ne prouve pas que ses conditions sont remplies.

4. Vendeur et client

Le Numéro client facultatif est votre identifiant pour ce client. Saisissez-le comme texte, par exemple 000123, pour conserver les zéros initiaux, ou laissez le champ vide. LuaBill l’affiche dans le PDF et l’exporte comme identifiant acheteur dans le XML électronique (customer.buyer_id). Il est distinct du numéro de facture, de la référence de commande et de la référence acheteur/Leitweg-ID.

Indiquez société/nom complet, rue et numéro, éventuel complément, code postal, ville et code pays ISO à deux lettres. La version actuelle accepte uniquement un vendeur établi en Allemagne : son code pays doit être DE. Le client peut être en Allemagne, dans un autre pays de l’UE ou hors UE, par exemple DE, FR ou US. Saisissez du texte ordinaire ; les adresses structurées servent au PDF et au XML.

Pour chaque export électronique (XML, XRechnung et ZUGFeRD), l’implémentation actuelle exige un IBAN vendeur valide. Cette vérification LuaBill s’applique aussi lorsque la devise du document n’est pas EUR.

Pour le vendeur, renseignez contact/signataire, courriel, téléphone, site, numéro fiscal et/ou identifiant TVA, banque, IBAN et BIC. Le numéro fiscal allemand (Steuernummer) est distinct de l’identifiant TVA (USt-IdNr.) et du numéro d’immatriculation. Selon la situation, précisez forme juridique, siège, tribunal du registre, immatriculation, tous les gérants (un par ligne) et président du conseil de surveillance. Le signataire ne remplace pas la liste des gérants.

Pour le client, ajoutez la référence de commande, le contact et une éventuelle adresse de livraison différente. La Référence acheteur / Leitweg-ID se trouve dans Document. Utilisez celle communiquée par le destinataire : un numéro de commande quelconque n’est pas automatiquement une Leitweg-ID valable.

Les coordonnées du client disposent de champs distincts : Nom du contact, Fonction, Courriel, Téléphone, Mobile, Fax et Site web. Saisissez du texte ordinaire, sans commandes LaTeX ni séparateurs de lignes \\, et laissez vides les champs inutilisés. Le PDF affiche chaque valeur sur sa propre ligne, avec des icônes pour courriel, téléphone, mobile, fax et site. Les liens de courriel, de site et de téléphone sont cliquables dans le PDF. Le nom du contact, le téléphone et le courriel peuvent aussi figurer dans le XML électronique ; les autres lignes sont destinées au document visuel.

Si LuaBill reconnaît un ancien champ de contact combiné, il affiche ses valeurs dans les champs séparés sans réécrire le document ouvert ni le marquer comme modifié. Le LaTeX non reconnu reste dans Texte de contact supplémentaire (ancien), visible seulement si nécessaire, jusqu’à sa modification ou sa suppression explicite. La modification puis l’enregistrement des coordonnées utilise les champs structurés. Importer un .bill et enregistrer un nouveau .luabill laisse le fichier source intact.

L’Adresse électronique désigne le point de réception/émission de la facture, avec son Schéma d’adresse. Pour un courriel, ce schéma est EM. XRechnung exige les adresses électroniques structurées des deux parties et les contacts du vendeur. Le simple courriel du contact ne remplace pas ces champs.

Paramètres → Enregistrer profil vendeur / Charger profil vendeur réutilise vos coordonnées dans d’autres documents. Charger un profil remplace les données vendeur et marque le document comme modifié. Contrôlez ensuite banque et chemins des images.

5. Articles et calculs

Ajouter une ligne ouvre la saisie de description, quantité, prix unitaire, remise en pourcentage, taux TVA éventuel, code d’unité, catégorie TVA et article/SKU. Double-cliquez une ligne ou sélectionnez-la puis appuyez sur Entrée pour la modifier. Supprimer sélection ou Suppr retire les lignes choisies. Validez ou annulez explicitement l’éditeur.

Utilisez le point ou la virgule décimale, sans séparateur de milliers. Quantités et prix unitaires acceptent six décimales au maximum, taux et remises quatre. Un taux TVA de ligne vide reprend celui du document. Pour le XML, utilisez un code d’unité approprié, par exemple C62 pour une pièce. La remise est déjà déduite de la ligne : ne la déduisez pas une seconde fois.

Vérifier les totaux vérifie les données courantes et affiche montant HT, TVA et montant à payer. Cette vérification ne remplace pas la validation électronique externe. PDF et XML utilisent le même moteur de calcul. Contrôlez particulièrement les taux multiples, remises et paiements déduits.

6. Remarques et conditions de paiement

L’onglet des remarques contient un tableau libellé/texte, une introduction, une note de facture supplémentaire et des conditions de paiement personnalisées. Saisissez du texte simple, sans \textbf{...}. Les clés standard telles que project sont traduites dans la langue du document. Les libellés et courts titres avant deux-points, par exemple Projet :, sont imprimés en gras.

Modifier une note multilingue existante change sa variante dans la langue actuelle du document et conserve les autres variantes. Le logiciel ne traduit pas votre prose. Les notes communes en texte simple figurent dans PDF et XML. Des remarques LaTeX héritées peuvent rester propres au PDF : placez les instructions essentielles dans les champs communs de texte simple.

7. Acomptes reçus et facture à solde

Saisissez uniquement des paiements effectivement reçus : une ligne par paiement et groupe TVA, avec numéro/date de la facture initiale, date de réception, montant HT, TVA, taux/catégorie et éventuel motif d’exonération. La devise est celle de la facture actuelle. Répétez une référence si elle couvre plusieurs groupes TVA.

LuaBill additionne les montants TTC reçus et réduit le solde à payer. Conservez la totalité de la prestation dans les articles ; ne soustrayez pas encore les acomptes sous forme de lignes négatives. TVA, dates et groupes fiscaux doivent se rapprocher correctement. Un total d’acomptes saisi séparément doit correspondre au détail. Pour une facture à solde sans acompte reçu, indiquez zéro. LuaBill ne consulte ni anciennes factures ni relevés bancaires.

8. Dossier, résultats, QR, signature et cachet

Par défaut, les projets sont proposés dans Documents/LuaBill/Projects et les résultats dans Documents/LuaBill/Output, à partir du dossier Documents du système. Choisissez votre propre organisation. Le Dossier de sortie et l’option de sortie à côté du projet sont des préférences de cet utilisateur sur cet ordinateur, communes à tous ses projets. Ils ne sont pas enregistrés dans .luabill. Les anciens chemins de sortie d’un projet sont ignorés ; aucun fichier existant n’est déplacé automatiquement.

Les résultats reprennent le nom du projet : Facture-001.pdf, Facture-001.xml, Facture-001.validation.xml. Une nouvelle génération peut remplacer la sortie précédente. Archivez une version émise avant de produire des modifications à conserver séparément.

Après réussite, le PDF s’ouvre dans le lecteur par défaut. Le panneau de résultats propose les chemins, Ouvrir PDF, Ouvrir XML et Ouvrir le dossier de sortie. Le réglage Paramètres → Ouvrir le PDF après création active cet automatisme. Une modification des données ou paramètres de sortie rend le résultat précédent périmé : générez à nouveau. Les détails figurent dans Journal de génération. Un échec ne publie pas une nouvelle facture validée.

Le Code QR de paiement (EUR) contient les données EPC/SEPA et le solde restant, avec une indication de paiement. Il nécessite une facture en EUR, un IBAN et des données valides, ainsi qu’un solde positif. Il ne fournit pas un paiement QR universel pour USD ou d’autres devises et ne prouve pas le paiement. Vérifiez les coordonnées et testez-le avec une application bancaire compatible.

Choisissez les images de signature/cachet et leurs hauteurs, par exemple 12mm et 35mm. Le bloc final présente date/nom soulignés, signature au centre et cachet superposé dans la zone de signature. Contrôlez le rendu avec vos images. Ce sont des éléments graphiques, pas des signatures cryptographiques. Le projet conserve des chemins, pas les images : lors d’un transfert, copiez-les et sélectionnez leur nouvel emplacement.

9. Formats électroniques et fichiers à envoyer

FormatRésultat et transmission
PDFPDF visuel ordinaire sans facture structurée intégrée. À envoyer si ce format convient à l’opération.
XML · EN 16931Vue PDF, XML CII structuré et rapport. Le XML constitue la facture structurée ; transmettez-le par le canal convenu, éventuellement accompagné du PDF.
XRechnungVue PDF, XML CII XRechnung 3 et rapport. Déposez le XML sur le portail/adresse indiqué par le destinataire, avec sa référence acheteur/Leitweg-ID.
ZUGFeRD · PDF/A-3 + XMLPDF hybride avec XML incorporé, XML séparé identique et rapport. On transmet habituellement le PDF hybride ; le destinataire précise s’il souhaite aussi le XML séparé.

L’export électronique concerne les factures, avoirs et factures d’annulation. Devis et commandes restent des documents PDF. Changer le format ne transforme pas un devis en facture.

Renseignez numéro, dates d’émission et de livraison/prestation réelles, parties et adresses/pays, lignes descriptives, devise, groupes TVA et identification fiscale du vendeur. Selon le régime, des identifiants TVA, motifs d’exonération et données de paiement sont aussi nécessaires. XRechnung contrôle en plus référence acheteur, deux adresses électroniques et contact vendeur. Les avoirs/annulations doivent référencer la facture initiale. Suivez les messages de validation ; n’utilisez jamais les identifiants fictifs de l’exemple.

Mustang valide le XML. Pour ZUGFeRD, la vérification porte aussi sur PDF/A et le conteneur ; le XML extrait est comparé au fichier séparé. Vérifiez la réussite et conservez le rapport .validation.xml. Un lecteur PDF prenant en charge les pièces jointes peut montrer le XML ; certains ne l’affichent pas. Le nom et l’apparence du PDF ne prouvent pas son format ZUGFeRD. La validation n’établit ni validité administrative des identifiants, ni unicité du numéro, ni livraison effective, ni droit à une exonération.

10. Installer et vérifier les composants

Ouvrez Aide → Composants et installation aussi souvent que nécessaire. La fenêtre indique chemins détectés et version Java, explique les absences et ouvre les pages officielles après un clic sur leur lien. Après installation, choisissez Vérifier à nouveau. Si le composant reste introuvable, redémarrez LuaBill.

L’installateur Windows contient Python, qui exécute LuaBill, PySide6/Qt pour fenêtres et menus, ainsi que Mustang. Aucun Python/PySide6 séparé n’est nécessaire. Depuis les sources, installez Python/PySide6 via le script fourni : Setup_LuaBill.cmd sous Windows ou sh Setup_LuaBill.sh sous macOS/Linux, puis utilisez Start. Setup peut télécharger les dépendances. La génération et la validation restent locales, sans envoi des données de facture à un service.

Une installation TeX compacte doit contenir LuaLaTeX, fontspec, fontawesome, babel pour EN/DE/FR/IT/RU, csquotes, tikz, fancyhdr, enumitem, hyperref, soul, lastpage, textpos, luacode, ltablex, draftwatermark et eso-pic. Installez Noto Sans ou DejaVu Sans pour Unicode. Un composant trouvé peut encore manquer de paquets/polices ; consultez le journal.

11. Préférences conservées et retour aux valeurs initiales

À la fermeture normale, LuaBill mémorise langue d’interface, valeurs des nouveaux documents dont leur langue, emplacement/mode de sortie, ouverture automatique, dossiers des dialogues, fenêtre, onglet actif et largeurs de tableaux. Annuler la fermeture reporte cet enregistrement. Le projet ouvert fournit ses propres données. Numéros, dates, client, articles et remarques se sauvegardent avec le projet ; le profil vendeur dispose de ses commandes distinctes.

Le stockage est QSettings("LuaBill", "LuaBill"), clé preferences/json, propre à l’utilisateur système et séparé du projet/programme. Sauvegardez-le avant réinitialisation. Fermez toutes les fenêtres LuaBill pour éviter la réécriture des anciens réglages.

Depuis les sources, exécutez ce code avec le Python contenant PySide6, LuaBill fermé, pour afficher le stockage exact :

from PySide6.QtCore import QSettings
settings = QSettings("LuaBill", "LuaBill")
print(settings.fileName())

Sauvegardez d’abord le stockage affiché. Ensuite seulement, toutes les fenêtres LuaBill fermées, exécutez dans la même session Python :

settings.clear()
settings.sync()

Redémarrez LuaBill. Projets, profils et résultats ne sont pas supprimés. La sortie revient à Documents/LuaBill/Output : vérifiez-la avant de générer.

12. Problèmes courants

SymptômeAction
Outil absent / Java ancienUtilisez Composants et installation, installez puis revérifiez. Avec des chemins personnalisés, contrôlez LUABILL_TEXLUA, LUABILL_LUALATEX, LUABILL_GS, LUABILL_JAVA et JAVA_HOME.
Erreur LuaLaTeX / caractères absentsLisez le journal, actualisez TeX, installez le paquet ou la police indiqué. MiKTeX peut nécessiter Internet pour des paquets au premier lancement.
Image absenteSélectionnez à nouveau signature/cachet dans Fichiers et sortie ou videz le chemin. Le projet ne contient pas les images.
Validation refuséeConsultez message et rapport : champs requis, dates, adresses électroniques, identifiants/groupes TVA et acomptes. Corrigez avant de régénérer et n’envoyez pas l’échec comme facture validée.
PDF non ouvertUtilisez les boutons du résultat ou son dossier. Vérifiez le réglage et le lecteur PDF par défaut ; l’échec d’ouverture est distinct de la création.
Dossier non accessible en écritureChoisissez un dossier utilisateur autorisé. Vérifiez les droits et fermez le logiciel qui verrouille le PDF cible.
Demande d’enregistrementEnregistrez les modifications ou abandonnez-les délibérément. Un .bill importé nécessite son premier nom .luabill ; un .luabill ouvert et inchangé n’exige pas un nouvel enregistrement.

13. Raccourcis clavier

CommandeWindows / LinuxmacOS
Nouveau / Ouvrir / EnregistrerCtrl+N / Ctrl+O / Ctrl+SCmd+N / Cmd+O / Cmd+S
Enregistrer sousCtrl+Maj+SCmd+Maj+S
Totaux / GénérerF7 / F9F7 / F9
GuideF1Touche Aide / raccourci système
Ouvrir le PDF généréCtrl+Maj+PCmd+Maj+P
Modifier / supprimer une ligneEntrée / SupprReturn / Delete

Les touches de fonction peuvent nécessiter Fn. Les menus affichent les raccourcis actifs sur votre système.

14. Licences et auteurs

LuaBill — Open Source Business Document Generator
Copyright 2026 Vsevolod Shashkov & Mikhail Shashkov.
Le code et la documentation propres à LuaBill sont sous Apache License, Version 2.0.

qrencode.lua provient de speedata/luaqrcode, écrit par Patrick Gundlach et les contributeurs, copyright 2012–2020. Cette bibliothèque conserve sa licence BSD-3-Clause et ses mentions d’auteur ; elle n’a pas été écrite par les auteurs de LuaBill. Les autres composants tiers conservent leurs licences. Les textes complets figurent dans LICENSE, NOTICE et les avis tiers fournis.

Retour au premier document

Aide → Composants tiers et sources ouvre l’inventaire des logiciels, polices, profils et illustrations. La présentation hors ligne donne les licences originales et les sources détaillées.