Restofy Docs
Compras de insumos POST

Registrar compra

POST /api/purchases/create-purchase

Descripción

Registra la factura de un proveedor e ingresa los insumos a bodega.

Detalles

* Cada insumo entra a la bodega indicada en su unidad de compra y suma stock. * El costo de cada insumo se recalcula con un promedio ponderado de sus compras recientes. * El total se calcula en el servidor a partir de las líneas; no se acepta un total del cliente. * Falla si el proveedor, un insumo, una bodega o una unidad no son válidos.

Permisos requeridos

purchases.module

Request

Nombre Tipo Requerido Reglas
supplierId int
min_value:1
invoiceNumber string
min:1 max:100
invoiceDate string
min:10 max:10
description string No
max:500
items array
items[].inventoryItemId int
min_value:1
items[].storageLocationId int
min_value:1
items[].unitId int
min_value:1
items[].quantity string
decimal min_value:0
items[].unitCostCents int
min_value:0

Ejemplo de request

curl -X POST https://restofy.pro/api/purchases/create-purchase \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <accessToken>" \
  -H "X-Tenant-Key: <tenantKey>" \
  -d '{
    "supplierId": 1,
    "invoiceNumber": "string",
    "invoiceDate": "string",
    "items": [
        {
            "inventoryItemId": 1,
            "storageLocationId": 1,
            "unitId": 1,
            "quantity": "string",
            "unitCostCents": 1
        }
    ]
}'

Los valores son demo: reemplázalos por datos reales del negocio.

Ejemplo de respuesta

Actualizado: 2026-09-08T16:35:34Z
HTTP 200

Request

{
    "supplierId": 2,
    "invoiceNumber": "FAC-6aa0392032b6a",
    "invoiceDate": "2026-09-04",
    "items": [
        {
            "inventoryItemId": 27,
            "storageLocationId": 4,
            "unitId": 2,
            "quantity": 1000,
            "unitCostCents": 100
        }
    ]
}

Response

{
    "success": true,
    "message": "Compra registrada",
    "data": {
        "purchaseId": "3"
    }
}