Cuenta (Account)
Representa una cuenta bancaria CLABE asignada a un usuario de Finalitix, integrada con STP.
| Campo | Tipo | Descripción |
|---|---|---|
id | INT | ID interno autoincremental |
user_id | VARCHAR | UUID del usuario propietario |
alias | VARCHAR | Nombre amigable de la cuenta |
account_number | VARCHAR(18) | Número CLABE completo |
plaza_id | INT | FK a catalogoPlaza (ej. 821 = CDMX) |
sequence | INT | Secuencia del cliente dentro de la plaza (máx 9,999,999) |
amount | DECIMAL | Saldo disponible en MXN |
pending_amount | DECIMAL | Monto congelado por transferencias pendientes de aprobación |
frozen_amount | DECIMAL | Monto bloqueado por otras razones |
active | BOOLEAN | true si STP activó la cuenta |
create_uid | VARCHAR | UUID del usuario que creó el registro |
create_date | DATETIME | Fecha de creación |
write_uid | VARCHAR | Último usuario que modificó el registro |
write_date | DATETIME | Última fecha de modificación |
Estados posibles
Sección titulada «Estados posibles»active | Significado |
|---|---|
false | Cuenta creada, pendiente de activación por STP |
true | Cuenta activa, puede operar |
Generación del número CLABE
Sección titulada «Generación del número CLABE»La CLABE de 18 dígitos se genera con esta estructura:
{institutionCode(3)}{plazaCode(3)}{clientPrefix(4)}{sequence(7)}{checkDigit(1)}Ejemplo con los datos de Finalitix:
00000 → institutionCode (STP)821 → plazaCode (Ciudad de México)0010 → prefijoCliente0000001 → sequence (7 dígitos, zero-padded)X → dígito verificador calculadoEl dígito verificador se calcula con factores de ponderación:
const pesos = [3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7];let sum = 0;for (let i = 0; i < 17; i++) { sum += parseInt(clabe[i]) * pesos[i];}const checkDigit = (10 - (sum % 10)) % 10;La cuenta tiene tres campos de saldo que se gestionan de forma independiente:
Saldo total disponible = amountSaldo congelado por aprobaciones pendientes = pending_amountSaldo bloqueado = frozen_amountAl procesar una transferencia saliente que requiere aprobación, el monto se mueve de amount a pending_amount hasta que sea aprobada o rechazada.