---
title: "Crea un ingreso o egreso de stock"
method: POST
path: "/v2/ingresos-egresos-stock"
tags: ["Ingresos y egresos de stock"]
---

# Crea un ingreso o egreso de stock

`POST /v2/ingresos-egresos-stock`

## Request

- Base URL: `https://erp.duxsoftware.com.ar/WSERP/rest/services`
- URL: `https://erp.duxsoftware.com.ar/WSERP/rest/services/v2/ingresos-egresos-stock`
- Auth: HTTP bearer

Registra un movimiento de stock en un depósito. `id_sucursal`, `id_deposito`, `id_personal` y `fecha` son obligatorios (`id_empresa` es opcional si el Dux del token tiene una sola empresa; `id_cliente` debe existir), e `items[]` no puede estar vacío. Cada ítem indica `cod_item`, `tipo` (INGRESO o EGRESO) y `cantidad` mayor a 0; un mismo movimiento puede combinar ingresos y egresos. Para productos con trazabilidad podés enviar `nro_identificacion_trazable`, `fecha_vencimiento`, `lote` y `descripcion_trazable`. El token necesita el permiso "Ingresos/egresos de stock" de escritura.

## Request body

- V2CrearIngresoEgresoStockRequest
  - `id_empresa` integer: ID de la empresa. Opcional si el Dux del token tiene una sola empresa; si tiene más de una es obligatorio (consultá GET /v2/empresas).
  - `id_sucursal` integer, required
  - `id_deposito` integer, required
  - `id_personal` integer, required
  - `fecha` string, required
  - `cod_externo` string
  - `observaciones` string
  - `id_cliente` integer
  - `items` CrearIngresoEgresoStockV2RequestV2CrearIngresoEgresoStockItem[], required
    - `cod_item` string, required
    - `id_det_item` integer: Identificador de la variante (talle/color) del producto, obtenido de GET /v2/items en stock[].id_det_item. Obligatorio si el producto tiene variantes.
    - `tipo` 'INGRESO' | 'EGRESO', required
    - `cantidad` number, double, required
    - `nro_identificacion_trazable` string
    - `fecha_vencimiento` string
    - `lote` string
    - `descripcion_trazable` string

## Response `201`

Creado

- ApiResponseIngresoEgresoStockCreadoV2Response
  - `datos` IngresoEgresoStockCreadoV2Response
    - `id_ingreso_egreso_stock` integer
  - `paginacion` Paginacion
    - `total` integer
    - `offset` integer
    - `limit` integer
    - `hay_mas` boolean
  - `id_solicitud` string

## Other responses

- `400`: Validación: ítem inexistente, cantidades inválidas, trazable sin stock disponible, depósito, personal o cliente inexistentes
- `401`: No autorizado
- `403`: Prohibido
- `409`: Conflicto: stock insuficiente para un egreso o número de identificación de trazable ya existente
- `429`: Límite de peticiones
- `500`: Error interno

---

[API](https://skmtc.dev/duxsoftware/apis/dux-api-v2-stock.md) - [All operations](https://skmtc.dev/duxsoftware/apis/dux-api-v2-stock/llms.txt) - [OpenAPI document](https://skmtc.dev/duxsoftware/apis/dux-api-v2-stock/revisions/c68d1dc2b02c?raw)
