Validaciones en México
Detalles específicos de Validaciones en México
Cómo usar el Validador en
A diferencia de otros países, en México es posible hacer una consulta de información del titular de una cuenta a partir del número. Por lo tanto hay dos formas de usar el Validador en México:
- Obtener Información del Titular para realizar tus propias verificaciones : No necesitas enviar información del titular de la cuenta. Basta que envíes la CLABE y Shinkansen Validator te retornará la información de su titular que informe el banco (nombre y, cuando el banco lo informa, RFC o CURP), para que efectúes todas las validaciones que quieras realizar. Esta opción es recomendada si operas solamente en México y quieres mayor flexibilidad en el uso de nuestro producto.
- Delegar a Shinkansen la comprobacion: En este caso deberás enviar información del titular y Shinkansen verifica si hay match en el RFC o CURP. Esta opción es recomendada si operas en múltiples países con el validador de cuenta y quieres mantener el mismo modo de uso en México que en otros países.
A continuación de dejamos más detalles de cada modalidad:
1. Obtener Información del Titular para realizar tus propias verificaciones
Esta es tu opción recomendada si operas solamente en México
En México es común que las empresas quieran validar quién es el titular de la cuenta CLABE a la que le transfieren, dado que no es un requisito incorporar un ID o nombre en las transferencias.
Para satisfacer lo anterior, una ✅🤝 Validación en Shinkansen te permite obtener el RFC/CURP y el nombre del titular de la cuenta con solo proporcionar el número CLABE.
Con esto tendrás certeza de quién es el titular de la cuenta de destino, evitando enviar dinero a personas o empresas equivocadas.
Ejemplo de Request hacia Validator 🇲🇽 en modo Consulta
{
"account_details": {
"account": "012180001234567899",
"account_type": "clabe",
"currency": "MXN"
},
"id": "e60044b2-2ecc-49c2-b20b-b20c07292753"
}
Puede obtener la información del titular cuenta a través de los siguientes campos de la respuesta:
response.return_code: El resultado de la validación (ver los valores posibles más abajo). Con"valid_account_details"y con"no_id_on_bank"la cuenta CLABE existe y Shinkansen enriquecerá la información dentro deaccount_details.account_details.name: Nombre del titular.account_details.identification: Tipo de identificación (id_schemapuede ser"MXRFC"o"MXCURP") y valor (en el campoid). El identificador se entrega como lo informa el banco, sin espacios y en mayúsculas: un RFC puede venir con homoclave (12 caracteres para personas morales, 13 para personas físicas) o sin ella (9 y 10 caracteres respectivamente), y un identificador de 18 caracteres es un CURP.response.found_account_details: El nombre y el RFC o CURP del titular que informó el banco, junto con el banco de la cuenta, que Shinkansen deduce de los primeros 3 dígitos de la CLABE. En este modo coinciden con los que se agregan aaccount_details.
Ejemplo de Response de Validator 🇲🇽 en modo Consulta (recibido vía Webhook) — sólo con los campos más relevantes
{
"account_details": {
"account": "012180001234567899",
"account_type": "clabe",
"currency": "MXN",
"name": "Nombre del titular",
"financial_institution": {
"fin_id": "BBVA_MEXICO_MX",
"fin_id_schema": "SHINKANSEN"
},
"identification": {
"id": "ABC100000045",
"id_schema": "MXRFC"
}
},
"id": "e60044b2-2ecc-49c2-b20b-b20c07292753",
"status": "performed",
"response": {
"return_code": "valid_account_details",
"invalid_account_details_reason": null,
"found_account_details": {
"name": "Nombre del titular",
"identification": {
"id": "ABC100000045",
"id_schema": "MXRFC"
},
"financial_institution": {
"fin_id": "BBVA_MEXICO_MX",
"fin_id_schema": "SHINKANSEN"
}
}
}
}
En este modo el response.return_code puede tomar estos valores:
valid_account_details: la cuenta CLABE existe y el banco informó el RFC o CURP del titular.no_id_on_bank: la cuenta CLABE existe, pero el banco no informó el RFC ni el CURP del titular (o informó un valor que no lo identifica, comoNAo un identificador de menos de 9 caracteres). Shinkansen igual agrega aaccount_detailsel nombre del titular y el banco, peroaccount_details.identificationconserva el valor"NA"yresponse.found_account_details.identificationviene ennull. Como no se pudo identificar al titular, te recomendamos no tratar esta cuenta como validada.invalid_account_details: la cuenta CLABE no existe.unable_to_validate(constatus"error"): no se pudo completar la validación, por ejemplo porque el comprobante del banco no traía el nombre del titular. Puedes reintentar con una nueva validación.
2. Delegar en Shinkansen la Comprobación
🌎 Esta es tu opción recomendada si ya usas Shinkansen Validator en otros países
Si ya estás usando el Validador en otros países y quieres mantener la lógica universal de entregarle a Shinkansen los datos del titular y que se te indique si corresponden los datos o no, entonces deberás incluir el CURP o el RFC de la persona en el campo account_details.identification
Ejemplo de Request hacia Validator 🇲🇽 en modo Verificación
{
"account_details": {
"account": "012180001234567899",
"account_type": "clabe",
"currency": "MXN",
"identification": {
"id": "ABC100000045",
"id_schema": "MXRFC"
}
},
"id": "e60044b2-2ecc-49c2-b20b-b20c07292753"
}
Cuando Shinkansen Validator detecta que enviaste un RFC o CURP, opera en modo verificación.
Al operar en modo verificación, Shinkansen no agregará información dentro de account_details por lo que tendrás que revisar los siguientes campos en la respuesta:
response.return_codeSi recibes el valor"valid_account_details"entonces hubo match con el identificador que proporcionaste. Si recibes el valor"invalid_account_details"entonces deberás revisar el campoinvalid_account_details_reason. Si recibes el valor"no_id_on_bank", la cuenta CLABE existe pero el banco no informó el RFC ni el CURP del titular (o informó un valor que no lo identifica, comoNAo un identificador de menos de 9 caracteres), por lo que no fue posible compararlo con el que enviaste.response.invalid_account_details_reason: Con este campo puedes determinar si la validación arroja cuenta inválida porque la cuenta CLABE no existe (valor"account_not_found"o porque no hubo match en el RFC o CURP (valor"account_detail_mismatch").response.found_account_details: El nombre y el RFC o CURP del titular que informó el banco (sin espacios y en mayúsculas), junto con el banco de la cuenta, que Shinkansen deduce de los primeros 3 dígitos de la CLABE. Te permite ver contra qué se comparó tu identificador.account_detailsconserva los datos que enviaste; si no enviaste el nombre o el banco, Shinkansen completa un nombre genérico y el banco deducido de la CLABE.
Cómo se compara el identificador
- Puedes enviar un RFC (
MXRFC) de 9 a 13 caracteres, con o sin homoclave, o un CURP (MXCURP) de exactamente 18 caracteres. Si el largo no corresponde, la validación se rechaza al crearse. - La homoclave nunca decide el resultado. Los bancos a veces informan el RFC sin homoclave (9 caracteres para personas morales, 10 para personas físicas), y tú también puedes enviarlo así: se comparan los caracteres sin homoclave de ambos RFC, y si coinciden la validación es
valid_account_details. Lo mismo ocurre si ambos RFC están completos y solo difieren en la homoclave. - El RFC y el CURP de una misma persona física comparten sus primeros 10 caracteres, por lo que puedes enviar uno y el banco informar el otro: se comparan esos 10 caracteres. Hay casos en que la norma hace que el RFC y el CURP de una misma persona difieran en las primeras letras (por ejemplo, personas con un solo apellido, o cuando se reemplaza una palabra inconveniente), y la validación resultará en
account_detail_mismatchaunque se trate de la misma persona. Si conoces el RFC de esa persona, envíalo: cuando el banco también informa el RFC, la comparación es directa.
Ejemplo de Response de Validator 🇲🇽 en modo Verificación (recibido vía Webhook) — sólo con los campos más relevantes
{
"account_details": {
"account": "012180001234567899",
"account_type": "clabe",
"currency": "MXN",
"identification": {
"id": "ABC100000045",
"id_schema": "MXRFC"
}
},
"id": "e60044b2-2ecc-49c2-b20b-b20c07292753",
"status": "performed",
"response": {
"return_code": "valid_account_details",
"invalid_account_details_reason": null,
"found_account_details": {
"name": "Nombre del titular",
"identification": {
"id": "ABC100000045",
"id_schema": "MXRFC"
},
"financial_institution": {
"fin_id": "BBVA_MEXICO_MX",
"fin_id_schema": "SHINKANSEN"
}
}
}
}
Tiempos de Respuesta
Las validaciones generalmente tienen respuesta en tan solo unos minutos. En situaciones excepcionales en que el sistema SPEI esté con mayor carga podrían demorar un poco más.
Docs detallados de APIs relacionadas
Crear una validación
POST /v1/validation/requests/
Recibir resultado de validacion (webhook, recomendado)
POST /from/shinkansen/to/your/webhook/url
Obtener estado de validación (polling, no recomendado)
GET /v1/validation/requests/{id}
