LuaBill — Руководство пользователя

LuaBill создаёт бизнес-документы на вашем компьютере с помощью LuaLaTeX: счета, коммерческие предложения, заказы и другую деловую корреспонденцию. Заполняйте поля программы — редактировать файл .bill вручную не требуется. Язык этого руководства соответствует языку интерфейса. Язык самого документа выбирается отдельно.

Для перехода к нужной теме используйте ссылки в содержании. Кнопка Содержание возвращает к началу руководства. Для поиска нажмите Ctrl+F (в macOS — Cmd+F), введите слово или фразу и нажмите Enter или Далее. Кнопка Назад ищет предыдущее совпадение. Поиск продолжается с начала или конца руководства, когда достигнута его граница. Окно руководства можно оставить открытым во время работы с документом.

Содержание: Первый документ · Открытие и сохранение · Документ и НДС · Продавец и покупатель · Позиции и суммы · Примечания · Полученные авансы · Результаты, QR и изображения · Электронные счета · Компоненты · Настройки и сброс · Решение проблем · Клавиши · Лицензии

1. Создание первого документа

  1. Выберите Файл → Новый или Файл → Пример, чтобы изучить заполненный образец. Реквизиты компаний и налоговые данные в примере вымышлены: замените их перед использованием.
  2. На вкладке Документ укажите тип документа, язык документа, номер, даты, валюту и налоговый режим. Проверьте состояние пометки «Черновик».
  3. Заполните вкладки Продавец и Покупатель, включая отдельные поля почтовых адресов и коды стран. Добавьте банковские и налоговые реквизиты.
  4. На вкладке Описание товара добавьте товары или услуги. При необходимости заполните Примечания и фактически Полученные авансы.
  5. На вкладке Файлы и вывод выберите формат и папку результатов. Для первоначальной проверки внешнего вида удобно выбрать обычный PDF.
  6. Выберите Документ → Проверить суммы (F7). Исправьте ошибки, о которых сообщает программа, затем выберите Создать PDF / XML (F9). Для нового документа сначала потребуется указать имя файла проекта.
  7. Проверьте открывшийся PDF и панель результатов. Перед отправкой электронного счёта также убедитесь, что внешняя проверка завершилась успешно.

2. Проекты, открытие и сохранение

ФайлНазначение
.luabillРедактируемый проект в формате JSON. Открывайте этот файл для продолжения работы. Это исходные данные документа, а не счёт для отправки покупателю.
.billПрежний формат исходных данных на Lua. Команда Файл → Открыть… импортирует его. При сохранении создаётся новый проект .luabill, а исходный файл остаётся без изменений. Импортируйте Lua-файлы только из доверенных источников.
.pdf, .xmlСформированные результаты. Для исправления данных отредактируйте проект и создайте документы заново.

Команда Сохранить записывает текущий проект. Сохранить как… создаёт проект по другому пути. Черновик можно сохранять до заполнения всех обязательных полей счёта. Команда Файл → Экспортировать .bill… отдельно создаёт входной файл для прежнего обработчика. Профиль продавца — самостоятельный JSON-файл, который сохраняется через Настройки → Сохранить профиль продавца.

Открытие проекта или примера само по себе не создаёт несохранённых изменений. Звёздочка в заголовке означает, что данные документа были отредактированы. Перед созданием результатов программа сохраняет новый или изменённый проект. Для уже открытого неизменённого .luabill повторное имя файла не запрашивается, а проект не перезаписывается. Сохранение настроек при выходе не заменяет команду Сохранить для самого документа.

Окна открытия и первого сохранения запоминают последнюю папку проектов. Команда Сохранить как… предлагает папку текущего проекта. Если настроена связь типа файлов, двойной щелчок по .luabill открывает LuaBill с данными этого проекта. Установщик Windows предлагает настроить эту связь; при запуске из исходников доступна команда Настройки → Связать файлы .luabill с LuaBill…. Если папка программы, запускаемой из исходников, была перенесена, зарегистрируйте её новое расположение ещё раз.

3. Документ, язык, валюта и НДС

