Раскрываем общие детали работы с сетевым сервисом онлайн-касс, нюансы интеграции с CMS и подводные камни, об которые вы споткнетесь в случае, если не станете использовать готовые решения и будете заниматься интеграцией самостоятельно.




Согласно 54-ФЗ, все торгово-сервисные площадки, принимающие оплату через интернет, должны перейти на онлайн-кассы, отправляющие в режиме реального времени электронные чеки в ФНС. С 1 июля 2017 года это требование касается не только интернет-магазинов, но и самых разнообразных онлайн-сервисов, собирающих оплату с физических лиц с помощью банковских карт, а с 1 июля 2018 изменения затронут и тех, кто пользуется услугами альтернативных платежных средств (онлайн кошельков) — Webmoney, Яндекс.Деньги и др.

Хотя переход на новые кассы уже должен был состояться, данные ФНС говорят о том, что львиная доля торгово-сервисных площадок в интернете все еще не легализовала онлайн-расчеты с потребителями. По официальной статистике, на учете стоит около 14 тыс. кассовых аппаратов с признаком «расчеты в сети Интернет», в то время как сегмент рынка, по разным данным, насчитывает не менее 50 тыс. предприятий (здесь речь идет только о тех компаниях, которые принимают платежи через интернет от физических лиц).

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

Мы много пишем о том, как все сделать законно. Сегодня поговорим о деталях взаимодействия наших касс в рамках сервиса АТОЛ Онлайн с внутренними системами интернет-магазинов.

Вкратце о сервисе


Покупка онлайн кассы — мероприятие не дешевое. Доступная альтернатива покупке — аренда («онлайн-касса как сервис»). Именно эту услугу и предоставляет АТОЛ Онлайн.

Идея сервиса похожа на SaaS, но в данном случае из-за ограничений 54-ФЗ речь идет не об аренде виртуальных мощностей, а о временном использовании вполне реальной (физической) кассы, размещенной в нашем ЦОДе.



По договору одна или несколько касс резервируются за клиентом и ставятся им на учет через личный кабинет налогоплательщика на сайте ФНС.

Хотя сегодня существуют альтернативные сервисы аренды, АТОЛ Онлайн в 2017 году стал первым в данном сегменте рынка. На текущий момент примерно каждая третья касса, зарегистрированная в ФНС для расчетов в сети Интернет, арендована у АТОЛ.

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

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

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

В случае отказа от излишних ресурсов процедура выполняется быстро. Однако архив ФН, использующегося в «лишней» кассе, придется закрыть, а саму кассу снять с учета в ФНС (неиспользуемая касса с большой вероятностью будет передана другому клиенту, а ФН, хоть и действует 13 месяцев, жестко закрепляется за компанией и физической кассой — таким образом с другой кассой для расширения парка арендованной техники за счет произвольной кассы использовать его нельзя).



При увеличении количества касс процедура немного растягивается во времени. Поскольку субъекту налогообложения требуется ставить на учет в ФНС каждую кассу самостоятельно (через личный кабинет на nalog.ru), скорость, с которой будут предоставлены дополнительные ресурсы, зависит в том числе и от самого магазина. В принципе, это возможно сделать в течение суток.

Масштабирование открывает возможность гибко варьировать количество касс, прогнозируя пиковые нагрузки. Хотя это только один из вариантов работы. Большая часть магазинов предпочитает другой подход — рассчитывать количество постоянно арендованных касс, учитывая в том числе и пиковые нагрузки. Вне пиков оборудование используется не на полную силу, но зато такая схема обеспечивает большую отказоустойчивость.

Зачем и кому необходимо API


Помимо самого использования онлайн касс, 54-ФЗ регламентирует новые параметры кассового чека — дополнительные реквизиты и обязательное отражение в документе всех товарных позиций с соответствующими ставками налога. Вне зависимости от того, приобретена касса в собственность компании или взята в аренду, информация о товарных позициях и их итоговой стоимости (со всеми скидками и надбавками, а заодно со ставкой налога) должна поступать в нее из внешней системы — из CMS магазина или сервисной площадки. Тонкости этого процесса зависят от деталей задачи, но в общем случае обеспечение интеграции CMS и онлайн-кассы, как в присутствии платежного агрегатора, так и без него — это технически нетривиальная задача.



