---
title: "Отменить приёмку входящего документа к учёту"
method: POST
path: "/api/v1/docflow/messages/{id}/intake/cancel"
tags: ["Docflow intake"]
---

# Отменить приёмку входящего документа к учёту

`POST /api/v1/docflow/messages/{id}/intake/cancel`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/docflow/messages/{id}/intake/cancel`
- 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`)

«Отменить приёмку к учёту» (ERP-1810). Входящий документ ЭДО (ВХ) и заведённые на его основании черновики помечаются удалёнными у владельца документов — история сохраняется, — а у пакета снимаются связь с учётным документом, время и автор приёмки: пакет снова «не принят», и его можно принять заново, в том числе исполнением закупки. Право docflow.edo:write, как у самой приёмки: наружу не уходит ничего.

Разрешено, пока ничего не проведено. Отказы 409: docflow.edo.intake_cancel_posted — на ВХ есть проведённые документы, их номера в detail и списком documents (id, type_name, number, status, is_marked_deleted): их проведение отменяют у владельца; docflow.edo.intake_cancel_executed — пакет принят исполнением закупки (актом поставщика), его отменяют в финансах; docflow.edo.accounting.not_accepted — пакет не принят, отменять нечего. Повтор безопасен: уже помеченное пропускается, снимается ровно прочитанная связь.

## Path parameters

- `id` string, uuid, required

## Headers

- `X-Tenant` string, required

## Response `200`

Пересобранное предложение приёмки: пакет снова не принят

