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

Недавно клиент обратились с запросом, задача звучала ёмко:

«Нужно, чтобы при оплате в ЮКассу передавалась почта клиента для чека».

На первый взгляд — пустяк. Одно поле в форме.

Но за этой «мелочью» скрывалась целая цепочка требований 54-ФЗ, особенности работы агентской схемы и необходимость полного пересмотра интеграции с ЮKassa.

Почему «просто отправить email» — это не просто

Многие думают, что онлайн-оплата — это «кнопка + платёжка». Но когда речь заходит о фискализации, всё становится серьёзнее. Особенно в туризме, где вы — агент, а не поставщик услуг.

Закон требует:

  • Указывать в чеке настоящего поставщика (туроператора)
  • Корректно отражать признак агента
  • Передавать email или телефон покупателя — иначе чек не считается выданным.

На деле было иначе:

  • Оплата шла через модуль оплаты + ЮKassa,
  • Чеки формировались без email,
  • Поставщики не указывались.

Чеки не соответствовали 54-ФЗ. 

Этап 1. Интеграция с ЮKassa 

Первым делом мы перевели сайт на сценарий «Сначала платёж, потом чек» — именно он позволяет гибко управлять данными чека.

Это означало:

  • Создание отдельного запроса к API ЮKassa после успешного платежа,
  • Передача всех необходимых данных: email клиента, состав услуг, реквизиты поставщика, признак агента.

Да, это потребовало переписать часть модуля оплаты.

Но теперь клиент полностью контролирует, что попадает в чек — и соответствует закону.

Этап 2. Скидки

Почему скидка — не просто «минус 1000 руб.»?

Когда клиент получает скидку на тур (например, «раннее бронирование» или «групповая скидка»), эта скидка применяется ко всей корзине. Но по требованиям 54-ФЗ каждая позиция в чеке должна быть корректно отражена:

  • цена за единицу,
  • количество,
  • итоговая сумма по строке.

Просто указать «скидка –5000 ₽» отдельной строкой — нельзя.

ФНС требует, чтобы скидка была распределена пропорционально по каждой позиции, особенно если эти позиции относятся к разным поставщикам (а у них — разные ИНН, НДС, признаки агента).

Если этого не сделать:

  1. чек не пройдёт валидацию в онлайн-кассе,
  2. или, что хуже, если бы прошел, то был бы некорректным — и при проверке налоговая увидит расхождение между реальной стоимостью услуг и суммой в чеке.

Как мы решили задачу

  1. Определили базовую стоимость каждой услуги (до скидки).
  2. Рассчитали общий объём скидки и пропорционально распределили её между всеми позициями в корзине.
  3. Убедились, что итоговая сумма чека = сумме платежа, иначе ЮKassa вернёт ошибку.

Это потребовало:

  • точной арифметики с округлением до копеек (чтобы не было «потери» 1–2 рублей),
  • гибкой логики в сниппете формирования чека,
  • и тщательного тестирования на разных сценариях.

Этап 3. Агентская схема

В туризме если вы продаёте «не свой» товар. Вы — посредник. И чек должен это отражать.

Мы реализовали три ключевых улучшения:

1. Справочник поставщиков

Вместо того чтобы вручную вводить ИНН и телефон в каждом туре, администратор может выбирать поставщика из списка. Все данные хранятся централизованно — меньше ошибок, проще обновлять.

2. Автоматическое определение НДС и реквизитов

Если поставщик в Туре выбран — система сама подставляет его ИНН, ставку НДС и контакты.

Если нет — ставится «Без НДС». 

3. Группировка услуг в чеке

Раньше, если в Туре было 3 услуги от одного поставщика, в чеке было 3 строки. Теперь — одна строка:

«Тур: ХХХХ  — поставщик: ООО "УУУУ", ИНН 1234567890 ....»

Это не только соответствует закону — это удобнее для клиента и чище для бухгалтерии.

4. Скидка применяется только к наценке агента

Когда туристическая компания работает по агентской модели, она:

  • Не продаёт тур напрямую,
  • Выступает посредником между клиентом и туроператором (поставщиком),
  • Зарабатывает на разнице между ценой поставщика и финальной ценой для клиента — это и есть наценка агента.

Соответственно:

  • Цена поставщика — это фактическая стоимость услуги, которую агент обязан оплатить туроператору.
  • Скидка — это маркетинговое решение самого агента (например, «раннее бронирование» или «спецпредложение»).
  • Поэтому скидка должна уменьшать только наценку агента, а не стоимость самого тура у поставщика.

Как мы это реализовали технически:

  1. Разделили каждую позицию в чеке на две части:
    Услуги поставщика — по фактической цене (без скидки),
    Услуги агента — как разница между финальной ценой и ценой поставщика.
  2. Применили скидку только ко второй части — к «Услугам агента».

  3. При группировке всех услуг одного поставщика в одну строку:
    — Сумма поставщика = сумма всех его услуг без изменений,
    — Сумма агента = общая наценка минус пропорциональная часть скидки,
    — Итоговая сумма чека = сумма платежа — всё сходится.
Наш сайт использует сервис веб-аналитики Яндекс Метрика и технологию “cookie”. Продолжая пользоваться сайтом, вы соглашаетесь с использованием , и принимаете нашу Политику в отношении обработки персональных данных.