Автор: Александр Пылев, основатель «Интернет Касса».
Разработка сайта с онлайн-кассой — это не только платежная форма. Нужно связать заказ, интернет-эквайринг, ККТ, ОФД и доставку чека, а затем доказать тестами, что деньги и фискальные документы не теряются и не дублируются.
Ниже — маршрут для ИП и ООО, которые запускают интернет-магазин, продажу цифрового продукта или подписочный сервис. В конце вы получите структуру ТЗ, таблицу выбора, приемочные тесты и список данных для обсуждения интеграции.
Начните не с CMS и не с тарифа эквайринга, а с ответа на вопрос: где и когда происходит расчет с покупателем.
| Сценарий | Что выбрать на старте | Что обязательно проверить |
|---|---|---|
| Интернет-магазин, оплата на сайте | Готовый модуль CMS или API интернет-эквайринга и облачная либо локальная физическая ККТ для интернет-расчетов | Предоплата, зачет при отгрузке, частичный возврат, передача состава заказа и электронного чека |
| Самовывоз с оплатой в магазине | Отдельная схема для очной оплаты и ККТ в месте расчета | Чтобы оплата на стойке не запускала повторное списание и повторный чек по интернет-заказу |
| Оплата курьеру | ККТ и платежный способ, доступные курьеру в момент расчета | Связь устройства с заказом, подтверждение списания, возврат и отправка чека |
| Цифровой товар или доступ к сервису | Связка «подтвержденная оплата — выдача доступа — фискализация» | Момент исполнения услуги, повторная выдача доступа и возврат |
| Подписка | Интеграция с рекуррентными списаниями и отдельными событиями отмены и возврата | Первый платеж, повторный платеж, неуспешное списание, отмена автопродления и возврат |
Для интернет-эквайринга отдельно сравните способы оплаты, уведомления, возвраты и порядок сверки. Полезный ориентир — материал про подключение онлайн-эквайринга.
Разделите роли компонентов:
Банковская квитанция подтверждает платеж, но не заменяет кассовый чек, если для расчета требуется ККТ. До разработки зафиксируйте статус продавца, тип покупателя, способы оплаты, момент передачи товара или оказания услуги и основания для возможного неприменения кассы. Нормативную основу сверяйте по тексту 54-ФЗ в КонсультантПлюс и разъяснениям на сайте ФНС России.
Рабочая цепочка должна выглядеть так: создание заказа → подтверждение платежа → запрос на фискализацию → результат ККТ → отправка чека → сверка. Телефон или электронную почту покупателя собирайте до расчета, если чек отправляется электронно.
Платежная интеграция должна подтверждать не сам факт перехода на страницу успеха, а результат операции на стороне провайдера. В ТЗ зафиксируйте следующие правила:
order_id, сумму, валюту и итоговый статус операции с данными заказа. Не принимайте сумму из браузера без повторной проверки.Для каждого события задайте владельца: кто повторяет запрос, кто проверяет статус, кто разбирает расхождение суммы и кто сообщает покупателю об ошибке.
Если покупатель сначала платит на сайте, а товар передается позже, в схеме может участвовать предоплата и ее последующий зачет. В ТЗ свяжите платеж с конкретным заказом, а событие передачи — с фактически отгруженными позициями. При частичной отгрузке не передавайте в документ товары, которые еще не переданы.
Если покупатель платит при самовывозе или курьеру, это отдельный расчет. Укажите место оплаты, устройство, способ подтверждения и отправку чека; не запускайте повторное списание по уже оплаченному интернет-заказу.
Опишите, что считается исполнением: выдача файла, активация лицензии, открытие доступа или другое событие. Свяжите подтвержденное списание, формирование чека и выдачу продукта так, чтобы сбой одного шага попадал в очередь на разбор, а не терялся.
Разделите первый платеж, повторные списания, неуспешную попытку, оказание услуги и возврат. Отмена автопродления сама по себе не означает возврат: возврат оформляется только при фактическом возврате денег.
Берите готовый модуль, если он поддерживает вашу версию CMS и все события расчетов. Выбирайте собственную интеграцию по API, если модуль не умеет работать с нужными платежными статусами, подписками, частичными возвратами или нестандартной логикой заказа.
| Критерий | Готовый модуль | Собственный API | Как принять |
|---|---|---|---|
| CMS и обновления | Поддерживает установленную версию | Код сопровождает разработчик | Тест на копии сайта после обновления CMS |
| Webhook и статусы | Настроены провайдером | Проектируются в интеграции | Проверить подпись, повторы, задержку и порядок событий |
| Предоплата и зачет | Есть отдельные настройки | События задаются в API | Провести тест оплаты, отгрузки и частичной отгрузки |
| Возврат | Поддерживает полный и частичный возврат | Передает состав, сумму и идентификатор операции | Сверить платеж, возврат и фискальный документ |
| Защита от дублей | Есть идемпотентность | Реализуется разработчиком | Повторить один webhook и один запрос возврата |
| ККТ | Подключается через поддерживаемый сервис | Работает через API поставщика фискализации | Проверить вид расчета, ФН, ОФД и сценарий места расчета |
| Сбои | Есть журнал и уведомления | Нужны очередь и мониторинг | Отключить кассу в тесте и восстановить событие |
Для магазина мы можем разобрать карту оплат, самовывоза, доставки и возвратов; для цифрового продукта — связать оплату, выдачу доступа и чек; для подписки — описать повторные списания, отмены и возвраты.
Результат работы зафиксируйте до разработки: аудит схемы расчетов, готовое ТЗ, подбор варианта ККТ и интеграции, сценарии приемочных тестов и помощь в запуске. Конкретный состав работ определите после получения данных о CMS, ассортименте, способах оплаты и местах расчета.
Нет, интернет-эквайринг принимает деньги, но не заменяет ККТ. Если для конкретного расчета нет предусмотренного освобождения, подключите фискализацию и проверьте отправку кассового чека.
Нет, сначала протестируйте готовый модуль для вашей CMS. Собственный API оправдан, если модуль не поддерживает нужные статусы, подписки, предоплату, частичные возвраты или защиту от дублей.
Да, облачная ККТ подходит для интернет-расчетов без непосредственного взаимодействия с покупателем. Для оплаты в магазине или у курьера нужна отдельная схема с учетом места и способа расчета.
Заложите в интеграцию событие зачета предоплаты при передаче товара, если расчет оформлен как аванс или предоплата. Состав и момент документа зависят от фактической схемы расчета, ранее сформированного чека и объема отгрузки, поэтому частичную передачу связывайте только с переданными позициями.
Проведите сквозной тест от создания заказа до получения чека и сверки платежа. Включите отказ, задержанный и повторный webhook, тайм-аут, предоплату, зачет, полный и частичный возврат и недоступность ККТ.
Подготовьте CMS и ее версию, ассортимент, способы оплаты, места расчета, порядок отгрузки, подписки и возвраты. Оставьте заявку в «Интернет Касса» — разберем схему, определим состав ТЗ, вариант фискализации и приемочные тесты.