- DocflowIntakePreview: Что мы предлагаем принять к учёту. Ничего не меняет и никуда не ходит: предложение обязано быть безопасным, иначе «посмотреть, что там» становится действием с последствиями, и человек побоится его открыть раньше, чем решит принимать.
  - `message` string, uuid, required
  - `formalized` boolean, required: Нашёлся ли во вложениях титул продавца. Ложь означает, что принимать нечего: пакет либо неформализованный, либо файлы ещё не скачаны — чинится это синхронизацией, а не заполнением формы
  - `ready` boolean, required: Принимается ли пакет прямо сейчас, без правок
  - `flow_card_kind` '' | 'contract' | 'amendment' | 'specification' | 'act', required: Вид карточки документооборота, которую заведёт приёмка; пусто — карточки по этому пакету не будет. Читается вместе с formalized: непустой вид при formalized = false означает «учётного документа не будет, карточка будет», и приёмка по такому пакету осмысленна. Договор формализованным титулом не бывает по определению — его присылают подписанным PDF, — поэтому кнопку приёмки на нём гасить нельзя, её следует назвать «Завести карточку».
  - `accepted` DocflowAcceptedDocument, required: Учётный документ кабинета, заведённый приёмкой.
    - `id` string, uuid, required
    - `number` string, required: Наш номер из нумератора кабинета. Номер продавца лежит в содержимом документа: занять им наш сквозной счётчик значит однажды получить два своих документа с одним номером от двух разных поставщиков
    - `date` string, required: Дата документа ГГГГ-ММ-ДД. По умолчанию это дата документа поставщика: операция произошла тогда, когда её совершил он, и датировать её днём приёмки значит поставить факт не в тот период
    - `type_key` string, required: Ключ вида документа; у приёмки docflow_incoming
    - `type_name` string, required: Имя вида в кабинете. Право клиента: вид можно переименовать, и код держит его за ключ, а не за название
    - `status` string, required: Состояние учётного документа. Приёмка заводит ЧЕРНОВИК: проведение принадлежит модулям — владельцам регистров
    - `marked_deleted` boolean, required: Документ помечен на удаление. Такой пакет принимается заново: пометка и есть способ сказать «этот документ ошибочный»
    - `accepted_at` string, required: Момент приёмки; пусто, если он не записан
  - `source` DocflowIntakeSource, required: Реквизиты чужого файла обмена, из которого всё прочитано. Разбор частичный и ничего не проверяет: файл уже подписан и юридически значим, и отказать в его чтении из-за реквизита, который нам не нужен, значит потерять поставку из-за чужой ошибки в необязательном поле.
    - `attachment` string, uuid, required
    - `attachment_name` string, required: Как это вложение назвал ОПЕРАТОР. Стоит рядом с file_name намеренно: имя оператора («Счёт-фактура № 12») человек видит в списке вложений, а file_name — имя файла обмена, и это разные строки
    - `file_name` string, required: ИдФайл: имя файла обмена без расширения, как его записал продавец
    - `format_version` string, required: ВерсФорм: редакция формата словами самого файла
    - `knd` string, required: Код документа по классификатору; у титула продавца 1115131
    - `function` string, required: Функция документа словами продавца: СЧФ, ДОП, СЧФДОП
    - `document_kind_name` string, required: Наименование документа, данное ему составителем
    - `number` string, required: Номер документа продавца
    - `date` string, required: Дата документа в форме ГГГГ-ММ-ДД. Пусто — дата не разобралась
    - `date_raw` string, required: Она же в форме поставщика ДД.ММ.ГГГГ. Показывается, когда разбор не удался: чужую опечатку человек поймёт быстрее, чем пустое поле
    - `currency` string, required: Валюта документа наименованием и кодом, словами файла
    - `operation` string, required: Содержание операции словами продавца
    - `transfer_case` string: Особое обстоятельство передаточного документа (СпОбстФДОП): 00006 — возврат от агента или комиссионера, к учёту закупкой такой документ не принимается
    - `seller` DocflowIntakeParty, required: Сторона сделки, прочитанная из чужого файла. Показывается ТЕКСТОМ, даже когда контрагент сопоставлен: карточку могут переименовать, а документ обязан остаться читаемым таким, каким его прислали.
      - `kind` string, required: Вид участника словами файла: юридическое лицо, предприниматель, иностранное лицо, физическое лицо
      - `name` string, required
      - `inn` string, required
      - `kpp` string, required
      - `address` string, required: Адрес одной строкой, собранный из частей формата
    - `buyer` DocflowIntakeParty, required: Сторона сделки, прочитанная из чужого файла. Показывается ТЕКСТОМ, даже когда контрагент сопоставлен: карточку могут переименовать, а документ обязан остаться читаемым таким, каким его прислали.
      - `kind` string, required: Вид участника словами файла: юридическое лицо, предприниматель, иностранное лицо, физическое лицо
      - `name` string, required
      - `inn` string, required
      - `kpp` string, required
      - `address` string, required: Адрес одной строкой, собранный из частей формата
  - `counterparty` DocflowIntakeCounterparty, required: Вторая сторона и то, с кем мы её свели. Порядок узнавания жёсткий, и каждая ступень сильнее следующей: решение человека этим же запросом, сопоставление зеркала пакета, ЗАПИСАННОЕ решение по этому участнику обмена и, наконец, поиск в справочнике по ИНН и КПП. Последняя ступень — догадка, и она называет себя догадкой (match: guess), а не выдаёт себя за чьё-то решение. Разбор у неё общий с автоматчем выгрузок: второй механизм узнавания рядом с существующим разошёлся бы с ним на первой же правке — молча и в пользу дубля. Неоднозначность не разрешается никогда: ИНН, совпавший у двух юрлиц, которых не развёл КПП, уходит человеку списком options.
    - `contact` string, uuid, required
    - `contact_name` string, required: Имя этой карточки в кабинете
    - `name` string, required: Имя стороны словами оператора либо файла продавца
    - `inn` string, required
    - `kpp` string, required
    - `match` 'manual' | 'auto' | 'guess' | 'none', required: Откуда взялся контрагент: manual — решение человека, auto — записанное сопоставление, guess — наша догадка по реквизитам прямо сейчас, нигде не записанная, none — не свели ни с кем
    - `options` DocflowIntakeCounterpartyOption[]: Наши контрагенты с тем же ИНН, когда выбрать между ними обязан человек. Непустой список означает «такие у нас уже есть, выбери» — и потому же означает, что заводить нового НЕ НАДО: там, где контрагент с такими реквизитами уже заведён, место кнопке «связать с существующим», а не «завести».
      - `id` string, uuid, required
      - `name` string, required
      - `kpp` string, required
  - `lines` DocflowIntakeLine[], required: Товарная таблица чужого документа вместе с тем, что мы про неё предлагаем. Всегда массив, даже пустой
    - `number` integer, required: Номер строки в файле поставщика. По нему человек соотносит экран с бумагой, и по нему же приходит его решение
    - `name` string, required: Наименование товара словами поставщика
    - `article` string, required: Артикул поставщика
    - `code` string, required: Код товара у поставщика
    - `unit_code` string, required: Код ОКЕИ единицы измерения
    - `unit_name` string, required
    - `quantity` string, required
    - `price` string, required: Цена единицы словами поставщика
    - `amount_without_vat` string, required
    - `vat_rate` string, required: Ставка налога словами файла
    - `vat_amount` string, required: Сумма налога. Пуста при отметке «без НДС»: нуля там нет, и подставить его значит превратить необлагаемую поставку в облагаемую с нулевым налогом
    - `vat_without` boolean, required: Отметка «без НДС» у строки
    - `amount_with_vat` string, required
    - `key` string, required: Ключ соответствия: то, по чему эта строка узнаётся в СЛЕДУЮЩЕМ документе того же поставщика. Собирается с приставкой вида `арт:`, `код:` или `наим:` — артикул «100» и наименование «100» разные вещи, и без приставки они стали бы одной строкой соответствий. Показывается затем, чтобы человек понимал, что именно он сопоставляет: не эту накладную, а артикул поставщика на все будущие поставки.
    - `product` string, uuid, required
    - `product_name` string, required: Имя выбранной карточки. Подсказка, а не реквизит: карточку могли заархивировать
    - `match` string, required: Откуда взялась номенклатура строки. `manual` — сопоставил человек, `auto` — сопоставила машина и решение записано, `rejected` — человек уже посмотрел и сказал «не это» (догадку по такой строке мы больше не показываем), `guess` — наша догадка ПРЯМО СЕЙЧАС, нигде не записанная, `none` — сопоставить не с чем. Записанное соответствие приносит свой способ из справочника внешних ссылок, поэтому здесь встречаются и его значения (`pending`, `import`). Различать обязательно: на экране «это решил человек» и «это мы угадали» выглядят одинаково — одна строка с названием товара, — а значат противоположное.
    - `options` DocflowIntakeProductOption[]: С чем ещё эта строка могла совпасть. Непусто только у неоднозначной догадки: выбрать за человека из двух одинаково подходящих товаров значит угадать монеткой и записать это как факт
      - `id` string, uuid, required
      - `name` string, required
      - `sku` string, required
  - `totals` DocflowIntakeTotals, required: Итоги таблицы словами поставщика. Мы их не пересчитываем: итог в чужом документе такой, какой он подписал.
    - `without_vat` string, required
    - `vat_amount` string, required: Пусто при отметке «без НДС» у документа
    - `with_vat` string, required
    - `vat_without` boolean, required: Отметка «без НДС» у документа целиком
  - `issues` DocflowIssue[], required: Что мешает принять. Тот же тип и тот же порядок, что у предполётной проверки исходящего документа: интерфейс переводит их одним словарём
    - `code` string, required: Машинный код проверки. Стабилен: по нему интерфейс ищет перевод. Проверки формата приходят кодами docflow.formats.* (required, too_long, too_short, pattern, not_allowed, not_a_number, negative, too_many_decimals, too_many_digits, not_encodable, conflict, no_lines, unsupported), а перевод учётного документа в титул добавляет свои — docflow.edo.counterparty_required (в документе не указан контрагент) и docflow.edo.seller_title_missing (во входящем пакете нет формализованного документа продавца: отвечать титулом покупателя не на что, а принимать к учёту нечего). Приёмка к учёту добавляет свои пять: docflow.edo.contact_required (не выбран контрагент), docflow.edo.date_unreadable (дата документа продавца не разобралась), docflow.edo.no_lines (в титуле продавца нет ни одной товарной строки), docflow.edo.product_required (строке документа не сопоставлена номенклатура) и docflow.edo.sign_first (документ ещё не подписан: в учёт его принимают после подписи). Коды маркировки исходящего УПД добавляют три: docflow.edo.marks_missing (отгрузка проведена не со всеми кодами; params required и assigned), docflow.edo.marks_not_in_circulation (коды не в обороте у продавца по последнему статусу ГИС МТ; params value — сколько) и docflow.edo.marks_gtin_missing (товар передаётся по GTIN, а штрихкода GTIN у него нет)
    - `path` string, required: Путь до реквизита ИМЕНАМИ ФНС — именами приказа, а не нашими: этими же словами человек будет искать требование в письме налоговой. Например `Документ/СвСчФакт/СвПрод/Адрес`.
    - `line` integer: Номер товарной строки с единицы. Отсутствует, когда реквизит не про строку
    - `params` object: Подробности значениями: предел длины, перечень допустимых значений, пришедшее значение. Отсутствует, когда проверке нечего добавить.
  - `executes_order` boolean: Бумага закрывающая (УПД, акт, накладная поставщика): приёмка с закупкой проводит её исполнение — акт поставщика по заказу, без ВХ и без разнесения (ERP-1810). Строки без номенклатуры этот путь не держат: акт исполняет строки заказа
  - `purchases` DocflowIntakePurchase[]: Подбор закупки для «Куда в учёт» (ERP-1810): закупка, в которой бумага уже лежит (linked), открытые закупки того же поставщика и юрлица с остатком, равным сумме бумаги (amount), затем прочие, куда она помещается (open). Пусто у счёта и договора и когда закупок нет
    - `order_id` string, uuid, required
    - `number` string, required: Номер закупки
    - `title` string
    - `date` string: Дата закупки ГГГГ-ММ-ДД
    - `amount` string, required: Заказано
    - `remaining` string, required: Осталось исполнить: заказано минус проведённые исполнения
    - `currency` string
    - `contract_number` string: Договор закупки
    - `contract_id` string, uuid
    - `deal_paper_id` string, uuid
    - `reason` 'linked' | 'amount' | 'open', required: Почему предложена: linked — бумага уже лежит в ней; amount — остаток равен сумме бумаги; open — бумага помещается в остаток
    - `pnl_item_required` boolean: Первому акту этой закупки нужна статья расходов: у закупки её нет, а операции заказа в финансах ещё нет. Приёмка без pnl_item_id ответит 409 docflow.edo.intake_pnl_item_required
    - `suggested_pnl_item` DocflowIntakePnlItem: Подсказка статьи расходов первого акта закупки (ERP-1810), по порядку: статья закупки, статья оплаты закупки или её счёта, статья последнего акта этого поставщика, правило разнесения контрагента. Только расходная статья ОПиУ в обращении.
      - `id` string, uuid, required
      - `name` string, required: Название статьи — так, как его назвал кабинет
      - `source` 'order' | 'payment' | 'last_act' | 'rule': Откуда подсказка: order — статья закупки; payment — статья её оплаты или оплаты её счёта; last_act — статья последнего акта поставщика; rule — правило разнесения контрагента
    - `goods` boolean: В закупке товар, и склад включён (ERP-1810): строки бумаги на товар закупки «Принять к учёту» заводит черновиком приёмки склада по закупке (проводит его склад), строки на услуги — актом поставщика
    - `warehouse_id` string, uuid
    - `warehouse_name` string: Название склада приёмки
  - `warehouses` DocflowIntakeWarehouse[]: Действующие склады для выбора склада приёмки (ERP-1810). Приходят, когда в подборе есть закупка с товаром при включённом складе; выбирать склад нужно, только если у закупки goods = true нет warehouse_id
    - `id` string, uuid, required
    - `name` string, required: Название склада

## Other responses

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

---

[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/3c60ded179f2?raw)
