API Rentel
Если у вас возникли вопросы по интеграции, вам поможет наш технический отдел support@rentel.app
openapi: 3.0.0
servers:
info:
  description: Proposed API for receipt generation
  version: "1"
  title: General fiscalisation api used by Rentel app
  contact:
    email: nfc@rentel.me
  license:
    name: Apache 2.0
    url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
paths:
  /receipt:
    post:
      summary: creates a receipt
      operationId: createReceipt
      description: A request for new receipt
      responses:
        '200':
          description: Чек успешно передан в систему
          content: 
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseSuccess'
        '400':
          description: Ошибка при передаче чека
          content: 
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBody400'
      requestBody:
        content:
          application/json:
            schema:
              properties:
                Request:
                  $ref: '#/components/schemas/Request'
        description: Receipt to add
components:
  schemas:
    Request:
      type: object
      required:
        - Inn
        - Type
      properties:
        Inn:
          type: string
          format: integer
          example: "0123456789"
          description: ИНН компании (Тег 1018)
        Type:
          type: string
          enum: [Income, IncomeReturn, IncomePrepayment, IncomeReturnPrepayment, IncomeCorrection, BuyCorrection, IncomeReturnCorrection, ExpenseReturnCorrection, Expense, ExpenseReturn]
          example: Income
          description: 'Тип формируемого фискального документа (чек). (Тег 1054) Тип может принимать следующие значения:
          – «Income» — получение денежных средств от покупателя;
          – «IncomeReturn» — возврат денежных средств, полученных от покупателя;
          – «IncomePrepayment» — авансовый платеж от покупателя;
          – «IncomeReturnPrepayment» — возврат аванса;
          – «IncomeCorrection» — чек коррекции/приход;
          – «BuyCorrection» — чек коррекции/расход;
          – «IncomeReturnCorrection» - чек коррекции/Возврат прихода;
          – «ExpenseReturnCorrection» - чек коррекции/Возврат расхода;
          – «Expense» — выдача денежных средств покупателю;
          – «ExpenseReturn» — возврат денежных средств, выданных покупателю.'
        InvoiceId:
          type: string
          format: uuid
          example: 6f000fee-bbac-4444-bda1-e9ce9999fcc7
          description: 'Идентификатор, присвоенный вашей информационной системой в запросе на формирование кассового чека.
            Использование идентификатора предотвращает формирование дублей чеков
            Важно! Изменяйте идентификатор для перепробития неуспешных чеков («StatusCode»: 3)'
        CallbackUrl:
          type: string
          format: url
          example: 'http://testcallbackurl:12345'
          description: 'URL-адрес. В параметре указывается значение URL-адреса. Если поле заполнено корректно, то после обработки документа (успешной или неуспешной фискализации в ККТ: статус «CONFIRMED» или «KKT_ERROR»), ответ будет отправлен POST запросом по URL указанному в данном поле.'
        CustomerReceipt:
          $ref: '#/components/schemas/CustomerReceipt'
        Items:
          description: Товарные позиции, приобретаемые клиентом (Тег 1059)
          type: array
          items:
            $ref: '#/components/schemas/Item'
        PaymentItems:
          description: Суммы по типам оплат. Если null, то вся оплата наличными.
          type: array
          items:
            $ref: '#/components/schemas/PaymentItem'
    Item:
      description: Тег 1059
      type: object
      required:
        - Amount
      properties:
        Label:
          description: 'Описание товара или услуги. Если параметр «PaymentMethod» имеет значение равное 3 – аванс, тогда параметр Label может быть не включен в состав запроса. (Тег 1030)'
          type: string
          example: Оплата услуг по страхованию.
        Price:
          description: Цена товарной позиции в рублях (Тег 1079).
          type: number
          example: 5555.55
        Quantity:
          description: Количество товара в товарной позиции (Тег 1023). Возможно дробное число.
          type: number
          example: 1.0
        Amount:
          description: Общая стоимость товарной позиции. Равно «Price» * «Quantity» (Тег 1043).
          type: number
          example: 5555.55
        Vat:
          description: 'Ставка налога. Вид вычисляемого НДС (Тег 1199). Параметр может принимать следующие значения:
            - «Vat10» — налог на добавленную стоимость (НДС) 10%;
            - «Vat18» — НДС 18%;
            - «Vat20» — НДС 20% 24);
            - «Vat0» — НДС 0%;
            - «VatNo» — НДС не облагается;
            - «CalculatedVat10110» — вычисленный НДС 10% от 110% суммы;
            - «CalculatedVat18118» — вычисленный НДС 18% от 118% суммы;
            - «CalculatedVat20120» — вычисленный НДС 20% от 120% суммы25).'
          type: string
          enum: [Vat10, Vat18, Vat20, Vat0, VatNo CalculatedVat10110, CalculatedVat18118, CalculatedVat20120]
          example: Vat20
        MarkingCodeData:
          $ref: '#/components/schemas/MarkingCodeData'
        Measure:
          description: 'Единицы измерения количества предмета (Тег 2108)'
          type: string
          enum: [PIECE, GRAM, KILOGRAM, TON, CENTIMETER, DECIMETER, METER, SQUARE_CENTIMETER, SQUARE_DECIMETER, SQUARE_METER, MILLILITER, LITER, CUBIC_METER, KILOWATT_HOUR, GIGACALORIE, DAY, HOUR, MINUTE, SECOND, KILOBYTE, MEGABYTE, GIGABYTE, TERABYTE, OTHER]
          example: PIECE
        PaymentMethod:
          description: 'Признак способа расчета (Тег 1214) 
          - 1 — предоплата 100%;
          - 2 — предоплата;
          - 3 — аванс;
          - 4 — полный расчет;
          - 5 — частичный расчет;
          - 6 — передача в кредит;
          - 7 — оплата в кредит.'
          type: integer
          enum: [1,2,3,4,5,6,7]
          example: 1
        PaymentType: 
          description: 'Признак предмета расчета для конкретной позиции в чеке. (тег 1212) Если значение отсутствует, берется значение для всего чека. '
          type: integer
          enum: [1, 2, 3, 4]
          nullable: true
          example: 1

    CustomerReceipt:
      type: object
      required:
        - TaxationSystem
        - PaymentType
        - BillAddress
      properties:
        CheckMcMode:
          description: Параметр проверки кода маркировки
          type: string
          nullable: true
          example: null
          enum: [IGNORE_ANY_ERRORS, REQUIRE_NO_M_MINUS]
        TaxationSystem:
          description: 'Система налогообложения.(Тег 1055)'
          type: string
          enum: [Common, SimpleIn, SimpleInOut, Unified, UnifiedAgricultural, Patent]
          example: Common
        Email:
          type: string
          example: 'example@ya.ru'
          description: Адрес электронной почты клиента
        Phone:
          type: string
          example: '+79000000001'
          description: Контактный телефон клиента
        AutomaticDeviceNumber:
          description: Номер автоматического устройства  (Тег 1036)
          type: string
          nullable: true
          example: '46204'
        BillAddress:
          description: Место осуществления расчетов  (Тег 1187)
          type: string
          nullable: true
        PaymentType: 
          type: integer
          enum: [1, 2, 3, 4]
          example: 1
          description: 'Признак предмета расчета для всего чека. Важно! Если в данном поле значение клиентом не указано, то используется значение по умолчанию, которое устанавливается по умолчанию при заведении учетной записи в информационной системе. 1 - «ТОВАР»  2 — «ПОДАКЦИЗНЫЙ ТОВАР» 3 —  «РАБОТА», 4 – «УСЛУГА»'
        CustomUserProperty:
          $ref: '#/components/schemas/CustomUserProperty'
        PaymentAgentInfo:
          $ref: '#/components/schemas/PaymentAgentInfo'
        CorrectionInfo:
          $ref: '#/components/schemas/CorrectionInfo'
    CustomUserProperty:
      type: object
      nullable: true
      properties:
        Name:
          type: string
          description: Наименование дополнительного реквизита пользователя с учетом особенностей сферы деятельности, в которой осуществляются расчеты (Тег 1085)
          example: CustomUserPropertyName
        Value:
          type: string
          description: Значение дополнительного реквизита пользователя с учетом особенностей сферы деятельности, в которой осуществляются расчеты (Тег 1086)
          example: CustomUserPropertyValue
    MarkingCodeData:
      description: Код маркировки товарной позиции (Тег 1163).
      type: object
      nullable: true
      properties:
        Type:
          description: Формат КМ
          type: string
          enum: [UNKNOWN_PRODUCT_CODE, EAN8, EAN13, ITF14, GS1, GS1M, SHORT_MC, FUR, EGAIS20, EGAIS30, KTF1, KTF2, KTF3, KTF4, KTF5, KTF6]
          example: UNKNOWN_PRODUCT_CODE
        Code:
          description: Код маркировки.Передается значение, полученное сканером штрих-кода
          type: string
          example: "0003574EA75F63675258464D5939504837435A5057"
        PlannedStatus:
          description: 'Планируемый статус товара с КМ (Тег 2003).Может принимать следующие значения:
            - PIECE_PRODUCT_INCOME — Штучный товар, подлежащий обязательной маркировке средством идентификации, реализован;
            - MEASURED_PRODUCT_INCOME — Мерный товар, подлежащий обязательной маркировке средством идентификации, в стадии реализации;
            - PIECE_PRODUCT_RETURN — Штучный товар, подлежащий обязательной маркировке средством идентификации, возвращен;
            - MEASURED_PRODUCT_RETURN — Часть товара, подлежащего обязательной маркировке средством идентификации, возвращена;
            - PRODUCT_STATUS_NOT_CHANGED — Статус товара, подлежащего обязательной маркировке средством идентификации, не изменился.'
          type: string
          enum: [PIECE_PRODUCT_INCOME, MEASURED_PRODUCT_INCOME, PIECE_PRODUCT_RETURN, MEASURED_PRODUCT_RETURN, PRODUCT_STATUS_NOT_CHANGED]
          example: PIECE_PRODUCT_INCOME
        Fractional:
          $ref: '#/components/schemas/Fractional'
    Fractional:
      description: Дробное количество маркированного товара  (Тег 1291)
      type: object
      required:
        - Numerator
        - Denominator
      properties:
        Numerator:
          description: Числитель (Тег 1293). Значение должно быть строго меньше знаменателя (Denominator).
          type: number
          example: 1
        Denominator:
          description: Знаменатель (Тег 1294).
          type: number
          example: 1
    PaymentItem:
      description: Сумма по типам оплат
      properties:
        PaymentType:
          description: 'Тип оплаты:
          0 – наличными (Тег 1031);
          1 – безналичными (Тег 1081);
          2 – предварительная оплата (аванс) (Тег 1215);
          3 – предварительная оплата (кредит) (Тег 1216);
          4 – иная форма оплаты (Тег 1217).'
          type: integer
          enum: [0, 1, 2, 3, 4]
          example: 1
        Sum:
          description: Сумма по типу (Тег 1020)
          type: number
          example: 5555.55
    PaymentAgentInfo:
      description: Данные платежного агента (Тег 1223)
      nullable: true
      properties:
        AgentType:
          description: Тип (признак) платежного агента (Тег 1057) BANK_PAYMENT_AGENT — банковский платежный агент;
            BANK_PAYMENT_SUBAGENT — банковский платежный субагент;
            PAYMENT_AGENT — платежный агент;
            PAYMENT_SUBAGENT — платежный субагент;
            CONFIDANT — поверенный;
            COMMISSIONER — комиссионер;
            AGENT — агент.'
          type: string
          enum: [BANK_PAYMENT_AGENT, BANK_PAYMENT_SUBAGENT, PAYMENT_AGENT, PAYMENT_SUBAGENT, CONFIDANT, COMMISSIONER, AGENT]
          example: 'AGENT'
        TransferAgentPhone:
          description: Телефон оператора по переводу денежных средств (Тег 1057)
          type: string
          example: '+79091234567'
        TransferAgentName:
          description: Имя агента (Тег 1026)
          type: string
          example: 'ПАО Сбербанк'
        TransferAgentAddress:
          description: Адрес агента  (Тег 1005)
          type: string
          example: 'г. Москва, проспект Мира 7'        
        TransferAgentINN: 
          description: ИНН агента  (Тег 1016)
          type: string
          example: '5047063977'
        PaymentAgentOperation:
          description: Операция платежного агента (Тег 1044)
          type: string
          example: 'Оплата по лицевому счету'
        PaymentAgentPhone:
          description: Телефон платежного агента  (Тег 1073)
          type: string
          example: '+79000000008'
        ReceiverPhone:
          description: Телефон потребителя (Тег 1074)
          type: string
          example: '+79000000009'
        SupplierInn: 
          description: ИНН поставщика (Тег 1226)
          type: string
          example: '1739815479'
        SupplierName:
          description: Наименование поставщика (Тег 1225)
          type: string
          example: 'ООО «Фототехника»'
        SupplierPhone:
          description: Телефон поставщика (Тег 1171)
          type: string
          example: '+74959613422'
    CorrectionInfo:
      description: 'Структура, описывает информацию по чеку коррекции.
        Внимание! Структура присутствует в данных только в случае генерации чека коррекции. Для генерации обычного чека данная структура не нужна.  (Тег 1174)'
      nullable: true
      example: null
      required:
        - Type
        - Description
      properties:
        Type:
          description: 'Тип коррекции:
            SELF — коррекция производится самостоятельно;
            INSTRUCTION — коррекция производится по предписанию  (Тег 1173)'
          type: string
          enum: [SELF, INSTRUCTION]
          example: SELF            
        Description:
          description: Описание коррекции и причин коррекции
          type: string
          example: 'Ошибочный чек'
        ReceiptDate:
          description: 'Дата пробития чека, к которому применяется чек коррекции. В формате «ДД.ММ.ГГ»'
          type: string
          example: '19.01.22'
        ReceiptId:
          description: 'Номер предписания налогового органа или номер корректируемого чека (Тег 1179)'
          type: string
          example: '5644062179'
    ResponseSuccess:
      properties:
        Status:
          description: Состояние обработки запроса
          type: string
          enum: [Success]
          example: Success
        Data:
          description: Сопутствующие данные
          type: object
    ResponseBody400:
      properties:
        Status:
          type: string
          enum: [Failed]
          example: Failed
          description: Состояние обработки запроса
        Data:
          description: Сопутствующие данные
          properties:
            Error:
              type: object
              properties:
                Code:
                  description: код ошибки всегда отличен от 0
                  type: integer
                  example: 1
                Message:
                  type: string
                  example: Неизвестная ошибка при передаче чека в систему