Помогаем продавать
Войти в ЛК

Программный интерфейс приложений (API) для работы с ИС “Ferma”

Версия 2.15 от 03.09.2019 Открыть pdf-файл

Введение

В документе приводятся технические сведения о программном интерфейсе приложений (API) предоставляющем возможность регистрировать онлайн-кассы и инициировать генерацию кассовых документов посредством информационной системы (ИС) “Ferma”.
Обмен данными с онлайн-кассами происходит по протоколу HTTP с использованием зашифрованного канала (HTTPS). Данные запросов и ответов передаются в виде структуры JSON. Вне зависимости от наличия ошибок в данных, обязательным условием успешного выполнения запроса является ответ с кодом 200 согласно протоколу HTTP.
Ниже описаны запросы HTTP, которыми реализуются функции API по работе с онлайн-кассами.

1. Общий вид запроса и ответа в процессе использования API

Кодировка, используемая в запросах и ответах – UTF-8. Запросы выполняются методами POST и GET, параметры запроса располагаются в структуре данных формата JSON, передаваемой в блоке данных запроса (при использовании POST), также параметры могут передаваться в строке запроса (при использовании GET).
Ответы выдаются сервером в формате JSON и, в случае успешности ответа согласно его заголовку (код ответа по протоколу HTTP равен 200), данные имеют следующий обобщенный вид:

{
  "Status": "Success",
  "Data": {}
}

Здесь ключу «Data» соответствует пустое поле; ключ введен в структуру для обеспечения единообразия запросов в ИС “Ferma”; параметр «Status» – состояние обработки запроса – в данном случае имеет значение «Success» (запрос обработан успешно).
В случае неуспешности ответа (код ответа по протоколу HTTP не равен 200) данные имеют следующий обобщенный вид:

{
  "Status": "Failed",
  "Error": {
    Code: 0,
    Message: "string"
  }
}

Здесь ключу «Error» соответствует объект, в котором присутствуют код и сообщение об ошибке; код ошибки всегда отличен от 0; на месте строки «string» будет сообщение об ошибке, возникшей при обработке переданных данных. Параметр «Status» в данном случае имеет значение «Failed» (обработка запроса не удалась).

2. Авторизация через AuthToken

Возможность множественных обращений к ИС “Ferma” после одной авторизации без использования механизма Cookies реализуется с помощью механизма AuthToken: после авторизации с передачей имени и пароля система возвращает код авторизации – строку символов, которая используется, как параметр авторизации при обращении к соответствующему личному кабинету (ЛК). HTTP-запрос авторизации, передающий имя пользователя и пароль в формате JSON выглядит следующим образом:

--- BEGIN ---
POST https://ferma.ofd.ru/api/Authorization/CreateAuthToken HTTP/1.1
Content-Length: 38
Content-Type: application/json; charset=utf-8
{"Login": "12345","Password": "56789"}
--- END ---

В данном запросе присутствуют примеры значений: передаваемое имя пользователя – «12345» и пароль – «56789»; они задаются как значения в JSON-структуре внутри запроса с ключами «Login» и «Password» соответственно. В ответ на данный запрос будет получен ответ по протоколу HTTP, который в случае успешной авторизации будет иметь код равный 200 и содержать структуру, подобную следующей (приведены примеры значений):

{
  "AuthToken": "f3accdfda7574736ba94a78d00e974f4",
  "ExpirationDateUtc": "2017-01-24T14:13:24"
}

Здесь с ключом «AuthToken» – код авторизации: строка символов AuthToken, представляет собой 32-значную последовательность шестнадцатеричных цифр, используемую для повторной аутентификации, а ключ «ExpirationDateUtc» – строка, описывающая момент времени (дату и время в формате UTC), до которого будет действовать данный код авторизации. Момент времени задается в формате «ГГГГ-ММ-ДДTчч:мм:сс» 1); здесь
ГГГГ – год даты, 4 цифры,
ММ – месяц даты, 2 цифры,
ДД – день даты 2 цифры,
T – заглавная латинская буква “T”, используется как разделитель даты и времени,
чч – часы, 2 цифры,
мм – минуты, 2 цифры,
сс – секунды, 2 цифры.

В случае проблем с авторизацией (код ответа по протоколу HTTP будет равен 403) данные будут отсутствовать, JSON-структура будет пустой (будет иметь вид «{}»). Полученный код авторизации используется в виде дополнительного параметра в запросах документов для сверки, где необходима авторизация 2). Пример запроса с использованием кода авторизации:

POST https://ferma.ofd.ru/api/kkt/cloud/receipt?AuthToken=Code1

здесь Code1 – действующий код авторизации, полученный в результате запроса авторизации.

3. HTTP-запросы к ИС “Ferma” для работы с онлайн-кассами

3.1. Формирование кассового чека

Вид запроса:

POST https://ferma.ofd.ru/api/kkt/cloud/receipt

Тело запроса представляет собой структуру JSON, содержащую необходимые параметры и имеющую следующий обобщенный вид:

{
  "Request": {
    "Inn": "string",
    "Type": "string",
    "InvoiceId": "string",
    "LocalDate": "2017-01-24T14:13:24",
    "CustomerReceipt": {
      "TaxationSystem": "Common",
      "Email": "string",
      "Phone": "string",
      "PaymentType": 1,
      "CustomUserProperty": {
        "Name": "название доп. атрибута",
        "Value": "значение доп. атрибута"
      },
      "PaymentAgentInfo": {
        "AgentType": "BANK_PAYMENT_AGENT",
      },
      "CorrectionInfo": {
        "Type": "SELF",
        "Description": "Неприменение ККТ",
        "ReceiptDate": "20.07.18",
        "ReceiptId": "123456"
      },
      "ClientInfo": {
        "Name": "Иванов Иван Иванович 9910 777777",
        "Inn": "450148839601"
      },
      "Items": [
        {
          "Label": "string",
          "Price": 0,
          "Quantity": 0,
          "Amount": 0,
          "Vat": "string",
          "MarkingCode": "000559D39E7F197241424331323334",
          "MarkingCodeStructured": {
            "Type": "MEDICINES",
            "Gtin": "77777777777777",
            "Serial": "RXWWWRRRRRRRR"
          },
          "PaymentMethod": 3,
          "OriginCountryCode": "398",
          "CustomsDeclarationNumber": "ТаможняДала Добро №1/#15",
          "PaymentType": 4,
          "PaymentAgentInfo": {
            "AgentType": "BANK_PAYMENT_AGENT",
            "TransferAgentPhone": "89061234567",
            "TransferAgentName": "наименование оператора перевода",
            "TransferAgentAddress": "адрес оператора перевода",
            "TransferAgentINN": "1234567890",
            "PaymentAgentOperation": "операция платежного агента",
            "PaymentAgentPhone": "89061234567",
            "ReceiverPhone": "89061234567",
            "SupplierInn": "012345678901",
            "SupplierName": "Иван Иванов",
            "SupplierPhone": "89061234567"
          },
        }, ...
      ],
      "PaymentItems": [
        {
          "PaymentType": 0,
          "Sum": 0.0
        }, ...
      ]
    }
  }
}