Код текущей валюты виден на панели инструментов и в заголовке окна на всех вкладках. Он обновляется при выборе другой валюты и открытии документа.

На вкладке Документ выбирается коммерческое предложение, счёт, накладная, подтверждение заказа, счёт-проформа, заказ, корректировочный счёт, сторнирующий счёт, запрос предложения или письмо. Поле Вид счёта различает полный, авансовый, частичный и итоговый счета. Введите собственный номер: LuaBill не присваивает номера автоматически и не проверяет их последовательность для всего предприятия. Укажите действительную дату документа и дату поставки или оказания услуги. Срок оплаты и срок действия предложения — отдельные значения. Для корректировочных и сторнирующих счетов указываются номер исходного счёта и, если известна, его дата.

Поле Язык документа выбирает EN, DE, FR, IT или RU для печатных заголовков и стандартного текста. Команда Настройки → Язык интерфейса независимо меняет меню, справку и кнопки программы. Эти настройки не переводят описания ваших товаров и произвольный текст. Изменение языка существующего документа меняет его данные; изменение только языка интерфейса не меняет документ.

Используйте трёхбуквенный код валюты, например EUR, USD, JPY, RUB или CNY, независимо от страны покупателя. RUB и CNY также доступны в списке валют. Все суммы вводятся в выбранной валюте; пересчёт по обменному курсу не выполняется. Денежные итоги электронного экспорта поддерживают не более двух знаков после десятичного разделителя. Для валют, обычно использующих три или четыре знака, необходимо явно настроить экспорт с двумя знаками в исходных данных; отдельного поля для этого в графическом интерфейсе нет.

Выберите Налоговый режим, соответствующий реальной операции: внутри Германии, товары компании в EU, экспорт товаров за пределы EU, обычная услуга B2B компании в EU или обычная услуга B2B за пределами EU. Для товаров заполните поле Фактическая страна поставки (ISO). Сам по себе иностранный адрес покупателя не устанавливает право на освобождение от НДС.

Ставка НДС документа применяется к позициям по умолчанию. Пустая Категория НДС означает автоматическое определение. Явную категорию и основание освобождения указывайте только при наличии соответствующего основания. Настройка Малый бизнес (§19 UStG) предназначена для соответствующего режима внутри Германии. Выбор иностранного налогового режима удаляет отдельные переопределения НДС в позициях и устанавливает ставку документа в ноль; включение режима малого бизнеса также удаляет переопределения позиций. После изменения этих настроек проверьте позиции.

LuaBill формирует пояснения по НДС и ссылки на нормы закона на основании выбранного режима и рассчитанных налоговых групп. Настройка Кликабельные ссылки на закон управляет переходами по ссылкам, а не наличием пояснений и самих правовых ссылок в тексте. Особые операции, B2C/OSS и подтверждения права на освобождение требуют отдельной оценки: выбор режима в программе сам по себе не подтверждает налоговое основание.

4. Продавец и покупатель

Необязательный Номер клиента — ваш идентификатор этого покупателя. Вводите его текстом, например 000123, чтобы сохранить начальные нули, либо оставьте поле пустым. LuaBill выводит его в PDF и передаёт как идентификатор покупателя в электронный XML (customer.buyer_id). Он отличается от номера счёта, ссылки на заказ и ссылки покупателя/Leitweg-ID.

Укажите компанию или полное имя, улицу и номер дома, при необходимости вторую строку адреса, почтовый индекс, город и двухбуквенный код страны ISO. Текущая версия поддерживает продавца только из Германии: его код страны должен быть DE. Покупатель может находиться в Германии, другой стране ЕС или за пределами ЕС, например DE, FR или US. Вводите обычный текст. Структурированные адреса продавца и покупателя используются как в PDF, так и в XML.

Для любого электронного экспорта (XML, XRechnung и ZUGFeRD) текущая реализация требует корректный IBAN продавца. Это условие проверки LuaBill действует и для документов в валютах, отличных от EUR.

