---
title: "Получить просроченный остаток"
method: GET
path: "/api/v1/stock/expired-stock"
tags: ["Stock batches"]
---

# Получить просроченный остаток

`GET /api/v1/stock/expired-stock`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/stock/expired-stock`
- 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

Просроченный остаток на сегодня по календарю кабинета (ERP-1821): строки «юрлицо × склад × товар × состояние» с количеством, стоимостью и просроченными партиями. Партия просрочена, когда её «годен до» раньше сегодняшнего дня; в сам день срока товар ещё годен. Остаток без партии срока не имеет и сюда не попадает — так выглядит товар при скользящей средней без единиц хранения. Просрочка в недоступной единице хранения (заблокирована, выведена, числится на нескольких складах) названа отдельно в unavailable_quantity: списание подбором её не возьмёт. Сотрудник видит остаток только доступных ему юрлиц. Склады внешней стороны — склад площадки и товары в пути — не показываются: товаром на них распоряжается площадка; отбор по такому складу даёт пустой ответ. Строка, которую складской документ не примет, несёт причину в writeoff_blocker и ноль в writeoff_quantity: в списание она не попадёт. Итог totals считается по всей выборке, а не по странице.

## Query parameters

- `business_id` string, uuid
- `company_id` string, uuid
- `warehouse_id` string, uuid
- `product_id` string, uuid
- `limit` integer
- `offset` integer

## Headers

- `X-Tenant` string, required

## Response `200`

Страница просроченного остатка

- StockExpiredStockPage
  - `as_of` string, date, required: Дата, на которую посчитана просрочка: сегодня по календарю кабинета
  - `count` integer, required: Число строк всей выборки
  - `limit` integer, required
  - `offset` integer, required
  - `results` StockExpiredStockRow[], required
    - `business_id` string, uuid, required
    - `business_name` string, required
    - `company_id` string, uuid, required
    - `company_name` string, required
    - `warehouse_id` string, uuid, required
    - `warehouse_name` string, required
    - `product_id` string, uuid, required
    - `product_sku` string, required
    - `product_name` string, required
    - `unit` string, required: Базовая единица товара
    - `condition_id` string, uuid, required
    - `condition_name` string, required
    - `quantity` string, required: Весь просроченный остаток строки, десятичная строка
    - `amount` string, required: Стоимость просроченного остатка в валюте учёта, из движений регистра stock
    - `writeoff_quantity` string, required: Сколько списание возьмёт подбором: это количество попадает в черновик списания
    - `unavailable_quantity` string, required: Просрочка в недоступных единицах хранения: заблокированных, выведенных или числящихся на нескольких складах. В черновик списания не входит
    - `writeoff_blocker` StockExpiredWriteoffBlocker, required: Причина, по которой просрочка строки не попадёт в черновик списания (ERP-1821): складской документ с ней не пройдёт проверку.
      - `code` 'product_unavailable' | 'condition_inactive' | 'company_inactive' | 'warehouse_unavailable' | 'period_closed' | 'costing_ambiguous' | 'draft_refused', required: product_unavailable — товар в архиве, объединён с другим, не складской или без единицы; condition_inactive — состояние отключено; company_inactive — юрлицо не действует; warehouse_unavailable — склад выключен или закрыт для юрлица; period_closed — сегодня в закрытом периоде склада; costing_ambiguous — остаток без юрлица, а юрлица бизнеса ведут разные методы себестоимости; draft_refused — черновик не прошёл проверку складского документа по другой причине (только в skipped действия)
      - `detail` string, required: Готовая фраза для человека на языке запроса: что мешает и что сделать
    - `batches` StockExpiredStockBatch[], required
      - `batch_id` string, uuid, required
      - `code` string, required: Код партии поставщика; пусто — кода нет
      - `received_at` string, date, required: Дата прихода партии
      - `expires_at` string, date, required: Годен до
      - `quantity` string, required: Остаток партии в строке, десятичная строка
      - `unavailable_quantity` string, required: Часть остатка партии в недоступных единицах хранения
  - `totals` StockExpiredStockTotals, required
    - `quantity` string, required
    - `amount` string, required
    - `writeoff_quantity` string, required
    - `unavailable_quantity` string, required

## Other responses

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

---

[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)
