Ir al contenido
Facturalo

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
tipoOperacion
stringrequerido
Código de la tabla 12 (ver tipos): 02 compra, 16 saldo inicial, 13 mermas, 28 ajuste…Ej: 02
direccion
stringopcional
Solo para 28 y 99: entrada o salida.
fecha
stringrequerido
YYYY-MM-DD (hasta mañana).Ej: 2026-11-03
establecimientoId
string | nullopcional
UUID del almacén. Default: principal.
documento
object | nullopcional
Documento que sustenta el movimiento.
tipo
stringopcional
Tabla 10: 01 factura, 03 boleta, 09 guía, 50 DUA, 00 otros.Ej: 01
serie
stringopcional
Serie (máx. 20).Ej: F005
numero
stringopcional
Número (máx. 20).Ej: 887
nota
string | nullopcional
Texto libre (máx. 250).
items
arrayrequerido
1 a 200 productos.
varianteId
stringrequerido
UUID de la variante, UUID del producto (si tiene una sola variante), SKU o código de barras.
cantidad
numberopcional
Mayor que 0. Con series, se cuenta con ellas.
costoUnitario
number | 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).
series
string[] | 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"
    }
  ]
}