Для продавца укажите контакт или подписанта, электронную почту, телефон, сайт, налоговый номер и/или VAT ID, банк, IBAN и BIC. Поле Налоговый номер соответствует налоговому номеру продавца (Steuernummer); оно отличается от идентификатора НДС (USt-IdNr.) и регистрационного номера компании. Заполните правовую форму, юридическое местонахождение, регистрационный суд, регистрационный номер, всех руководителей — по одному в строке — и председателя наблюдательного совета, когда эти сведения применимы. Контакт или подписант не заменяет полный список руководителей.

Для покупателя укажите ссылку на заказ, контакт и при необходимости отдельного получателя и адрес поставки. Поле Ссылка покупателя / Leitweg-ID находится на вкладке Документ. Используйте точный идентификатор маршрутизации, сообщённый получателем. Произвольный номер заказа не становится автоматически корректным Leitweg-ID.

Контакт покупателя теперь состоит из отдельных полей: Контактное лицо, Должность, Email, Телефон, Мобильный телефон, Факс и Сайт. Вводите обычный текст без команд LaTeX и разделителей строк \\; неиспользуемые поля оставляйте пустыми. В PDF каждое значение выводится отдельной строкой, а email, телефон, мобильный, факс и сайт сопровождаются значками. По ссылкам email, сайта и телефонных номеров можно переходить из PDF. Имя контакта, телефон и email также могут передаваться в электронный XML; остальные контактные строки предназначены для визуального документа.

При открытии старого документа LuaBill распознаёт знакомый формат общего поля контакта и показывает значения в отдельных полях, не переписывая документ и не помечая его как изменённый. Нераспознанный LaTeX сохраняется в поле Дополнительный текст контакта (старый формат), которое показывается только при необходимости. Текст остаётся до его явного редактирования или удаления. После редактирования и сохранения контакта используются структурированные поля. Импорт .bill с сохранением нового .luabill не изменяет исходный файл.

Электронный адрес счёта — электронная точка получения или отправки счёта; для неё также выбирается Схема адреса. Для адреса электронной почты используется схема EM. XRechnung требует электронные адреса обеих сторон и контактные данные продавца. Электронная почта только в поле контакта не заменяет отдельные поля электронного адреса счёта.

Сохраните реквизиты продавца через Настройки → Сохранить профиль продавца, затем загружайте этот профиль в другие документы. Загрузка профиля заменяет текущие данные продавца и помечает документ как изменённый. После неё проверьте банковские реквизиты и пути к изображениям.

5. Позиции и суммы

Нажмите Добавить строку и укажите описание, количество, цену единицы, скидку в процентах, при необходимости отдельную ставку НДС позиции, код единицы, категорию НДС и артикул/SKU. Для редактирования дважды щёлкните по строке либо выделите её и нажмите Enter. Для удаления используйте Удалить выбранное или Delete. В окне редактирования строки явно сохраните изменения либо отмените их.

В качестве десятичного разделителя можно использовать точку или запятую; разделители тысяч не вводите. Количество и цена единицы могут содержать до шести знаков после разделителя, ставки и скидки — до четырёх. Если ставка НДС позиции не заполнена, применяется ставка документа. Для электронных счетов используйте подходящий код единицы, например C62 для одной штуки. Скидка уже уменьшает сумму строки — повторно вычитать её в другом месте не нужно.

Команда Проверить суммы проверяет текущие данные и показывает сумму без НДС, НДС и сумму к оплате. Это отдельная проверка, которая не заменяет внешнюю проверку электронного счёта. При создании PDF и XML используется общий механизм расчёта. Перед выпуском документа проверьте смешанные группы НДС, скидки и учтённые платежи.

6. Примечания и условия оплаты

Вкладка Примечания содержит таблицу заголовков и текстов, вступительный текст, дополнительное примечание счёта и необязательные собственные условия оплаты. Вводите обычный текст; писать \textbf{...} не требуется. Стандартные ключи, например project, переводятся на язык документа. Заголовки и короткие подписи перед двоеточием, например Project:, печатаются жирным шрифтом.