Параметры структуры приведены в таблице 2.

Таблица 2. Параметры структуры данных запроса на формирование кассового чека

Ключ Формат значения Описание Тег
Request Cтруктура Параметры запросы на формирование кассового документа
Inn Cтрока ИНН лица, от имени которого генерируется кассовый документ (чек)
Type Cтрока Тип формируемого документа (чек), см. п. 3.1.2
InvoiceId Cтрока Идентификатор счета, на основании которого генерируется чек
LocalDate Cтрока, описывающая момент времени (дату и время) Локальная дата и время чека
CustomerReceipt Cтруктура Содержимое клиентского чека
TaxationSystem Cтрока Система налогообложения, см. п. 3.1.3
Email 3) Cтрока Адрес электронной почты клиента
Phone 4) Cтрока Контактный телефон клиента
PaymentType Число Признак предмета расчета для всего чека. Возможные значения перечислены в п. 3.1.4 1212
CustomUserProperty Структура Дополнительный реквизит пользователя с учетом особенностей сферы деятельности, в которой осуществляются расчеты 1084
Value Строка Наименование дополнительного реквизита пользователя с учетом особенностей сферы деятельности, в которой осуществляются расчеты 1085
Name Строка Значение дополнительного реквизита пользователя с учетом особенностей сферы деятельности, в которой осуществляются расчеты 1086
PaymentAgentInfo 5) Структура Структура, содержащая данные платежного агента
AgentType Строка Тип (признак) платежного агента. Возможные значения:
BANK_PAYMENT_AGENT — банковский платежный агент;
BANK_PAYMENT_SUBAGENT — банковский платежный субагент;
PAYMENT_SUBAGENT — платежный субагент;
CONFIDANT — поверенный;
COMMISSIONER — комиссионер;
AGENT — агент.
1057
CorrectionInfo Структура Структура, описывающая информацию по чеку коррекции. Внимание! Структура присутствует в данных только в случае генерации чека коррекции. Для генерации обычного чека данная структура не нужна.
Type Строка Тип коррекции:
SELF — коррекция производится самостоятельно;
INSTRUCTION — коррекция производится по предписанию
Description Строка Описание коррекции и причин коррекции
ReceiptDate Строка Дата коррекции в формате «ДД.ММ.ГГ», здесь ДД — день, ММ — месяц, ГГ — год.
ReceiptId Строка Идентификатор чека, к которому применяется чек коррекции
ClientInfo Структура Данные о покупателе
Name Строка ФИО и паспортные данные покупателя или наименование организации, если клиент юр. лицо. Не более 256 символов в поле 1227
Inn Строка ИНН покупателя. Длина 10-12 цифр 1228
Items Массив структур Товарные позиции, приобретаемые клиентом 1059
Label Строка Название товарной позиции
Price Число с точкой Цена товарной позиции, в рублях
Quantity Число с точкой Количество товара в товарной позиции
Amount Число с точкой Общая стоимость товара в товарной позиции в рублях
Vat Строка Вид вычисляемого НДС см. п 3.1.1
MarkingCode Строка Код маркировки товарной позиции. Является аналогом «MarkingCodeStructured». При использовании данного параметра нельзя использовать «MarkingCodeStructured» 1162
MarkingCodeStructured Структура Код маркировки товарной позиции. Является аналогом «MarkingCode».При использовании данного параметра нельзя использовать «MarkingCode» 1162
Type Строка Тип товарной позиции. Возможные значения: MEDICINES, TOBACCO, SHOES
Gtin Строка Идентификационный номер GTIN (артикул)
Serial Строка Серийный номер товара
PaymentMethod Число Признак способа расчета:
1 – предоплата 100%;
2 – предоплата;
3 – аванс;
4 – полный расчет;
5 – частичный расчет;
6 – передача в кредит;
7 – оплата в кредит.
OriginCountryCode Строка Код страны происхождения товара. Не более 3 цифр. 6) 1230
CustomsDeclarationNumber Строка Номер таможенной декларации. Не более 32 символов 1231
PaymentType Число Признак предмета расчета для конкретной позиции в чеке. Если значение отсутствует берется значение для всего чека. Возможные значения перечислены в п. 3.1.4 1212
PaymentAgentInfo 7) Структура Структура, содержащая данные платежного агента
AgentType Строка Тип (признак) платежного агента. Возможные значения:
BANK_PAYMENT_AGENT — банковский платежный агент;
BANK_PAYMENT_SUBAGENT — банковский платежный субагент;
PAYMENT_SUBAGENT — платежный субагент;
CONFIDANT — поверенный;
COMMISSIONER — комиссионер;
AGENT — агент.
1057
TransferAgentPhone Строка Телефон оператора по переводу денежных средств 1075
TransferAgentName Строка Имя агента
TransferAgentAddress Строка Адрес агента
TransferAgentINN Строка ИНН агента
PaymentAgentOperation Строка Операция платежного агента
PaymentAgentPhone Строка Телефон платежного агента
ReceiverPhone Строка Телефон потребителя
SupplierInn Строка ИНН поставщика 1226
SupplierName Строка Наименование поставщика 1225
SupplierPhone Строка Телефон поставщика 1171
PaymentItems Массив структур Суммы по типам оплат
PaymentType Число Тип оплаты:
0 – наличными;
1 – безналичными;
2 – предварительная оплата (аванс);
3 – предварительная оплата (кредит);
4 – иная форма оплаты.
Sum Число с точкой Сумма по типу, в рублях

Все вышеуказанные поля являются необходимыми, за исключением полей Email и Phone, здесь необходимым является наличие хотя бы одного из них.
В случае успеха ответ имеет следующий вид:

{
  "Status": "Success",
  "Data": {
    "ReceiptId": "string"
  }
}

