Как правильно пробивать чеки ККМ по СБП и обрабатывать возвраты в 1С?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При переходе на оплату через Систему быстрых платежей (СБП) у многих пользователей и разработчиков 1С, особенно работающих с нетиповыми конфигурациями, возникает вопрос: как корректно фискализировать такие платежи на контрольно-кассовой машине (ККМ) и, что не менее важно, как правильно обрабатывать возвраты? Рассмотрим эту ситуацию подробнее, опираясь на опыт коллег и официальные требования.

Особенности фискализации платежей по СБП в чеках ККМ

Первоначально может показаться, что для СБП необходим особый тип оплаты, явно указанный в чеке. Однако, давайте разберем текущие требования и сложившуюся практику.

  1. Требования форматов фискальных данных (ФФД):

    Согласно действующим форматам фискальных данных, прямой обязанности выделять СБП как отдельный вид оплаты не предусмотрено. Для большинства операций через СБП вполне достаточно указания способа оплаты как «Безналичный расчет» или «Электронно». Это означает, что на уровне фискального регистратора и передачи данных в ОФД, СБП часто трактуется как одна из форм безналичной оплаты.

  2. Потребности учета и возвратов:

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

  3. Отсутствие штрихкода для поиска чека:

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

Ключевые аспекты обработки возвратов по СБП

Один из самых острых вопросов при работе с СБП — это процедура возврата денежных средств. Она имеет существенные отличия от традиционного эквайринга по банковским картам.

  1. Возврат строго по СБП:

    Мы должны понимать, что возврат денежных средств, оплаченных через СБП, должен осуществляться строго на тот же счет, с которого была произведена оплата. Это означает, что кассир не может просто вернуть деньги на любую банковскую карту или выдать наличные, если исходная оплата была через СБП. Попытка совершить такой возврат может привести к серьезным проблемам с банком-эквайером или банком-участником СБП, а также к некорректному финансовому учету.

  2. Скорость возврата:

    В отличие от карточных возвратов, которые могут занимать несколько рабочих дней, возврат средств через СБП зачастую происходит практически мгновенно. Это преимущество СБП, но оно также накладывает отпечаток на процесс, требуя точной и быстрой идентификации исходной операции.

  3. Роль кассира и идентификация платежа:

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

  4. Отличия от эквайринга:

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

Реализация СБП в 1С для нетиповых конфигураций: пошаговый подход

Для тех, кто сталкивается с задачей интеграции СБП в нетиповую конфигурацию 1С, мы предлагаем рассмотреть следующий подход, основанный на анализе существующих решений и рекомендаций.

1. Изучаем типовую реализацию: 1С:Розница 2.3.10

Если ваша конфигурация не является типовой, но вы хотите внедрить СБП, лучший первый шаг — это обратиться к уже существующим решениям. В частности, мы рекомендуем проанализировать, как реализована оплата по СБП в типовой конфигурации 1С:Розница версии 2.3.10 или более поздних.

В типовых конфигурациях 1С, таких как 1С:Розница, функциональность СБП уже встроена. Изучение этой реализации позволит вам понять:

  1. Механизмы взаимодействия с банком: Как 1С инициирует платеж, получает его статус, и какие данные передаются. Обычно это происходит через специальные обработки обслуживания или внешние компоненты, которые взаимодействуют с API банка-участника СБП или агрегатора платежей.
  2. Хранение данных о платеже: Какие реквизиты сохраняются в учетной системе после успешной оплаты. Вероятно, это будет уникальный идентификатор транзакции СБП, ее статус, сумма и другие параметры, необходимые для дальнейшей обработки.
  3. Отражение в чеке: Как формируется фискальный чек, какие данные об оплате передаются на ККМ. Возможно, в типовой конфигурации на ККМ передается только "Безналичный расчет", но при этом в базе сохраняются все детали СБП-транзакции.
  4. Процедура возврата: Как система позволяет инициировать возврат по СБП, по каким данным ищется исходный платеж, и какие команды отправляются для его отмены или возврата.

2. Передача дополнительной информации в ККМ