Если существующее примечание многоязычное, редактирование текста меняет вариант для текущего языка документа и сохраняет остальные варианты. Произвольный текст автоматически не переводится. Общие текстовые примечания попадают и в PDF, и в электронный XML. Импортированные старые примечания с произвольным LaTeX могут оставаться только в PDF: важные указания по счёту и оплате внесите в общие текстовые поля.

7. Полученные авансы и итоговые счета

На вкладке Полученные авансы указывайте только фактически полученные платежи: отдельная строка для каждого платежа и каждой группы НДС. Введите номер и дату исходного счёта, дату получения платежа, сумму нетто, сумму НДС, ставку и категорию НДС, а при необходимости основание освобождения. Все суммы выражаются в валюте текущего счёта. Если платёж относится к нескольким группам НДС, повторите его ссылку в соответствующих строках.

LuaBill суммирует полученные платежи с НДС и уменьшает сумму к оплате. Полный состав товаров и услуг оставьте в таблице позиций; повторно вычитать авансы отрицательными позициями не нужно. Суммы НДС должны согласовываться со ставками, датами и налоговыми группами итогового счёта. Если дополнительно указана общая сумма полученных платежей, она должна совпадать с суммой подробных строк. Для итогового счёта без полученных авансов используйте нулевую сумму полученных платежей. LuaBill не ищет предыдущие счета и не проверяет поступления по банку.

8. Папка результатов, QR-код, подпись и печать

По умолчанию для проектов предлагается папка LuaBill/Projects внутри системной папки «Документы», а для результатов — LuaBill/Output. При необходимости выберите свои папки. Папка результатов и режим Сохранять результаты рядом с проектом .luabill относятся к текущему пользователю на этом компьютере и действуют для всех проектов. В .luabill они не сохраняются. Старые пути вывода из проектов игнорируются; уже существующие файлы автоматически не перемещаются.

Имена результатов соответствуют имени проекта: Invoice-001.pdf, Invoice-001.xml и Invoice-001.validation.xml. При повторном создании прежние результаты данного проекта могут быть заменены. Архивируйте выпущенную версию перед созданием исправлений, которые нужно хранить отдельно.

После успешного создания PDF открывается в системной программе просмотра, а панель результатов показывает пути и кнопки Открыть PDF, Открыть XML и Открыть папку результатов. Автоматическое открытие управляется через Настройки → Открывать PDF после создания. Если данные документа или настройки вывода изменены, прежний результат устарел — создайте документ заново. Подробные сообщения находятся на вкладке Журнал создания. При ошибке формирования новый проверенный счёт не публикуется.

Настройка Платёжный QR-код (EUR) использует данные платежа EPC/SEPA и остаток суммы к оплате; рядом с кодом печатается пояснение. Код доступен для счетов в EUR с корректными IBAN и платёжными данными, если сумма к оплате положительная. Он не является универсальным способом оплаты в USD или других валютах и не подтверждает факт оплаты. Проверьте банковские реквизиты и испытайте код в совместимом банковском приложении.

Выберите изображения подписи и печати и задайте их высоту, например 12mm и 35mm. В заключительном блоке дата и имя печатаются с подчёркиванием, подпись располагается по центру, а печать накладывается на область подписи. Проверьте итоговый PDF с собственными изображениями и их размерами. Эти изображения являются графическими отметками, а не криптографической электронной подписью. Проект хранит пути к изображениям, а не сами изображения: при переносе проекта скопируйте их и при необходимости укажите новые пути.

9. Форматы и отправка электронного счёта

ФорматРезультат и отправка
PDFОбычный визуальный PDF. Отправляйте его, когда такой формат подходит получателю. Сам по себе он не содержит структурированного электронного счёта.
XML · EN 16931Визуальное представление PDF, структурированный CII XML и отчёт проверки. Структурированный счёт находится в XML; отправьте его по согласованному с получателем каналу, при необходимости вместе с PDF.
XRechnungВизуальное представление PDF, XRechnung 3 CII XML и отчёт. Передайте XML в портал или по адресу, указанному получателем, с требуемой ссылкой покупателя/Leitweg-ID.
ZUGFeRD · PDF/A-3 + XMLГибридный PDF со встроенным XML, идентичный отдельный XML и отчёт. Обычно отправляется гибридный PDF; необходимость отдельного XML определяется требованиями получателя.

