Free software for the people behind small businesses

Your work matters. The paperwork should be easier.

Create clear invoices, quotations and orders with LuaBill. Enter your details in a familiar desktop form and let LuaLaTeX handle the typesetting — from a professional PDF to a structured electronic invoice.

Open source · No subscription · Documents processed on your computer

Example document
01 · PDF / XRechnung / ZUGFeRD 02 · Windows / Linux / macOS03 · DE / EN / FR / IT / RU
01 / LuaBill

More time for your business

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.

We use LuaLaTeX because careful typography makes a difference. LaTeX is an established system for high-quality technical and scientific publishing; LuaBill brings that care to everyday business documents through a graphical interface.

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 ↗
The LuaBill desktop interface. Interface and document languages can be selected separately.
LuaBill 0.1.10 · English · Example document
02 / LuaBill

One clear workflow, from quotation to invoice

A desktop form for the details, a consistent template for the document and shared calculations for PDF and XML.

Documents with care

LuaLaTeX creates a consistent layout, readable item tables and multilingual text. Review the resulting PDF immediately in your usual viewer.

Ten document types

Create invoices, quotations, delivery notes, order confirmations, proforma invoices, purchase orders, credit notes, cancellation invoices, quotation requests and letters.

Structured electronic invoices

Export EN 16931 CII XML, XRechnung or ZUGFeRD with XML embedded in PDF/A-3. LuaBill runs external validation and keeps the result report alongside your files.

Languages and currencies

Choose English, German, French, Italian or Russian separately for the interface and document labels. Use EUR, USD, RUB, CNY and other currency codes; the active currency stays visible in the window.

VAT scenarios with explanations

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.

Calculations you can review

Work with quantities, 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.

Customer details, clearly entered

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.

Useful finishing details

Add project remarks, signature and stamp images, and an EPC/SEPA payment QR code for eligible EUR invoices. Signature images are visual marks; they are not cryptographic signatures.

Local projects and remembered settings

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.

A workflow you can adapt

Import existing .bill files, 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.

03 / LuaBill

Your first document, step by step

You do not need to write Lua or LaTeX to fill in the form. Start with an example, then replace its fictional details.

  1. Install the document tools

    Install a TeX distribution with LuaLaTeX and texlua, plus suitable fonts. Add Java 17+ for electronic invoices and Ghostscript for ZUGFeRD; the component links below explain your options.

  2. Install LuaBill and check components

    Choose the package for your operating system. Open Help → Components and installation to see what was found, install anything missing and check again.

  3. Set the document and parties

    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.

  4. Add items and review totals

    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.

  5. Save your project and generate

    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.

  6. Inspect the result and send the right file

    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 files and validation report.

User guide ↗
04 / LuaBill

Download LuaBill 0.1.10

LuaBill runs locally. The packages differ in how Python and the interface libraries are installed; the document-generation tools remain separate on every platform.

Ready installer · x64

Windows

Download for Windows

v0.1.10 · 81.5 MB · EXE

Windows 10 version 1809 or newer, or Windows 11, x64. Python, PySide6/Qt and Mustang are included.

Details
  1. Install MiKTeX or TeX Live with LuaLaTeX/texlua and the required fonts. Add Java and Ghostscript if your output format needs them.
  2. Run the LuaBill installer for your user account. Choose whether to add a desktop shortcut and associate .luabill projects.
  3. Start LuaBill from the Start menu or shortcut and open the component check. No separate Python installation is needed.

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.

Source installer · preview

Linux

Download for Linux

v0.1.10 · 55.6 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.

Details
  1. Install LuaLaTeX/texlua, fonts and the required system libraries using your distribution's packages. Add Java 17+ and Ghostscript for the electronic formats you need.
  2. Extract the complete archive, open a terminal in its folder and run sh install.sh. Internet access is needed to install the pinned PySide6 into a private Python environment.
  3. Start LuaBill from your application menu. The default installation is under $XDG_DATA_HOME/LuaBill when that variable is absolute, otherwise ~/.local/share/LuaBill.

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.

Source installer · preview

macOS

Download for macOS

v0.1.10 · 55.6 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.

