Como preparar los mandatos SEPA – Identificador del acreedor


Uno de los datos importantes del mandato SEPA es el “identificador del acreedor” o “creditor Identifier” que tiene una regla de construcción un poco enrevesada en cuanto al cálculo del código de control.

En Españal formato es este: ESZZXXXAAAAAAAAA, siendo:

  • ES: código del país España según la norma ISO 3166
  • ZZ: dígitos de control (cuyo cálculo se explica a continuación)
  • XXX: sufijo (normalmente 000, pero el acreedor puede gestionar más de un canal de adeudos poniendo otros valores)
  • AAAAAAAAA: CIF del acreedor, frecuentemente una letra seguida de 8 cifras, sin espacios, guiones u otros símbolos.
Los dígitos de control se calculan en base al NIF, aplicando el modelo 97-10 (regla de cálculo definida en la norma ISO 7604 y ampliamente usada en la norma ISO 20022, UNIFI).
  • Tomamos posiciones de la 8 a la 15, es decir el CIF, añadiendo ES y 00
Por ejemplo, en el caso de EADTrust, B85626240ES00
  • Convertimos letras a números, considerando que la A es 10, la B es 11, … la E es 14, … la  S es 28, … hasta que la Z es 35.
Por ejemplo, en el caso de EADTrust, 1185626240142800
  • Aplicamos modelo 97-10 (dado un número, lo dividimos entre 97 y restamos a 98 el resto de la operación. Si se obtiene un único dígito, se completa con un cero a la izquierda)
Por ejemplo, en el caso de EADTrust, el resto de dividir 1185626240142800 entre 97 sale 21 y 98-21=77, por tanto el código completo:  ES77000B85626240