С самого начала АТОЛ Онлайн предложил открытый универсальный API для взаимодействия со сторонними системами. С рядом популярных CMS и платежных агрегаторов у сервиса уже есть готовая интеграция «из коробки» (причем список партнеров постоянно пополняется). То есть для магазина, который только что решил привести свою деятельность в соответствие с действующим законодательством, это упрощает процедуру: если используется популярная CMS, с большой долей вероятности разбираться в деталях API не придется, можно будет использовать готовый модуль. А покупая с нуля готовое решение (CMS) или выбирая платежного агрегатора, можно подобрать инструмент с уже реализованной интеграцией с онлайн-кассой.



Интегрированные платежные агрегаторы и банки: Сбербанк, Яндекс Касса, RoboKassa, RBKmoney, РайффайзенБанк, Тинькофф, Газпромбанк и другие.

API как таковой будет интересен тем, кто использует самописные инструменты. В свое время целый ряд компаний (в основном — крупные) вместо приобретения сторонней CMS-системы выбрали путь написания собственной. Им-то и приходится работать с API напрямую. С нашей точки зрения этот сегмент пользователей самый сложный, поскольку самописные CMS немного по-разному обрабатывают процессы, могут выдавать не ту информацию и т.п. И с каждым клиентом здесь отдельный проект.

Детали API


Попробуем, не погружаясь в детали, рассказать, что собой представляет API АТОЛ Онлайн.

Общение с онлайн-кассой в рамках API состоит из трех частей:

  • авторизация (получение токена);
  • отправка чека на фискализацию;
  • получение результата фискализации.

В ходе взаимодействия от интернет-площадки требуются только те параметры, которые действительно необходимы для фискализации чеков — никаких сложных дополнительных систем, вроде расчета скидок и акций, тут не предусмотрено. В строгом соответствии с 54-ФЗ API позволяет передавать из интернет-магазина в онлайн-кассу список товаров в корзине со всей сопутствующей информацией:

  • названия товарных позиций — в пределах 128 символов по закону (на данный момент в API прописана длина названия в 64 символа, однако сервис обработает и 128 символов);
  • цену за единицу;
  • количество единиц (для каждой товарной позиции);
  • полную стоимость;
  • ставку налога для каждой товарной позиции (при желании можно передать сумму НДС, однако это не обязательно).

Протоколы обмена информацией онлайн кассы с ОФД и ФНС предусматривают ограничение на общий размер электронного чека в 30 КБ. Количество товаров, которые можно разместить в таком чеке, зависит от целого набора параметров (вроде длины названия товара и служебной информации, добавляющей порядка 15% объема), поэтому в общем случае сделать прогноз о количестве товаров, «помещающихся» в один чек, невозможно.

До недавнего времени в API АТОЛ Онлайн было собственное ограничение в 100 товарных позиций в чеке, позволявшее с запасом уложиться в предписанные 30 КБ. Но поскольку эксплуатация сервиса показала, что для некоторых клиентов ограничение в 100 товаров играет существенную роль, оно было снято. Теперь магазинам необходимо самостоятельно контролировать переполнение чека — то есть требуется принимать и обрабатывать соответствующую ошибку от АТОЛ онлайн. В особенности это касается магазинов, где покупатель может набрать в корзину большое количество мелких штучных товаров (крепеж, электронные компоненты и т.п.), или площадок, где популярны коллективные закупки (учебники и канцелярия на целый школьный класс).

Технически чеки более 30 Кбайт в онлайн торговле обрабатываются также, как и в офлайн торговле, где кассир просто разбивает корзину на два чека. Однако эта логика должна находиться на стороне внешней системы — т.е. магазина, поскольку АТОЛ Онлайн может лишь выдать ошибку о том, что фискализация не выполнена (по закону нельзя два чека оплатить через одну транзакцию).

В дополнение к перечисленной выше информации через API магазин должен предоставить телефон или email пользователя, куда будет отправлен электронный чек.

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

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



