Correspondencia entre el código de identificación de la persona jurídica y el código de identificación de la empresa

Apunta

Este artículo explica por qué el archivo csv de asignación de relaciones IPJ/CIB publicado por la GLEIF no siempre puede utilizarse fácilmente para obtener el IPJ correcto relacionado con un determinado BIC. Muestra cómo enriquecer el archivo csv con campos de IPJ adicionales, para diferenciar y seleccionar mejor el IPJ correcto cuando hay más de uno relacionado con un mismo BIC.

Antecedentes

En las diversas adopciones de la ISO 20022 en el ámbito de los pagos, concretamente la introducción prevista de datos mejorados, el uso obligatorio de Identificadores de Personas Jurídicas (IPJ) debería formar parte de cualquier proyecto de implantación para bancos y PSP.

En este artículo veremos el caso de uso en el que, para la organización dada (ya sea un agente o una parte), se dispone del Código Identificador Empresarial (BIC) y, a partir de él, necesitamos obtener el IPJ pertinente para rellenar el mensaje ISO 20022.

Mapeo LEI / BIC

Swift y la GLEIF han creado un archivo de relación csv de código abierto que relaciona el BIC asignado a una organización con su IPJ. Se actualiza cada mes y puede descargarse del sitio web de la GLEIF.

Por tanto, este archivo podría importarse cada mes a un almacén de datos de referencia y utilizarse para buscar el IPJ correcto para un BIC determinado.

Relaciones entre muchos

Si fuera tan sencillo, este artículo sería redundante, así que aquí está la (pequeña) complicación… un único BIC puede estar relacionado con varios IPJ; del mismo modo, un único IPJ puede estar relacionado con varios BIC.

En el momento de redactar este documento, el archivo csv de mapeo de noviembre de 2023 tiene 22447 elementos mapeados. De ellos, el 98,4% (22084) son BIC que sólo corresponden a un único IPJ. Sin embargo, hay una minoría de BIC que corresponden a varios IPJ. Por ejemplo, el BIC «INGCITM1XXX» corresponde a 6 IPJ, como se muestra en la siguiente imagen. Con sólo el propio campo del IPJ, no es fácil diferenciarlos y asegurarse de que se selecciona la organización correcta.

Ejemplo: Múltiples IPJ para un único BIC

Enriquecimiento con datos adicionales del IPJ

Para solucionarlo, podemos enriquecer el archivo csv con campos de IPJ adicionales, con lo que la selección correcta debería ser más fácil. A continuación se muestra el archivo enriquecido con 6 campos adicionales.

Ejemplo: Múltiples IPJ enriquecidos para un único BIC

Cómo enriquecer

Las API de la GLEIF proporcionan todo lo necesario para obtener los campos de datos adicionales de la organización, concretamente utilizando la información de nivel 1 lei-records > (LEI Records) > GET LEI Record By ID (LEI).

Utilizando este punto final de la API con el parámetro de página[size] y el filtro[lei], donde este último es una cadena separada por comas de los IPJ a enriquecer. A continuación se muestra un fragmento de este código Python.

# URL of the GLEIF API endpoint
url = f"https://api.gleif.org/api/v1/lei-records?page[size]={batch_size}&filter[lei]={lei_csv_param}"

# Make the API call to GLEIF
response = requests.get(url)

# Check if the API call was successful
if response.status_code == 200:
  # Parse the JSON response
  data = response.json()
  # Extract the data from the response
  if not data['data'][0]:
    return 'No LEI data found'

  else:
    for item in data['data']:
      # Get the LEI
      if 'attributes' in item:
        lei = item['attributes'].get('lei')
        legal_name = item['attributes']['entity']['legalName']['name']
        legal_adr_city = item['attributes']['entity']['legalAddress']['city']
        legal_adr_ctry = item['attributes']['entity']['legalAddress']['country']
        legal_adr_postalcode = item['attributes']['entity']['legalAddress']['postalCode']
        status = item['attributes']['entity']['status']
        lei_enriched_data.append([lei, legal_name, legal_adr_city, legal_adr_ctry,
                                  legal_adr_postalcode, status])

return lei_enriched_data

Repositorio GitHub

El código Python completo puede clonarse de mi repositorio de GitHub aquí:

GitHub domdigby/GLEIF

Soy un codificador aficionado, que acaba de aprender Python, por lo que tienes mis disculpas por el lamentable estado de este código, sin embargo, funciona y no supera los límites de velocidad de la API de la GLEI. También incluye otros métodos que llaman a los puntos finales de la API de la GLEIF y un método para validar el formato y la suma de comprobación de un IPJ.

Espero que te sean útiles. ¡Que los disfrutes!

Advertencia sanitaria API de la GLEIF

Una advertencia sanitaria sobre las API de la GLEI: lee los términos y condiciones (más abajo). Tienen tarifas limitadas y superarlas probablemente dará lugar a códigos de estado 429 (demasiadas solicitudes).


Condiciones generales

El uso de los datos del IPJ de la GLEIF es gratuito.

La GLEIF no establece relaciones contractuales individuales con usuarios concretos de los datos del IPJ.

La limitación de velocidad está fijada actualmente en 60 peticiones, por minuto, por usuario, para todos los usuarios.

Por favor, consulta en su lugar las Condiciones de Uso de los Datos del IPJ disponibles aquí: https://www.gleif.org/en/meta/lei-data-terms-of-use/


¿Con Excel?

En caso de que utilices Excel para abrir o ver los archivos csv original y enriquecido, ten en cuenta que debido a los caracteres acentuados y no latinos que admiten los campos del IPJ, como los que se encuentran en el nombre legal, el código python utiliza la codificación UTF-16 al escribir los datos en el archivo csv enriquecido. Si intentas abrirlo con Excel (haciendo doble clic en el archivo csv), puede que no funcione. En su lugar, sigue estos pasos para importar el archivo csv a Excel:

  1. Abre Excel y, a continuación, abre un libro en blanco.
  2. En la cinta de opciones, selecciona Archivo y luego Abrir.
  3. Busca la ubicación del archivo csv, selecciónalo y elige Abrir.
  4. En el Asistente para importar texto, asegúrate de seleccionar Unicode (UTF-8) como origen del archivo. Esto es muy importante – mira la imagen de abajo.
  5. Si se te pide que conviertas los datos, selecciona No convertir.
Establecer la codificación de importación de Excel en UTF-8
Excel pide convertir LEI a número utilizando notación científica – ¡NO CONVIERTAS!

Por último, si tienes que utilizar Excel, te aconsejo que utilices una importación de Power Query. Para archivos csv grandes es más eficaz. Por supuesto, no intentes importar el archivo de asignación ISIN / LEI a menos que utilices un modelo de datos en Power Query. El ISIN / LEI csv tiene más de 2 millones de registros y es >240Mb.

Después de empezar a estudiar los aspectos prácticos de la obtención del IPJ correcto a partir de un BIC determinado, para rellenar un mensaje ISO 20022 y cumplir los requisitos pendientes del IPJ (CHAPS, CBPR+, SEPA, etc.), he pensado en compartir algunas ideas iniciales y herramientas que pueden ayudar a otros. Si necesitas más información, ponte en contacto conmigo.

Dominic Digby

Senior Manager with May Business Consulting, product manager with extensive business and technical experience of B2B, interbank and cross-border payments.