Registrar un egreso
Queda con source: "API", para que en el libro se distinga lo que escribió un sistema de lo que escribió una persona.
Autorización
apiKey expenses.writeLa llave del negocio, creada en el panel: Integraciones → API pública. Formato vk_live_… (o vk_test_… fuera de producción).
Va en: header
Permiso: expenses.write
Parámetros de consulta
Sobre qué negocio actúa la petición. Obligatorio solo si la llave entra a varios negocios (plan Multi); con uno solo, se deduce.
Parámetros de cabecera
Llave única de la operación. Un reintento con la misma llave y el mismo cuerpo devuelve la respuesta original en vez de volver a ejecutar. Ver la guía de idempotencia.
Cuerpo de la petición
application/json
Tipos de TypeScript
Usa el tipo request body en TypeScript.
Cuerpo de la respuesta
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/expenses" \ -H "Content-Type: application/json" \ -d '{ "amount": 120000, "paidTo": "Harina La Espiga", "occurredAt": "2026-09-04T14:10:00.000Z", "categoryId": "cmt7xbfrm0003q3w121ldx6wz", "paymentMethod": "TRANSFER", "notes": "Pedido semanal" }'{ "object": "expense", "id": "cmtnox8lz00016kw11frj0rww", "amount": 120000, "currency": "COP", "paidTo": "Harina La Espiga", "occurredAt": "2026-09-04T14:10:00.000Z", "createdAt": "2026-09-04T14:12:44.008Z", "accountLabel": null, "paymentMethod": "TRANSFER", "notes": "Pedido semanal", "source": "API", "category": { "id": "cmt7xbfrm0003q3w121ldx6wz", "name": "Proveedores y mercancía", "emoji": "📦" }, "branch": null, "createdBy": { "id": null, "name": null, "phone": null }}Corregir un ingreso declarado PATCH
Solo funciona sobre ingresos DECLARED. Nunca toca status ni origin.
Crear una categoría de egreso POST
Un negocio nace con once categorías por defecto y puede crear las suyas. Crear categorías propias es una función aparte del módulo de egresos (expense_categories_custom): en el plan más bajo se usan solo las que vienen.