При переходе на оплату через Систему быстрых платежей (СБП) у многих пользователей и разработчиков 1С, особенно работающих с нетиповыми конфигурациями, возникает вопрос: как корректно фискализировать такие платежи на контрольно-кассовой машине (ККМ) и, что не менее важно, как правильно обрабатывать возвраты? Рассмотрим эту ситуацию подробнее, опираясь на опыт коллег и официальные требования.
Первоначально может показаться, что для СБП необходим особый тип оплаты, явно указанный в чеке. Однако, давайте разберем текущие требования и сложившуюся практику.
Согласно действующим форматам фискальных данных, прямой обязанности выделять СБП как отдельный вид оплаты не предусмотрено. Для большинства операций через СБП вполне достаточно указания способа оплаты как «Безналичный расчет» или «Электронно». Это означает, что на уровне фискального регистратора и передачи данных в ОФД, СБП часто трактуется как одна из форм безналичной оплаты.
Несмотря на отсутствие строгих требований ФФД, для внутреннего учета, удобства работы кассира и, самое главное, для корректной обработки возвратов, многие банки и разработчики учетных систем рекомендуют или даже требуют более детальной информации. Именно здесь возникает потребность в дополнительной идентификации платежа.
Вопреки распространенному заблуждению, для поиска чека при возврате обычно не требуется дополнительный штрихкод, специфичный для СБП. Стандартные механизмы поиска чека по номеру, дате или другим фискальным признакам остаются актуальными. Однако, для привязки возврата к конкретной СБП-транзакции могут потребоваться другие уникальные идентификаторы.
Один из самых острых вопросов при работе с СБП — это процедура возврата денежных средств. Она имеет существенные отличия от традиционного эквайринга по банковским картам.
Мы должны понимать, что возврат денежных средств, оплаченных через СБП, должен осуществляться строго на тот же счет, с которого была произведена оплата. Это означает, что кассир не может просто вернуть деньги на любую банковскую карту или выдать наличные, если исходная оплата была через СБП. Попытка совершить такой возврат может привести к серьезным проблемам с банком-эквайером или банком-участником СБП, а также к некорректному финансовому учету.
В отличие от карточных возвратов, которые могут занимать несколько рабочих дней, возврат средств через СБП зачастую происходит практически мгновенно. Это преимущество СБП, но оно также накладывает отпечаток на процесс, требуя точной и быстрой идентификации исходной операции.
Банк сам по себе не «видит» чек ККМ напрямую, однако он взаимодействует с фискальными данными, передаваемыми оператором фискальных данных (ОФД) в ФНС. Для кассира же крайне важно иметь возможность однозначно определить, каким способом был оплачен чек, чтобы избежать ошибок при возврате. Если на чеке будет явная пометка «СБП» или какой-либо уникальный идентификатор платежа СБП (например, номер транзакции), это существенно упростит работу кассира и минимизирует риски неправильных действий. Именно для кассира на чеке можно добавлять любую информацию, которая поможет ему в работе, при этом не нарушая ФФД.
Важно помнить, что СБП и эквайринг — это принципиально разные платежные системы. Эквайринг обычно подразумевает оплату с помощью банковских карт через терминал, тогда как СБП — это оплата по QR-коду или ссылке непосредственно из мобильного банковского приложения. Эти системы не связаны между собой, и механизмы возврата у них разные. Например, некоторые эквайринговые терминалы могут автоматически сопоставлять возврат с предыдущей покупкой по номеру карты или транзакции, но для СБП такая логика не применяется, требуется более явная идентификация на стороне учетной системы.
Для тех, кто сталкивается с задачей интеграции СБП в нетиповую конфигурацию 1С, мы предлагаем рассмотреть следующий подход, основанный на анализе существующих решений и рекомендаций.
Если ваша конфигурация не является типовой, но вы хотите внедрить СБП, лучший первый шаг — это обратиться к уже существующим решениям. В частности, мы рекомендуем проанализировать, как реализована оплата по СБП в типовой конфигурации 1С:Розница версии 2.3.10 или более поздних.
В типовых конфигурациях 1С, таких как 1С:Розница, функциональность СБП уже встроена. Изучение этой реализации позволит вам понять:
Хотя ФФД не требует выделять СБП, для кассира и внутреннего учета полезно, чтобы на чеке было указание на СБП. Это можно реализовать следующим образом:
ЧекККМ или РеализацияТоваровУслуг) мы должны предусмотреть поле для хранения уникального идентификатора платежа СБП (например, GUID транзакции). Этот идентификатор будет критически важен при необходимости осуществления возврата. Он позволит нам однозначно связать чек с конкретной СБП-операцией в банковской системе.
Пример структуры данных для хранения информации о платеже в нетиповой конфигурации:
// В документ "ЧекККМ" или "РеализацияТоваровУслуг" добавляем реквизиты:
// ТипОплатыСБП (Булево) - признак оплаты через СБП
// ИдентификаторПлатежаСБП (Строка) - уникальный ID транзакции в СБП
// СтатусПлатежаСБП (Строка) - статус платежа (Оплачен, Ошибка, Отменен)
// При пробитии чека, если оплата по СБП:
// В структуре параметров для ККМ
ПараметрыЧека.ТипОплаты = "БезналичныйРасчет";
// Дополнительная информация для печати (нефискальная часть)
ПараметрыЧека.ДополнительныйТекст = "Оплата по СБП. ID: " + ИдентификаторПлатежаСБП;
При возврате товара, оплаченного через СБП, мы должны реализовать следующий алгоритм:
ЧекККМ в базе данных.
ТипОплатыСБП.
ИдентификаторПлатежаСБП. Система должна отправить соответствующий запрос в банк-участник СБП (через API или специальную обработку), используя этот идентификатор.
Пример логики возврата:
// Функция возврата по СБП
Функция ВыполнитьВозвратПоСБП(ИдентификаторПлатежаСБП, СуммаВозврата)
// Здесь мы обращаемся к модулю интеграции с банком СБП
// Отправляем запрос на возврат с ИдентификаторПлатежаСБП и СуммаВозврата
// Получаем ответ от банка
Если РезультатБанка = "Успех" Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
// В обработке возврата:
Если ДокументОплаты.ТипОплатыСБП Тогда
Если ВыполнитьВозвратПоСБП(ДокументОплаты.ИдентификаторПлатежаСБП, СуммаВозврата) Тогда
// Пробиваем фискальный чек возврата
// ...
Сообщить("Возврат по СБП успешно выполнен.");
Иначе
Сообщить("Ошибка при выполнении возврата по СБП. Обратитесь в техподдержку банка.");
КонецЕсли;
Иначе
// Обработка стандартного возврата (наличными, картой)
// ...
КонецЕсли;
Необходимо обратить внимание, что успешная реализация оплаты и возвратов по СБП требует тесной интеграции вашей учетной системы с банком-участником СБП или с поставщиком программного обеспечения для кассового оборудования. Мы можем использовать либо прямое API-подключение к системе банка, либо готовые решения от разработчиков кассового ПО, которые уже реализовали такую интеграцию. При выборе решения мы должны убедиться, что оно соответствует текущим версиям ФФД и поддерживает все необходимые операции для СБП, включая чеки прихода, возврата прихода, а также возможность получения информации о статусе платежей.
Таким образом, хотя прямого обязательства в ФФД выделять СБП как отдельный вид оплаты нет, для эффективного управленческого учета, удобства кассиров и, что самое важное, корректной обработки возвратов через СБП, мы рекомендуем использовать дополнительные возможности кассового ПО и учетной системы для указания информации, позволяющей однозначно идентифицировать платеж как СБП-операцию. Изучение типовой реализации в 1С:Розница станет отличной отправной точкой для вашей нетиповой конфигурации.