Как правильно отразить оплату бонусами в чеке при использовании драйвера Атол

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

Вопрос интеграции программ лояльности с кассовым оборудованием часто вызывает затруднения у разработчиков 1С. Основная дилемма заключается в том, как именно передать информацию о бонусах в фискальный накопитель: как скидку, уменьшающую цену товара, или как отдельный вид оплаты. В этой статье мы подробно разберем технические и юридические нюансы регистрации чеков с бонусными баллами при работе через драйвер Атол 8.16 и выше.

Различие между скидкой и способом расчета

Для начала проанализируем терминологию, которую часто путают при программировании. В протоколе ККТ существует два разных понятия: PaymentMode (Признак способа расчета) и PaymentMethod (Тип оплаты).

Признак способа расчета (Тег 1214) определяет, в какой момент происходит расчет относительно передачи товара. Если клиент пришел в магазин, выбрал товар и тут же оплатил его часть бонусами, а часть деньгами — это всегда полный расчет (значение 4). Бонусы никак не превращают продажу в кредит или аванс в момент выдачи товара.

Тип оплаты (Тег 1081) определяет, чем именно платит клиент. Обычно это "Наличные" (0) или "Безналичные" (1). Существует также тип "Встречное предоставление" (часто №4), который некоторые используют для бонусов. Однако этот путь таит в себе налоговые риски, так как налоговая база в этом случае считается от полной стоимости товара, без учета бонусного снижения.

Бонусы как скидка: оптимальное решение

Рассмотрим наиболее безопасный и распространенный вариант, к которому пришли участники обсуждения. Бонусы, которые накоплены клиентом в рамках маркетинговой акции (подарены магазином), юридически должны трактоваться как скидка.

Это означает, что перед отправкой данных в драйвер Атол мы должны пересчитать цену каждой позиции в чеке. Проанализируем алгоритм распределения бонусов:

  1. Вычисляем общую сумму чека по прайсовым ценам.
  2. Определяем максимально допустимую сумму списания бонусов (согласно правилам программы лояльности).
  3. Распределяем эту сумму скидки пропорционально стоимости каждой позиции.
  4. Передаем в ККТ итоговую цену товара, уже уменьшенную на бонус.

Выясним причину, по которой это решение является приоритетным: при таком подходе в чеке фиксируется реальная выручка, с которой будут уплачены налоги. Если товар стоил 100 рублей, а 20 рублей оплачено бонусами как скидкой, то в фискальных данных пройдет продажа за 80 рублей. Это исключает претензии ФНС по занижению налоговой базы.

Техническая реализация распределения в 1С

При программировании распределения скидки крайне важно следить за "лишней копейкой", которая может возникнуть из-за округления. Драйвер Атол не примет чек, если сумма позиций не совпадет с итогом. Разберем пример кода на языке 1С для пропорционального распределения:


// Пример распределения суммы бонусов по позициям чека
ВсегоБонусовКРаспределению = 500; // Сумма, которую тратит клиент
ВсегоСуммаЧека = ТаблицаТоваров.Итог("Сумма");
ОстатокБонусов = ВсегоБонусовКРаспределению;

Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
    // Для последней строки забираем весь остаток, чтобы избежать ошибок округления
    Если ТаблицаТоваров.Индекс(СтрокаТовара) = ТаблицаТоваров.Количество() - 1 Тогда
        ТекущаяСкидка = ОстатокБонусов;
    Иначе
        ТекущаяСкидка = Окр(СтрокаТовара.Сумма / ВсегоСуммаЧека * ВсегоБонусовКРаспределению, 2);
        ОстатокБонусов = ОстатокБонусов - ТекущаяСкидка;
    КонецЕсли;
    
    // Передаем в драйвер цену за вычетом скидки
    СтрокаТовара.ЦенаРегистрации = (СтрокаТовара.Сумма - ТекущаяСкидка) / СтрокаТовара.Количество;
КонецЦикла;

Проблема нулевой цены и "подарков"

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

Важный нюанс: Полная оплата бонусами (бесплатная передача) может быть расценена как дарение. Для юридических лиц дарение физическим лицам свыше определенной суммы (3000 руб. по ГК РФ) требует особого оформления, а с точки зрения НДС — начисления налога с рыночной стоимости.

Рекомендация: Всегда оставляйте к оплате "живыми" деньгами хотя бы 1 рубль (или 1 копейку) на каждую позицию или на чек в целом. Это переводит операцию из разряда "дарения" в разряд "купли-продажи со скидкой".

Признак предмета расчета (ItemType)

Автор исходного вопроса предлагал использовать ItemType = 10 (платеж/выплата). Давайте разберем, почему это не совсем корректно. Согласно ФФД, ItemType (Тег 1212) со значением 1 используется для товаров, 10 — для платежей, не связанных напрямую с передачей товара в этот момент (например, погашение кредита или аванс).

Если вы продаете конкретный товар (хлеб, одежду, запчасть), вы обязаны использовать признак 1 (Товар). Бонусы здесь — лишь условие формирования цены. Использование значения 10 приведет к тому, что в ОФД уйдет информация о приеме платежа, но факт реализации конкретной товарной позиции не будет зафиксирован должным образом, что критично для систем учета, таких как "Честный ЗНАК".

Юридическая безопасность программы лояльности

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

Чтобы этого избежать, в правилах обязательно должно быть прописано:

В самом чеке полезно выводить дополнительный нефискальный текст через методы драйвера Атол (например, PrintText), информирующий клиента об остатке баллов. Это не влияет на налоги, но снимает вопросы у покупателя.

Итоги

Подводя итог, при регистрации чека с частичной оплатой бонусами через Атол, мы рекомендуем:

  1. Использовать PaymentMode = 4 (Полный расчет).
  2. Проводить бонусы как скидку, уменьшая цену каждой позиции.
  3. Распределять скидку пропорционально, корректируя последнюю позицию для точности копеек.
  4. Оставлять минимальную оплату в 1 рубль для юридической чистоты сделки.
  5. Сохранять ItemType = 1 для товаров (или соответствующий тип для услуг).

Соблюдение этих правил позволит вам корректно настроить обмен между 1С и кассовым аппаратом, минимизируя риски как со стороны налоговой инспекции, так и со стороны покупателей.

← На главную