Параметры структуры «Data» приведены в таблице 3.

Таблица 3. Параметры структуры данных запроса на формирование кассового чека

Ключ Формат значения Описание
ReceiptId Строка, содержащая UUID Идентификатор чека для дальнейшего запроса состояния

3.1.1. Возможные значения вида вычисляемого НДС (поле “Vat”)

  • «Vat10» — налог на добавленную стоимость (НДС) 10%;
  • «Vat18» — НДС 18%;
  • «Vat20» — НДС 20% 8);
  • «Vat0» — НДС 0%;
  • «VatNo» — НДС не облагается;
  • «CalculatedVat10110» — вычисленный НДС 10% от 110% суммы;
  • «CalculatedVat18118» — вычисленный НДС 18% от 118% суммы;
  • «CalculatedVat20120» — вычисленный НДС 20% от 120% суммы9).

3.1.2. Типы формируемых чеков

  • «Income» — получение денежных средств от покупателя;
  • «IncomeReturn» — возврат денежных средств, полученных от покупателя;
  • «IncomePrepayment» — авансовый платеж от покупателя;
  • «IncomeReturnPrepayment» — возврат аванса;
  • «IncomeCorrection» — чек коррекции/приход;
  • «BuyCorrection» — чек коррекции/расход;
  • «Expense» — выдача денежных средств покупателю;
  • «ExpenseReturn» — возврат денежных средств, выданных покупателю.

3.1.3. Возможные значения типа налогообложения (поле “TaxationSystem”)

  • «Common» или «0» — общая система налогообложения;
  • «SimpleIn» или «1» — упрощенная система налогообложения (доход);
  • «SimpleInOut» или «2» — упрощенная система налогообложения (доход минус расход);
  • «Unified» или «3» — единый налог на вмененный доход;
  • «UnifiedAgricultural» или «4» — единый сельскохозяйственный налог;
  • «Patent» или «5» — патентная система налогообложения.

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

3.1.4. Возможные значения признака предмета расчета (поля “PaymentType”)

  • 1 — о реализуемом товаре, за исключением подакцизного товара (наименование и иные сведения, описывающие товар) – «ТОВАР» или «Т»;
  • 2 — о реализуемом подакцизном товаре (наименование и иные сведения, описывающие товар) – «ПОДАКЦИЗНЫЙ ТОВАР» или «АТ»;
  • 3 — о выполняемой работе (наименование и иные сведения, описывающие работу) – «РАБОТА» или «Р»;
  • 4 — об оказываемой услуге (наименование и иные сведения, описывающие услугу) – «УСЛУГА» или «У» или может не печататься;
  • 5 — о приеме ставок при осуществлении деятельности по проведению азартных игр – «СТАВКА АЗАРТНОЙ ИГРЫ» или «СТАВКА ИГРЫ» или «СА»;
  • 6 — о выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению азартных игр – «ВЫИГРЫШ АЗАРТНОЙ ИГРЫ» или «ВЫИГРЫШ АИ» или «ВА»;
  • 7 — о приеме денежных средств при реализации лотерейных билетов, электронных лотерейных билетов, приеме лотерейных ставок при осуществлении деятельности по проведению лотерей – «ЛОТЕРЕЙНЫЙ БИЛЕТ» или «СТАВКА ЛОТЕРЕИ» или «СЛ»;
  • 8 — о выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению лотерей – «ВЫИГРЫШ ЛОТЕРЕИ» или «ВЫИГРЫШ ЛОТЕРЕИ» или «ВЛ»;
  • 9 — о предоставлении прав на использование результатов интеллектуальной деятельности или средств индивидуализации – «ПРЕДОСТАВЛЕНИЕ РИД» или «РИД» (в ред. Приказа ФНС России от 22.10.2018 N ММВ-7-20/605@) (см. текст в предыдущей редакции);
  • 10 — об авансе, задатке, предоплате, кредите, взносе в счет оплаты, пени, штрафе, вознаграждении, бонусе и ином аналогичном предмете расчета – «ПЛАТЕЖ» или «П», «ВЫПЛАТА» или «В»;
  • 11 — о вознаграждении пользователя, являющегося платежным агентом (субагентом), банковским платежным агентом (субагентом), комиссионером, поверенным или иным агентом – «АГЕНТСКОЕ ВОЗНАГРАЖДЕНИЕ» или «АВ»;
  • 12 — о предмете расчета, состоящем из предметов, каждому из которых может быть присвоено значение от «1» до «11» – «СОСТАВНОЙ ПРЕДМЕТ РАСЧЕТА» или «СПР»;
  • 13 — о предмете расчета, не относящемуся к предметам расчета, которым может быть присвоено значение от «1» до «12» и от «14» до «18» – «ИНОЙ ПРЕДМЕТ РАСЧЕТА» или «ИПР»;
  • 14 — о передаче имущественных прав – «ИМУЩЕСТВЕННОЕ ПРАВО»;
  • 15 — о внереализационном доходе – «ВНЕРЕАЛИЗАЦИОННЫЙ ДОХОД» или может не печататься;
  • 16 — о суммах расходов, уменьшающих сумму налога (авансовых платежей) в соответствии с пунктом 3.1 статьи 346.21 Налогового кодекса Российской Федерации – «СТРАХОВЫЕ ВЗНОСЫ»;
  • 17 — о суммах уплаченного торгового сбора – «ТОРГОВЫЙ СБОР»;
  • 18 — о курортном сборе – «КУРОРТНЫЙ СБОР»;
  • 19 — о залоге – «ЗАЛОГ».

Внимание! Некоторые комбинации предметов расчета и систем налогообложения могут вызывать ошибку. Это связано с особенностями работ касс.

3.1.5. Условия успешного формирования чека

Сформированный чек будет считаться корректным, если он соответствует следующим условиям:

  • в чеке есть хотя бы одна позиция;
  • цена и сумма по позиции неотрицательная;
  • общая сумма всех позиций больше нуля;
  • входная строка наименования товара длиной не более 128 символов, прочие символы будут обрезаны;
  • указанная система налогообложения должна совпадать с одним из вариантов, зарегистрированных в ККТ;
  • числовые значения переданы с точностью не более двух знаков после запятой;
  • передан ИНН, если он требуется в документации.

