> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.recurrente.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.recurrente.com/_mcp/server.

# Inventario ajustado

POST 

Se emite cuando alguien mueve un conteo a propósito: el comercio desde la pantalla de Inventarios, o una integración por la API.

No se emite en cada venta. Una venta ya llega como su propio evento de pago, y su `items[].variant` dice qué combinación salió; este evento es para lo que no tiene un pago detrás — una entrega recibida, una merma, un reconteo después de cerrar.

`variant` es `null` cuando el que lleva el conteo es el producto. `movement` es la línea que quedó en el libro, la misma que devuelve `GET /products/{id}/inventory_movements`.

Reference: https://docs.recurrente.com/referencia-api/api-reference/webhook-events/product-inventory-adjusted-webhook

## Request

### Payload

- `id` (string, optional)
- `status` (string, optional)
- `name` (string, optional)
- `api_version` (string, optional)
- `event_type` (string, optional)
- `inventory_quantity` (integer, optional, nullable) — El conteo que quedó, del producto o de la combinación, según de quién sea el movimiento.
- `low_stock_threshold` (integer, optional) — El umbral contra el que se juzga ese conteo, ya resuelto y del mismo registro que el conteo: una combinación sin umbral propio hereda el del producto, y el producto el de la cuenta. Así se compara directo, sin tener que resolver la herencia del otro lado.
- `variant` (ProductVariant, optional, nullable) — La combinación cuyo conteo se movió; `null` si fue el del producto.
- `movement` (InventoryMovement, optional) — Una línea del libro de inventario: qué se movió, por qué, y qué quedó. El conteo que devuelve el resto de la API es un caché de la última de estas líneas.
- `created_at` (datetime, optional)

## Types

### ProductVariant

Una combinación vendible de las opciones del producto (el modelo de variantes de Shopify). Su precio es un `Price` del producto; la línea del checkout apunta a ese `price_id` y el webhook trae la variante en `items[].variant`.

- `id` (string, optional)
- `product_id` (string, optional) — El producto al que pertenece esta combinación. El SKU es único por producto, no por cuenta, así que es lo que permite resolver una fila de la lista.
- `status` (enum, optional)
  - Allowed values: `active`, `archived`
- `title` (string, optional) — Los valores unidos por " / ".
- `option_values` (list of string, optional)
- `sku` (string, optional, nullable)
- `price_id` (string, optional) — El precio de esta variante.
- `amount_in_cents` (integer, optional)
- `currency` (string, optional)
- `inventory_quantity` (integer, optional, nullable) — Existencias de esta variante. `null` es ilimitado. Baja con cada venta pagada de esta variante y puede quedar en negativo si se vendió más de lo que había; un número escrito aquí es cero o más.
- `low_stock_threshold` (integer, optional, nullable) — Desde qué cantidad se considera baja esta variante. `null` usa el valor por defecto de la cuenta.

### InventoryMovement

Una línea del libro de inventario: qué se movió, por qué, y qué quedó. El conteo que devuelve el resto de la API es un caché de la última de estas líneas.

- `id` (string, optional)
- `product_id` (string, optional)
- `variant_id` (string, optional, nullable)
- `delta` (integer, optional) — Las unidades que se movieron, con signo: una venta es negativa, una entrega positiva.
- `resulting_quantity` (integer, optional) — El conteo que quedó justo después de este movimiento.
- `reason` (enum, optional) — `sale` y `refund` los escribe un pago; el resto los escribe el comercio o una integración. `manual` es un conteo escrito en el formulario del producto y `api` su equivalente enviado por la API.
  - Allowed values: `sale`, `refund`, `received`, `recount`, `damaged`, `lost`, `manual`, `api`
- `note` (string, optional, nullable)
- `created_at` (datetime, optional)