Registrar ingreso o salida
Registra un ingreso o una salida con uno o varios productos que comparten tipo, fecha y documento (por ejemplo, una factura de compra). El kárdex se recalcula desde esa fecha.
POSThttps://api.facturalo.pe/api/v3/inventario/movimientos
Parámetros del body
Campo
Descripción
tipoOperacionstringrequerido
Código de la tabla 12 (ver tipos):
02 compra, 16 saldo inicial, 13 mermas, 28 ajuste…Ej: 02direccionstringopcional
Solo para
28 y 99: entrada o salida.fechastringrequerido
YYYY-MM-DD (hasta mañana).Ej:
2026-11-03establecimientoIdstring | nullopcional
UUID del almacén. Default: principal.
documentoobject | nullopcional
Documento que sustenta el movimiento.
tipostringopcional
Tabla 10:
01 factura, 03 boleta, 09 guía, 50 DUA, 00 otros.Ej: 01seriestringopcional
Serie (máx. 20).Ej:
F005numerostringopcional
Número (máx. 20).Ej:
887notastring | nullopcional
Texto libre (máx. 250).
itemsarrayrequerido
1 a 200 productos.
varianteIdstringrequerido
UUID de la variante, UUID del producto (si tiene una sola variante), SKU o código de barras.
cantidadnumberopcional
Mayor que 0. Con
series, se cuenta con ellas.costoUnitarionumber | nullopcional
Entradas: costo sin IGV. Obligatorio en
02, 16 y 18; en otras entradas, vacío = costo promedio. En salidas se ignora (sale al promedio).seriesstring[] | nullopcional
Productos con
controlaSeries: una serie / IMEI por unidad. Entradas: series nuevas. Salidas: series en stock en ese almacén.Language
Credentials
Header
Authorization
Token de la empresa · HTTP directo
Fetch Request
$ # Node 18+ fetch
const response = await fetch("https://api.facturalo.pe/api/v3/inventario/movimientos", {
method: "POST",
headers: {
"Authorization": "sk_test_…",
"Content-Type": "application/json"
},
body: JSON.stringify({
"tipoOperacion": "02",
"fecha": "2026-11-03",
"documento": {
"tipo": "01",
"serie": "F005",
"numero": "887"
},
"nota": "Compra a Distribuidora HP",
"items": [
{
"varianteId": "LAPT-HP-INT-I20",
"series": [
"5CD1234ABC",
"5CD1234ABD",
"5CD1234ABE"
],
"costoUnitario": 2966.1
},
{
"varianteId": "POLO-S-AZ",
"cantidad": 20,
"costoUnitario": 12
}
]
})
});
const data = await response.json();
console.log(data);HTTP directo · funciona con cualquier cliente HTTP
Response
Elige un ejemplo de respuesta:
application/json
201Created
{
"success": true,
"message": "Movimiento registrado.",
"data": [
{
"id": "a3301a1c-6b0e-4f7e-8a51-2f1d7c9b0e11",
"fecha": "2026-11-03",
"documento": {
"tipo": "01",
"serie": "F005",
"numero": "887"
},
"tipoOperacion": "02",
"operacion": "Compra",
"origen": "manual",
"entrada": {
"cantidad": 3,
"costoUnitario": 2966.1,
"total": 8898.3
},
"salida": null,
"saldo": {
"cantidad": 3,
"costoUnitario": 2966.1,
"total": 8898.3
},
"nota": null,
"varianteId": "a32f4541-75eb-4b59-ad28-3c571652fe39",
"descripcion": "LAPTOP HP INTEL I20",
"sku": "LAPT-HP-INT-I20",
"direccion": "entrada",
"grupo": "a3301a1c-0000-4f7e-8a51-2f1d7c9b0e11",
"establecimiento": {
"id": "11111111-2222-3333-4444-555555555555",
"nombre": "Principal"
},
"comprobanteId": null,
"series": [
"5CD1234ABC",
"5CD1234ABD",
"5CD1234ABE"
],
"creado": "2026-11-09T10:20:00-05:00"
}
]
}