Details
  1. Install MacTeX or another suitable TeX distribution and fonts. Add Java 17+ for electronic invoice validation and Ghostscript for ZUGFeRD if it is not already supplied by your TeX installation.
  2. Extract the ZIP and open Install_LuaBill.command. The explicit installation step uses the Internet to install PySide6 into a private Python environment.
  3. Start ~/Applications/LuaBill.app. The application files are installed under ~/Library/Application Support/LuaBill.

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.

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 tools behind your documents

Install only the components your output needs. LuaBill's Help menu explains missing tools and links to their official download pages.

LuaLaTeX + texlua

Required for document generation

Choose one TeX distribution. Keep it updated and install the packages used by LuaBill; a minimal TeX installation may need additional packages on first use.

Ghostscript

Required for ZUGFeRD; optional for ordinary PDF

Ghostscript prepares PDF/A-3 for ZUGFeRD and can compress ordinary PDF output. Install it separately or through your operating system's package manager.

Java 17+

Required for XML, XRechnung and ZUGFeRD

A compatible JRE or JDK runs the included Mustang validator and packager. Ordinary PDF generation does not need Java.

Python + PySide6/Qt

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.

Noto Sans or DejaVu Sans

Recommended for all document languages

Install a suitable Unicode font so that Latin and Cyrillic text render correctly. Your operating system or TeX distribution may already provide the required fonts.

Once setup is complete, document processing is local. Installing dependencies or missing TeX packages may access the Internet. Restart LuaBill after changes to your system PATH.

05 / LuaBill

A readable document. Structured data when you need it.

A PDF filename does not tell you whether it contains an electronic invoice. Choose the format the recipient accepts and check what LuaBill generated.

PDF

.pdf

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.

EN 16931 CII XML

.xml + PDF view

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.

XRechnung

XRechnung 3 CII .xml

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.

ZUGFeRD

PDF/A-3 with embedded XML

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.

What LuaBill checks

  • The shared calculation engine checks amounts and required input. Mustang validates the structured XML before a successful electronic result is published.
  • ZUGFeRD additionally passes PDF/A and container checks; the extracted XML attachment is compared with the separate XML file. Keep the .validation.xml report with your issued invoice.
  • Technical validation does not verify tax registrations, the facts of a transaction or invoice-number uniqueness. Review the document's business content and the recipient's submission requirements.
06 / LuaBill

Before you start

Is LuaBill free for business use?

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.

Do I need to know Lua or LaTeX?

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.

Are my customer and invoice details uploaded?

LuaBill generates documents locally and does not upload invoice data to a generation service. Initial dependency installation may use the Internet. Sending the finished invoice is a separate step that you control.

Can I invoice customers outside Germany?

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.

Can I use USD, RUB or CNY?

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.

Does a ZUGFeRD PDF need a separate XML attachment in my email?

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.

Where are my projects and results stored?

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.

Are all three operating systems equally tested?

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.

Is this a complete accounting or tax system?

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.

How do I check a failed generation?

Open the Generation log and the validation report for the specific error. Help → Components and installation shows missing tools; the multilingual user guide explains fields and common problems. Correct the project and generate again.

07 / LuaBill

Help make everyday paperwork easier

LuaBill is an open project. Practical feedback from people who issue real business documents is as valuable as a code contribution.

Try a realistic workflow

Test a quotation, invoice or order with fictional data. Describe what you expected, what happened and which version and operating system you used.

Improve language and guidance

Help refine translations, examples and explanations. Clear words make unfamiliar fields easier for the next person.

Check a platform or format

Help verify Linux/macOS setup, fonts, printer output and invoice exchange with recipient systems. Share reproducible findings without customer or banking secrets.

Adapt and share the code

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.

Open source · Apache License 2.0

Made by people who care about useful tools

Vsevolod Shashkov
Mikhail Shashkov

LuaBill grew from our day-to-day business needs and is used at DIETZ automation GmbH. We are building it to give other small businesses a clear, adaptable way to produce professional documents and to make the work around them less burdensome.

DIETZ automation GmbH ↗

Copyright 2026 Vsevolod Shashkov & Mikhail Shashkov. LuaBill's own code and documentation: Apache License 2.0. Third-party software and assets retain their respective licenses and acknowledgements.