---
title: "Создать закупку по рассчитанной потребности"
method: POST
path: "/api/v1/stock/purchasing/purchases"
tags: ["Stock purchasing"]
---

# Создать закупку по рассчитанной потребности

`POST /api/v1/stock/purchasing/purchases`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/stock/purchasing/purchases`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`
  - OAuth 2 (authorization code, authorization URL `https://erp.akeda.ru/oauth2/authorize`, token URL `https://erp.akeda.ru/oauth2/token`, scopes: `akeda:delegate`)
  - HTTP bearer

Создаётся ЧЕРНОВИК закупки — документа ядра вида supplier_order (этап 2 ERP-1427): дверь склада — фасад над службой закупок ядра, ответ — складской вид закупки (строки закупки в payload.items с теми же id, срок поставки в payload.delivery_at). Черновик не двигает регистры; подтверждение выполняет POST /api/v1/stock/documents/{id}/post — оно записывает «Продажи и закупки» ядра и ожидание поступления склада одной транзакцией. Цены строк считаются конечными, с налогом; валюта — валюта учёта на дату закупки. Строки берут из отчёта по закупкам GET /api/v1/stock/report/purchasing. Поля request_id и basis_line_id указываются только парой; когда все строки ссылаются на одну заявку на закупку, она становится основанием документа. Заявка-основание проверяется: она должна быть проведена, относиться к тому же юрлицу и складу и содержать эту строку с этим товаром, иначе приходит 409. Пустой date означает текущую бизнес-дату кабинета, пропущенный price записывается нулём. Читает `Idempotency-Key` — повтор того же запроса с тем же ключом отдаёт созданную закупку, а не второй такой же на ту же потребность.

## Headers

- `X-Tenant` string, required
- `Idempotency-Key` string

## Request body

- StockPurchaseOrderCreate
  - `company_id` string, uuid, required
  - `warehouse_id` string, uuid, required
  - `supplier_id` string, uuid, required
  - `date` string, date: Пустая или пропущенная означает текущую бизнес-дату кабинета
  - `delivery_at` string, date, nullable: Ожидаемая дата поставки
  - `comment` string
  - `items` StockPurchaseOrderLineInput[], required
    - `product_id` string, uuid, required
    - `qty` string, required: Decimal string заказываемого количества
    - `price` string: Decimal string цены поставщика; пропуск записывается нулём
    - `basis_line_id` string, uuid
    - `request_id` string, uuid
  - `project_id` string, uuid
  - `department_id` string, uuid
  - `cfo_id` string, uuid

## Response `201`

Созданный черновик закупки

- CoreDocument
  - `id` string, uuid, required
  - `type_id` string, uuid, required
  - `type_key` string, required
  - `type_name` string, required
  - `number` string, required
  - `date` string, date, required
  - `status` 'draft' | 'posted' | 'cancelled', required
  - `basis_type` string, uuid, required
  - `basis_id` string, uuid, required
  - `basis_number` string, required
  - `entity_refs` object, required
  - `payload` object, required
  - `comment` string, required
  - `is_marked_deleted` boolean, required
  - `created_by` integer, nullable, required
  - `created_by_name` string, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `posted_at` string, required
  - `cancelled_at` string, required
  - `custom` object: Значения своих полей кабинета (графы вида core.document.<ключ вида>). Отдаёт карточка документа; списки поле не несут

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права
- `404`: Запись не найдена или не видима текущему пользователю
- `409`: Конфликт версии, идемпотентности или бизнес-состояния
- `422`: Idempotency-Key уже использован для другого запроса: другое тело, другой адрес или другая операция. Код `idempotency.key_mismatch`; сохранённый ответ не раскрывается. Для новой команды берут новый ключ.
- `500`: Внутренняя ошибка без раскрытия server-only деталей
- `503`: Хранилище ключей идемпотентности недоступно, команда с заголовком Idempotency-Key не выполнялась. Код `idempotency.unavailable`; Retry-After говорит, когда повторить.

---

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