Новые требования к онлайн-чекам

С первого сентября 2025 года в силу вступают новые требования ФФД (Приказ от 26.03.2025 ЕД-7-20/236), в рамках которых изменились обязательные реквизиты в чеках, формируемых интернет магазинами.

Теперь, если ККТ применяется при осуществлении расчета в безналичном порядке в сети «Интернет», в чеках требуется передавать следующие реквизиты:

Рассказываем, как это сделать через Java SDK смарт-терминала.

Минимальные требования

Как доработать приложение для соответствия новым требованиям

Изменения в объекте печатной группы

В объект печатной группы был добавлен новый признак receiptFromInternet:

public PrintGroup(
           String identifier,
           Type type,
           String orgName,
           String orgInn,
           String orgAddress,
           TaxationSystem taxationSystem,
           boolean shouldPrintReceipt,
           @Nullable Purchaser purchaser,
           @Nullable MedicineAttribute medicineAttribute,
           boolean receiptFromInternet
   ) 

Чтобы соответствовать новым требованиям, передавайте true в параметре receiptFromInternet. Объект печатной группы передается при печати чека через команды PrintXXXXReceiptCommand или, если чек формируется через интерфейс смарт-терминала, при обработке события PrintGroupRequiredEvent.

Если формируете чек через команды PrintXXXXReceiptCommand

  1. Заполните объект PrintGroup, указав в нём признак receiptFromInternet в значение true:

    val printGroup: PrintGroup = PrintGroup(
       UUID.randomUUID().toString(),
       PrintGroup.Type.CASH_RECEIPT,
       null,
       null,
       null,
       TaxationSystem.COMMON,
       true,
       null,
       null,
       true
    )
    
  2. Создайте объект чека, передав в него печатную группу:

    val printReceipt: Receipt.PrintReceipt = Receipt.PrintReceipt(
       printGroup,
       getPositions(),
       getPayments(),
       java.util.HashMap<Payment, BigDecimal>(), java.util.HashMap<String, BigDecimal>()
    )
    
    val listDocs: java.util.ArrayList<Receipt.PrintReceipt> = java.util.ArrayList<Receipt.PrintReceipt>()
    listDocs.add(printReceipt)
    
  3. Вызовите команду PrintSellReceiptCommand. Обязательно заполните номер телефона или email покупателя, в поле paymentPlace (Место расчета) укажите интернет адрес сайта, на котором приобретался товар или услуга:

    PrintSellReceiptCommand(
       listDocs,
       null,
       "79159084679",
       "example@example.com",
       null,
       null,
       "internet-market.ru"
    ).process(
       this
    )
    

Если формируете чек через интерфейс смарт-терминала или команды OpenXXXXReceiptCommand

Если чек формируется любым другим способом, отличным от использования команды PrintXXXXReceiptCommand, то потребуется подписаться на событие PrintGroupRequiredEvent и передать объект печатной группы с признаком receiptFromInternet, равным true. Чтобы изменить адрес и место расчета, которое указано при регистрации, потребуется подписаться на еще одно событие (ReturnDeliveryRequisitesForReceiptRequestedEvent) и передать в нём адрес в сети интернет. Если вы хотите автоматически подставлять в чек email или телефон покупателя, то потребуется переходить в раздел продажи с помощью команды OpenSellReceiptCommand.