Хотя ФФД не требует выделять СБП, для кассира и внутреннего учета полезно, чтобы на чеке было указание на СБП. Это можно реализовать следующим образом:

  1. Добавление текста в нефискальную область чека: Многие модели ККМ позволяют печатать произвольный текст в конце или начале чека, который не является фискальными данными. Мы можем настроить печать строки, например, "Оплата по СБП", чтобы кассир сразу видел тип платежа. Это особенно актуально для нетиповых конфигураций, где модификация фискальной части может быть сложной.
  2. Сохранение идентификатора транзакции: В своей учетной системе (например, в документе ЧекККМ или РеализацияТоваровУслуг) мы должны предусмотреть поле для хранения уникального идентификатора платежа СБП (например, GUID транзакции). Этот идентификатор будет критически важен при необходимости осуществления возврата. Он позволит нам однозначно связать чек с конкретной СБП-операцией в банковской системе.

Пример структуры данных для хранения информации о платеже в нетиповой конфигурации:


// В документ "ЧекККМ" или "РеализацияТоваровУслуг" добавляем реквизиты:
// ТипОплатыСБП (Булево) - признак оплаты через СБП
// ИдентификаторПлатежаСБП (Строка) - уникальный ID транзакции в СБП
// СтатусПлатежаСБП (Строка) - статус платежа (Оплачен, Ошибка, Отменен)

// При пробитии чека, если оплата по СБП:
// В структуре параметров для ККМ
ПараметрыЧека.ТипОплаты = "БезналичныйРасчет"; 
// Дополнительная информация для печати (нефискальная часть)
ПараметрыЧека.ДополнительныйТекст = "Оплата по СБП. ID: " + ИдентификаторПлатежаСБП; 

3. Процедура возврата в нетиповой конфигурации

При возврате товара, оплаченного через СБП, мы должны реализовать следующий алгоритм:

  1. Идентификация исходного чека: Кассир находит исходный чек. Система по номеру чека или другим данным находит соответствующий документ ЧекККМ в базе данных.
  2. Проверка типа оплаты: Мы должны проверить, был ли исходный платеж произведен по СБП. Это можно сделать, обратившись к сохраненному в документе реквизиту ТипОплатыСБП.
  3. Запуск процедуры возврата по СБП: Если платеж был по СБП, мы инициируем специальную операцию возврата. Для этого нам понадобится сохраненный ИдентификаторПлатежаСБП. Система должна отправить соответствующий запрос в банк-участник СБП (через API или специальную обработку), используя этот идентификатор.
  4. Формирование чека возврата: После успешного инициирования возврата в банке, мы формируем фискальный чек возврата. В нем также будет указан "Безналичный расчет". При необходимости, мы можем добавить в нефискальную часть чека информацию о том, что это возврат по СБП и ссылку на исходный идентификатор.

Пример логики возврата:


// Функция возврата по СБП
Функция ВыполнитьВозвратПоСБП(ИдентификаторПлатежаСБП, СуммаВозврата)
    // Здесь мы обращаемся к модулю интеграции с банком СБП
    // Отправляем запрос на возврат с ИдентификаторПлатежаСБП и СуммаВозврата
    // Получаем ответ от банка
    Если РезультатБанка = "Успех" Тогда
        Возврат Истина;
    Иначе
        Возврат Ложь;
    КонецЕсли;
КонецФункции

// В обработке возврата:
Если ДокументОплаты.ТипОплатыСБП Тогда
    Если ВыполнитьВозвратПоСБП(ДокументОплаты.ИдентификаторПлатежаСБП, СуммаВозврата) Тогда
        // Пробиваем фискальный чек возврата
        // ...
        Сообщить("Возврат по СБП успешно выполнен.");
    Иначе
        Сообщить("Ошибка при выполнении возврата по СБП. Обратитесь в техподдержку банка.");
    КонецЕсли;
Иначе
    // Обработка стандартного возврата (наличными, картой)
    // ...
КонецЕсли;

4. Интеграция с банком или поставщиком ПО

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

Важные рекомендации и итоги

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

← На главную