Catálogo de KPIs — Flujo y Cobranza
Este pilar contiene 9 KPIs derivados principalmente de los CFDIs (facturas emitidas y recibidas) que la empresa registra ante el SAT. A diferencia de Salud Financiera, estos se pueden calcular con granularidad mensual, lo que los hace centrales en la Vista Mensual del dashboard.
Estructura del pilar
7 KPIs calificativos (entran al score) + 2 KPIs informativos (no califican, dan contexto). Total 9.
Fuentes
Fuente principal: endpoint Invoices de Belvo. Complementado en algunos casos con Financial Statements para fallbacks.
KPI 12 — DSO (Days Sales Outstanding)
Estado: v1, lista para piloto
Qué mide: los días promedio que tarda la empresa en cobrar sus facturas emitidas a crédito (PPD). Métrica fundamental del ciclo de cobranza: cuántos días en promedio el dinero está "atorado" en cuentas por cobrar antes de convertirse en efectivo. Menor es mejor.
Fórmula:
DSO real (cuando hay comprobantes de Pago suficientes):
Para cada comprobante de Pago, identificar la factura original
vía related_documents[].invoice_identification.
Calcular días = fecha_pago - fecha_factura.
DSO = promedio simple de todos los días observados.
DSO fallback (desde balance, si comprobantes de Pago < 10):
DSO = (accounts_receivable × 365) / net_revenue_anualFuente: Invoices (CFDIs tipo Pago) preferido. Financial Statements como fallback.
| Estado | Rango | Puntos |
|---|---|---|
| Saludable | ≤ 30 días | 100 |
| Atención | 30 a 60 días | 70 |
| Débil | 60 a 90 días | 30 |
| Crítico | > 90 días | 10 |
Matiz importante
DSO "saludable" varía por industria. Comercializadora B2C cobra en días; constructora cobra en meses por contrato. v1 usa umbrales generales; v2 ajustará por sector.
Casos especiales
- Si la empresa no tiene comprobantes de Pago y no tiene cuentas por cobrar (vende 100% al contado), el KPI se marca como "N/A — sin ventas a crédito" en lugar de Saludable.
- Si hay comprobantes de Pago pero menos de 10 muestras, se calcula con fallback de balance para mayor robustez estadística.
KPI 13 — Concentración de Clientes (Top 3)
Estado: v1.5, con matices
Por su dependencia sectorial.
Qué mide: el porcentaje de ingresos que viene de los tres mayores clientes en el periodo. Métrica directa de riesgo de cartera: alta concentración significa que perder un cliente puede tener impacto desproporcionado en el negocio.
Fórmula:
Filtrar CFDIs: invoice_type = "Ingreso", status = "Vigente".
Agrupar por receiver_id, sumar total_amount por cliente.
Ordenar descendente.
Concentración Top 3 (%) = (suma de los 3 mayores / suma total) × 100Fuente: Invoices (Belvo). Campo receiver_id para agrupar.
| Estado | Rango | Puntos |
|---|---|---|
| Saludable | ≤ 40% | 100 |
| Atención | 40% a 70% | 70 |
| Débil | 70% a 90% | 30 |
| Crítico | > 90% | 10 |
Matiz importante
Esta es la limitación sectorial más relevante de v1. Una empresa B2B que provee a corporativos grandes (ej. proveedora de empaques para Coca-Cola) típicamente tiene concentración alta por naturaleza, y eso no es necesariamente malo si los clientes son sólidos.
v1 marca alta concentración como riesgo siempre. v2 ajustará por contexto sectorial (criterios distintos para B2B corporativo vs comercio mayorista vs servicios masivos).
Casos especiales
- Si la empresa tiene menos de 3 clientes en el periodo, el KPI se calcula sobre los disponibles. Empresa con 1 cliente se marca como Crítico automáticamente (100% concentración).
- El cliente puede ver en el dashboard la identidad de sus top clientes (con sus RFCs y porcentajes), no solo el agregado.
KPI 14 — Tasa de Cancelación de Facturas
Estado: v1, lista para piloto
Qué mide: el porcentaje de facturas emitidas que terminaron canceladas. Indicador de disciplina operativa: tasas altas sugieren procesos comerciales mal estructurados (errores de captura, cambios frecuentes de pedidos, problemas con clientes que rechazan facturas).
Fórmula:
Filtrar todas las facturas OUTFLOW emitidas en el periodo.
Tasa = (facturas con status="Cancelado" / facturas totales) × 100Fuente: Invoices (Belvo). Campo status.
| Estado | Rango | Puntos |
|---|---|---|
| Saludable | ≤ 3% | 100 |
| Atención | 3% a 7% | 70 |
| Débil | 7% a 15% | 30 |
| Crítico | > 15% | 10 |
Matiz importante
Cancelaciones no siempre indican mal proceso (a veces son legítimas: cliente devolvió mercancía, error que se corrigió). Pero patrones altos persistentes son señal de revisar procesos internos.
KPI 15 — Mix de Cobro (PUE vs PPD)
Estado: v1, lista para piloto
Qué mide: el porcentaje de ventas cobradas al momento (PUE) vs a crédito (PPD). Alto PUE = flujo de efectivo más rápido. Alto PPD = mejores términos al cliente pero más capital atrapado en cuentas por cobrar.
Fórmula:
Filtrar CFDIs: invoice_type = "Ingreso", status = "Vigente".
Contar facturas por payment_method.
Mix PUE (%) = (facturas PUE / facturas totales) × 100
Mix PPD (%) = (facturas PPD / facturas totales) × 100Fuente: Invoices (Belvo). Campo payment_method.
| Estado | Rango | Puntos |
|---|---|---|
| Saludable | PUE ≥ 50% (cobro mixto sano) | 100 |
| Atención | PUE 20% a 50% | 70 |
| Débil | PUE 5% a 20% | 30 |
| Crítico | PUE < 5% (todo a crédito) | 10 |
Matiz importante
Cuando este KPI es Débil o Crítico, el DSO típicamente es alto también: son síntomas del mismo problema. Mira ambos en conjunto. v2 podría introducir umbrales por industria (constructoras casi nunca cobran al contado; cafeterías casi siempre).
KPI 16 — Tasa de Cobro Real
Estado: v1, lista para piloto
Qué mide: qué porcentaje de las facturas emitidas a crédito (PPD) han sido efectivamente cobradas (tienen al menos un comprobante de Pago asociado). Mide eficiencia de cobranza: emitir factura no es vender; vender es cobrar.
Fórmula:
Identificar facturas PPD emitidas hace más de 90 días.
De ellas, identificar cuáles tienen al menos un comprobante
de Pago referenciado vía related_documents[].
Tasa = (PPD cobradas / PPD vencidas > 90d) × 100Fuente: Invoices (Belvo). Cruzando CFDIs de Ingreso PPD con CFDIs de Pago.
| Estado | Rango | Puntos |
|---|---|---|
| Saludable | ≥ 90% | 100 |
| Atención | 70% a 90% | 70 |
| Débil | 50% a 70% | 30 |
| Crítico | < 50% | 10 |
Matiz importante
La ventana de 90 días es estándar para definir "facturas que ya deberían estar cobradas". Empresa con tasa de cobro real menor a 70% probablemente tiene problema operativo serio: clientes que no pagan, falta de proceso de cobranza, o problemas legales subyacentes.
KPI 17 — Volatilidad de Ingresos Mensuales
Estado: v1, lista para piloto
Qué mide: qué tan estables son los ingresos mes con mes. Empresa con ingresos predecibles puede planear, contratar y crecer ordenadamente; empresa con ingresos volátiles vive en montaña rusa de tesorería. Se mide como coeficiente de variación: desviación estándar sobre la media.
Fórmula:
Filtrar CFDIs de Ingreso Vigentes del último año.
Agrupar por mes calendario, sumar total_amount por mes.
Calcular media (μ) y desviación estándar (σ) de la serie mensual.
Volatilidad (%) = (σ / μ) × 100Fuente: Invoices (Belvo). Requiere al menos 6 meses con datos para cálculo robusto.
| Estado | Rango | Puntos |
|---|---|---|
| Saludable | ≤ 25% | 100 |
| Atención | 25% a 50% | 70 |
| Débil | 50% a 80% | 30 |
| Crítico | > 80% | 10 |
Matiz importante
Negocios estacionales por naturaleza (turismo, vacaciones, regreso a clases) tendrán volatilidad alta y eso no es necesariamente malo. v2 introducirá detección de estacionalidad para distinguir entre volatilidad estructural (sana) y volatilidad caótica (problemática).
Casos especiales
- Si hay menos de 6 meses con datos, el KPI se marca como N/D.
- Si la media mensual es cero o muy cercana a cero, el coeficiente de variación tiende a infinito; en ese caso el KPI se marca como N/D con la nota "ingresos insuficientes para análisis de volatilidad".
KPI 18 — Crecimiento de Cartera (Cuentas por Cobrar)
Estado: v1.5, con matices
Por sus edge cases en empresas nuevas o sin AR previo.
Qué mide: cómo está cambiando el saldo de cuentas por cobrar año contra año. Señal complementaria al DSO: cartera creciendo a la par de los ingresos es normal. Cartera creciendo mucho más rápido que los ingresos es bandera: significa que se está vendiendo pero no se está cobrando al mismo ritmo.
Fórmula:
Cambio en cartera (%) = ((AR_año_actual - AR_año_anterior) / AR_año_anterior) × 100
Cambio en ingresos (%) = ((rev_año_actual - rev_año_anterior) / rev_año_anterior) × 100
Delta = cambio_cartera - cambio_ingresosFuente: Financial Statements (Belvo). Campo accounts_receivable.
| Estado | Rango | Puntos |
|---|---|---|
| Saludable | Delta ≤ 5 puntos porcentuales | 100 |
| Atención | Delta 5 a 20 pp | 70 |
| Débil | Delta 20 a 50 pp | 30 |
| Crítico | Delta > 50 pp | 10 |
Matiz importante
Mide aceleración relativa: la cartera puede crecer mucho en valor absoluto siempre que los ingresos crezcan en proporción. El problema es cuando crece "más" que los ingresos: se está dando más crédito o tardando más en cobrar.
Casos especiales
- Requiere al menos dos años de Financial Statements para calcularse.
- Si en el año anterior
accounts_receivableera cero o muy bajo, el KPI se marca como N/D para evitar divisiones inestables.
KPI 19 — Diversificación de Mercado (informativo)
Estado: v1, informativo
No entra al score. Es estrictamente contexto.
Qué mide: el porcentaje de ingresos que viene de mercados extranjeros vs el mercado nacional. No es indicador de "salud" en sentido absoluto, sino de perfil de riesgo: empresas con exposición a moneda extranjera tienen oportunidades de hedging y costos que las puramente domésticas no tienen.
Fórmula:
Exposición FX (%) = (foreign_sales / net_revenue) × 100Fuente: Financial Statements (Belvo). Campo income_statement.foreign_sales.
Cómo se muestra
Aparece en el dashboard como dato de contexto. Si la exposición FX es > 30% sin cobertura cambiaria identificable, se acompaña de una bandera informativa (no calificativa).
Por qué no califica
v2 podría convertirlo en KPI calificativo si se cruza con información de cobertura cambiaria.
KPI 20 — Perfil de IVA de la Empresa (informativo)
Estado: v1, informativo
No entra al score. Es contexto que afecta cómo se interpretan otros KPIs.
Qué mide: qué porcentaje de las ventas están sujetas a IVA al 16%, al 0%, exentas, o mezcla. No es score calificativo, es dato de contexto que afecta cómo se interpretan otros KPIs (como las aproximaciones de carga fiscal).
Fórmula:
Iterar sobre CFDIs de Ingreso Vigentes.
Para cada uno, identificar transferred_taxes[].tax_type.
Agrupar montos por categoría (Tasa 16, Tasa 0, Exento, Tasa 8 frontera).
Calcular porcentajes sobre el subtotal total.Fuente: Invoices (Belvo). Campos tax_details.transferred_taxes y invoice_details[].transferred_taxes.
Cómo se muestra
Se muestra al cliente como "Tu actividad genera principalmente ventas exentas de IVA (alimentos básicos)" o equivalente. Su utilidad principal es servir de referencia honesta para que el cliente entienda por qué su carga fiscal de IVA es la que es.
Resumen del pilar
| Característica | Detalle |
|---|---|
| Total de KPIs | 9 |
| KPIs calificativos | 7 (DSO, Concentración, Cancelación, Mix Cobro, Cobro Real, Volatilidad, Crecimiento Cartera) |
| KPIs informativos | 2 (Diversificación de Mercado, Perfil IVA) |
| Fuente principal | Invoices (CFDIs) |
| Fuente complementaria | Financial Statements (para Crecimiento de Cartera) |
| Periodicidad | Mensual (algunos) y anual (otros) |
KPIs v1.5 (con matices) | Concentración, Crecimiento de Cartera |