Ferma® с Orange Data

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

Введение

Документ описывает сценарий использования программного интерфейса приложений (API) сервиса Orange Data для взаимодействия с интернет-кассой Ferma®.

1. Основные сведения о запросе и ответе

Кодировка, используемая в запросах и ответах, в CP866. Запросы выполняются методом POST, параметры запроса располагаются в структуре данных формата JSON, передаваемой в блоке данных запроса. Ответы выдаются сервером в формате JSON. Код ответа по протоколу HTTP зависит от выполняемого метода и результата обработки запроса — подробные значения кодов приведены в описании соответствующих методов (разделы 2.1—2.3).

Пример запроса с подписью:

POST https://ferma-o.ofd.ru/api/v2/documents/ 

{
  "id": "2_loc_z5bYWHvD",
  "inn": 1234567890,
  "group": "Main",
  "key": 1234567890,
  "content": {
    "type": 1,
    "positions": [
      {
        "quantity": 2.0,
        "price": 10.0,
        "tax": 1,
        "text": "\u0421\u0430\u043c\u043e\u0432\u044b\u0432\u043e\u0437 ru",
        "paymentMethodType": 4,
        "paymentSubjectType": 1
      },
      {
        "quantity": 1.0,
        "price": 0.0,
        "tax": 1,
        "text": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430",
        "paymentMethodType": 4,
        "paymentSubjectType": 4
      }
    ],
    "checkClose": {
      "payments": [
        {
          "type": 2,
          "amount": 20.0
        }
      ],
      "taxationSystem": 0
    },
    "customerContact": "user@domain.com"
  }
}

Подробно параметры можно посмотреть в таблице Таблица 1.

2. Описание работы с Orange Data

2.1. Создание чека

Вид запроса:

POST https://ferma-o.ofd.ru/api/v2/documents/

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

{
  "id": "12345678990",
  "inn": "123456789012",
  "group": "Main",
  "content": {
    "type": 1,
    "positions": [
      {
        "quantity": 1.000,
        "price": 123.45,
        "tax": 6,
        "text": "Булка",
        "paymentMethodType": 4,
        "paymentSubjectType": 1
      },
      {
        "quantity": 2.000,
        "price": 4.45,
        "tax": 4,
        "text": "Спички",
        "paymentMethodType": 3,
        "paymentSubjectType": 13
      }
    ],
    "checkClose": {
      "payments": [
        {
          "type": 1,
          "amount": 123.45
        },
        {
          "type": 2,
          "amount": 8.90000
        }
      ],
      "taxationSystem": 1
    },
    "customerContact": "foo@example.com"
  }
}

Таблица 1. Параметры элементов структуры «Тело запроса»