3.1.6. Возможные ошибки

  • «Не найдены данные компании с ИНН Y», где Y — значение ИНН;
  • «Доступ запрещен»;
  • «Ошибка создания чека: X», где X — сообщение сервера системы;
  • «Превышено максимальное количество обращений», максимальное количество сообщений рассчитывается по максимальной допустимой нагрузке на кассу: один чек в 3 секунды;
  • Код ошибки 1038 – длина поля ClientInfo.Name превышает максимальную длину в 256 символов;
  • Код ошибки 1039 – неверно указан ИНН клиента в поле ClientInfo.Inn.

3.2. Проверка статуса кассового чека

Важно! Информация о статусе имеет срок годности (сутки), после которого перестает быть доступна. После истечения этого срока, при попытке запроса статуса вернется ошибка «Чек не найден». Это означает, что информация по данному чеку удалена из оперативной памяти для освобождения ресурсов, но она остается доступна при помощи запроса реестра кассовых чеков (3.3). Вид запроса:

POST https://ferma.ofd.ru/api/kkt/cloud/status

Тело запроса представляет собой структуру JSON, содержащую необходимые параметры и имеющую следующий обобщенный вид:

{
	"Request": {
		"ReceiptId": "string"
  	}
}

Параметры структуры приведены в таблице 3.

Таблица 3. Параметры структуры данных запроса статуса кассового чека

Ключ Формат значения Описание
Request Cтруктура Параметры запроса статуса кассового документа
ReceiptId Cтрока Идентификатор чека, полученный из запроса на формирование кассового документа

В случае успеха ответ имеет следующий вид:

{
  "Status": "Success",
  "Data": {
    "StatusCode": 1,
    "StatusName": "PROCESSED",
    "StatusMessage": "Чек сформирован на кассе",
    "ModifiedDateUtc": "2017-01-24T14:13:24",
    "ReceiptDateUtc": "2017-01-24T14:13:24",
    "Device": {
      "DeviceId": "string",
      "RNM": "string",
      "ZN": "string",
      "FN": "string",
      "FDN": "string",
      "FPD": "string"
    }
  }
}

Параметры структур Data и Device приведены соответственно в таблицах 3.1 и 3.2.

Таблица 3.1 Параметры структуры данных информации о кассовом чеке

Ключ Формат значения Описание
StatusCode Число Код статуса
StatusName Cтрока Название статуса
StatusMessage Cтрока Необязательный параметр, содержащий дополнительную информацию о текущем состоянии, может отсутствовать
ModifiedDateUtc Cтрока, описывающая момент времени (дату и время в формате UTC) Дата и время последнего обновления информации о чеке
ReceiptDateUtc Cтрока, описывающая момент времени (дату и время в формате UTC) Дата и время, указанные в чеке
Device Cтруктура Информация об устройстве (ККТ), на котором была произведена операция

Возможные значения:

  • запрос на чек принят ИС «Ferma»:
    • «StatusCode»: 0,
    • «StatusName»: «NEW»,
    • «StatusMessage»: «запрос на чек принят Фермой»,
  • чек сформирован на кассе:
    • «StatusCode»: 1,
    • «StatusName»: «PROCESSED»,
    • «StatusMessage»: «чек сформирован на кассе»,
  • чек передан в ОФД:
    • «StatusCode»: 2,
    • «StatusName»: «CONFIRMED»,
    • «StatusMessage»: «чек передан в ОФД»
  • чек не передан в ОФД, нужно отправить повторно:
    • «StatusCode»: 3,
    • «StatusName»: «KKT_ERROR»

Таблица 3.2 Параметры структуры данных информации о ККТ

Ключ Формат значения Описание
DeviceId Строка Сервисный идентификатор устройства, на котором генерируется кассовый документ (чек)
RNM Строка Регистрационный номер кассы
ZN Строка Заводской номер кассы
FN Строка Номер фискального накопителя, установленного в кассу
FDN Строка Номер фискального документа
FPD Строка Фискальный признак документа

В случае, если чек не прошёл ФЛК при пробитие на кассе, ответ имеет следующий вид:

{
  "Status": "Success",
  "Data": {
    "StatusCode": 3,
    "StatusName": "KKT_ERROR",
    "StatusMessage": "Ошибка пробития чека на кассе",
    "Description": "[-3975] Некорректное значение параметров команды ФН",
    "ModifiedDateUtc": "2019-07-25T12:08:00",
    "ReceiptDateUtc": null,
    "Device": null
  }
}

При получении данной ошибки, необходимо повторно отправить запрос на пробитие чека.

Параметры структуры приведен в таблице 3.3.

Таблица 3.3.

Ключ Формат значения Описание
StatusCode Число Код ошибки
StatusName Cтрока Название ошибки
StatusMessage Cтрока Описание ошибки
Description Cтрока Детальное описание ошибки
ModifiedDateUtc Cтрока, описывающая момент времени (дату и время в формате UTC) Дата и время последнего обновления информации о чеке
ReceiptDateUtc Cтрока, описывающая момент времени (дату и время в формате UTC) Дата и время, указанные в чеке
Device Cтруктура Информация об устройстве (ККТ), на котором была произведена операция

3.3. Запрос реестра кассовых чеков

Вид запроса:

POST https://ferma.ofd.ru/api/kkt/cloud/list

Тело запроса представляет собой структуру JSON, содержащую необходимые параметры и имеющую следующий обобщенный вид:

{
  "Request": {
    "ReceiptId": "e0d2212f-4e85-475a-8e6e-c533f233e1d9",
    "StartDateUtc": "2017-01-24T14:13:24",
    "EndDateUtc": "2017-01-24T14:13:24",
    "StartDateLocal": "2017-01-24T14:13:24",
    "EndDateLocal": "2017-01-24T14:13:24"
  }
}

В случае наличия не пустого параметра «ReceiptId» остальные могут отсутствовать; в случае наличия не пустых параметров «StartDateUtc» и «EndDateUtc» остальные могут отсутствовать; в случае наличия не пустых параметров «StartDateLocal» и «EndDateLocal» остальные могут отсутствовать. Параметры структуры приведены в таблице 4.

Таблица 4. Параметры структуры данных запроса статуса кассового чека

Ключ Формат значения Описание
Request Структура Параметры запроса статуса кассового документа
ReceiptId Строка в формате UUID Идентификатор чека, полученный из запроса на формирование кассового документа
StartDateUtc Строка, описывающая момент времени (дату и время в формате UTC) Дата и время начала интервала
EndDateUtc Строка, описывающая момент времени (дату и время в формате UTC) Дата и время окончания интервала
StartDateLocal Строка, описывающая момент времени (дату и время) Локальная дата и время начала интервала
EndDateLocal Строка, описывающая момент времени (дату и время) Локальная дата и время окончания интервала

