Зачем «Яндекс» отдает протокол налоговой на open source

Леонид Шныр, руководитель сервиса Яндекс.ОФД о новых правилах работы с кассовой техникой для интернет-магазинов и роли «Яндекса»

Поправки к федеральному закону номер 54 «О применении контрольно-кассовой техники» принесли для рынка довольно много новых понятий, связанных с процессом передачи фискальных данных с чеков от продавцов в Федеральную налоговую службу. Стоит сказать, что сама по себе процедура не уникальна, в мире есть аналогичные схемы, например, в Корее, Чехии и ряде других стран.

Среди прочего, появилось понятие оператор фискальных данных (ОФД). Всего на рынке уже работают 12 ОФД, в числе которых теперь и «Яндекс», и более 20 производителей контрольно-кассовой техники, и число участников скорее всего будет увеличиваться.

Почему появился протокол обмена фискальными данными

Если раньше фискальные данные записывались в кассе в «электронной контрольной ленте защищённой» (ЭКЛЗ) и затем вручную передавались в ФНС, по новым правилам обмен происходит автоматически через оператора фискальных данных, при этом фискальные данные по-прежнему сохраняются и в кассе в фискальном накопителе (ФН). Прежде чем попасть в ФНС, данные от кассы собираются ОФД, и это происходит по определенному протоколу. Его спецификация была предложена и описана ФНС. Реализация же оставалась на стороне участников рынка.
Касса и ОФД общаются между собой в бинарном формате. Благодаря протоколу касса и ОФД понимают друг друга – он регламентирует, где какие данные записаны. Например, сначала номер фискального документа, потом дата, название торговой точки, фискальный признак и так далее. Таким образом, можно взять бинарное сообщение от кассы и преобразовать его в фискальный документ, или наоборот – взять фискальный документ и перевести его в бинарный формат, чтобы касса поняла. Использование бинарного формата является наиболее простым с технической точки зрения решением – с этим форматом могут довольно быстро работать даже не очень современные и продвинутые модели касс, в том числе старые модели после модернизации под требования 54ФЗ. Потенциально это удешевляет стоимость производства соответствующего железа, однако из-за дефицита на рынке его цена еще довольно высока.

Трудности реализации

Как уже упомянул, каждый из участников рынка реализует этот протокол самостоятельно и в меру своих возможностей. «Яндекс» не исключение, мы тоже реализовывали данный протокол, чтобы запустить передачу фискальных данных как услугу.

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

Наличие на рынке открытого варианта протокола могло бы, на наш взгляд, сильно облегчить жизнь и действующим и будущим игрокам. Это подтолкнуло нас к тому, чтобы открыть доступ к нашей версии протокола всем желающим. Как показал опыт ClickHouse, делиться знаниями при создании технически сложных продуктов может быть весьма привлекательным решением. Тем более что со стороны ФНС наверняка еще будут изменения и в форматах обмена, и в форматно-логическом контроле, под которые всем тоже нужно будет адаптировать свои продукты. Совместная работа позволит сконцентрироваться на продуктах для пользователей и меньше времени тратить на внесение необходимых изменений в технологии обмена данными.

Дополнительно мы выложили JSON схемы фискальных документов, по которым осуществляется форматно-логический контроль расшифрованных документов от касс. Их можно использовать для проверки того, насколько сформированное сообщение от кассы соответствует требованиям, которые заявлены в протоколе.

Как использовать открытый протокол

Зачем это нужно и что с этим делать? Очевидно, что данное открытое решение касается ограниченного круга лиц – производителей касс, операторов фискальных данных, экспертных организаций. Но мы ожидаем, что оно, с одной стороны, облегчит им жизнь, а с другой – поможет систематизировать новую для российского рынка процедуру. Например, если ФНС вносит изменения в спецификацию протокола, то наличие единого открытого для всех варианта, который соответствует всем изменениям, позволит быстро протестировать оборудование – корректно ли оно работает.

В качестве примера использования мы создали "Эмулятор ОФД" - приложение, которое получает сообщение от кассы, расшифровывает его и в ответ отправляет кассе подтверждение о приеме документа. Оно вполне может быть использовано для тестирования новых касс и ОФД. Наше приложение уже доступно всем желающим. А мы открыты для обсуждений и совместной работы с этим форматом.