Электронный экспорт предназначен для счетов, корректировочных и сторнирующих счетов. Предложения и заказы остаются деловыми PDF-документами. Выбор электронного формата не превращает коммерческое предложение в счёт.

Заполните номер, дату документа и действительную дату поставки или оказания услуги, реквизиты обеих сторон с адресами и странами, содержательные описания позиций, валюту, корректные налоговые группы и налоговые реквизиты продавца. В зависимости от операции также требуются VAT ID, основания освобождения и платёжные сведения. Для XRechnung дополнительно проверяются ссылка покупателя, электронные адреса обеих сторон и контактные данные продавца. Корректировочный и сторнирующий счета должны ссылаться на исходный счёт. Образцы и сообщения проверки помогают найти незаполненные поля; вымышленные идентификаторы из примеров нельзя использовать в качестве настоящих.

LuaBill проверяет XML с помощью Mustang. Для ZUGFeRD дополнительно выполняются проверки PDF/A и контейнера, а извлечённое вложение сравнивается с отдельным XML. Убедитесь в наличии сообщения об успешной проверке и сохраните отчёт .validation.xml. Вложение можно также посмотреть в PDF-просмотрщике с поддержкой вложенных файлов; некоторые программы его не показывают. Одно имя файла или внешний вид документа не доказывает, что PDF является ZUGFeRD. Проверка контролирует правила документа, но не подтверждает регистрацию налоговых номеров, уникальность номера счёта, реальную поставку или право на освобождение от НДС.

10. Компоненты и установка

Открывайте Справка → Компоненты и установка по мере необходимости. Окно показывает обнаруженные пути и версию Java, поясняет, каких программ не хватает, и открывает официальные страницы загрузки только по щелчку по ссылке. После установки нажмите Проверить ещё раз. Если компонент по-прежнему не найден, перезапустите LuaBill и повторите проверку.

Установщик Windows содержит Python — среду выполнения программы, PySide6/Qt — окна, меню и кнопки — и Mustang. Для этой версии отдельно устанавливать Python и PySide6 не нужно. При запуске из исходников необходимы Python, PySide6 и прилагаемый сценарий Setup: в Windows используется Setup_LuaBill.cmd, в macOS/Linux — sh Setup_LuaBill.sh. Затем запускайте соответствующий сценарий Start. При установке зависимостей Setup может обращаться к сети. Обработка документов выполняется локально; данные счетов не загружаются в онлайн-сервис.

При минимальной установке TeX потребуются LuaLaTeX, fontspec, fontawesome, babel с EN/DE/FR/IT/RU, csquotes, tikz, fancyhdr, enumitem, hyperref, soul, lastpage, textpos, luacode, ltablex, draftwatermark и eso-pic. Для текста Unicode установите Noto Sans или DejaVu Sans. Статус «Найден» означает, что программа обнаружена, но дополнительные пакеты TeX или шрифты всё ещё могут понадобиться. Названия недостающих компонентов указываются в журнале создания.

11. Сохранённые настройки и возврат к значениям по умолчанию

При обычном выходе LuaBill запоминает язык интерфейса, исходные настройки новых документов, включая язык документа, папку и режим размещения результатов, автоматическое открытие PDF, последние папки диалогов, расположение окна, активную вкладку и ширину столбцов. При отмене выхода эти настройки выхода не сохраняются. Открытый проект предоставляет собственные данные документа. Профили продавца, реквизиты покупателя, номера, даты, позиции и примечания не заменяют сохранение самого проекта.

Настройки хранятся через QSettings("LuaBill", "LuaBill"); данные приложения находятся в ключе preferences/json. Хранилище относится к текущему пользователю ОС, а не к проекту или папке программы. Перед сбросом сделайте резервную копию. Сначала закройте все окна LuaBill, чтобы они не записали прежние настройки обратно.

Для версии из исходников можно использовать QSettings в любой ОС. После закрытия LuaBill выполните следующий код в среде Python с установленным PySide6, чтобы узнать расположение хранилища:

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