В случае успеха ответ имеет следующий вид:

{
  "Status": "Success",
  "Data": [
    {
      "ReceiptId": "e0d2212f-4e85-475a-8e6e-c533f233e1d9",
      "StatusCode": 1,
      "StatusName": "Чек сформирован на кассе",
      "StatusMessage": "PROCESSED",
      "ModifiedDateUtc": "2017-01-24T14:13:24",
      "InvoiceID": "50000249010"
    }, ...
  ]
}

Параметры структуры элементов массива «Data» приведены в таблице 4.1.

Таблица 4.1 Параметры структуры данных запроса на формирование кассового чека

Ключ Формат значения Описание
ReceiptId Строка Идентификатор чека, полученный из запроса на формирование кассового документа
StatusCode Число Код статуса
SatusName Строка Название статуса
SatusMessage Строка Необязательный параметр, содержащий дополнительную информацию о текущем состоянии, может отсутствовать
ModifiedDateUtc Строка, описывающая момент времени (дату и время в формате UTC) Дата и время последнего обновления информации о чеке
InvoiceID Строка Идентификатор (номер) счета, связанного с кассовым документом (Идентификатор чека со стороны клиента)

В случае, если чек не прошёл ФЛК при пробитие на кассе, ответ имеет следующий вид:

{
  "Status": "Success",
  "Data": {
    "StatusCode": 3,
    "StatusName": "KKT_ERROR",
    "StatusMessage": "Ошибка пробития чека на кассе",
    "Description": "[-3975] Некорректное значение параметров команды ФН",
    "ModifiedDateUtc": "2019-07-25T12:08:00",
    "ReceiptDateUtc": null,
    "Device": null
  }
}

При получении данной ошибки, необходимо повторно отправить запрос на пробитие чека.

Параметры структуры приведен в таблице 4.2.

Таблица 4.2

Ключ Формат значения Описание
StatusCode Число Код ошибки
StatusName Cтрока Название ошибки
StatusMessage Cтрока Описание ошибки
Description Cтрока Детальное описание ошибки
ModifiedDateUtc Cтрока, описывающая момент времени (дату и время в формате UTC) Дата и время последнего обновления информации о чеке
ReceiptDateUtc Cтрока, описывающая момент времени (дату и время в формате UTC) Дата и время, указанные в чеке
Device Cтруктура Информация об устройстве (ККТ), на котором была произведена операция

3.4. Запрос списка ККТ, которые обрабатывали ФД в определенный период

Вид запроса:

GET https://ferma.ofd.ru/api/kkt/cloud/stats/fn/aggregates?dateFrom=Date1&dateTo=Date2&AuthToken=Code1

Здесь Date1 и Date2 – начальная и конечная даты периода, за который будет получен список ККТ, которые обрабатывали ФД – строка символов, содержащая дату и время в формате ISO. Code1 – действующий код авторизации, полученный в результате запроса авторизации.

Успешным ответом на запрос возвращается структура данных JSON следующего примерного вида (вид значений показан на примерах, многоточие означает многократно повторяющуюся структуру такого же вида):

{
  "Status": "Success",
  "Data": [
    {
      "fn": "9280440300111111",
      "firstReceiptDate": "2019-07-16",
      "lastReceiptDate": "2019-07-16"
    },
    {
      "fn": "9280440300222222",
      "firstReceiptDate": "2019-07-16",
      "lastReceiptDate": "2019-07-16"
    },
    ...
  ]
}

3.5. Добавить черновик

Вид запроса:

POST https://ferma.ofd.ru/api/edo/VERSION/drafts/draft/add&AuthToken=Code1

Тело запроса представляет собой структуру JSON, содержащую необходимые параметры и имеющую следующий обобщенный вид:

{
  "to": "2PS-00631566061106315010010016107897",
  "docType": 7,
  "content": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv...",
  "fileName": "my_file.txt"
  "isSignRequested": false
}

Таблица 5.1. Параметры структуры данных запроса на добавление черновика:

Ключ Тип значения Описание параметра
to Строка Идентификатор получателя
docType Целое число Тип документа
content Строка Содержимое документа, закодированное с помощью алгоритма “Base 64”
fileName Строка Имя файла документа
isSignRequested Логическая переменная Признак необходимости подписания документа

В случае успеха ответ имеет следующий вид:

{
  "status": {
    "code": 0,
    "message": "OK"
  },
  "result": {
    "data": [
      {
        "errorCode": [
          {
            "code": 11,
            "desc": "Некорректный XML файл"
          }
        ],
        "data": {
          "draftId": 808,
          "fromOrgId": "859",
          "fromOrgName": "Общество с ограниченной ответственностью ПРОДУКТЫ 24",
          "toOrgId": "859",
          "toOrgName": "Общество с ограниченной ответственностью ПРОДУКТЫ 24",
          "edoIdFrom": "2PS-00783908888003511154340097777777",
          "edoIdTo": "2PS-00783908888003511154340097777777",
          "docTypeId": 8,
          "docTypeName": "УПД",
          "innFrom": "7839088000",
          "innTo": "7839088000",
          "kppFrom": "351744444",
          "kppTo": "351744444",
          "content": null,
          "xmlBody": null,
          "fileName": "ON_SCHFDOPPR_2PS-00784446519907841010010013609999_2PS-00783908888003517444340099992397_20190725_7b7000bb-f4b1-40ac-9efe-55b6f1166b22.xml",
          "docName": "Счет-фактура и документ об отгрузке товаров (выполнении работ), передаче имущественных прав (документ об оказании услуг)",
          "docNumber": "1ССФПРОФД19/19757   ",
          "docDate": "25.07.2019 00:00:00",
          "sumAll": 35000,
          "sumNds": 5833.33,
          "statusId": 0,
          "statusName": "Не готов",
          "nds": true,
          "signRequested": false,
          "updated": "26.08.2019 16:52:25"
        }
      }
    ]
  }
}

Параметры структуры ответа приведены в таблице 5.2.

Таблица 5.2.

