Billing pass-through
Objetivo
Documentar el modelo pass-through: qué componentes forman el costo, cómo se calculan y por qué es el más sensible a la información de CENACE.
Audiencia
Facturación, producto, operación y desarrollo interno.
Estado documental
- Estado: Borrador
- Última actualización: 2026-08-02
- Owner: Pendiente
- SME requerido: facturación / producto
- Fuente resumida: acciones de cálculo pass-through, constructores de estado de cuenta y configuración de participante.
Qué significa pass-through
En un contrato de costo fijo el precio está pactado: el cliente paga lo acordado sin importar cómo se comportó el mercado.
En un contrato pass-through se traslada al cliente el costo real que tuvo la energía en el mercado ese mes. El sistema no fija el precio: lo reconstruye a partir de lo que publicó CENACE.
De ahí las dos consecuencias que definen todo lo demás:
- No se puede facturar hasta que CENACE publique. Por eso el ciclo corre el día 4 y no el día 1.
- Si falta información, el importe sale mal. No falla: sale incompleto.
Componentes del costo
| Componente | Qué representa | Comando |
|---|---|---|
| MDA | Costo en el Mercado de Día en Adelanto. | passthrough:mda |
| MTR | Costo en el Mercado de Tiempo Real. | passthrough:mtr |
| Congestión | Componente de congestión del nodo. | passthrough:congestion |
| Distribución | Costo de distribución. Aplica a todos los centros de carga. | passthrough:distribution |
| Ancho de banda | Ancho de banda del centro de carga. | passthrough:bandwidth |
| Estimado | Cálculo estimado del mes. | passthrough:estimated |
| Capacidad | Derivada de las 100 horas críticas del año. | calculate:critical-hours, calculate:by-charge-center --slug=year-capacity |
| CELs | Certificados de Energías Limpias. | Incluido en el cálculo integral. |
Los primeros cinco se calculan por fecha de operación: para cerrar un mes hay que recorrer todos sus días.
El cálculo integral que consolida bloque de energía, CELs, capacidad y pass-through de CENACE:
php artisan calculate:by-passthrough --rmu=<RMU> --year=<YYYY> --month=<MM>La fecha de corte
Cada participante tiene configurada una fecha de corte pass-through, con valor por omisión de 3 días.
El cálculo desplaza por ese número de días la ventana con la que busca los ECD según su fecha de emisión. Es lo que hace que el ciclo corra el día 4: se ejecuta después del corte.
Configurable por participante
Si un participante tiene una fecha de corte distinta de 3, su calendario de facturación pass-through cambia en consecuencia. Confirmar el valor antes de asumir el día 4.
Tipos de liquidación
El cálculo clasifica cada registro según su relación con el periodo:
| Tipo | Qué es |
|---|---|
| Liquidación | Resultado del periodo corriente. |
| True-up | Ajuste de un concepto respecto a lo previamente calculado. |
| Reliquidación | CENACE republicó información de un periodo ya cerrado. |
Las reliquidaciones son el caso difícil: modifican un periodo que puede estar ya facturado.
Validaciones antes de facturar
| Validación | Comando | Qué detecta |
|---|---|---|
| Completitud de energía de CENACE | passthrough:check-cenace-energy <inicio> <fin> | Días sin energía en el periodo. Solo verifica, no escribe. |
| Potencia MDA | verify:mda-deals --year= --month= | Diferencias entre lo contratado y el estado de cuenta. |
| Contratos activos | contracts:active --date= | Centros de carga sin contrato o con traslape. |
La primera es la que evita el error más caro: facturar un mes con información incompleta.
Diferencias frecuentes
| Diferencia | Causa probable | Cómo resolver |
|---|---|---|
| Importe en cero | El mes se calculó antes de que CENACE publicara. | Verificar con check-cenace-energy, reprocesar los ECD faltantes y recalcular. |
| Importe menor al esperado | Faltan días de energía o huecos de demanda. | Completar la fuente y recalcular el periodo. |
| Un componente ausente | Ese cálculo no se ejecutó para el rango. | Reejecutar el componente por RMU y fecha. |
| Diferencia de potencia MDA | Discrepancia contrato vs. estado de cuenta. | verify:mda-deals; con --fix=true corrige. |
| Cambio después de facturar | CENACE reliquidó el periodo. | Sin procedimiento documentado. Escalar. |
Evidencia mínima
- Periodo y centro de carga.
- Resultado de
check-cenace-energypara el periodo. - Componentes calculados y su fecha de ejecución.
- Estado de cuenta generado.
- Diferencia detectada y su resolución.
Riesgos y gaps
- No están documentadas las fórmulas de cada componente; esta página describe el flujo, no el cálculo.
- No hay procedimiento documentado para propagar una reliquidación a un periodo ya facturado.
- No está confirmado si los cálculos son idempotentes al repetirse.
- No está confirmada la fecha de corte configurada para cada participante productivo.
Próxima revisión
Al documentar las fórmulas de cálculo con el área de producto.