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