Как интернет-магазин создаёт кассовый чек онлайн и доставляет его покупателю
Интернет-магазин может сделать кассовый чек онлайн автоматически: платёжный агрегатор сообщает об оплате, облачная касса генерирует xml-документ, подписывает его и за 2–3 секунды рассылает в ФНС, ОФД и на e-mail клиента. Ниже — пошаговое объяснение, как устроен этот путь и почему он происходит без участия кассира.
Какие события запускают создание чека в интернет-магазине
Точкой отсчёта считается webhook от платёжного шлюза: когда деньги захолдированы, агрегатор отправляет POST-запрос на сервер магазина с параметрами суммы, номера заказа и masked PAN карты.
CMS (1С-Битрикс, OpenCart, МойСклад) ловит webhook и дергает метод «сделать кассовый чек онлайн» через SDK выбранного ОФД. Если магазин работает по предоплате, создаётся чек с признаком «предоплата 100 %»; если по факту отгрузки — «полный расчёт».
Второй чек формируется автоматически в момент статуса «отгружено» и тоже уходит в ОФД без участия человека.
Всё происходит на том же компьютер, где висит cron-скрипт, поэтому задержка редко превышает 5 секунд от оплаты до появления файла в базе ФНС. С 2024 года в силу вступил формат ФФД 1.2, и в xml добавлен тег 1261 «адрес сайта», чтобы покупатель мог проверить чек даже если e-mail ошибочный.
Как облачная касса взаимодействует с платёжным агрегатором через API
Схема проста: агрегатор отдаёт JSON, касса превращает его в xml 54-ФЗ и подписывает фискальным ключом. Для безопасности используется двусторонний TLS 1.3 и подпись JWT: в заголовке передаётся token, в теле — fiscal-request. Пример исходного запроса (часть полей сокращена):
JSON
{
«order_id»: «14004-mz»,
«amount»: 128000,
«payment_type»: «card»,
«customer_email»: «user@mail.ru»,
«items»: […]
}
Облачный модуль ОФД отвечает за idempotency: если webhook придёт дважды, второй чек не создастся — проверка идёт по order_id. Возврат тоже автоматизирован: при отмене платёжный шлюз шлёт refund-webhook, касса формирует чек-коррекцию с теми же товарами, но отрицательной суммой. Всё это происходит на хостинге ОФД, поэтому магазину не нужен выделенный компьютер или виртуальная машина — достаточно стандартного хостинга с PHP 8.1 и curl. Подключение к API большинства операторов (СБИС, Такском, Первый ОФД) предоставляется бесплатно, плата взимается только за пакет фискальных документов.
Как чек попадает к покупателю: e-mail, SMS и Push в одной цепочке
Когда xml получает фискальный признак, ОФД одновременно делает три вещи:
- Отправляет копию в ФНС через протокол ФИС ФД (HTTPS + SOAP).
- Кладёт pdf-версию на CDN и возвращает короткую ссылку.
- Передаёт ссылку в SMS-шлюз или SMTP-сервер — в зависимости от того, что выбрано в настройках.
Стоимость e-mail равна нулю, SMS обходится в 0,50–1,20 руб. за сообщение; соцсети и Telegram-боты используются реже, но тоже поддерживаются. Чтобы покупатель точно получил письмо, рекомендуется прописать SPF-записи для домена магазина и включить DKIM-подпись в SMTP-OFD — иначе письмо уйдёт в спам. В 2025 году запускается эксперимент «Е-чек в ЛК Госуслуг»: покупатель может подключить автосбор чеков в свой личный кабинет, и тогда ОФД будет отправлять копию туда бесплатно. Пока эксперимент охватывает 20 % пользователей, но уже сейчас можно подать заявку в ФНС и стать участником.
Таблица. Сравнение каналов доставки электронного чека
|
Канал
|
Стоимость для магазина
|
Достоверность доставки (в среднем)
|
Плюсы
|
Минусы
|
|
|
от 0 руб. |
95 % с DKIM |
Мгновенно, можно приложить pdf |
Падает в спам |
|
SMS |
от 0,5–1,2 руб. |
98 % |
Не требует интернета у клиента |
Ограничение 160 символов |
|
Push-приложение |
от 0 руб. |
99 % |
Можно открыть чек одним тапом |
Требует установки приложения |
|
Telegram-бот |
от 0 руб. |
97 % |
Поддерживает pdf и ссылку |
Не у всех включены уведомления |
Как интернет-магазин может сам проверить, дошёл ли чек до клиента
Каждый ОФД предоставляет личный кабинет и REST-метод GET /v1/doc/{id}/status. В ответе приходит JSON-поле «delivered»: true/false. Если значение false больше 10 минут, стоит проверить лог SMTP-шлюза или повторить отправку на альтернативный адрес.
Некоторые CMS (МойСклад, InSales) уже встроили виджет «Доставка чеков» в админ-панель: менеджер видит зелёную галочку или красный крестик рядом с заказом. Ещё один способ — подписаться на webhook от ОФД: когда покупатель первый раз открывает ссылку, оператор шлёт POST-запрос на сервер магазина, и тот помечает заказ «чек прочитан». Это помогает в спорах: если клиент утверждает, что не получал чек, а статус «opened» = true, претензия не принимается. С 2024 года ФНС также предоставляет бесплатный метод «getReceiptStatus» в API ЕИОЧ — ответ приходит за 300 мс и не требует подписи, только ИНН и ФН.

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

Комментарии закрыты.