Откуцај
SRENРУ Вход

Фискализация интернет-магазина: что и в какой момент фискализируется

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

Это наше прочтение норм, а не юридическая, налоговая или финансовая консультация. Прежде чем действовать, уточните у своего бухгалтера или в Налоговой администрации.

У интернет-магазина нет прилавка, нет кассира и нет принтера, но есть покупатели-физические лица. Этого достаточно: онлайн-продажа физическому лицу это розничная продажа, и фискализируется она как любая другая.

Как мы понимаем статью 3 часть 4 Закона, место нахождения продавца, который торгует в розницу через интернет, считается розничным объектом, поэтому через интернет-магазин фискализируются и продажи фирмам и предпринимателям, с их ПИБ на чеке.

Отличаются на деле три вещи: когда выдаётся чек, как он доходит до покупателя и кто нажимает кнопку. Ни одна из них не является вопросом о том, существует ли чек.

Когда фискализируется заказ

Правило то же, что и на прилавке: чек выдаётся в момент продажи, а деньги, полученные раньше, это аванс, который фискализируется в момент получения (статья 6 часть 1 Закона). Продажу на расстоянии нормы отдельно не регулируют, поэтому это наше понимание, которое стоит проверить с бухгалтером. Три сценария стоит держать раздельно, потому что магазины их постоянно смешивают.

Способ оплатыКогда деньги полученыЧто выдаётся
Платёжная карта на сайтев момент успешной авторизацииесли товар уже доставлен, чек продажи; если его ещё предстоит отправить, по нашему пониманию это аванс, как в третьей строке
Оплата при получениикогда курьер взял деньги с покупателячек продажи выдаёт продавец, а не курьер; точный момент (отправка или доставка) уточните у бухгалтера
Перевод на счёт (предоплата)когда поступление появилось на выпискеесли товар ещё не доставлен, это аванс; авансовый чек не позднее следующего рабочего дня после поступления

Третья строка та, над которой стоит подумать. Предоплата за товар, который ещё предстоит отправить, это, как мы понимаем закон, аванс: авансовый чек выдаётся не позднее следующего рабочего дня после поступления (статья 11 Правилника), а окончательный чек в момент продажи. Налоговая администрация в ответах на частые вопросы указала также, что если физическое лицо оплатило всю сумму по предварительному счёту, в момент продажи можно выдать окончательный чек; если вы работаете так, подтвердите это у бухгалтера.

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

Как чек доходит до покупателя

Если вы продаёте исключительно через интернет, фискальный чек выдаётся в электронной форме (статья 13 часть 3 Правилника о видах фискальных чеков). Если у вас есть и магазин с помещением, чек, как мы понимаем Правилник, выдаётся в печатной форме (например, в посылке), а электронно его можно доставить только с согласия покупателя, вместе с печатным, а не вместо него (статья 13 части 1 и 2).

Правило здесь в том, что чек, выданный в электронной форме, вместо QR-кода несёт адрес для проверки в виде гиперссылки. Это и практично: QR-код в письме сканировать некому, телефон уже в руке, а ссылка открывается нажатием.

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

Как магазин подключается к ЕСИР

Интернет-магазин не является ЕСИР. Он система, которая знает, что и кому продано, а выдачу чека передаёт ЕСИР через интерфейс. На практике способа два.

Готовый плагин

Для WooCommerce и похожих платформ есть плагин, который сам разговаривает с кассой. Типичная настройка требует четырёх вещей:

  • адрес ЕСИР,
  • ключ API,
  • статус заказа, который запускает выдачу чека,
  • сопоставление способов оплаты магазина с семью фискальными способами оплаты.

Третий пункт стоит обдумать до того, как нажать «сохранить». Если фискализацию запускает статус «в обработке», а заказ с оплатой при получении получает этот статус в момент оформления, вы выдали чек раньше, чем увидели деньги. Для оплаты при получении, как мы понимаем, подходит статус более позднего шага, при отправке или при доставке; какой из этих двух моментов верный, уточните у бухгалтера. Для карты подходит статус, который выставляется при успешном списании, с авансовым чеком, если товар ещё не доставлен.

REST API

Если магазин не на готовой платформе, то же самое делается напрямую через API. Запрос несёт позиции, количества, цены, налоговые метки и способ оплаты, а ответ несёт номер ПФР, счётчик, журнал и ссылку для проверки.

POST /api/v1/invoices
Authorization: Bearer VAS_API_KLJUC
Content-Type: application/json

{"invoiceType":"NORMAL","transactionType":"SALE",
 "items":[{"name":"Мајица","labels":["Ђ"],"quantity":1,"unitPrice":2490.00}],
 "payments":[{"paymentType":"CARD","amount":2490.00}]}

Налоговые метки по товарам

Это самая частая причина неправильных чеков из интернет-магазинов. Магазин, как правило, знает цену, но не знает налоговую метку, потому что она ему была не нужна.

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

Что происходит, когда что-то идёт не так

Эту часть обычно не продумывают и решают на ходу. Три ситуации стоит закрыть заранее:

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

Вопрос, который стоит задать поставщику. «Что произойдёт, если ваш API вернёт 502 посреди оплаты, и что будет, если мой сервер отправит один и тот же запрос дважды.» Ответом на второй вопрос является идемпотентный ключ. Если его нет, дублированные фискальные чеки это вопрос времени.

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

У Otkucaj есть REST API v1 с ключами Bearer и готовый плагин WooCommerce. Плагин записывает в каждый заказ номер ПФР и ссылку для проверки, а налоговая метка по товару задаётся через мета-поле otkucaj_label.

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

Подробности в документации API.

Otkucaj это ЕСИР, одобренный Налоговой администрацией Сербии, регистрационный номер 1667, классификация 3. Новый аккаунт начинает работу в тестовой среде, где чеки не являются фискальными; для рабочей среды нужен собственный элемент безопасности и ПАК.

Источники

  • Закон о фискализации («Службени гласник РС» № 153/2020, 96/2021, 138/2022 и 80/2026), статьи 3, 5, 6 и 8.
  • Налоговая администрация Республики Сербия, Техническое руководство по административной и технической проверке функциональности ЕСИР или Л-ПФР, раздел об электронной доставке чека и гиперссылке вместо QR-кода.
  • Правилник о видах фискальных чеков, типах транзакций, способах оплаты, ссылке на номер другого документа и подробностях прочих элементов фискального чека, статьи 2, 10, 11 и 13.

Попробуйте Otkucaj в демо-режиме

Касса работает в браузере. Демо-чеки не имеют фискальной силы и нужны для пробы и обучения. Когда получите элемент безопасности для своего помещения и подключите ПФР, переключите режим.

Запросить доступ