Pagos a proveedores
Cuentas por pagar (CxP): registra el dinero que le pagas a un proveedor y
aplícalo contra una o varias compras (abono parcial o pago consolidado).
Espejo exacto de Cobros sobre Compra
en vez de Factura. Incluye la agenda de pagos semanal.
Autenticación
X-API-Key con una API key que tenga permisos sobre el
recurso pagos_proveedor. Igual que el resto de la API, el
tenant se resuelve por la propia key (no hace falta
X-Tenant-Id en integraciones vía API pública).
Registrar un pago
POST /api/v1/pagos-proveedor — Crea un pago y sus aplicaciones a compra(s)
Body
| Parámetro | Tipo | Descripción |
|---|---|---|
proveedor_id required | integer | Id del proveedor (PersonaEmpresa con es_proveedor=true). |
fecha required | datetime | Fecha en que se entregó el dinero (ISO 8601). |
medio required | string | Medio de pago — código de la Tabla 24 SRI (ej. '01' efectivo, '16' t. débito, '19' t. crédito). |
monto required | number | Monto total del pago. Debe cuadrar (±0.01) con la Σ de aplicaciones.monto_aplicado. |
referencia optional | string | Referencia libre (n° de transferencia, cheque, etc). Máx 120 caracteres. |
notas optional | string | Notas internas. |
cuenta_dinero_id optional | integer | Cuenta de caja/banco desde la que salió el dinero (módulo de cajas y bancos, fase posterior). |
sucursal_id optional | integer | Sucursal de trazabilidad. Si se omite, se infiere del usuario. |
aplicaciones required | array | Mínimo 1 elemento. Cada uno: { compra_id, monto_aplicado }. |
Forma de aplicaciones[]
| Parámetro | Tipo | Descripción |
|---|---|---|
compra_id required | integer | Compra (documento recibido) a la que se aplica el pago. |
monto_aplicado required | number | Monto aplicado a esa compra. No puede superar su saldo pendiente (total − total_pagado). |
import { Emitoo } from "emitoo";
const client = new Emitoo(); // lee la API key de EMITOO_API_KEY
const pago = await client.pagosProveedor.crear({
proveedor_id: 7,
fecha: new Date().toISOString(),
medio: "01",
monto: 320.0,
referencia: "TRF-55021",
aplicaciones: [
{ compra_id: 214, monto_aplicado: 200.0 },
{ compra_id: 219, monto_aplicado: 120.0 },
],
});from emitoo import EmitooClient
client = EmitooClient() # lee la API key de EMITOO_API_KEY
pago = client.pagos_proveedor.crear({
"proveedor_id": 7,
"fecha": "2026-07-06T09:30:00",
"medio": "01",
"monto": 320.00,
"referencia": "TRF-55021",
"aplicaciones": [
{"compra_id": 214, "monto_aplicado": 200.00},
{"compra_id": 219, "monto_aplicado": 120.00},
],
})client, err := emitoo.New("") // lee la API key de EMITOO_API_KEY
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
pago, err := client.PagosProveedor.Crear(ctx, emitoo.M{
"proveedor_id": 7,
"fecha": time.Now().Format(time.RFC3339),
"medio": "01",
"monto": 320.0,
"referencia": "TRF-55021",
"aplicaciones": []emitoo.M{
{"compra_id": 214, "monto_aplicado": 200.0},
{"compra_id": 219, "monto_aplicado": 120.0},
},
})
if err != nil {
log.Fatal(err)
}curl -X POST https://api.emitoo.io/api/v1/pagos-proveedor \
-H "X-API-Key: $EMITOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"proveedor_id": 7,
"fecha": "2026-07-06T09:30:00",
"medio": "01",
"monto": 320.00,
"referencia": "TRF-55021",
"aplicaciones": [
{ "compra_id": 214, "monto_aplicado": 200.00 },
{ "compra_id": 219, "monto_aplicado": 120.00 }
]
}'Respuesta (201 Created)
{
"id": 41,
"fecha": "2026-07-06T09:30:00",
"proveedor_id": 7,
"medio": "01",
"monto": 320.0,
"referencia": "TRF-55021",
"notas": null,
"cuenta_dinero_id": null,
"anulado": false,
"anulado_motivo": null,
"anulado_en": null,
"creado_en": "2026-07-06T09:30:04",
"aplicaciones": [
{ "id": 61, "compra_id": 214, "monto_aplicado": 200.0 },
{ "id": 62, "compra_id": 219, "monto_aplicado": 120.0 }
]
}Errores
| Código | Cuándo ocurre |
|---|---|
404 | El proveedor no existe, o alguna de las compras referenciadas en aplicaciones no existe. |
409 | El monto_aplicado de una línea supera el saldo pendiente de esa compra. |
422 | El medio no es un código válido de la Tabla 24 SRI, o Σ(aplicaciones) no cuadra con monto. |
Listar pagos
GET /api/v1/pagos-proveedor?proveedor_id=&desde=&hasta=&limit=&offset= — Listado con filtros opcionales
| Parámetro | Tipo | Descripción |
|---|---|---|
proveedor_id optional | integer | Filtra por proveedor. |
desde optional | date | Fecha inicial (inclusive). |
hasta optional | date | Fecha final (inclusive). |
limit optional | integer | Default 50. |
offset optional | integer | Default 0. |
Obtener un pago
GET /api/v1/pagos-proveedor/{id} — Detalle completo, con sus aplicaciones a compra
Anular un pago
POST /api/v1/pagos-proveedor/{id}/anular — Anula el pago y revierte sus aplicaciones (el saldo de las compras vuelve a subir)
Body
| Parámetro | Tipo | Descripción |
|---|---|---|
motivo required | string | Motivo de la anulación. Máx 300 caracteres. |
Un pago anulado no se puede volver a anular
409.
Si necesitas corregir el monto o las compras aplicadas, anula y crea un
pago nuevo.
Agenda de pagos
GET /api/v1/pagos-proveedor/agenda — Compras con saldo pendiente, agrupadas por semana ISO (lunes) de fecha_vencimiento
Cada compra con saldo > 0 se agrupa en la semana (lunes ISO) de su
fecha_vencimiento (o de fecha_emision si no
tiene vencimiento). Útil para planificar los pagos de la semana.
{
"semanas": [
{
"semana": "2026-07-06",
"total": 320.0,
"cantidad": 2,
"compras": [
{
"id": 214,
"numero_doc": "001-001-000000214",
"proveedor_razon_social": "Distribuidora Andina S.A.",
"fecha_vencimiento": "2026-07-08",
"total": 200.0,
"total_pagado": 0,
"saldo": 200.0
},
{
"id": 219,
"numero_doc": "001-002-000000019",
"proveedor_razon_social": "Suministros del Pacífico",
"fecha_vencimiento": "2026-07-10",
"total": 120.0,
"total_pagado": 0,
"saldo": 120.0
}
]
}
],
"total_general": 320.0
}Eventos
Este módulo emite los siguientes eventos:
| Evento | Cuándo se dispara |
|---|---|
pago_proveedor.registrado | Se creó un pago (POST /pagos-proveedor). |
pago_proveedor.anulado | Se anuló un pago (POST /pagos-proveedor/{id}/anular). |
compra.pagada | El saldo de una compra llegó a 0 tras aplicar un pago. |
// POST https://tu-app.com/webhooks/emitoo
// X-Emitoo-Event: pago_proveedor.registrado
{
"evento": "pago_proveedor.registrado",
"data": {
"id": 41,
"proveedor_id": 7,
"medio": "01",
"monto": 320.0,
"referencia": "TRF-55021",
"compras": [214, 219]
}
}Automatiza el pago a proveedores
compra.creada con un
workflow para avisar por email o
WhatsApp cuando llega una compra con vencimiento próximo, usando la
misma agenda que ves en GET /pagos-proveedor/agenda.