FINORA Core · Concepts
Conciliación Continua: el libro que se cuadra solo
This content is not available in your language yet.
El problema: de día se registra, de noche se averigua
Sección titulada «El problema: de día se registra, de noche se averigua»Un core bancario tradicional vive en dos tiempos. De día registra: depósitos, retiros, transferencias, cuotas. De noche, en el cierre, se pregunta si todo cuadró: recorre el histórico, suma las cuentas de los clientes, las compara con la contabilidad y busca diferencias.
Lo que no cuadró a las 10 de la mañana se descubre a las 2 de la madrugada. O a las 8, cuando llega la contadora y ve el cierre detenido. Y mientras más clientes tiene el banco, más largo es ese recorrido nocturno: el costo crece con el número de asientos, que en un banco grande son millones por día.
Una analogía: el cuaderno de la bodega
Sección titulada «Una analogía: el cuaderno de la bodega»Piensa en una bodega. El bodeguero anota cada venta en un cuaderno y echa el dinero en la gaveta. En la noche cuenta la gaveta, suma el cuaderno y compara. Si no coinciden, tiene que releer todo el día para encontrar el error.
Ahora imagina que la gaveta tiene un contador que sube solo cada vez que entra dinero, y que el cuaderno lleva su total al pie, que el bodeguero actualiza en el mismo gesto en que anota la venta. En la noche ya no suma nada: mira dos números, comprueba que son iguales y firma la página. Si alguien arranca o cambia una página firmada, la firma ya no coincide.
Eso es la Conciliación Continua: el contador de la gaveta son las cubetas, el total al pie es el auxiliar, la firma es el sello encadenado del día.
La idea: conciliar en el mismo commit
Sección titulada «La idea: conciliar en el mismo commit»En FINORA Core, cada operación deja, en la misma transacción de la base de datos, la línea contable y los contadores que la resumen. El saldo de las cuentas de los clientes (el auxiliar) y el saldo de la cuenta contable que los controla (el mayor) se mueven juntos. Conciliar deja de ser «recalcular el histórico» y pasa a ser «comparar dos números que ya están al día».
flowchart LR
subgraph Antes["Antes: conciliar de noche"]
A1[Operación del día] --> A2[(Asientos)]
A2 -.->|en el cierre, recorre todo el histórico| A3{¿Cuadra?}
A3 -->|no| A4[Se descubre de madrugada]
end
subgraph Ahora["Con Conciliación Continua"]
B1[Operación del día] --> B2[(Asiento + cubetas + auxiliar)]
B2 -->|en el mismo commit| B3{¿Cuadra?}
B3 -->|no| B4[Se ve en segundos, con su cuenta y su moneda]
end
Tres consecuencias, en palabras simples:
- Una diferencia se ve en segundos, con su cuenta, su moneda y si hay partidas en tránsito que la expliquen.
- El cierre deja de calcular y pasa a certificar: sella los totales del día y los encadena con el día anterior.
- El costo del cierre ya no crece con los asientos, sino con las combinaciones de cuenta y moneda: miles de filas en lugar de decenas de millones.
Las piezas
Sección titulada «Las piezas»Cubetas del mayor
Sección titulada «Cubetas del mayor»Una cubeta es un contador: para una compañía, una cuenta, una moneda y una fecha guarda cuánto entró al debe, cuánto al haber y cuántas líneas. Cada vez que se confirma un asiento, la base de datos suma sus líneas a las cubetas que le tocan. La suma de las cubetas es, en todo momento, exactamente la suma de los asientos.
¿Por qué «cubetas», en plural, para una misma cuenta? Por las cuentas calientes: la caja o la cuenta de liquidación aparecen en casi todas las operaciones. Si todas escribieran en la misma fila, harían cola como clientes frente a una sola taquilla. Repartir la cuenta en varias cubetas (por ejemplo, 32) es abrir más taquillas: cada operación usa una, y el saldo es la suma de todas.
Un detalle de ingeniería que importa: la base de datos no actualiza la cubeta en cada línea, sino al final de la transacción, en un orden fijo. Así dos operaciones que tocan las mismas cuentas en orden inverso no se bloquean entre sí.
sequenceDiagram participant Op as Operación (depósito Bs 1.250,00) participant BD as Base de datos del core participant Cu as Cubetas Op->>BD: Inserta línea DR Caja 1.250,00 Op->>BD: Inserta línea CR Depósitos 1.250,00 Note over BD: Acumula el efecto de la transacción Op->>BD: COMMIT BD->>Cu: Aplica los deltas en orden de cuenta Note over BD,Cu: Asientos y cubetas se confirman juntos. Si hay rollback, no queda nada.
El auxiliar, también al día
Sección titulada «El auxiliar, también al día»El otro lado es el auxiliar: la suma de los saldos de las cuentas de los clientes por producto, cuenta de control y moneda. Cada vez que cambia el saldo de una cuenta, la base suma la diferencia (saldo nuevo menos saldo anterior) a su cubeta del auxiliar. Comparar auxiliar contra mayor se vuelve una resta.
El sello encadenado del día
Sección titulada «El sello encadenado del día»Al cerrar el día, el core calcula una huella (SHA-256) de los totales del día por cuenta y moneda, y la encadena con la huella del día anterior. El resultado queda en una tabla que nadie puede modificar.
flowchart LR D1["Lunes<br/>huella = H(totales + 0)"] --> D2["Martes<br/>huella = H(totales + huella del lunes)"] --> D3["Miércoles<br/>huella = H(totales + huella del martes)"]
Si alguien cambia un asiento del martes después de sellado, al verificar la cadena los totales recalculados ya no dan la misma huella, y la cadena desde el martes queda rota. La verificación recalcula desde los asientos, no desde las cubetas, para que ni siquiera un cambio hecho con los controles apagados pase desapercibido.
El sello tiene dos estados: Sellado o Con diferencias, con los motivos escritos. El sello no bloquea el cierre: certifica lo que hay, o deja constancia de lo que falta. Qué hace el banco con un día «con diferencias» (alertar, pedir cuatro ojos o detenerse) es una decisión de negocio.
El tablero «Salud contable en vivo»
Sección titulada «El tablero «Salud contable en vivo»»Es una pantalla del menú de Contabilidad que lee las cubetas y responde, con semáforos, seis preguntas:
| Indicador | La pregunta |
|---|---|
| Mayor del día | ¿El día cuadra por compañía y moneda? |
| Auxiliar contra mayor | ¿Las cuentas de los clientes suman lo que dice la cuenta de control? |
| Cola contable | ¿Hay operaciones esperando su asiento, y desde cuándo? |
| Comprobantes descuadrados | ¿Algún comprobante del día no cuadra? |
| Violaciones de integridad | ¿La base registró algún intento de romper la partida doble? |
| Latencia de posteo | ¿Cuánto tarda una operación en llegar al mayor? |
Los colores son estrictos:
- Verde: cuadra.
- Ámbar: difiere, pero hay algo que lo explica (partidas en la cola contable para esas cuentas).
- Rojo: difiere sin explicación. Es un defecto real.
- Gris: no se pudo medir. Nunca se pinta verde lo que no se midió, y una nota dice qué falta.
Un ejemplo con números
Sección titulada «Un ejemplo con números»A las 10:15 un cajero registra un depósito de Bs 1.250,00. En el mismo commit:
| Antes | Después | |
|---|---|---|
| Auxiliar «ahorro en bolívares» | Bs 48.000,00 | Bs 49.250,00 |
| Mayor «depósitos de ahorro» | Bs 48.000,00 | Bs 49.250,00 |
| Diferencia | 0,00 | 0,00 — verde |
A las 10:40, un proceso mal configurado mueve una cuenta de cliente en Bs 300,00 sin dejar su asiento. El auxiliar sube a Bs 49.550,00; el mayor sigue en Bs 49.250,00. El tablero pasa a rojo a los pocos segundos, con la cuenta y la moneda. Con un cierre tradicional, esa diferencia se habría visto en la madrugada.
Por qué importa
Sección titulada «Por qué importa»- Para la contadora: la mañana deja de empezar con un cierre detenido. Las diferencias se atienden de día, con su dueño y su antigüedad.
- Para la auditoría: el sello encadenado es evidencia verificable de que un día cerrado no cambió.
- Para el regulador: los átomos diarios salen de un mayor ya conciliado. Es la línea de los principios de exactitud y oportunidad de los datos de riesgo (BCBS 239).
- Para el banco que crece: el cierre no se alarga con los asientos.
El mercado llama a esto continuous accounting y casi siempre lo resuelve fuera del core, con una herramienta que concilia después. Aquí lo garantiza la base de datos del core, en el mismo commit.
Lo que todavía falta
Sección titulada «Lo que todavía falta»- Desplegarlo y medirlo con carga real. En laboratorio, el costo por transacción aislada fue de unos 0,1 ms, y con muchas operaciones sobre las mismas dos cuentas el rendimiento cae si no se declaran las cuentas calientes.
- Decisiones del contador: la moneda funcional (cuadrar todo en bolívares), las cuentas puente por canal y qué hace el cierre con un día «con diferencias».
- Que todos los caminos de escritura pasen por el motor de asientos, para encender el modo estricto de la partida doble garantizada por la base de datos.
Para seguir
Sección titulada «Para seguir»- Cuadrar auxiliares contra el mayor, la guía del cuadre de hoy.
- Qué pasa cuando el banco cierra el día.
- La contabilidad de un banco.