Параметр Вложенный параметр Вложенный параметр Вложенный параметр Формат значения Описание Признак обязательности в запросе
Id Строка Идентификатор документа да
Inn Строка ИНН организации, для которой пробивается чек да
group Строка Группа устройств, с помощью которых будет пробит чек нет
callbackUrl Строка URL для отправки результатов обработки чека POST запросом нет
content Структура Содержимое документа да
type Число Признак расчета, 1054:
1 - Приход;
2 - Возврат прихода;
3 - Расход;
4 - Возврат расхода.
да
useTax20 Булево Флаг, определяющий необходимость формирования чека со ставками НДС 20% и 20/120 после перехода на ставки 22% и 22/122 с 01.01.2026. Актуально, например, для возвратов чеков, пробитых до 01.01.2026, и в некоторых других случаях. нет
positions Массив Список товарных позиций чека. Важно! Если чек пробился и был ответ 201, то перепробивать чек нужно с другим Id. Если при пробитии чека статус ответа не 201, то он пробивается с тем же invoiceId да
quantity Число Количество предмета расчета, 1023 да
price Число Цена за единицу предмета расчета с учетом скидок и наценок, 1079 да
tax Число Ставка НДС, 1199:
1 – ставка НДС 20% (с 01.01.2026 — 22%)
2 – ставка НДС 10%
3 – ставка НДС расчетная 20/120 (с 01.01.2026 — 22/122)
4 – ставка НДС расчетная 10/110
5 – ставка НДС 0%
6 – НДС не облагается
7 – ставка НДС 5%
8 – ставка НДС 7%
9 – ставка НДС расчетная 5/105
10 – ставка НДС расчетная 7/107
Важно! С 01.01.2026 коды 1 и 3 по умолчанию соответствуют ставкам 22% и 22/122. Чтобы сформировать чек по ставке 20% или 20/120 (например, для возврата чека, пробитого до 01.01.2026), передайте параметр useTax20 со значением true.
да
taxSum Число Сумма НДС за предмет расчета, 1200. Параметр актуален для ставок НДС 1-4, 7-10. Для ставок 5 и 6 данный тег в предмете расчета не передается, переданное значение игнорируется. Если передать значение 0, то тег не будет записан. нет
text Строка Наименование предмета расчета, 1030. Строка до 128 символов. да
paymentMethodType Число Признак способа расчета, 1214: 1 – Предоплата 100%; 2 – Частичная предоплата; 3 – Аванс; 4 – Полный расчет; 5 – Частичный расчет и кредит; 6 – Передача в кредит; 7 – оплата кредита. нет
paymentSubjectType Число Признак предмета расчета, 1212:
1 – Товар;
2 – Подакцизный товар;
3 – Работа;
4 – Услуга;
5 – Ставка азартной игры;
6 – Выигрыш азартной игры;
7 – Лотерейный билет;
8 – Выигрыш лотереи;
9 – Предоставление РИД;
10 – Платеж;
11 – Агентское вознаграждение;
12 – Выплата;
13 – Иной предмет расчета;
14 – Имущественное право;
15 – Внереализационный доход;
16 – Иные платежи и взносы;
17 – Торговый сбор;
18 – Курортный сбор;
19 – Залог;
20 – Расход;
21 – Взносы на обязательное пенсионное страхование ИП;
22 – Взносы на обязательное пенсионное страхование;
23 – Взносы на обязательное медицинское страхование ИП;
24 – Взносы на обязательное медицинское страхование;
25 – Взносы на обязательное социальное страхование;
26 – Платеж казино
да
checkClose Структура Параметры закрытия чека да
payments Структура
type Число Тип оплаты:
1 – сумма по чеку наличными, 1031;
2 – сумма по чеку безналичными, 1081;
14 – сумма по чеку предоплатой (зачетом аванса и (или) предыдущих платежей), 1215;
15 – сумма по чеку постоплатой (в кредит), 1216;
16 – сумма по чеку (БСО) встречным предоставлением, 1217.
да
amount Число Параметры закрытия чека да
taxationSystem Число Система налогообложения, 1055:
0 – Общая, ОСН, доход;
1 – Упрощенная доход, УСН;
2 – Упрощенная доход минус расход, УСН доход - расход;
3 – Единый налог на вмененный доход, ЕНВД;
4 – Единый сельскохозяйственный налог, ЕСН;
5 – Патентная система налогообложения, Патент;
да
customerContact Строка Телефон или электронный адрес покупателя, 1008 да

Пример запроса с данными агента, дополнительным реквизитом пользователя, данными поставщика, номером автомата, адресом расчета и местом расчета:

{
  "id": "12345678990",
  "inn": "123456789012",
  "group": "Main",
  "key": "1234567",
  "content": {
    "type": 1,
    "positions": [
      {
        "quantity": 1.000,
        "price": 123.45,
        "tax": 6,
        "text": "Булка",
        "paymentMethodType": 4,
        "paymentSubjectType": 1,
        "nomenclatureCode": "igQVAAADMTIzNDU2Nzg5MDEyMwAAAAAAAQ==",
        "agentType": 127,
        "agentInfo": {
          "paymentTransferOperatorPhoneNumbers": [ "+79200000001", "+74997870001" ],
          "paymentAgentOperation": "Какая-то операция 1",
          "paymentAgentPhoneNumbers": [ "+79200000003" ],
          "paymentOperatorPhoneNumbers": [ "+79200000002", "+74997870002" ],
          "paymentOperatorName": "ООО \"Атлант\"",
          "paymentOperatorAddress": "Воронеж, ул. Недогонная, д. 84",
          "paymentOperatorINN": "7727257386"
        },
        "unitOfMeasurement": "Кг",
        "additionalAttribute": "Доп. атрибут и все тут",
        "manufacturerCountryCode": "643",
        "customsDeclarationNumber": "АД 11/77 от 01.08.2018",
        "excise": 23.45
      },
      {
        "quantity": 2.000,
        "price": 4.45,
        "tax": 4,
        "text": "Спички",
        "paymentMethodType": 3,
        "paymentSubjectType": 13,
        "supplierINN": "9715225506",
        "supplierInfo": {
          "phoneNumbers": [ "+79266660011", "+79266660022" ],
          "name": "ПАО \"Адамас\""
        }
      }
    ],
    "checkClose": {
      "payments": [
        {
          "type": 1,
          "amount": 123.45
        },
        {
          "type": 2,
          "amount": 8.90000
        }
      ],
      "taxationSystem": 1
    },
    "customerContact": "foo@example.com",
    "agentType": 127,
    "paymentTransferOperatorPhoneNumbers": [ "+79260000001", "+74957870001" ],
    "paymentAgentOperation": "Какая-то операция",
    "paymentAgentPhoneNumbers": [ "+79260000003" ],
    "paymentOperatorPhoneNumbers": [ "+79260000002", "+74957870002" ],
    "paymentOperatorName": "ООО \"Росинка\"",
    "paymentOperatorAddress": "Москва, Мастеркова 4",
    "paymentOperatorINN": "9715225506",
    "supplierPhoneNumbers": [ "+74957870004" ],
    "additionalUserAttribute": {
      "name": "Любимая цитата",
      "value": "В здоровом теле здоровый дух, этот лозунг еще не потух!"
    },
    "automatNumber": "123456789",
    "settlementAddress": "г.Москва, Красная площадь, д.1",
    "settlementPlace": "Палата №6",
    "additionalAttribute": "Доп атрибут чека",
    "customer": "Кузнецов Иван Петрович",
    "customerINN": "789456123488"
  }
}

Пример ответа с ошибкой:

{
  "errors": [
    "Не указан идентификатор документа 'Id'",
    "Не указан ИНН организации 'INN'",
    "Отсутствует содержимое документа 'Content'"
  ]
}

В ответ API может возвращать следующие http статус-коды:

  • 201 Created – чек создан и добавлен в очередь на обработку, пустое тело ответа;
  • 401 Unauthorized – клиентский сертификат не прошел проверку;
  • 409 Conflict– чек с данным идентификатором уже был создан в системе, пустое тело ответа;
  • 400 Bad Request – переданные данные содержат ошибки валидации, либо подпись не прошла проверку, тело ответа п.2.1.2;
  • 503, Service Unavailable – очередь документов переполнена, в ответе возвращается хедер Retry-After с таймаутом в секундах, через который стоит повторить запрос, тело ответа п.2.1.2.

2.2. Состояние чека

Запрос:

GET https://ferma-o.ofd.ru/api/v2/documents/{inn}/status/{document_id}

{inn} – ИНН организации, для которой пробивается чек; {document_id} –идентификатор документа, который был указан при его создании

В ответ API может возвращать следующие статус-коды:

  • 202 Accepted – чек создан и добавлен в очередь на обработку, но еще не обработан, пустое тело ответа;
  • 400 Bad Request – организация не найдена, чек с указанным идентификатором не найден;
  • 401 Unauthorized – клиентский сертификат не прошел проверку;
  • 409 Conflict – чек с данным идентификатором уже был создан в системе;
  • 200 OK – чек обработан, тело ответа п.2.2.1;
  • 524 Document Expired Before Processing – серверу не удалось за отведенное время обработать документ, отправьте чек с новым идентификатором для повторной обработки, пустое тело ответа.

Пример ответа:

{
  "id": "12345678990",
  "deviceSN": "0000000000001358",
  "deviceRN": "0000000400054952",
  "fsNumber": "9999078900001341",
  "ofdName": "ООО \"Ярус\"(\"ОФД-Я\")",
  "ofdWebsite": "www.ofd-ya.ru",
  "ofdinn": "7728699517",
  "fnsWebsite": "www.nalog.ru",
  "companyINN": "123456789012",
  "companyName": "ЗАО ТОРГОВЫЙ ОБЪЕКТ №1",
  "documentNumber": 117,
  "shiftNumber": 20,
  "documentIndex": 5,
  "processedAt": "2017-02-14T14:16:00",
  "content": {
    "type": 1,
    "positions": [
      {
        "quantity": 1.000,
        "price": 123.45,
        "tax": 6,
        "text": "Булка",
        "paymentMethodType": 4,
        "paymentSubjectType": 1
      },
      {
        "quantity": 2.000,
        "price": 4.45,
        "tax": 4,
        "text": "Спички",
        "paymentMethodType": 3,
        "paymentSubjectType": 13
      }
    ],
    "checkClose": {
      "payments": [
        {
          "type": 1,
          "amount": 123.45
        },
        {
          "type": 2,
          "amount": 8.90000
        }
      ],
      "taxationSystem": 1
    },
    "customerContact": "+79123456789"
  },
  "change": 974.01,
  "fp": "2364009522

Таблица 2. «Параметры состояния чека»

Параметр Формат значения Строка от 1 до 64 символов
idЗаводской номер устройства, пробившего чек Строка до 20 символов
deviceSNРегистрационный номер устройства, пробившего чек Строка до 20 символов
deviceRNРегистрационный номер устройства, пробившего чек Строка до 20 символов
fsNumberНомер фискального накопителя Строка 16 символов
ofdNameНаименование ОФД Строка до 256 символов
odfWebsiteWeb-сайт ОФД Строка до 58 символов
odfINNИНН ОФД Строка 12 символов
fnsWebsiteWeb-сайт ФНС Строка до 256 символов
companyINNИНН пользователя Строка 12 символов
companyNameНаименование пользователя Строка до 256 символов
documentNumberНомер ФД Число
shiftNumberНомер смены Число
documentIndexНомер чека за смену Число
processedAtВремя регистрации фискального документа в ФН Время в виде строки в формате ISO8601
contentСодержимое документа Структура
changeСдача Десятичное число с точностью до 2 символов после точки
fp Фискальный признакСтрока 10 символов
callbackUrlURL для отправки результатов обработки чека POST запросом Строка от 1 до 1024 символов или null

Важно! В каждом предмете расчета структуры content.positions ответа дополнительно присутствует поле taxRate — фактическая ставка НДС, с которой был пробит предмет расчета.

2.3. Описание запроса на формирование чека коррекции

Запрос на формирование чека коррекции выполняется самостоятельно или по предписанию из ФНС. Чек коррекции формируется запросом методом POST с передачей параметров в JSON-структуре.

Запрос на формирование чека коррекции имеет следующий вид:

POST https://ferma-o.ofd.ru/api/v1/corrections

В таблице 3 приведено описание параметров запроса для формирования чека коррекции.

Таблица 3. Описание параметров запроса для формирования чека коррекции

Параметр Вложенный параметр Формат значения Описание Признак обязательности
Id Строка Идентификатор документа да
Inn Строка ИНН организации, для которой пробивается чек да
key Строка Название ключа да
callbackUrl Строка URL-адрес для отправки результатов обработки чека. Результат обработки выполняется методом POST нет
content Структура Содержимое документа да
correctionType Строка Тип коррекции.
Тип коррекции может принимать значения:
- SELF — коррекция производится самостоятельно;
- INSTRUCTION — коррекция производится по предписанию
да
useTax20 Булево Флаг, определяющий необходимость формирования чека коррекции со ставками НДС 20% и 20/120 после перехода на ставки 22% и 22/122 с 01.01.2026. Актуально, например, для возвратов чеков, пробитых до 01.01.2026, и в некоторых других случаях. нет
type Число Признак расчета может принимать следующие значения:
1 - Приход;
3 - Расход.
да
causeDocumentDate Строка Дата документа основания для коррекции. Значение даты передается в формате «ДД.ММ.ГГ», где ДД — день, ММ — месяц, ГГ — год. да
causeDocumentNumber Строка Номер предписания налогового органа да
totalSum Строка Общая сумма чека да
cashSum Строка Сумма платежа наличными расчетом да
eCashSum Строка Сумма платежа безналичными расчетом да
prepaymentSum Строка Сумма платежа расчета по предоплате да
postpaymentSum Строка Сумма платежа расчета по постоплате да
otherPaymentTypeSum Строка Сумма другого типа платежа да
tax1Sum Число Сумма удерживаемого налога на добавленную стоимость (НДС) по ставке 20 % (с 01.01.2026 — 22%)
tax2Sum Число Сумма удерживаемого налога на добавленную стоимость (НДС) по ставке 10 %
tax3Sum Число Сумма по операциям, облагаемая НДС по ставке 0%
tax4Sum Число Сумма по операциям, не облагаемая НДС
tax5Sum Число Сумма удерживаемого налога на добавленную стоимость (НДС) по ставке в 20/120 (с 01.01.2026 — 22/122)
tax6Sum Число Сумма удерживаемого налога на добавленную стоимость (НДС) по ставке 10/110
tax7Sum Число Сумма НДС чека по ставке 5%
tax8Sum Число Сумма НДС чека по ставке 7%
tax9Sum Число Сумма НДС чека по расч. ставке 5/105
tax10Sum Число Сумма НДС чека по расч. ставке 7/107
taxationSystem Число Система налогообложения принимает следующие значения:
0 – Общая, ОСН, доход;
1 – Упрощенная доход, УСН;
2 – Упрощенная доход минус расход, УСН доход - расход;
3 – Единый налог на вмененный доход, ЕНВД;
4 – Единый сельскохозяйственный налог, ЕСН;
5 – Патентная система налогообложения, Патент;
да
automatNumber Строка Номер автоматического устройства
settlementAddress Строка Полный адрес места расчёта
settlementPlace Строка Место расчёта

Пример запроса на формирование чека коррекции имеет вид:

POST https://ferma-o.ofd.ru/api/v1/corrections
Content-Type: application/json

{
  "id": "9c4c3f8a-a166-4ccf-8a20-6325efe41955",
  "inn": "7724465109",
  "group": "409",
  "content": {
    "correctionType": 1,
    "type": 1,
    "causeDocumentDate": "2017-08-10T00:00:00",
    "causeDocumentNumber": "ФЗ-54",
    "totalSum": 17.25,
    "cashSum": 1.23,
    "eCashSum": 2.34,
    "prepaymentSum": 5.67,
    "postpaymentSum": 4.56,
    "otherPaymentTypeSum": 3.45,
    "tax1Sum": 1.34,
    "taxationSystem": 1,
    "settlementAddress": "г.Москва, Красная площадь, д.1",
    "settlementPlace": "Палата №6"
  }
}

В ответ на запрос возможны следующие ответы:

  • 201 Created – чек создан и добавлен в очередь на обработку;
  • 401 Unauthorized – клиентский сертификат не прошел проверку;
  • 409 Conflict – чек с данным идентификатором уже был создан в системе;
  • 400 Bad Request – переданные данные содержат ошибки валидации, либо подпись не прошла проверку;
  • 503 Service Unavailable – очередь документов переполнена.

Проверка статуса чека коррекции выполняется запросом описанным в разделе "2.2 Состояние чека".

3. Порядок тестирования

3.1. Тестовое API сервиса «Orange Data» для информационной системы Ferma®

Раздел описывает способ тестирования программного интерфейса приложений (API) сервиса «Orange Data» для информационной системы Ferma® с пробитием чеков и возможностью их просмотра. Для тестирования используется демонстрационный личный кабинет клиента (ЛКК), а также кассовый аппарат с установленным тестовым фискальным накопителем (ФН МГМ), который подключен к тестовой информационной системе Ferma®.

Для того чтобы пробить чеки на тестовой кассе Ferma®, которая находится в демо ЛКК, используйте данные:

  • Домен - ferma-test-o.ofd.ru;
  • Авторизация осуществляется по сертификату.

3.2. Вход в демо ЛКК

Чтобы войти в демо личный кабинет клиента для дальнейшего просмотра чеков, нужно выполнить следующие действия:

  1. Переходим по ссылке;
  2. Автоматически подставленные данные в полях «Электронная почта» и «Пароль» удаляем.
  3. Вводим данные:
    1. электронная почта: fermatest1@ofd.ru
    2. пароль: 1231
  4. Нажимаем кнопку «Войти»;
  5. Вы оказались в демо личном кабинете.

3.3. Как посмотреть чеки

После того, как вошли в демо ЛКК, для просмотра пробитых чеков на кассе, нужно:

  1. перейти в раздел «Кассы»;
  2. здесь находится единственная касса;
  3. нажимаем на её РНМ;
  4. на следующей странице переходим на вкладку «Фискальные документы»;
  5. в таблице «Все документы» находим нужный чек, для этого можно воспользоваться фильтрами, которые располагаются над таблицей;
  6. напротив нужного чека нажать на значок .

4. Как посмотреть чеки на реальном аккаунте

Для того, чтобы пробить чеки на кассе Ferma® в продовом режиме, воспользуйтесь следующей инструкцией:
Авторизация осуществляется по сертификату.

Для получения продового сертификата сделайте следующие действия:

  1. Перейдите в свой Личный кабинет клиента.
  2. В левом меню укажите Сервис Ferma®.
  3. Пролистайте до виджета «Реквизиты доступа».
  4. Нажмите скачать сертификат.
  5. Используйте скачанный сертификат для подстановки в запросах на фискализацию на продовом контуре.

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

Версия 1.0
Выпущена 10 марта 2021 г.
Первая регистрируемая версия документа.

Версия 1.2
Выпущена 15 марта 2021 г.

  • Добавлен раздел 2

Версия 1.3
Выпущена 16 марта 2021 г.

  • Добавлен раздел 3
  • Добавлен раздел 4

Версия 1.4
Выпущена 11 октября 2021 г.

  • Устранены мелкие недочеты по всему документу

Версия 1.5
Выпущена 11 октября 2021 г.

  • Добавлен новый раздел 2.3 Описание запроса на формирование чека коррекции

Версия 1.6
Выпущена 24 апреля 2024 г.

  • Изменен домен в пункте 3.2. Тестовое API сервиса «Orange Data» для информационной системы Ferma® на ferma-test-o.ofd.ru

Версия 1.7
Выпущена 14 июня 2024 г.

  • Обновлен сертификат, доступный для скачивания в разделе 3. Порядок тестирования
  • Проведена общая корректировка и актуализация документа

Версия 1.8
Выпущена 30 апреля 2025 г.

  • В пункте «2.2. Состояние чека» добавлена новая ошибка с кодом 409.

Версия 1.9
Выпущена 24 августа 2026 г.

  • Устранены неточности и уточнены формулировки в описании методов и структур ответов API.

Версия 1.10
Выпущена 7 сентября 2026 г.

  • В пункте «2.1. Создание чека» добавлен параметр useTax20 и новые значения ставки НДС (5%, 7%, расч. 5/105, расч. 7/107) для параметра tax. Уточнено, что с 01.01.2026 коды 1 и 3 параметра tax по умолчанию соответствуют ставкам 22% и 22/122. Уточнён диапазон ставок, для которых актуален параметр taxSum (добавлены коды 7-10).
  • В пункте «2.2. Состояние чека» добавлено описание поля taxRate в структуре ответа.
  • В пункте «2.3. Описание запроса на формирование чека коррекции» добавлен параметр useTax20 и поля tax7Sum, tax8Sum, tax9Sum, tax10Sum. Уточнено, что с 01.01.2026 параметры tax1Sum и tax5Sum по умолчанию соответствуют ставкам 22% и 22/122.