Надо отметить, что сервис АТОЛ Онлайн предоставляет более широкий функционал через личный кабинет. Там доступна различная статистика, а также сами фискализированные чеки. Позже подобный функционал появится и в API. Кроме того, предполагается сделать механизм сверки.

Что нужно интернет-магазину, помимо API


Работа с онлайн-кассами на практике упирается не столько в поиск оборудования и настройку взаимодействия по API, сколько в изменение некоторых бизнес-процессов внутри магазина.

В первую очередь необходимо подготовиться к передаче корзины на сторону для фискализации. До сих пор многие магазины работают с платежными системами, просто передавая сумму к оплате. Легально продолжать работать по такой схеме уже нельзя. Нужно указывать весь перечень товаров в корзине. И если покупатели в магазине интим-услуг будут рады замене названий реальных сервисов на абстрактные «услуга 1», «услуга 2» и так далее, то потребители в магазине бытовой техники вряд ли обрадуются, когда вместо реальных товаров в чеке появится ерунда.

Каждый товар в чеке должен иметь окончательную цену уже после применения всех скидок и надбавок. Раньше касса могла сама посчитать скидку, теперь же этого делать нельзя. Вдобавок, во многих CMS такая логика просто не заложена, поэтому здесь требуются серьезные доработки.

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

Хороший пример несоблюдения мат-моделей — округление. Спецификация подразумевает передачу копеек в виде двух знаков после запятой. Но многие из собственных систем передают четыре и даже пять знаков. АТОЛ Онлайн лишние знаки отбрасывает, в то время как в собственной системе магазина при подсчете итоговой суммы может производиться округление по математическим правилам. Так проявляется расхождение в несколько копеек, которое не пройдет по кассе. И такие ошибки очень тяжело отлавливать.

Еще одно обязательное изменение — упомянутое требование номера мобильного телефона или адреса электронной почты у пользователя. Без этих данных фискализации не будет. До сих пор в нашу систему поступает довольно много чеков без идентификационных данных (их доля достигает единиц процентов). После отправки подобного «анонимного» чека интернет-магазин получает сообщение об ошибке, но ничего поделать не может, поскольку транзакция уже прошла. В этом случае все «чисто» можно сделать только через отмену платежной операции (или же чек можно дослать позднее — с правильными реквизитами).

В итоге затраты на саму интеграцию CMS и онлайн-кассы могут оказаться намного меньше, нежели на перестройку всей информационной системы под требования федерального закона. И к этому надо быть готовым.

