Skip to main content

Обзор

NaloGO — интеграция с API Федеральной налоговой службы для самозанятых (режим НПД). При каждом успешном платеже через YooKassa бот автоматически создает фискальный чек в личном кабинете налогоплательщика lknpd.nalog.ru.
Интеграция работает только с YooKassa. Остальные платежные системы (CryptoBot, Telegram Stars, CloudPayments, Freekassa и др.) не генерируют фискальные чеки.

Как это работает

  1. Пользователь оплачивает через YooKassa
  2. Webhook подтверждает успешный платеж, баланс зачисляется
  3. Бот формирует данные чека (название услуги, сумма, дата)
  4. Чек отправляется в API lknpd.nalog.ru
  5. ФНС возвращает UUID чека, который сохраняется в БД

Что содержит чек

Настройка

Шаг 1: Регистрация как самозанятый

  1. Зарегистрируйтесь как самозанятый через приложение Мой налог или на lknpd.nalog.ru
  2. Запомните свой ИНН
  3. Установите пароль для входа в личный кабинет на lknpd.nalog.ru
Отдельная регистрация API-ключа не требуется. Бот использует ваш ИНН и пароль для авторизации в ЛК налогоплательщика.

Шаг 2: Настройка .env

Шаг 3: Перезапуск бота

Переменные окружения

Для работы интеграции необходимы все три параметра: NALOGO_ENABLED=true, NALOGO_INN и NALOGO_PASSWORD.

Очередь чеков

Если 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 не резолвится локально.

Поддерживаемые схемы

HTTP/HTTPS прокси не поддерживаются. Используйте только SOCKS-протоколы.

Проверка работоспособности

В логах бота при старте появится:
Если используется общий PROXY_URL:
Подробнее о настройке SOCKS-прокси для бота — в разделе SOCKS5 прокси.

Устранение проблем

Чеки не создаются

  1. Проверьте NALOGO_ENABLED=true в .env
  2. Убедитесь что NALOGO_INN и NALOGO_PASSWORD заполнены
  3. Проверьте логи бота на ошибки авторизации NaloGO
  4. Убедитесь что оплата идет через YooKassa (другие провайдеры не поддерживаются)

Ошибка авторизации

  • Проверьте пароль от lknpd.nalog.ru (войдите вручную)
  • Удалите nalogo_tokens.json для принудительной реавторизации
  • Проверьте доступность lknpd.nalog.ru с сервера
  • Если сервер за рубежом — настройте NALOGO_PROXY_URL через SOCKS-прокси в РФ

Очередь растет

  • API ФНС может быть временно недоступен — это нормально, чеки отправятся позже
  • Проверьте логи на повторяющиеся ошибки
  • Используйте кнопку принудительной обработки в мониторинге