Ir al contenido

Cuenta (Account)

Representa una cuenta bancaria CLABE asignada a un usuario de Finalitix, integrada con STP.

CampoTipoDescripción
idINTID interno autoincremental
user_idVARCHARUUID del usuario propietario
aliasVARCHARNombre amigable de la cuenta
account_numberVARCHAR(18)Número CLABE completo
plaza_idINTFK a catalogoPlaza (ej. 821 = CDMX)
sequenceINTSecuencia del cliente dentro de la plaza (máx 9,999,999)
amountDECIMALSaldo disponible en MXN
pending_amountDECIMALMonto congelado por transferencias pendientes de aprobación
frozen_amountDECIMALMonto bloqueado por otras razones
activeBOOLEANtrue si STP activó la cuenta
create_uidVARCHARUUID del usuario que creó el registro
create_dateDATETIMEFecha de creación
write_uidVARCHARÚltimo usuario que modificó el registro
write_dateDATETIMEÚltima fecha de modificación
activeSignificado
falseCuenta creada, pendiente de activación por STP
trueCuenta activa, puede operar

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 → prefijoCliente
0000001 → sequence (7 dígitos, zero-padded)
X → dígito verificador calculado

El 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 = amount
Saldo congelado por aprobaciones pendientes = pending_amount
Saldo bloqueado = frozen_amount

Al procesar una transferencia saliente que requiere aprobación, el monto se mueve de amount a pending_amount hasta que sea aprobada o rechazada.