Skip to content

Instantly share code, notes, and snippets.

@fitorec
Last active December 28, 2025 07:19
Show Gist options
  • Select an option

  • Save fitorec/2c221e3314e6f3e7f87216c8d4762d0c to your computer and use it in GitHub Desktop.

Select an option

Save fitorec/2c221e3314e6f3e7f87216c8d4762d0c to your computer and use it in GitHub Desktop.
Suma de validación(checksum) de la CLABE Bancaria Estandarizada en MX
/**
* Genera la suma de validación (checksum) de los primeros 17 digitos de la Clabe
* bancaria estandarizada, para mayor información visitar:
*
* @link: https://es.wikipedia.org/wiki/CLABE
* @link: https://web.archive.org/web/20100613022755/http://www.frbservices.org/files/operations/xls/CLABE_Check_Digit_Calc.xls (página 18)
* @link https://web.archive.org/web/20081009002331/http://www.frbservices.org/files/operations/pdf/FedACHiMxManual.pdf (página 18)
*/
function clabeChecksum (clabe) {
if (/^\d*$/.test(clabe) === false || clabe < 17) {
null
}
let sum = 0
for (let i = 0; i < 17; i++) {
const factor = [3, 7, 1][i % 3] // secuencia 3 7 1 3 7 1 3 7 1 3 7...
const digitoActual = +clabe.charAt(i)
sum += (digitoActual * factor) % 10
}
return (10 - (sum % 10)) % 10
}
clabeChecksum('00201007777777777') // devuelve 1
clabeChecksum('10315012415234578') // devuelve 6, este es el ejemplo del PDF
#
# Genera la suma de validación (checksum) de los primeros 17 digitos de la Clabe
# bancaria estandarizada, para mayor información visitar:
#
# @link: https://es.wikipedia.org/wiki/CLABE
# @link: https://web.archive.org/web/20100613022755/http://www.frbservices.org/files/operations/xls/CLABE_Check_Digit_Calc.xls (página 18)
# @link https://web.archive.org/web/20081009002331/http://www.frbservices.org/files/operations/pdf/FedACHiMxManual.pdf (página 18)
#
def clabe_checksum (clabe):
if len(clabe) < 17 or not clabe.isdecimal():
return None
sum = 0
for i in range(17):
factor = [3, 7, 1][i % 3] # secuencia 3 7 1 3 7 1 3 7 1 3 7...
digitoActual = int(clabe[i])
sum += (digitoActual * factor) % 10
return (10 - (sum % 10)) % 10
# Probando
print(clabe_checksum('00201007777777777')) # devuelve 1
print(clabe_checksum('10315012415234578')) # devuelve 6, este es el ejemplo del PDF
@johnv1977
Copy link

johnv1977 commented Jul 30, 2025


Les comparto la versión en Dart para el cálculo del dígito verificador de CLABE en México.

Gracias [@fitorec] por la versión original.

@fitorec
Copy link
Author

fitorec commented Dec 28, 2025

Hola @johnv1977 una disculpa por la tardia respuesta y gracias por la versión en dart, no conozco bien el lenguaje sin embargo se entiende la implementación.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment