---
title: "Распознать счёт для заявки на оплату"
method: POST
path: "/api/v1/docflow/payment-requests/recognize"
tags: ["Docflow payment requests"]
---

# Распознать счёт для заявки на оплату

`POST /api/v1/docflow/payment-requests/recognize`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/docflow/payment-requests/recognize`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://erp.akeda.ru/oauth2/authorize`, token URL `https://erp.akeda.ru/oauth2/token`, scopes: `akeda:delegate`)

Читает счёт поставщика и отвечает полями, которыми заполняется заявка: получатель с ИНН, расчётным счётом, БИК и банком, юрлицо-плательщик и контрагент из справочника по ИНН, сумма, валюта, налог, номер, дата и срок оплаты. Ничего не записывает. Счёт приходит одним из двух способов. JSON со ссылкой на карточку документооборота (document_id и, если файлов в карточке несколько, file_id) — путь агента и внешней системы: файл кладут в карточку сессией загрузки, а созданная заявка встаёт на ту же карточку основанием (basis docflow / flow_document). Форма multipart с полем file — путь экрана. Нечитаемый файл — не отказ: parsed=false, и заявка заполняется руками. Карточка не названа или без файла — 422 docflow.payment_request.field с полем document_id; несколько файлов без file_id или чужой file_id — то же с полем file_id.

## Headers

- `X-Tenant` string, required

## Request body

- DocflowPaymentInvoiceDocument: Счёт, уже лежащий файлом в карточке документооборота
  - `document_id` string, uuid, required
  - `file_id` string, uuid

## Response `200`

Распознанный счёт

- DocflowPaymentDetails: Платёжные реквизиты входящего счёта. Назначение платежа здесь НЕ собрано: строка «оплата по счёту такому-то за то-то» — текст на языке человека, и складывает её интерфейс из частей, которые приезжают ниже отдельно (номер, дата, основание, предмет, налог).
  - `message` string, uuid, required
  - `source` 'title' | 'text' | 'none', required: Чем прочитан счёт: title — формализованный титул ФНС, text — текст вложения, none — читать было нечего.
  - `parsed` boolean, required: Вышло ли из документа хоть одно поле. Ложь означает, что форма открывается тем же, чем открывалась раньше
  - `document` string, required: Имя вложения, из которого всё прочитано, словами оператора: по нему человек откроет ту же бумагу и сверит
  - `payee` DocflowPaymentParty, required: Реквизиты одной стороны платежа.
    - `name` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
    - `inn` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
    - `kpp` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
    - `account` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
    - `bic` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
    - `bank_name` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
    - `corr_account` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
  - `payer` DocflowPaymentParty, required: Реквизиты одной стороны платежа.
    - `name` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
    - `inn` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
    - `kpp` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
    - `account` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
    - `bic` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
    - `bank_name` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
    - `corr_account` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
      - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
      - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
  - `company` string, uuid, required
  - `company_name` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
    - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
    - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
  - `contact` string, uuid, required
  - `contact_name` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
    - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
    - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
  - `amount` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
    - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
    - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
  - `currency` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
    - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
    - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
  - `due_date` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
    - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
    - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
  - `number` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
    - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
    - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
  - `date` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
    - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
    - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
  - `basis` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
    - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
    - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
  - `contract` string, uuid
  - `subject` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
    - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
    - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
  - `purpose` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
    - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
    - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
  - `vat_amount` DocflowPaymentField, required: Значение вместе с тем, откуда оно взялось. Пара, а не голая строка: без происхождения форма не может поставить пометку «проверьте» там, где она нужна, и вынуждена либо не показывать её вовсе, либо ставить у всех полей — в обоих случаях пометка перестаёт работать.
    - `value` string, required: Прочитанное значение; пустая строка означает «не нашлось»
    - `origin` 'auto' | 'guess' | 'none', required: auto — поле из подписанного файла обмена или найденное в нашем справочнике, проверять его незачем. guess — вытащено якорными правилами из текста чужой бумаги: почти всегда верно, но отвечает за платёж человек, и форма ставит рядом «проверьте». none — поле пустое.
  - `vat_without` boolean, required: В счёте стояла отметка «без налога (НДС)». Пустая сумма при снятой отметке означает «про налог не сказано», а не «налога нет»
  - `vat_mode` 'included' | 'added': Налог «в том числе» или «сверху» по итогам бумаги (ERP-2733): «Итого» плюс налог дают сумму к оплате — added; нет поля — бумага этого не показывает
  - `paper_kind` 'invoice' | 'act': Вид бумаги по заголовку: «Счёт № …» или «Акт № …» (ERP-2733); нет поля — заголовка нет

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права
- `404`: Запись не найдена или не видима текущему пользователю
- `422`: Запрос разобран, но бизнес-значение недопустимо
- `503`: Внешний банк, справочник или контур подключений временно недоступен

## Changes

- **2026-10-20** `765c65fadf8f`: 2 info
  - added the optional property `paper_kind` to the response with the `200` status
  - added the optional property `vat_mode` to the response with the `200` status
- **2026-10-20** `408f7294f7a9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/akeda/apis/akeda-erp-client-api/changes/api/v1/docflow/payment-requests/recognize/post.md)

---

[API](https://skmtc.dev/akeda/apis/akeda-erp-client-api.md) · [All operations](https://skmtc.dev/akeda/apis/akeda-erp-client-api/llms.txt) · [OpenAPI document](https://skmtc.dev/akeda/apis/akeda-erp-client-api/revisions/7a6b75f272ee?raw)