Комментарии (11)


  1. aol-nnov
    13.12.2017 22:02

    А куда вы потом деваете «израсходованные» ФН? Храните у себя? А сколько потом будет стоить хранение, доступ к «архивированым» ФН?
    Как их клиенту получить физически, возможно это? Как предоставить на проверку инспектору, в случае чего?

    Не, я понимаю, что в нынешней реализации ФН — это только буфер для отправки и криптосредство, не то, что ЭКЛЗ, но это же не повод их под каток бросать после 13 месяцев?!

    И еще: реально ли такую арендованную кассу применять не только для интернета, но и на физической точке продаж? Не нашел в законе ничего такого…


    1. kolabaister
      13.12.2017 23:55

      Про оффлайн могу ответить за автора: нет. Онлайн-кассы не имеют печатающего устройства, а при продаже оффлайн обязательно выдавать бумажный чек. Чисто теоретически наверное можно было бы формировать текст чека из переданных параметров, и печатать его на копеечном чековом принтере, но это, наверное, незаконно.
      Но для онлайн и оффлайн продаж совсем не обязательно иметь две кассы, достаточно одной, с чекопринтером, и печатать на ней как оффлайн, так и генерировать онлайн-чеки.

      А про судьбу ФНов интересно, да.


      1. Apollon_Diamed
        14.12.2017 07:43

        А что насчет мобильного эквайринга? Наподобие Lifepay — там чек не выдают.


        1. aol-nnov
          14.12.2017 08:37

          тут всё еще печальнее :)
          на самом деле, к любой операции с картой надо печатать не только слип, но и кассовый чек (и, соответственно, проводить операцию через кассу)

          ну, это если следовать букве ))


      1. aol-nnov
        14.12.2017 08:45

        > могу ответить за автора
        > это, наверное

        ну, вот видите, уважаемый, не получилось ответить за автора. :)
        на уровне «дай погадаю» я и сам знаю ответ.

        да, при физической продаже надо печатать чек, да, есть средство формировать чек по данным от облачной кассы (некоторые операторы даже картинку чека шлют через отдельное апи) и печатать его местно на чем угодно.
        законно/легально ли то, что я вопрошал в самом верху — никто не знает :)


        1. soshnikov
          14.12.2017 10:59

          Я разбирался в вопросе. Правда с обратной стороны — использовать кассу магазина еще и для печати онлайновых чеков.
          Следует понимать, что закон выкатили, но есть огромное количество моментов, которые не были законом учтены и сейчас все пытаются как-то приспособиться, а минфины с налоговыми дают, зачастую, противоположные ответы.
          Так вот, использовать одну кассу для онлайна и для магазина не запрещается. Аргументация была такая, что спецпорядок применения (оплата на сайте) мы должны указать, а вот прием наличных подразумевается по умолчанию и не требует каких-то дополнительных телодвижений.


          Но, тут возникает проблема технического характера: на чеке необходимо указывать место совершения покупки. Т.е. при оформлении чека ваше ПО должно менять настройку кассы, т.к. необходимый параметр не входит в параметры функции формирования чека. У штриха так точно, с атоллами вроде как такая же ситуевина. Вопрос, насколько я понимаю, актуален и в случае, когда у вас несколько интернет-магазинов.


          В моем случае я, в принципе, смогу своим ПО менять место продажи. А вот в случае облачной кассы, вам могут и не дать такой возможности.
          По поводу печати бумажного чека, регламентирован состав реквизитов, которые там должны присутствовать. Требований по печатающему устройству я не припомню. НО! Почему-то штрих позволяет напечатать только одну оригинальную копию чека. Если нужен дубликат (а у меня он печатается) у них отдельная функция, которая печатает чек с надписью "КОПИЯ" и только последний пробитый чек.


          Самое разумное, обратиться в вашу налоговую с запросом. Т.к. именно они будут вас проверять и проверять будут так, как сами понимают закон. Не обязательно, что понимают они его правильно и вообще захотят вникать в ваш вопрос. Не факт, что тетенька, овечающая на ваш запрос, трактует закон так же как и проверяющая тетенька… Но это такая специфика ведения бизнеса в России. А может и не только в России...


          1. aol-nnov
            14.12.2017 11:02

            так-то да… только официальный запрос в налоговую с последующим получением официального ответа и последующим прикрытием своих тылов данной бумажкой с печатью… (и то, не факт) )))


            1. kolabaister
              15.12.2017 13:40

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

              По поводу оффлайн-касс — закон тут, по моему вполне конкретно, требует установки кассы в точке расчетов. Чекопринтер не является кассой, поэтому эта позиция очень шатка. Скажем так, отличить чек, со всеми реквизитами, сформированный облачной кассой, и напечатанный на принтере, от того же, но сформированный на месте, трудно. Но даже минимальной проверки не выдержит — место установки кассы то у налоговой есть.
              Требования в законе есть: consultant.ru: касса — это устройство, имеющее внутри своего корпуса ФН, и обеспечивающее возможность печати чека.

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


  1. Apollon_Diamed
    14.12.2017 07:47

    Настраивали интеграцию с данным сервисом. Приятного мало. В описании к API далеко не всё. Тех поддержка ничего толком не может сказать. На тестовых данных работает, на продуктив запускаешь и не работает. Хотя бы в статье всё красиво описано.


  1. porutchik
    14.12.2017 15:33

    Интересный скриншот. У меня так

    image


  1. johndow
    14.12.2017 18:17

    Главная претензия к вашему API:
    есть у меня платежи в БД, у каждого платежа уникальный id
    Делаем регистрацию покупки с externalId=мой id платежа — получаем uuid.
    Пока всё хорошо, но если что-то пойдёт не так на вашей стороне и чек не пройдёт, то больше я мой уникальный id использовать не могу! Приходится городить огород. Очень неудобно.