Обзор
NaloGO — интеграция с API Федеральной налоговой службы для самозанятых (режим НПД). При каждом успешном платеже через YooKassa бот автоматически создает фискальный чек в личном кабинете налогоплательщикаlknpd.nalog.ru.
Как это работает
- Пользователь оплачивает через YooKassa
- Webhook подтверждает успешный платеж, баланс зачисляется
- Бот формирует данные чека (название услуги, сумма, дата)
- Чек отправляется в API
lknpd.nalog.ru - ФНС возвращает UUID чека, который сохраняется в БД
Что содержит чек
Настройка
Шаг 1: Регистрация как самозанятый
- Зарегистрируйтесь как самозанятый через приложение Мой налог или на lknpd.nalog.ru
- Запомните свой ИНН
- Установите пароль для входа в личный кабинет на
lknpd.nalog.ru
Отдельная регистрация API-ключа не требуется. Бот использует ваш ИНН и пароль для авторизации в ЛК налогоплательщика.
Шаг 2: Настройка .env
Шаг 3: Перезапуск бота
Переменные окружения
Очередь чеков
Если API ФНС временно недоступен (503, техработы, таймауты), чек автоматически добавляется в очередь Redis и повторяется позже.Как работает очередь
- Фоновый процесс проверяет очередь каждые
NALOGO_QUEUE_CHECK_INTERVALсекунд (по умолчанию 5 минут) - Между отправкой чеков — пауза
NALOGO_QUEUE_RECEIPT_DELAYсекунд - Чеки никогда не удаляются из очереди — повторяются бесконечно с увеличением счетчика попыток
- При успешной отправке всей очереди — уведомление администратору
Защита от дублирования
- Redis-ключ
nalogo:created:{payment_id}(TTL 30 дней) предотвращает повторное создание чека - Redis-ключ
nalogo:queued:{payment_id}(TTL 7 дней) предотвращает дублирование в очереди - Проверка поля
receipt_uuidв БД перед созданием
Pending Verification
Если авторизация прошла успешно, но запрос на создание чека получил таймаут — чек мог быть создан на стороне ФНС. Такие чеки попадают в отдельную очередь Pending Verification и требуют ручной проверки в ЛК налогоплательщика.Мониторинг (админ-панель)
В разделе мониторинга бота доступна информация о NaloGO:- Очередь: количество чеков, общая сумма, статус фонового процесса
- Pending Verification: чеки, требующие ручной проверки
- Действия:
- Принудительная обработка очереди
- Просмотр pending-чеков
- Пометка как проверенные / повторная отправка
- Очистка всех pending
Хранение токенов
Токены авторизации в API ФНС хранятся в файлеnalogo_tokens.json. При контейнеризации этот файл должен быть на персистентном томе, иначе авторизация будет выполняться заново при каждом перезапуске.
В docker-compose.yml убедитесь что директория с файлом примонтирована:
.env:
Ограничения
Прокси для nalog.ru
Если сервер бота находится за пределами России илиlknpd.nalog.ru недоступен напрямую, трафик к API налоговой можно маршрутизировать через SOCKS-прокси.
Настройка
Добавьте в.env:
NALOGO_PROXY_URL не указан, но настроен общий PROXY_URL (для Telegram API) — трафик к nalog.ru автоматически пойдёт через него.
Схема
socks5h:// выполняет DNS-резолвинг на стороне прокси-сервера. Это полезно, когда DNS lknpd.nalog.ru не резолвится локально.Поддерживаемые схемы
Проверка работоспособности
В логах бота при старте появится:PROXY_URL:
Подробнее о настройке SOCKS-прокси для бота — в разделе SOCKS5 прокси.
Устранение проблем
Чеки не создаются
- Проверьте
NALOGO_ENABLED=trueв.env - Убедитесь что
NALOGO_INNиNALOGO_PASSWORDзаполнены - Проверьте логи бота на ошибки авторизации NaloGO
- Убедитесь что оплата идет через YooKassa (другие провайдеры не поддерживаются)
Ошибка авторизации
- Проверьте пароль от
lknpd.nalog.ru(войдите вручную) - Удалите
nalogo_tokens.jsonдля принудительной реавторизации - Проверьте доступность
lknpd.nalog.ruс сервера - Если сервер за рубежом — настройте
NALOGO_PROXY_URLчерез SOCKS-прокси в РФ
Очередь растет
- API ФНС может быть временно недоступен — это нормально, чеки отправятся позже
- Проверьте логи на повторяющиеся ошибки
- Используйте кнопку принудительной обработки в мониторинге