Ключ Формат значения Описание
status Структура Структура данных ответа (состояния запроса)
code Целое число Код ответа на запрос (0 — OK)
message Строка Сообщение в ответе на запрос
result Структура Структура, содержащая список документов
data Массив данных Содержит список черновиков
errorCode Массив данных Массив ошибок, которые содержатся в черновике после проверки ФЛК
code Целое число Код ошибки
desc Строка Описание ошибки
data Структура Содержит информацию о черновике
draftId Целое число Идентификационный номер (индекс) черновика
fromOrgId Строка Идентификатор организации-отправителя
fromOrgName Строка Название организации-отправителя
toOrgId Строка Идентификатор организации-получателя
toOrgName Строка Название организации-получателя
edoIdFrom Строка Идентификатор документооборота отправителя
edoIdTo Строка Идентификатор документооборота получателя
docTypeId Целое число Идентификатор типа черновика документа
docTypeName Строка Название типа документа
innFrom Строка ИНН отправителя черновика документа
innTo Строка ИНН получателя черновика документа
kppFrom Строка КПП отправителя черновика документа
kppTo Строка КПП получателя черновика документа
content Строка Содержимое документа, закодированное с помощью алгоритма “Base 64”
xmlBody Строка Содержит тело документа в виде двоичного массива, закодированного с помощью алгоритма «Base 64”
fileName Строка Имя файла
docName Строка Наименования документа из его контента
docNumber Строка Номер документа из его контента
docDate Строка, содержащая дату в формате ISO Дата и время документа
sumAll Строка Общая сумма по документу
SumNds Строка Общая сумма НДС по документу
statusId Целое число Код статуса готовности к отправке черновика
statusName Строка Описание статуса готовности к отправке черновика
nds Логическая переменная Признак необходимости расчета НДС
signRequested Логическая переменная Признак необходимости подписания документа
updated Строка Дата и время последнего обновления в формате ISO

3.6. Получение списка черновиков

Вид запроса:

GET https://ferma.ofd.ru/api/edo/VERSION/drafts?pageIndex=Pageindex&pageRecords=Pagerecords&sortKey=Key1&sortDirection=Dir1&docTypeId=Doctypeid&from=Datetime1&to=Datetime2&orgNameTo=Orgnameto&orgInnTo=Orginnto&status=Status&AuthToken=Code1

Здесь Pageindex - номер запрашиваемой страницы списка документов в виде десятичного целого числа. Pagerecords - количество записей на странице в виде десятичного целого числа. Key1 - столбец для сортировки. Dir1 - определяет порядок сортировки. Возможные значения: asc — восходящая (прямой порядок) и desc — нисходящая (обратный порядок). Doctypeid - уникальный идентификационный номер типа документа. Datetime1 и Datetime2 – начальное и конечное время и даты периода в формате ISO, за который будет получен список черновиков. Orgnameto - наименование организации получателя документа. Orginnto - ИНН получателя документа. Status - статус готовности отправки черновика. Code1 – действующий код авторизации, полученный в результате запроса авторизации.

Успешным ответом на запрос возвращается структура данных JSON следующего примерного вида (вид значений показан на примерах, многоточие означает многократно повторяющуюся структуру такого же вида):

{
  "status": {
    "code": 0,
    "message": "OK"
  },
  "result": {
    "data": [
      {
        "errorCode": [
          {
            "code": 11,
            "desc": "Некорректный XML файл"
          }
        ],
        "data": {
          "draftId": 808,
          "fromOrgId": "859",
          "fromOrgName": "Общество с ограниченной ответственностью ПРОДУКТЫ 24",
          "toOrgId": "859",
          "toOrgName": "Общество с ограниченной ответственностью ПРОДУКТЫ 24",
          "edoIdFrom": "2PS-00783908888003511154340097777777",
          "edoIdTo": "2PS-00783908888003511154340097777777",
          "docTypeId": 8,
          "docTypeName": "УПД",
          "innFrom": "7839088000",
          "innTo": "7839088000",
          "kppFrom": "351744444",
          "kppTo": "351744444",
          "content": null,
          "xmlBody": null,
          "fileName": "ON_SCHFDOPPR_2PS-00784446519907841010010013609999_2PS-00783908888003517444340099992397_20190725_7b7000bb-f4b1-40ac-9efe-55b6f1166b22.xml",
          "docName": "Счет-фактура и документ об отгрузке товаров (выполнении работ), передаче имущественных прав (документ об оказании услуг)",
          "docNumber": "1ССФПРОФД19/19757   ",
          "docDate": "25.07.2019 00:00:00",
          "sumAll": 35000,
          "sumNds": 5833.33,
          "statusId": 0,
          "statusName": "Не готов",
          "nds": true,
          "signRequested": false,
          "updated": "26.08.2019 16:52:25"
        },
        ...
      }
    ],
    "pageInfo": {
      "pageIndex": 1,
      "pageRecords": 1000,
      "pageCount": 1,
      "sortKey": null,
      "sortDirection": "desc"
    }
  }
}

Таблица 6. Параметры структуры данных ответа на запрос получения списка черновиков:

Ключ Формат значения Описание
status Структура Структура данных ответа (состояния запроса)
code Целое число Код ответа на запрос (0 — OK)
message Строка Сообщение в ответе на запрос
result Структура Структура, содержащая список документов
data Массив данных Содержит список черновиков
errorCode Массив данных Массив ошибок, которые содержатся в черновике после проверки ФЛК
code Целое число Код ошибки
desc Строка Описание ошибки
data Структура Содержит информацию о черновике
draftId Целое число Идентификационный номер (индекс) черновика
fromOrgId Строка Идентификатор организации-отправителя
fromOrgName Строка Название организации-отправителя
toOrgId Строка Идентификатор организации-получателя
toOrgName Строка Название организации-получателя
edoIdFrom Строка Идентификатор документооборота отправителя
edoIdTo Строка Идентификатор документооборота получателя
docTypeId Целое число Идентификатор типа черновика документа
docTypeName Строка Название типа документа
innFrom Строка ИНН отправителя черновика документа
innTo Строка ИНН получателя черновика документа
kppFrom Строка КПП отправителя черновика документа
kppTo Строка КПП получателя черновика документа
content Строка Содержимое документа, закодированное с помощью алгоритма “Base 64”
xmlBody Строка Содержит тело документа в виде двоичного массива, закодированного с помощью алгоритма «Base 64”
fileName Строка Имя файла
docName Строка Наименования документа из его контента
docNumber Строка Номер документа из его контента
docDate Строка, содержащая дату в формате ISO Дата и время документа
sumAll Строка Общая сумма по документу
SumNds Строка Общая сумма НДС по документу
statusId Целое число Код статуса готовности к отправке черновика
statusName Строка Описание статуса готовности к отправке черновика
nds Логическая переменная Признак необходимости расчета НДС
signRequested Логическая переменная Признак необходимости подписания документа
updated Строка Дата и время последнего обновления в формате ISO
pageInfo Структура Информация о делении списка на страницы и о передаваемой странице списка
pageIndex Целое число Номер передаваемой страницы
pageRecords Целое число Количество строк списка на странице
pageCount Целое число Количество страниц в списке
sortKey Строка Имя поля ключа сортировки (аналогично запросу)
sortDirection Строка Направление сортировки (аналогично запросу)

