Documents with care
LuaLaTeX creates a consistent layout, readable item tables and multilingual text. Review the resulting PDF immediately in your usual viewer.
Free software for the people behind small businesses
Prepare invoices, quotations and orders in a clear desktop form. LuaBill combines carefully typeset LuaLaTeX documents with structured invoice exports; optional formulas help explain technical work.
Open source · No subscription · Documents processed on your computer
Starting a business takes skill, energy and courage. Formatting an invoice should not become another obstacle.
LuaBill is built for founders, independent professionals and small teams who want dependable business documents without a complicated workflow. Our aim is practical: reduce repetitive paperwork, make important details easier to check and give people more time for the work their customers value.
Our initial focus has been the quality of the finished documents and practical, clearly arranged input forms. LuaLaTeX brings established technical and scientific typesetting to everyday business documents, including mathematical notation when a project needs it.
The project is open source and free to use. You can inspect the code, adapt it to your needs and help improve it. Germany is our first market, with support for German sellers working with customers in Germany, elsewhere in the EU and beyond.
The LuaBill desktop interface. Interface and document languages can be selected separately.
User guide ↗
A desktop form for the details, a consistent template for the document and shared calculations for PDF and XML.
LuaLaTeX creates a consistent layout, readable item tables and multilingual text. Review the resulting PDF immediately in your usual viewer.
Create invoices, quotations, delivery notes, order confirmations, proforma invoices, purchase orders, credit notes, cancellation invoices, quotation requests and letters.
Export EN 16931 CII XML, XRechnung or ZUGFeRD with XML embedded in PDF/A-3. LuaBill checks current reviewed rules and keeps validation reports, rule versions and hashes alongside your files.
Choose English, German, French, Italian or Russian separately for the interface and document. Amounts use the language’s number separators. For supported currencies, Remarks always gives the code, full name and symbol, including EUR, USD, RUB and CNY.
Choose the supported German domestic or international B2B scenario. LuaBill prepares VAT explanations and optional statutory links from that choice and the tax groups in the document.
Request a VIES check from the Customer tab. LuaBill records the returned result and date; a current positive check gives the VAT ID a green mark in the interface and PDF, including on an invoice issued before the check.
Work with quantities, percentage discounts, mixed VAT rates and received advances. Net amounts, VAT and the amount due use the same calculation engine for the visual and structured output.
Use structured addresses, an optional customer number and separate fields for contact name, role, email, phone, mobile, fax and website. Supported contact links are clickable in the PDF.
Switch signature and stamp images on or off with checkboxes, add project remarks and use an EPC/SEPA payment QR code for eligible EUR invoices. Signature images are visual marks; they are not cryptographic signatures.
Save editable .luabill projects and reusable seller profiles. The application remembers your language, window and output preferences; projects and generated results can live in separate folders.
Import existing .bill files, including older layouts, use the graphical editor or generate through the Python command line. A ready Windows installer and source-based Linux/macOS installers share the same application code.
Remarks supports LaTeX emphasis and formulas, including integrals, sums and fractions. A nonempty Document → Project appears first with a bold, localized label; the same note goes into XML. Blank projects add no automatic note, and matching standard project notes appear once. PDF renders formulas; XML notes keep LaTeX source. Introductory text is PDF-only.
Choose PDF, XML/XRechnung or ZUGFeRD, review the plan and start preparation. The wizard reuses installed tools, prepares TeX packages and private Noto fonts, and tests a fictional example through the actual generation pipeline before reporting success.
LuaLaTeX · PDF · XML
See how technical explanations can remain part of a readable business document.
This one-page English example invoices the development and verification of an analogue PID controller and a digital PI controller. The editable project lets you inspect the input fields and reuse the structure for your own work.
\(\displaystyle u(t)=K_p e(t)+K_i\int_0^t e(\tau)\,d\tau-K_d\frac{dy(t)}{dt}\)
\[u[k]=u[k-1]+K_p(e[k]-e[k-1])+K_i T_s e[k]\]
Download all seven examples (ZIP) ↓
The same seven examples are included in the installer: editable .luabill projects, .bill sources and ready-made PDFs. The ZIP also includes the demo signature and stamp images. Extract it before opening a project. SHA-256
You do not need to write Lua or LaTeX to fill in the form. Start with an example, then replace its fictional details.
Choose the package for your operating system. Windows includes Python and Qt; Linux/macOS need a compatible Python and Internet access to install PySide6 in LuaBill's private environment.
Open Help → Prepare document creation, choose a format profile and click Prepare selected components. Wait for package preparation and the test documents. Suitable existing tools are reused; the full TeX distribution is not bundled.
Choose a document type, language, currency, number, dates and VAT scenario. Enter the seller and customer details, including electronic addresses when the selected invoice format needs them.
Enter products or services, quantities, prices and discounts. Add remarks and any actual received advances, then use Check totals to find incomplete or inconsistent data.
Save the editable .luabill project, choose an output folder and create PDF/XML. Successful generation shows the result files and can open the PDF automatically.
Read the PDF and, for electronic formats, confirm that validation passed. Send XRechnung as XML or ZUGFeRD as its hybrid PDF through the recipient's agreed channel. Keep the issued PDF/XML together with both validation reports and the version audit.
Keep the LuaBill package compact and prepare document tools online. The new setup wizard reuses suitable installed tools and downloads only the components required by your selected formats.
v0.1.30 · 84.7 MB · EXE
Windows 10 version 1809 or newer, or Windows 11, x64. Python, PySide6/Qt and Mustang are included.
The installer is not yet signed with an Authenticode certificate, so Windows may show an unknown publisher. Verify the download source and published SHA-256.
v0.1.30 · 58.5 MB · GZ
Desktop Linux with glibc 2.34+ on x86-64 or glibc 2.39+ on ARM64. Requires Python 3.10–3.15, venv and pip; Python 3.12 or 3.13 is recommended. Alpine/musl is unsupported.
Python and Qt are not bundled. Native installation and graphical launch on Linux have not yet been verified in the current Windows build environment. Treat this package as a preview.
v0.1.30 · 58.5 MB · ZIP
macOS 14.4 or newer, Intel or Apple Silicon, with a compatible Python 3.10–3.15. Python 3.12 or 3.13 is recommended.
Python and Qt are not bundled. The locally created launcher has no Apple Developer ID signature or notarization, and native installation and graphical launch have not yet been verified on macOS here.
A smaller installer, guided document setup →
Windows has a ready application installer. Linux and macOS have preview installers from source. See each platform's requirements and verification status before downloading.
The setup wizard prepares the components needed for your selected formats. Review its plan, then start preparation explicitly; opening the wizard or starting LuaBill does not begin downloads.
Required for document generation
Use one TeX distribution with lualatex and texlua. On Windows, the wizard can install Basic MiKTeX and prepare the template's 19 direct packages, their dependencies and EN/DE/FR/IT/RU language data. Existing suitable TeX is reused. A LuaHBTeX version banner is normal; keep using lualatex.
Required for ZUGFeRD; optional for ordinary PDF
Ghostscript prepares PDF/A-3 for ZUGFeRD and can compress ordinary PDFs. The wizard includes it when the ZUGFeRD profile requires it and reuses a suitable installed copy.
Required for XML, XRechnung and ZUGFeRD
A compatible Java 17+ runs the included Mustang validator and packager. New Windows preparation offers Temurin JRE 21; the macOS Homebrew route uses Temurin 21 JDK. Ordinary PDF generation does not need Java.
Included on Windows; set up separately on Linux/macOS
Python runs the application and PySide6/Qt supplies the windows and menus. Linux/macOS installers create an isolated environment; they require an existing compatible Python and download PySide6 during setup.
Prepared for all five document languages
The wizard downloads a verified set of Noto Sans and Noto Sans Mono into LuaBill's own user-data folder, with its upstream license. The fonts are loaded from those files and are not registered in the operating system. Existing system-font fallbacks remain available.
The installer does not contain a full TeX system. First preparation may download TeX tools, packages, fonts and the optional Java/Ghostscript components. The wizard tests all five languages and a fictional document through the selected generation profile; the read-only component report alone only confirms partial availability.
LuaBill 0.1.27 adds a multilingual setup wizard. Prepare the tools once, then create documents locally without downloading a complete LaTeX distribution inside the LuaBill installer.
Open Help → Prepare document creation, or keep the preparation option selected at the end of Windows Setup. Choose PDF, XML/XRechnung or ZUGFeRD.
The wizard identifies suitable TeX, Java and Ghostscript installations and shows the preparation plan. Click Prepare selected components to start downloads and installation.
Windows can start with Basic MiKTeX. The wizard prepares LuaBill's 19 direct LaTeX packages, their dependencies and five document languages, plus private Noto Sans and Noto Sans Mono files. Java and Ghostscript follow the chosen profile.
The wizard compiles the standalone LaTeX check twice and runs a fictional invoice through the selected generation path. At completion, open the test PDF; if a step fails, open the log folder or copy the diagnostic details.
LuaLaTeX, texlua, the template's packages and suitable fonts. Java and Ghostscript are not required for ordinary PDF generation.
The PDF components plus Java 17+ for Mustang XML validation. New Windows preparation offers the smaller Temurin JRE 21.
The PDF/XML components plus Ghostscript to prepare PDF/A-3 and package the embedded XML; the resulting container is validated.
The application package remains compact; missing tools still require separate Internet downloads. All three generation profiles passed checks on Windows with installed tools. Full dependency installation on a clean Windows computer and native Linux/macOS setup still need separate verification.
The separate test works without LuaBill: select LuaLaTeX and compile twice. It checks all 19 direct packages, five languages, formulas, icons, tables and fonts. MiKTeX can fetch missing TeX packages when on-the-fly installation is enabled; system fonts need a separate installation outside the wizard. SHA-256 checksums
Install the current release over your existing LuaBill and check the active invoice rules from Help. Seven editable examples with ready-made PDFs are included in the application and available as a complete ZIP.
Close LuaBill, then run the new installer over the existing installation. Removing the previous version first is unnecessary.
sh install.shsh Install_LuaBill.commandSave manual program-file edits separately. Linux/macOS stops on a conflicting file. Review rule versions under Help → E-invoice standards and updates after upgrading; installing an older release over a newer one is not recommended.
Open Help → Prepare document creation to choose a profile, review installed tools and prepare missing components.
Starting the wizard only scans. Click Prepare selected components to begin downloads and installation, or verify the current setup. Logs and test PDFs can be opened from the wizard.
A new archive's uninstaller can remove an older installation without reinstalling LuaBill.
sh uninstall.shsh Uninstall_LuaBill.commandThe small separate archive also removes existing installations. System TeX, Java, Ghostscript and downloaded package folders are retained.
Separate Linux/macOS uninstaller ↓ ZIP · 23 KB
A PDF filename does not tell you whether it contains an electronic invoice. Choose the format the recipient accepts and check what LuaBill generated.
A visual business document for reading, printing and review. An ordinary PDF does not contain a structured invoice dataset.
Send where an ordinary PDF is the appropriate agreed format.
A structured CII invoice with a separate visual PDF and a validation report.
The XML is the structured invoice. Send it through the agreed channel; the PDF can accompany it as a view.
Structured XML with the references and electronic endpoints required by the chosen profile. A separate PDF view helps you review the content.
Submit the XML to the recipient's address or portal, using the routing reference they supplied.
A hybrid PDF combines the readable document and its EN 16931 XML attachment. LuaBill also saves an identical separate XML file.
Normally send the hybrid PDF. Follow the recipient's requirements if they also request the separate XML.
LuaBill 0.1.30 includes a reviewed package of current CII rules. Read the active versions in the application and retain the validation evidence with your issued documents.
Rule package included in LuaBill 0.1.30, verified on 28 October 2026.
Open Help → E-invoice standards and updates, or use Validation versions beside a generated result. The generation log and saved audit show rule and validator versions, SHA-256 hashes, the XML profile and the results of the checking stages.
*.pdf*.xml*.validation.xml*.validation-rules.xml*.validation-info.jsonOfficial rule and validator sources: EN 16931 ↗ · XRechnung / KoSIT ↗ · ZUGFeRD / FeRD ↗ · Mustangproject ↗
Yes. LuaBill's own code and documentation are available under Apache License 2.0, including for commercial use under its terms. There is no LuaBill subscription. Third-party components keep their original licenses.
No. The graphical form handles ordinary editing. LuaLaTeX must be installed, but you do not need to write LaTeX commands to fill in the structured fields. Developers can adapt the source and templates.
No. On Windows, the setup wizard can install Basic MiKTeX and the packages required by LuaBill. It keeps the application download compact, but preparing missing document tools still requires Internet access and additional downloads. Linux distribution packages may group more fonts and packages together; the macOS Homebrew route uses BasicTeX plus the required additions. Existing suitable TeX installations are reused.
Yes. Remarks supports a restricted set of LaTeX commands for text emphasis and formulas, including integrals, sums and fractions. Enclose mathematics in \( ... \) or \[ ... \]; ordinary text needs no markup. PDF renders the formulas. In XML-exported notes, the LaTeX source remains plain text and is not automatically rendered by the recipient. Introductory text is PDF-only. Arbitrary packages and macros are not supported.
LuaBill generates documents locally and does not upload invoices to a generation service. Clicking Check in VIES sends the customer VAT ID to the European Commission’s VIES service. Component preparation downloads software, packages and fonts. A requested or enabled weekly update check reads public release metadata without sending invoice, customer or XML data. You control how the finished invoice is sent.
Enter the complete EU VAT ID with its country prefix (XI for Northern Ireland, EL for Greece), then click Check in VIES in Customer. A completed reply records the result and date; save the .luabill project to retain them. A negative reply removes the green mark. Service or connection errors leave the previous record unchanged. The chosen validity period is counted in calendar days relative to today, and to the generation day for PDF; the invoice date does not affect it. VIES does not check the customer’s name or address here or establish the tax treatment of the transaction.
The current version supports sellers based in Germany and customers in Germany, other EU countries or outside the EU. Select the actual transaction scenario and delivery country; a foreign customer alone does not establish a VAT exemption.
Yes. Choose a currency code independently of the customer's country. LuaBill does not perform exchange-rate conversion. The payment QR code is for eligible EUR/SEPA invoices; electronic monetary totals support at most two decimal places.
The hybrid PDF already contains the XML. Normally that PDF is sent as the invoice; the recipient may have additional requirements. XRechnung, by contrast, is submitted as its XML file, not just the PDF view.
The initial suggestions are Documents/LuaBill/Projects and Documents/LuaBill/Output. You can choose other folders. The output location is a preference for your user account on that computer; it is not stored as a fixed path in every project.
A Windows installer is available with Python and Qt included. Linux and macOS packages install from source and are currently previews: their native installation and graphical launch still need verification on those operating systems.
LuaBill focuses on preparing business documents. It does not replace bookkeeping, tax advice, a legally assessed archive or the controls for your invoice-number sequence. Quotations and orders remain PDF business documents, not electronic invoices.
Read the first compiler error in the Generation log or the invoice validation report. Use Help → Prepare document creation to verify the tools and create a sample; the wizard can open its log folder and copy diagnostic details. The standalone LaTeX test below also helps identify a missing package or font.
No. Close LuaBill and run the new installer into the same folder. On Linux/macOS, reuse your custom --prefix. Personal projects, results and preferences remain in place. Save manual program-file edits separately; the Unix installer stops on a conflicting file.
A “This is LuaHBTeX” version banner is normal: LuaLaTeX uses that engine in TeX Live. The command should remain lualatex, and texlua also needs its own launch name. LuaBill 0.1.14 and newer preserve these aliases correctly. Use the current package rather than replacing lualatex with a direct luahbtex command.
Open Help → E-invoice standards and updates, or click Validation versions beside the generated result. The audit separates the active rules from older resources inside the original Mustang JAR. Keep the .validation-info.json file and both XML validation reports with the issued document; they identify the checked profile, rule versions, hashes and stage results.
Use Check for updates in the standards dialog, or enable the optional weekly check when LuaBill starts. It is off by default. The check compares public technical releases and sends no invoice data; it does not install rules. A new release prompts review of a LuaBill update, not an automatic conclusion about legal deadlines or your recipient’s requirements.
LuaBill deliberately preserves documents, preferences and modified or untracked files. Separately installed system tools and the downloaded package folder also remain. Read the uninstaller's warnings and remaining-file paths. The current archive's uninstaller can remove an earlier installation without reinstalling it.
LuaBill is an open project. Practical feedback from people who issue real business documents is as valuable as a code contribution.
Test a quotation, invoice or order with fictional data. Describe what you expected, what happened and which version and operating system you used.
Help refine translations, examples and explanations. Clear words make unfamiliar fields easier for the next person.
Help verify Linux/macOS setup, fonts, printer output and invoice exchange with recipient systems. Share reproducible findings without customer or banking secrets.
Download the source, read LICENSE and NOTICE, and explore the templates and tests. Improvements to accessibility, validation and document layout are welcome.
Have a concrete suggestion or want to help? Contact the authors using the links on this page. No account is needed to use the application.