Сначала сохраните резервную копию указанного файла или экспортируйте указанную ветку реестра. Только после этого выполните следующий отдельный блок, который очищает настройки LuaBill:

from PySide6.QtCore import QSettings
settings = QSettings("LuaBill", "LuaBill")
settings.clear()
settings.sync()

Запустите LuaBill заново, чтобы использовать значения по умолчанию. Сброс настроек не удаляет проекты, профили продавца и сформированные документы. Папка результатов снова будет предлагаться как Documents/LuaBill/Output; проверьте её перед созданием документа.

12. Частые проблемы

ПроблемаЧто сделать
Не найден компонент или устарела JavaОткройте «Компоненты и установка», установите указанный компонент и повторите проверку. Если при запуске из исходников используются собственные пути, проверьте LUABILL_TEXLUA, LUABILL_LUALATEX, LUABILL_GS, LUABILL_JAVA и JAVA_HOME.
Ошибка LuaLaTeX или отсутствуют символыПрочитайте «Журнал создания», обновите дистрибутив TeX, установите указанный пакет или шрифт и повторите попытку. При первом запуске MiKTeX для загрузки пакетов может потребоваться сеть.
Не найдено изображение подписи или печатиСнова выберите файл на вкладке «Файлы и вывод» либо очистите соответствующий путь. Копирование одного проекта не копирует его изображения.
Проверка не пройденаПрочитайте сообщение и отчёт. Проверьте обязательные поля, даты, электронные адреса, налоговые номера и категории, а также суммы авансов. Исправьте данные и создайте документ заново; результат неуспешной проверки не отправляйте как проверенный счёт.
PDF не открываетсяИспользуйте кнопки панели результатов или откройте папку. Проверьте автоматическое открытие и системную программу просмотра PDF. Ошибка открытия просмотрщика отличается от ошибки создания документа.
Нет записи в папку результатовВыберите доступную для записи папку пользователя. Проверьте разрешения и закройте приложения, блокирующие целевой PDF, затем создайте результат заново.
Запрос о несохранённых измененияхСохраните отредактированные данные либо осознанно откажитесь от них. После импорта .bill перед созданием результата нужен первый путь .luabill. Простое открытие неизменённого .luabill не должно требовать повторного сохранения.

13. Сочетания клавиш

ДействиеWindows / LinuxmacOS
Новый / Открыть / СохранитьCtrl+N / Ctrl+O / Ctrl+SCmd+N / Cmd+O / Cmd+S
Сохранить какCtrl+Shift+SCmd+Shift+S
Проверить суммы / СоздатьF7 / F9F7 / F9
РуководствоF1Клавиша Help / системная клавиша справки
Поиск в руководствеCtrl+FCmd+F
Открыть созданный PDFCtrl+Shift+PCtrl+Shift+P
Изменить / удалить выбранную строку таблицыEnter / DeleteReturn / Delete

На мультимедийных клавиатурах функциональные клавиши могут требовать Fn. Меню показывают сочетания, действующие в вашей системе. В поле поиска руководства Enter переходит к следующему совпадению; кнопки Назад и Далее управляют направлением поиска.

14. Лицензии и благодарности

LuaBill — Open Source Business Document Generator
Copyright 2026 Vsevolod Shashkov & Mikhail Shashkov.
Собственный код и документация LuaBill распространяются по Apache License, Version 2.0.

qrencode.lua — сторонняя библиотека из проекта speedata/luaqrcode, написанная Patrick Gundlach и участниками проекта, copyright 2012–2020. Она сохраняет собственную лицензию BSD-3-Clause и указание авторства; авторы LuaBill не являются авторами этой библиотеки. Прочие включённые компоненты также сохраняют свои лицензии. Полные условия приведены в прилагаемых LICENSE, NOTICE и уведомлениях о сторонних компонентах.

Вернуться к содержанию

Справка → Сторонние компоненты и источники открывает перечень программ, шрифтов, профилей и графики. Обзор без подключения к Интернету содержит ссылки на исходные лицензии и подробные сведения о происхождении файлов.