3.7. Получения одного черновика документа по его ID

Вид запроса:

GET https://ferma.ofd.ru/api/edo/VERSION/drafts/draft?draftId=Draftid&AuthToken=Code1

Здесь Draftid – идентификатор черновика. Получить его можно при добавлении черновика, смотри п. 3.5. Code1 – действующий код авторизации, полученный в результате запроса авторизации.

Успешным ответом на запрос возвращается структура данных JSON следующего примерного вида (вид значений показан на примерах, многоточие означает многократно повторяющуюся структуру такого же вида):

{
  "status": {
    "code": 0,
    "message": "OK"
  },
  "result": {
    "data": [
      {
        "errorCode": [
          {
            "code": 11,
            "desc": "Некорректный XML файл"
          }
        ],
        "data": {
          "draftId": 808,
          "fromOrgId": "859",
          "fromOrgName": "Общество с ограниченной ответственностью ПРОДУКТЫ 24",
          "toOrgId": "859",
          "toOrgName": "Общество с ограниченной ответственностью ПРОДУКТЫ 24",
          "edoIdFrom": "2PS-00783908888003511154340097777777",
          "edoIdTo": "2PS-00783908888003511154340097777777",
          "docTypeId": 8,
          "docTypeName": "УПД",
          "innFrom": "7839088000",
          "innTo": "7839088000",
          "kppFrom": "351744444",
          "kppTo": "351744444",
          "content": null,
          "xmlBody": null,
          "fileName": "ON_SCHFDOPPR_2PS-00784446519907841010010013609999_2PS-00783908888003517444340099992397_20190725_7b7000bb-f4b1-40ac-9efe-55b6f1166b22.xml",
          "docName": "Счет-фактура и документ об отгрузке товаров (выполнении работ), передаче имущественных прав (документ об оказании услуг)",
          "docNumber": "1ССФПРОФД19/19757   ",
          "docDate": "25.07.2019 00:00:00",
          "sumAll": 35000,
          "sumNds": 5833.33,
          "statusId": 0,
          "statusName": "Не готов",
          "nds": true,
          "signRequested": false,
          "updated": "26.08.2019 16:52:25"
        }
      }
    ]
  }
}

Параметры структуры данных ответа на запрос получения списка черновиков описаны в таблице 7.

Таблица 7.

Ключ Формат значения Описание
status Структура Структура данных ответа (состояния запроса)
code Целое число Код ответа на запрос (0 — OK)
message Строка Сообщение в ответе на запрос
result Структура Структура, содержащая список документов
data Массив данных Содержит список черновиков
errorCode Массив данных Массив ошибок, которые содержатся в черновике после проверки ФЛК
code Целое число Код ошибки
desc Строка Описание ошибки
data Структура Содержит информацию о черновике
draftId Целое число Идентификационный номер (индекс) черновика
fromOrgId Строка Идентификатор организации-отправителя
fromOrgName Строка Название организации-отправителя
toOrgId Строка Идентификатор организации-получателя
toOrgName Строка Название организации-получателя
edoIdFrom Строка Идентификатор документооборота отправителя
edoIdTo Строка Идентификатор документооборота получателя
docTypeId Целое число Идентификатор типа черновика документа
docTypeName Строка Название типа документа
innFrom Строка ИНН отправителя черновика документа
innTo Строка ИНН получателя черновика документа
kppFrom Строка КПП отправителя черновика документа
kppTo Строка КПП получателя черновика документа
content Строка Содержимое документа, закодированное с помощью алгоритма “Base 64”
xmlBody Строка Содержит тело документа в виде двоичного массива, закодированного с помощью алгоритма «Base 64”
fileName Строка Имя файла
docName Строка Наименования документа из его контента
docNumber Строка Номер документа из его контента
docDate Строка, содержащая дату в формате ISO Дата и время документа
sumAll Строка Общая сумма по документу
SumNds Строка Общая сумма НДС по документу
statusId Целое число Код статуса готовности к отправке черновика
statusName Строка Описание статуса готовности к отправке черновика
nds Логическая переменная Признак необходимости расчета НДС
signRequested Логическая переменная Признак необходимости подписания документа
updated Строка Дата и время последнего обновления в формате ISO

3.8. Удаление черновика

Вид запроса:

POST https://ferma.ofd.ru/api/edo/VERSION/drafts/remove&AuthToken=Code1

Тело запроса представляет собой структуру JSON, содержащую необходимые параметры и имеющую следующий обобщенный вид:

{
  "draftId": "2604"
}

Таблица 8. Параметры структуры данных запроса на удаление черновика:

Ключ Тип значения Описание параметра
draftId Строка Идентификатор удаляемого черновика

Пример успешного ответа на запрос описан в п. 3.7, при этом параметр «message» имеет значение «OK», а «result» имеет значение «null».

3.9. Загрузка черновика

Вид запроса:

GET https://ferma.ofd.ru/api/edo/VERSION/drafts/download?draft=ID1&downloadType=Type1&AuthToken=Code1

Здесь ID1 - идентификатор загружаемого черновика. Получить его можно при добавлении черновика, смотри п. 3.5. Type1 - Тип загрузки черновика. Возможны варианты: CURRENT – загрузка только текущего документа с заданным идентификатором; PDF – в формате PDF. Code1 – действующий код авторизации, полученный в результате запроса авторизации.

3.10. Визуализация черновика

Вид запроса:

GET https://ferma.ofd.ru/api/edo/VERSION/drafts/show-pdf?draftId=ID1&AuthToken=Code1

Здесь ID1 - идентификатор черновика документа, на основе которого по запросу генерируется документ в формате PDF. Получить его можно при добавлении черновика, смотри п. 3.5. Code1 – действующий код авторизации, полученный в результате запроса авторизации.

