{"id":70888,"date":"2026-06-09T11:47:09","date_gmt":"2026-06-09T09:47:09","guid":{"rendered":"https:\/\/tickelia.com\/demo_2023\/?p=70888"},"modified":"2026-06-09T11:47:14","modified_gmt":"2026-06-09T09:47:14","slug":"calcular-iban","status":"publish","type":"post","link":"https:\/\/tickelia.com\/demo_2023\/blog\/actualidad\/calcular-iban\/","title":{"rendered":"Calcular IBAN"},"content":{"rendered":"<div id=\"calculadora-iban\">\r\n  <style>\r\n    #calculadora-iban {\r\n      max-width: 620px;\r\n      margin: 0 auto;\r\n      padding: 24px;\r\n      color: #333;\r\n    }\r\n\r\n    #calculadora-iban * {\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    #calculadora-iban h2 {\r\n      margin: 0 0 22px;\r\n      font-size: 30px;\r\n      font-weight: 400;\r\n    }\r\n\r\n    #calculadora-iban label {\r\n      display: block;\r\n      margin-bottom: 8px;\r\n      color: #555;\r\n      font-size: 14px;\r\n    }\r\n\r\n    #calculadora-iban input {\r\n      width: 100%;\r\n      padding: 12px;\r\n      border: 1px solid #d6d6d6;\r\n      border-radius: 4px;\r\n      background: #fafafa;\r\n      font-size: 14px;\r\n      margin-bottom: 18px;\r\n    }\r\n\r\n    #calculadora-iban .fila {\r\n      display: grid;\r\n      grid-template-columns: 1fr 1fr;\r\n      gap: 18px;\r\n    }\r\n\r\n    #calculadora-iban .btn-principal {\r\n      width: 100%;\r\n      margin-top: 18px;\r\n      padding: 14px;\r\n      border: 0;\r\n      border-radius: 4px;\r\n      background: #10c4ae;\r\n      color: #fff;\r\n      font-size: 18px;\r\n      font-weight: 700;\r\n      cursor: pointer;\r\n    }\r\n\r\n    #calculadora-iban .btn-principal:hover,\r\n    #calculadora-iban .btn-copiar:hover {\r\n      background: #0eac99;\r\n    }\r\n\r\n    #calculadora-iban .resultado {\r\n      display: none;\r\n      margin-top: 18px;\r\n      padding: 18px;\r\n      border: 1px solid #b8e5c7;\r\n      border-radius: 4px;\r\n      background: #f1fbf5;\r\n    }\r\n\r\n    #calculadora-iban .resultado p {\r\n      margin: 0 0 16px;\r\n      font-size: 16px;\r\n    }\r\n\r\n    #calculadora-iban .resultado strong {\r\n      color: #0074d9;\r\n      font-size: 18px;\r\n      word-break: break-word;\r\n    }\r\n\r\n    #calculadora-iban .btn-copiar {\r\n      margin-left: 8px;\r\n      padding: 6px 10px;\r\n      border: 0;\r\n      border-radius: 4px;\r\n      background: #10c4ae;\r\n      color: #fff;\r\n      font-size: 13px;\r\n      font-weight: 700;\r\n      cursor: pointer;\r\n    }\r\n\r\n    #calculadora-iban .error {\r\n      display: none;\r\n      margin-top: 16px;\r\n      color: #b00020;\r\n      font-weight: 700;\r\n    }\r\n\r\n    @media (max-width: 600px) {\r\n      #calculadora-iban {\r\n        padding: 16px;\r\n      }\r\n\r\n      #calculadora-iban .fila {\r\n        grid-template-columns: 1fr;\r\n        gap: 0;\r\n      }\r\n\r\n      #calculadora-iban h2 {\r\n        font-size: 26px;\r\n      }\r\n\r\n      #calculadora-iban .btn-copiar {\r\n        display: block;\r\n        margin: 8px 0 0;\r\n      }\r\n    }\r\n  <\/style>\r\n\r\n  <h2>Calculadora de IBAN y BIC<\/h2>\r\n\r\n  <label for=\"cuentaCompleta\">IBAN o cuenta completa<\/label>\r\n  <input id=\"cuentaCompleta\" type=\"text\" placeholder=\"Ej: ES91 2100 0418 45 0200051332 o 21000418450200051332\">\r\n\r\n  <div class=\"fila\">\r\n    <div>\r\n      <label for=\"entidad\">Entidad<\/label>\r\n      <input id=\"entidad\" type=\"text\" maxlength=\"4\" placeholder=\"2100\">\r\n    <\/div>\r\n\r\n    <div>\r\n      <label for=\"oficina\">Oficina<\/label>\r\n      <input id=\"oficina\" type=\"text\" maxlength=\"4\" placeholder=\"0418\">\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"fila\">\r\n    <div>\r\n      <label for=\"dc\">D\u00edgito de control<\/label>\r\n      <input id=\"dc\" type=\"text\" maxlength=\"2\" placeholder=\"45\">\r\n    <\/div>\r\n\r\n    <div>\r\n      <label for=\"numeroCuenta\">N\u00famero de cuenta<\/label>\r\n      <input id=\"numeroCuenta\" type=\"text\" maxlength=\"10\" placeholder=\"0200051332\">\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <button type=\"button\" class=\"btn-principal\" onclick=\"calcularIBAN()\">Calcular<\/button>\r\n\r\n  <div id=\"errorIban\" class=\"error\"><\/div>\r\n\r\n  <div id=\"resultadoIban\" class=\"resultado\">\r\n    <p>Banco: <strong id=\"bancoResultado\"><\/strong><\/p>\r\n\r\n    <p>\r\n      IBAN: <strong id=\"ibanResultado\"><\/strong>\r\n      <button type=\"button\" class=\"btn-copiar\" onclick=\"copiarTexto('ibanResultado', this)\">Copiar<\/button>\r\n    <\/p>\r\n\r\n    <p>\r\n      BIC\/SWIFT: <strong id=\"bicResultado\"><\/strong>\r\n      <button type=\"button\" class=\"btn-copiar\" onclick=\"copiarTexto('bicResultado', this)\">Copiar<\/button>\r\n    <\/p>\r\n\r\n    <p>CCC: <strong id=\"cccResultado\"><\/strong><\/p>\r\n  <\/div>\r\n\r\n  <script>\r\n    const bancosIban = {\r\n      \"2100\": [\"CaixaBank\", \"CAIXESBBXXX\"],\r\n      \"0049\": [\"Banco Santander\", \"BSCHESMMXXX\"],\r\n      \"0182\": [\"BBVA\", \"BBVAESMMXXX\"],\r\n      \"0081\": [\"Banco Sabadell\", \"BSABESBBXXX\"],\r\n      \"0128\": [\"Bankinter\", \"BKBKESMMXXX\"],\r\n      \"1465\": [\"ING\", \"INGDESMMXXX\"],\r\n      \"2080\": [\"Abanca\", \"CAGLESMMXXX\"],\r\n      \"3058\": [\"Cajamar\", \"CCRIES2AXXX\"],\r\n      \"0073\": [\"Openbank\", \"OPENESMMXXX\"],\r\n      \"0242\": [\"EVO Banco\", \"EVOBESMMXXX\"],\r\n      \"2103\": [\"Unicaja Banco\", \"UCJAES2MXXX\"],\r\n      \"3035\": [\"Laboral Kutxa\", \"CLPEES2MXXX\"],\r\n      \"0061\": [\"Banca March\", \"BMARES2MXXX\"],\r\n      \"0019\": [\"Deutsche Bank\", \"DEUTESBBXXX\"]\r\n    };\r\n\r\n    document.getElementById(\"cuentaCompleta\").addEventListener(\"input\", autocompletarCampos);\r\n\r\n    function calcularIBAN() {\r\n      ocultarMensajes();\r\n\r\n      let completa = limpiar(document.getElementById(\"cuentaCompleta\").value);\r\n      let entidad = limpiar(document.getElementById(\"entidad\").value);\r\n      let oficina = limpiar(document.getElementById(\"oficina\").value);\r\n      let dc = limpiar(document.getElementById(\"dc\").value);\r\n      let cuenta = limpiar(document.getElementById(\"numeroCuenta\").value);\r\n\r\n      if (completa) {\r\n        if (completa.startsWith(\"ES\")) {\r\n          if (!\/^ES\\d{22}$\/.test(completa)) {\r\n            return mostrarError(\"El IBAN espa\u00f1ol debe tener ES seguido de 22 d\u00edgitos.\");\r\n          }\r\n\r\n          if (!validarIBAN(completa)) {\r\n            return mostrarError(\"El IBAN introducido no es v\u00e1lido.\");\r\n          }\r\n\r\n          const cccExtraido = completa.substring(4);\r\n\r\n          entidad = cccExtraido.substring(0, 4);\r\n          oficina = cccExtraido.substring(4, 8);\r\n          dc = cccExtraido.substring(8, 10);\r\n          cuenta = cccExtraido.substring(10, 20);\r\n        } else {\r\n          if (!\/^\\d{20}$\/.test(completa)) {\r\n            return mostrarError(\"La cuenta completa debe tener 20 d\u00edgitos.\");\r\n          }\r\n\r\n          entidad = completa.substring(0, 4);\r\n          oficina = completa.substring(4, 8);\r\n          dc = completa.substring(8, 10);\r\n          cuenta = completa.substring(10, 20);\r\n        }\r\n      }\r\n\r\n      document.getElementById(\"entidad\").value = entidad;\r\n      document.getElementById(\"oficina\").value = oficina;\r\n      document.getElementById(\"dc\").value = dc;\r\n      document.getElementById(\"numeroCuenta\").value = cuenta;\r\n\r\n      if (!\/^\\d{4}$\/.test(entidad)) return mostrarError(\"La entidad debe tener 4 d\u00edgitos.\");\r\n      if (!\/^\\d{4}$\/.test(oficina)) return mostrarError(\"La oficina debe tener 4 d\u00edgitos.\");\r\n      if (!\/^\\d{2}$\/.test(dc)) return mostrarError(\"El d\u00edgito de control debe tener 2 d\u00edgitos.\");\r\n      if (!\/^\\d{10}$\/.test(cuenta)) return mostrarError(\"El n\u00famero de cuenta debe tener 10 d\u00edgitos.\");\r\n\r\n      if (!validarCCC(entidad, oficina, dc, cuenta)) {\r\n        return mostrarError(\"El CCC no es v\u00e1lido. Revisa el d\u00edgito de control.\");\r\n      }\r\n\r\n      const ccc = entidad + oficina + dc + cuenta;\r\n      const iban = generarIBAN(ccc);\r\n      const banco = bancosIban[entidad] || [\"Entidad no incluida en el listado\", \"BIC no disponible\"];\r\n\r\n      document.getElementById(\"bancoResultado\").textContent = banco[0];\r\n      document.getElementById(\"ibanResultado\").textContent = formatearIBAN(iban);\r\n      document.getElementById(\"bicResultado\").textContent = banco[1];\r\n      document.getElementById(\"cccResultado\").textContent = ccc.replace(\/(.{4})\/g, \"$1 \").trim();\r\n\r\n      document.getElementById(\"resultadoIban\").style.display = \"block\";\r\n    }\r\n\r\n    function autocompletarCampos() {\r\n      const valor = limpiar(document.getElementById(\"cuentaCompleta\").value);\r\n\r\n      let entidad = \"\";\r\n      let oficina = \"\";\r\n      let dc = \"\";\r\n      let cuenta = \"\";\r\n\r\n      if (\/^ES\\d{22}$\/.test(valor)) {\r\n        const ccc = valor.substring(4);\r\n\r\n        entidad = ccc.substring(0, 4);\r\n        oficina = ccc.substring(4, 8);\r\n        dc = ccc.substring(8, 10);\r\n        cuenta = ccc.substring(10, 20);\r\n      } else if (\/^\\d{20}$\/.test(valor)) {\r\n        entidad = valor.substring(0, 4);\r\n        oficina = valor.substring(4, 8);\r\n        dc = valor.substring(8, 10);\r\n        cuenta = valor.substring(10, 20);\r\n      }\r\n\r\n      document.getElementById(\"entidad\").value = entidad;\r\n      document.getElementById(\"oficina\").value = oficina;\r\n      document.getElementById(\"dc\").value = dc;\r\n      document.getElementById(\"numeroCuenta\").value = cuenta;\r\n    }\r\n\r\n    function limpiar(valor) {\r\n      return valor.replace(\/\\s|-\/g, \"\").toUpperCase();\r\n    }\r\n\r\n    function generarIBAN(ccc) {\r\n      const numero = ccc + \"142800\";\r\n      const resto = mod97(numero);\r\n      const dcIban = String(98 - resto).padStart(2, \"0\");\r\n      return \"ES\" + dcIban + ccc;\r\n    }\r\n\r\n    function validarIBAN(iban) {\r\n      const reordenado = iban.substring(4) + iban.substring(0, 4);\r\n      const convertido = reordenado.replace(\/[A-Z]\/g, letra => letra.charCodeAt(0) - 55);\r\n      return mod97(convertido) === 1;\r\n    }\r\n\r\n    function validarCCC(entidad, oficina, dc, cuenta) {\r\n      const dc1 = calcularDC(\"00\" + entidad + oficina);\r\n      const dc2 = calcularDC(cuenta);\r\n      return dc === String(dc1) + String(dc2);\r\n    }\r\n\r\n    function calcularDC(numero) {\r\n      const pesos = [1, 2, 4, 8, 5, 10, 9, 7, 3, 6];\r\n      let suma = 0;\r\n\r\n      for (let i = 0; i < 10; i++) {\r\n        suma += parseInt(numero[i], 10) * pesos[i];\r\n      }\r\n\r\n      let digito = 11 - (suma % 11);\r\n\r\n      if (digito === 10) digito = 1;\r\n      if (digito === 11) digito = 0;\r\n\r\n      return digito;\r\n    }\r\n\r\n    function mod97(numero) {\r\n      let resto = \"\";\r\n\r\n      for (let i = 0; i < numero.length; i += 7) {\r\n        resto = String(parseInt(resto + numero.substring(i, i + 7), 10) % 97);\r\n      }\r\n\r\n      return parseInt(resto, 10);\r\n    }\r\n\r\n    function formatearIBAN(iban) {\r\n      return iban.replace(\/(.{4})\/g, \"$1 \").trim();\r\n    }\r\n\r\n    function copiarTexto(id, boton) {\r\n      const texto = document.getElementById(id).innerText;\r\n\r\n      navigator.clipboard.writeText(texto).then(function () {\r\n        const original = boton.innerText;\r\n        boton.innerText = \"Copiado\";\r\n        setTimeout(function () {\r\n          boton.innerText = original;\r\n        }, 1800);\r\n      });\r\n    }\r\n\r\n    function mostrarError(mensaje) {\r\n      const error = document.getElementById(\"errorIban\");\r\n      error.textContent = mensaje;\r\n      error.style.display = \"block\";\r\n    }\r\n\r\n    function ocultarMensajes() {\r\n      document.getElementById(\"errorIban\").style.display = \"none\";\r\n      document.getElementById(\"resultadoIban\").style.display = \"none\";\r\n    }\r\n  <\/script>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":18,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[533],"tags":[],"class_list":["post-70888","post","type-post","status-publish","format-standard","hentry","category-actualidad"],"acf":[],"lang":"es","translations":{"es":70888},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/tickelia.com\/demo_2023\/wp-json\/wp\/v2\/posts\/70888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tickelia.com\/demo_2023\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tickelia.com\/demo_2023\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tickelia.com\/demo_2023\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/tickelia.com\/demo_2023\/wp-json\/wp\/v2\/comments?post=70888"}],"version-history":[{"count":1,"href":"https:\/\/tickelia.com\/demo_2023\/wp-json\/wp\/v2\/posts\/70888\/revisions"}],"predecessor-version":[{"id":70890,"href":"https:\/\/tickelia.com\/demo_2023\/wp-json\/wp\/v2\/posts\/70888\/revisions\/70890"}],"wp:attachment":[{"href":"https:\/\/tickelia.com\/demo_2023\/wp-json\/wp\/v2\/media?parent=70888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tickelia.com\/demo_2023\/wp-json\/wp\/v2\/categories?post=70888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tickelia.com\/demo_2023\/wp-json\/wp\/v2\/tags?post=70888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}