Sofra · Fiskal çeklər · Azərbaycan (stub)

Фискальные чеки · Азербайджан (stub)

Честный stub: Sofra печатает счёт гостю и хранит Payment/Bill, но не отправляет данные в налоговый орган и не эмулирует реальный ККМ (кассовый аппарат).

Статус

Это НЕ фискальная интеграция

Ничего в этом разделе не подключено к реальному оборудованию или API налоговой службы Азербайджана. Раздел документирует требования и показывает, где именно в коде это должно быть подключено, когда появится реальный провайдер (ККМ-агрегатор или прямой протокол).

Требования (общий обзор, не юридическая консультация)

  • Каждая розничная продажа (включая рестораны) в Азербайджане обычно требует фискальный чек с QR-кодом, выданный сертифицированным ККМ или онлайн-кассой, зарегистрированной в налоговом органе.
  • Чек должен содержать: наименование продавца, VÖEN (налоговый номер), дату/время, перечень позиций с ценами, итоговую сумму, способ оплаты, фискальный QR-код для проверки на портале налоговой.
  • Официальная интеграция обычно происходит через сертифицированного ККМ-поставщика/агрегатора (аппаратный или облачный), а не через прямой вызов API налоговой из веб-приложения.

Уточняйте актуальные правила у бухгалтера/налогового консультанта перед продакшен запуском — законодательство и пороги могут меняться.

Что уже есть в Sofra и куда встраивать фискализацию

Модель / место в кодеЧто уже делаетЧего не хватает для реальной фискализации
Bill / PaymentХранит позиции, суммы, tip, метод оплаты, статусНет поля fiscalReceiptId / fiscalQrUrl, нет вызова провайдера
/pay/[externalId]Гостевой checkout (mock LeoShöt/Epoint), tip, splitПосле PAID нужно вызвать fiscal-провайдера и сохранить чек
/admin/[slug]/tables/printПечать QR-листов столов (не фискальный чек)Отдельный принтер-стаб для фискального чека — не реализован

Как подключить реального провайдера

  1. 1Выбрать сертифицированного ККМ-агрегатора / облачную онлайн-кассу с REST API.
  2. 2Добавить env-переменные (ключи, VÖEN, endpoint) — по аналогии с EPOINT_* / LEOSHOT_* в payments.
  3. 3На успешном Payment (status PAID) вызывать провайдера с составом чека и суммой.
  4. 4Сохранять fiscalReceiptId и ссылку на QR чека на Bill/Payment; показывать гостю на /pay/[externalId].
  5. 5Обрабатывать сбои идемпотентно — не блокировать оплату, если фискализация временно недоступна; ретраить в фоне.

Демо-режим

В демо это остаётся документацией — раздел существует, чтобы показать зрелость продукта и понимание требований рынка, без псевдо-реализации, которая создавала бы ложное впечатление о готовности к продакшену.