В ответ на данный запрос начинается загрузка файла в двоичном виде. В заголовках ответа (response headers) указывается имя загружаемого файла.

4. Коды ошибок

HTTP Код Код ошибки Описание ошибки
401 1001 Клиент не авторизован
500 1002 Непредвиденная ошибка
400 1003 Некорректный формат запроса
404 1004 Объект не найден
500 1 Неизвестная ошибка
500 2 Неверный логин, пароль
500 3 Нет свободных касс
500 4 Нет авторизации
400 1005 Объект Request пустой
400 1006 Объект CustomerReceipt пустой
400 1007 Некорректный ИНН
400 1008 Некорректный тип формируемого чека (Type)
400 1009 Некорректный идентификатор счета (InvoiceId)
400 1010 Некорректный тип налогообложения (TaxationSystem)
400 1011 Некорректно заполнены контакты (Email, Phone)
400 1012 Некорректный адрес электронной почты
400 1013 Некорректный номер телефона
400 1014 Некорректно заполнены позиции (Items)
400 1015 Цена и общая стоимость не должны быть отрицательными
400 1016 Количество товаров в позиции не должно быть отрицательным
400 1017 Некорректно заполнен НДС позиции (Vat)
400 1018 Общая сумма позиций должна быть неотрицательной
400 1019 Идентификатор счета уже существует (InvoiceId, ReceiptId)
400 1020 Превышено максимальное количество обращений
400 1021 Неверно указан телефон платежного агента
400 1022 Неверно указан телефон поставщика
400 1023 Неверно указан телефон оператора перевода
400 1024 Неверно указан ИНН оператора перевода
400 1025 Неверно указан признак платежного агента
400 1026 Длина поля PaymentAgentInfo.TransferAgentName превышает максимальную длину в 64 символа
400 1027 Длина поля PaymentAgentInfo.TransferAgentAddress превышает максимальную длину в 256 символов
400 1028 Длина поля PaymentAgentInfo.PaymentAgentOperation превышает максимальную длину в 24 символа
400 1029 Нет касс, соответствующих переданному типу платёжного агента
400 1030 Не указано описание коррекции (CorrectionInfo.Description)
400 1031 Некорректный формат даты совершения корректируемого расчёта
400 1032 Неверно указан тип коррекции (CorrectionInfo.Type)

История изменений

Версия 2.0
Выпущена 24 августа 2018 г.
Первая регистрируемая версия документа.

Версия 2.1
Выпущена 14 ноября 2018 г.

  • исправлены ошибки по тексту предыдущей версии документа;
  • добавлена информация о новым значениях констант типов НДС.

Версия 2.2
Выпущена 17 января 2019 г.
Исправлена ошибка в тексте предыдущей версии документа: замена строки «FPD» на «FDP» в примерах структур данных.

Версия 2.3
Добавлена 28 января 2019 г.
Добавлена информация в соответствии с изменениями в структуре данных CustomerReceipts.

Версия 2.6
Добавлена 04 апреля 2019 г.

  • исправлена ошибка в тексте предыдущей версии документа: замена в таблице 3.2 «FPN» на «FDP»;
  • исправлена ошибка в тексте предыдущей версии документа: удаление лишней запятой в строке ответа при запросе кассового чека.

Версия 2.7
Добавлена 28 мая 2019 г.

  • добавлена новая структура данных CustomUserProperty и параметры в структуру данных;
  • признаки предмета расчета были перенесены из таблицы 2 в п. 3.4.1.

Версия 2.8
Добавлена 19 июня 2019 г.

  • добавлена новая структура данных ClientInfo и параметры в структуру данных;
  • добавлены возможные ошибки «Код ошибки 1038» и «Код ошибки 1039».

Версия 2.9
Добавлена 21 июня 2019 г.

  • добавлено новое значение BuyCorrection — чек коррекции/расход для параметра «Type»;
  • добавлен новый параметр PaymentType в массив структур Items.

Версия 2.10
Добавлена 08 июля 2019 г.

  • у параметра MarkingCode было изменено значение с строка на структуру;
  • были добавлены параметры Type, Gtin, Serial в структуру MarkingCode.

Версия 2.11
Добавлена 15 июля 2019 г.

  • наименование структуры MarkingCode было изменено на MarkingCodeStructured;
  • был добавлен параметры MarkingCode, который имеет значения «Строка»;
  • в формирование кассового чека были добавлены параметры OriginCountryCode и CustomsDeclarationNumber.

Версия 2.12
Добавлена 16 июля 2019 г.
Добавлен метод для получения списка ККТ, которые обрабатывали ФД в определенный период

Версия 2.13
Добавлена 17 июля 2019 г.
В формирование кассового чека добавлены теги: 1171, 1225, 1226

Версия 2.14
Добавлена 25 июля 2019 г.
В метода «Проверка статуса кассового чека» и «Запрос реестра кассовых чеков» добавлена ошибка, если чек не прошёл ФЛК при пробитие на кассе

Версия 2.15
Добавлена 03 сентября 2019 г.
Добавлены методы для работы с черновиками

1)
Данный формат описан в стандарте ISO 8601 (https://en.wikipedia.org/wiki/ISO_8601). Здесь используется только формат представления времени без задания смещения часовых поясов (Time Zone Offset) и интервалов.
2)
Далее в запросах параметр кода авторизации не указывается
3) , 4)
Здесь должно быть заполнено хотя бы одно поле с указанием адресата доставки чека: «Email» и «Phone»; в случае заполнения происходит отправка чека; если указан и адрес e-mail и номер телефона, чек отправляется по электронной почте. Для того, чтоб была возможна отправка смс, нужно приобрести пакет смс в личном кабинете.
5) , 7)
Если параметр передается только в составе чека, и не передано в составе позиции (Items), то данные из PaymentAgentInfo копируются на все позиции. Если параметр передается в составе чека и в составе Items, то на параметр устанавливаются данные из позиции. Если при пробитии чека в составе позиции передается PaymentAgentInfo, то и в составе чека должно быть PaymentAgentInfo с заполненным AgentType.
6)
Цифровой код страны происхождения товара в соответствии с Общероссийским классификатором стран мира: https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%89%D0%B5%D1%80%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80_%D1%81%D1%82%D1%80%D0%B0%D0%BD_%D0%BC%D0%B8%D1%80%D0%B0
8) , 9)
Новые значения вида вычисляемого НДС (значения “Vat20” и “CalculatedVat20120”) будут доступны с 01.01.2019, 00:00:01 московского времени.