30 comentarios to “Como preparar los mandatos SEPA – Identificador del acreedor”

  1. Natalia Says:

    Después de introducir el código ES no debería haber 3 ceros y no 2(tal y como aparece en el ejemplo)?

  2. Daniel Says:

    En esta web hay una calculadora del identificador del acreedor:

    http://caigrupoibercaja.caja3.es/paginas/idAcreedor.asp?idNodo=2918

  3. edi Says:

    Se que al realizar esta operación con Excel da error #Num#, esto se debe a que Excel no puede dividir un numero tan grande, Microsoft propone una solución usando la función Entero en lugar de residuo y funciona
    si la celda A1 es el numero a calcular el Dígito de Control la función quedaría de la siguiente forma:

    =A1-(ENTERO(A1/97)*97)

    =1185626240142800-(ENTERO(1185626240142800/97)*97)=21
    Después ya realizas el resto de 98-21=77

    Funciona

  4. Francisco Says:

    Hola, hay algún programita o excel como el que calcula la letra del dni?

  5. Tomás Says:

    Hola, yo tengo problemas, en el ordenador con el ejemplo me sale en algunos casos 20 y otros 21 de resto, si uso un dni que empieza por 71…. pasa lo mismo no sale bien, en visual basic tampoco me lo calcula bien, alguna ayuda?

  6. Tomás Says:

    Hola, tengo u DNI de persona fisica y es imposible calcularlo. me sale un desfase de uno o dos, lo he intentado con verios dni y nada.
    Alguna ayuda? gracias.

  7. GAV Says:

    y si el NIF es de una persona física, es decir la letra va al final, el cálculo es el mismo convirtiendo en este caso la letra final en número…?

  8. juan Says:

    Hola, Por si sirve de algo, como es un calculo que no hay que hacer de forma habitual, lo he calculado de forma manual, y como es una cifra muy grande para casi todas las calculadoras, he usado la que trae Windows, en modo Ver, Cientifica, de ese modo me admite la cantidad.

  9. Diferencias entre la modalidad B2B y la básica del mandato SEPA de adeudo por domiciliaciones | Todo es electrónico Says:

    […] Como preparar los mandatos SEPA – Identificador del acreedor 2013 . octubre . 25 […]

  10. makuki Says:

    Esta función, calcula el MOD de un numero muy largo (que es pasado como texto).

    Public Function NTSSuperMod(NumeroLargo As String, AplicarMod As Long) As String
    ‘esta función se basa en que el mod, se puede calcular a trozos,
    Dim F As Long
    Dim C As String
    Dim NuevoChar As String
    Dim MMod As Long
    NuevoChar = NumeroLargo
    Do
    For F = 1 To Len(NuevoChar)
    C = C & Mid(NuevoChar, F, 1)
    If F Mod 5 = 0 Then
    If IsNumeric(C) Then
    MMod = Val(C) Mod AplicarMod
    If MMod 0 Then
    NuevoChar = Trim(MMod) & Mid(NuevoChar, 6)
    Else
    NuevoChar = Mid(NuevoChar, 6)
    End If
    C = “”
    Exit For
    End If
    End If
    Next

    If Len(NuevoChar) < 6 Then
    Exit Do
    End If
    Loop

    NTSSuperMod = Val(NuevoChar) Mod AplicarMod

    End Function

    'no esta probada del todo, pero creo que es correcta.

    • German Says:

      Calculo Mod97. Funcionando y comprobada.

      Public Function Mod97(Num As String) As Integer
      Dim lngTemp As Long
      Dim strTemp As String

      Do While Val(Num) >= 97
      If Len(Num) > 5 Then
      strTemp = Left(Num, 5)
      Num = Right(Num, Len(Num) – 5)
      Else
      strTemp = Num
      Num = “”
      End If
      lngTemp = CLng(strTemp)
      lngTemp = lngTemp Mod 97
      strTemp = CStr(lngTemp)
      Num = strTemp & Num
      Loop
      Mod97 = CInt(Num)
      End Function

      If sNifoDni = “D” Then ‘ dni
      sTemp = Numero & CStr(Valor) & “142800”
      Else ‘Nif
      sTemp = CStr(Valor) & Numero & “142800”
      End If

      sSalida = 98 – Mod97(sTemp)

  11. Agustín Says:

    Donde dice : “Tomamos posiciones de la 8 a la 15, ”
    ¿ no debería ser Tomamos posiciones de la 8 a la 16 ?,

  12. Rober Says:

    ¿Como puedo validar si un resultado es correcto?, por el problema del excel tengo una duda, que no consigo solucionar.. Gracias por vuestros comentarios

  13. Rober Says:

    En mi pregunta anterior confundí mi email de respuesta, sorry

  14. Rober Says:

    Hola
    Estoy intentando crear un único codigo de identificador del acreedor y no lo consigo, tengo una duda entre el 94 o 95, pero no es facil resolverlo por el problema del excel, ni validar el resultado.

  15. Seminario: Adaptación a SEPA de los adeudos por domiciliaciones « Todo es electrónico Says:

    […] Como preparar los mandatos SEPA – Identificador del acreedor 2013 . octubre . 25 […]

  16. Juanma Says:

    Hola, antetodo gracias por este aticulo.
    Pero investigando un poco ya que me ha llamado la atencion de que el rango de los digitos calculados estarian entre 02..98, he buscado la norma ISO 7604 (y de paso agregarla a mi carpeta de isos ;-). Por un lado no he logrado encontrar dicha norma, y por otro, entre las multiples referencias a dicha norma, si he encontrado un calculo que al menos me parece mas logico y es:

    digitos de control -> Mod( 98 – Mod( dato * 100, 97), 97)

    Como se puede ver aqui el rango es de 0..96 que en formato de 2 digitos: 00..96
    Dicho esto para mi la duda estas si existen comienzos de ES00, ES01 o bien ES97, ES98
    Gracias

  17. Reyes Says:

    ¿Hay algún sitio, del estilo del conversor de IBAN de SEPA, donde validar que los cálculos para el “Identificador del Acreedor” realizados son correctos?

    Con el ejemplo me funciona perfecto pero me gustaría probar alguno más.

    Ahhhhhhhhh y mil gracias por el artículo que me ha sido de gran utilidad.

    • inza Says:

      Nosotros hemos desarrollado una herramienta para hacerlo automáticamente. Si me envías una hoja excel con los códigos a convertir, te la devuelvo convertida.

      Un cordial saludo,

  18. Mónica Says:

    La conversión que haces de letras a números no es correcta. Empieza por A = 10, B = 11, etc.


Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 2.422 seguidores

A %d blogueros les gusta esto: