Excel · Power Query · API de IBAN-Test

Validar IBAN en Excel con Power Query

Envíe una lista IBAN desde Excel a la API IBAN-Test y obtenga el resultado de la verificación, el nombre del banco y el BIC como una tabla, sin macros VBA.

Esta guía utiliza Excel para Microsoft 365 en Windows. Configura una consulta Power Query una vez y luego actualiza sus resultados usando el menú Datos. Se requiere una cuenta IBAN-Test con tokens API y cuota suficiente.

Descargar el paquete inicial de Excel

El ZIP incluye una plantilla XLSX con tablas de entrada y configuración, el código completo de Power Query y una guía rápida. La consulta aún no está integrada en el libro: pegue el código una vez en el Editor avanzado durante la configuración.

Descargar paquete inicial (ZIP)

Versión 1.0 · 21 de septiembre de 2026 · sin macros

Estado de las pruebas: Se verifican la estructura XLSX y la sintaxis M y la llamada API está alineada con la descripción de la interfaz publicada. Aún está pendiente una prueba completa con Microsoft Excel y consultas API autenticadas. Primero verifique el proceso con algunos datos de prueba.

Que necesitas preparar

  • Excel para Microsoft 365 en Windows con Power Query. Este proceso no está garantizado aquí para Excel en el navegador y Excel para Mac.
  • Un token API: Inicie sesión en IBAN-Test. La información sobre el acceso se puede encontrar en la Documentación API; la cuota apropiada bajo Precios.
  • Liberación para procesamiento: Los IBAN se transfieren a IBAN-Test. Utilice únicamente datos que tenga permiso para procesar de esta manera.

1. Prepare el libro de trabajo y la lista IBAN

Descomprime el ZIP y abre iban-test-excel-en.xlsx. En la hoja Input, reemplace los datos de muestra con su lista. La columna Reference es para su propia tarea; sólo el IBAN se envía a la API.

Deje los nombres de columna Reference y IBAN y el nombre de tabla IBAN_Input sin cambios. Las nuevas líneas deben estar dentro de esta tabla de Excel. Guarde los IBAN como texto. La consulta elimina espacios y convierte letras a mayúsculas.

En la hoja Settings, reemplace YOUR_API_TOKEN con su token. El nombre de la tabla es IBAN_Settings y la columna es ApiToken. El token se guarda en el archivo. No comparta este libro con su token.

2. Añadir el código de Power Query

  1. En Excel, abra Datos → Obtener datos → De otras fuentes → Consulta vacía.
  2. En el editor de Power Query, abra Inicio → Editor avanzado.
  3. Abra iban-validation.pq desde el ZIP en un editor de texto. Copie todo el contenido y utilícelo para reemplazar el código existente en el editor avanzado.
  4. Confirme con Listo y asigne a la consulta el nombre IBAN_Results.

Incluso la vista previa puede desencadenar solicitudes de API. Por lo tanto, la plantilla se limita inicialmente a 10 IBAN diferentes, no vacíos por evaluación. Esto no es una promesa sobre la cantidad de solicitudes HTTP por clic: Power Query puede evaluar consultas varias veces.

3. Establecer acceso API y protección de datos

Cuando Excel solicite credenciales para https://www.iban-test.eu, seleccione Anónimo. El token API aún se envía: el código mismo lo ingresa en el encabezado HTTP como Authorization: Bearer …. El tipo de inicio de sesión de API web no se utiliza para esta plantilla.

El código envía una llamada POST a /api/v2/iban/validate. Según Documentación de Microsoft en Web.Contents, la POST en este flujo solo es posible con el tipo de inicio de sesión de fuente de datos Anónimo.

Establezca los niveles de protección de datos del libro de trabajo y de la fuente web para adaptarlos a sus requisitos operativos. Un mensaje Formula.Firewall se refiere a la combinación de fuentes de datos. Verifique el Niveles de privacidad de Power Query; No desactive la protección de datos en todos los ámbitos.

4. Cargue los resultados y actualícelos más tarde

Seleccione Cerrar y cargar en... → Tabla → Nueva hoja de trabajo. No sobrescriba la tabla de entrada ni la configuración. Luego, modifique su lista en la hoja Input y seleccione Datos → Actualizar todo.

columnaSignificado
Reference / IBANSu tarea y aportes originales.
IBAN_NormalizedIBAN en mayúsculas sin los espacios ajustados.
Status
  • VALID: Código 2100 sin error API.
  • INVALID: código de error técnico 3100, 3101 o 3102.
  • MISSING: entrada vacía, no una solicitud de API.
Code / MessageCódigo API y descripción para clasificar el resultado.
Bank / BICNombre del banco y BIC, si la API proporciona esta información.
CheckedAtUTCHora UTC de evaluación de la consulta. Si las entradas están vacías, el campo permanece vacío.

Los IBAN limpios idénticos se combinan dentro de una evaluación y luego los resultados se asignan a todas las filas asociadas. Su orden de entrada se conserva.

Manejar los errores correctamente

  • Token o inicio de sesión: Verifique el token y los permisos guardados en Datos → Recuperar datos → Configuración de fuente de datos. El tipo de inicio de sesión Anónimo debe aplicarse a la dirección API.
  • Cuota, acceso deshabilitado o error del servidor: La consulta se cancela. Estos problemas no deberían producir un resultado INVALID.
  • Resultados antiguos después de un error: Excel puede mantener el último estado exitoso de la tabla. Verifique el estado de la actualización y CheckedAtUTC antes de reutilizar los resultados.
  • Más de diez IBAN diferentes: Primero, verifique la cuota de API disponible. Sólo entonces incrementas MaxUniqueIbans en el código. Considere solicitudes adicionales de vista previa y reproducción.

Lo que no prueba un IBAN válido

La validación comprueba el IBAN y proporciona los datos bancarios disponibles. No confirma la existencia de una cuenta específica, su propietario, saldo o la ejecución exitosa de un pago. Incluso un dígito de control válido no reemplaza la verificación del titular de la cuenta.

Preguntas frecuentes

¿Puedo consultar también el IBAN mediante una fórmula de Excel?

Las verificaciones de formato y dígitos de control generalmente se pueden implementar como una fórmula. Una simple comprobación de la longitud no es suficiente. Estas instrucciones utilizan la API para leer adicionalmente la información bancaria y los códigos de error diferenciados disponibles allí.

¿La plantilla de Excel es gratuita?

La descarga es gratuita. El uso de API depende de su plan y de la cuota disponible. Cada actualización e incluso una vista previa pueden consumir cuota.

¿Cómo comparto los resultados de forma segura?

Copie únicamente los valores de resultados requeridos en un archivo nuevo. Elimina tokens, consultas e IBAN innecesarios. Simplemente ocultar la hoja Settings no protege el token.

Ver el código completo de Power Query
let
    // Read only the two named tables supplied with the starter workbook.
    Settings = Excel.CurrentWorkbook(){[Name="IBAN_Settings"]}[Content],
    RawToken = Text.Trim(Text.From(Settings{0}[ApiToken])),
    ApiToken = if RawToken = "" or RawToken = "YOUR_API_TOKEN" then
        error Error.Record("Configuration", "Enter your API token in IBAN_Settings before refreshing.", null)
        else RawToken,
    Input = Excel.CurrentWorkbook(){[Name="IBAN_Input"]}[Content],
    AsText = Table.TransformColumnTypes(Input, {{"Reference", type text}, {"IBAN", type text}}),
    Normalized = Table.AddColumn(AsText, "IBAN_Normalized", each
        if [IBAN] = null then "" else Text.Upper(Text.Remove([IBAN], {" ", "#(tab)", "#(cr)", "#(lf)", Character.FromNumber(160)})), type text),
    UniqueIbans = List.Distinct(List.Select(Normalized[IBAN_Normalized], each _ <> "")),
    // Explicit cap for the starter example. Increase only after checking your quota.
    MaxUniqueIbans = 10,
    ToCheck = if List.Count(UniqueIbans) > MaxUniqueIbans then
        error Error.Record("Quota protection", "This example checks at most 10 distinct IBANs per refresh. Check your API quota before increasing MaxUniqueIbans.", null)
        else UniqueIbans,
    CheckIban = (iban as text) as record =>
        let
            Response = Web.Contents("https://www.iban-test.eu", [
                RelativePath = "api/v2/iban/validate",
                Headers = [Authorization = "Bearer " & ApiToken, #"Content-Type" = "application/json", Accept = "application/json"],
                Content = Json.FromValue([iban = iban]),
                Timeout = #duration(0, 0, 0, 30),
                ManualStatusHandling = {400, 404, 408, 422, 429, 500, 502, 503, 504, 509}
            ]),
            HttpStatus = Record.FieldOrDefault(Value.Metadata(Response), "Response.Status", 200),
            Body = if HttpStatus <> 200 then
                error Error.Record("API request failed", "HTTP " & Text.From(HttpStatus) & ": check authentication, quota or service availability. Refresh was stopped.", null)
                else Json.Document(Response),
            CheckedBody = if not Value.Is(Body, type record) then
                error Error.Record("Unexpected API response", "The response was not a JSON object.", null)
                else Body,
            Code = try Number.From(Record.FieldOrDefault(CheckedBody, "code", null)) otherwise null,
            IsValid = Code = 2100 and Record.FieldOrDefault(CheckedBody, "error", true) = false,
            IsInvalid = List.Contains({3100, 3101, 3102}, Code),
            Status = if IsValid then "VALID" else if IsInvalid then "INVALID" else
                error Error.Record("Validation unavailable", "API code " & (if Code = null then "missing" else Text.From(Code)) & ". Check your token, quota and API documentation. This is not an invalid-IBAN result.", null),
            RawDetails = Record.FieldOrDefault(CheckedBody, "details", []),
            Details = if Value.Is(RawDetails, type record) then RawDetails else [],
            // Force status evaluation before returning metadata.
            Result = if Status = "VALID" or Status = "INVALID" then [
                Status = Status,
                Code = Code,
                Message = Record.FieldOrDefault(CheckedBody, "message", ""),
                Bank = Record.FieldOrDefault(Details, "bankName", null),
                BIC = Record.FieldOrDefault(Details, "bic", null)
            ] else error "Unexpected validation status"
        in
            Result,
    // Evaluate distinct IBANs in sequence. An operational error aborts the refresh.
    CheckedRecords = List.Accumulate(ToCheck, {}, (state, iban) =>
        let
            PreviousReady = List.Count(state) = 0 or List.Last(state)[Status] <> "",
            Current = if PreviousReady then CheckIban(iban) else error "Previous check failed",
            Ready = Current[Status]
        in
            if Ready = "VALID" or Ready = "INVALID" then
                state & {Record.Combine({[IBAN_Normalized = iban], Current})}
            else error "Check failed"),
    Checked = Table.Buffer(Table.FromRecords(CheckedRecords,
        type table [IBAN_Normalized = text, Status = text, Code = nullable number, Message = nullable text, Bank = nullable text, BIC = nullable text])),
    Joined = Table.NestedJoin(Normalized, {"IBAN_Normalized"}, Checked, {"IBAN_Normalized"}, "Check", JoinKind.LeftOuter),
    Expanded = Table.ExpandTableColumn(Joined, "Check", {"Status", "Code", "Message", "Bank", "BIC"}),
    MissingMarked = Table.ReplaceValue(Expanded, null, "MISSING", Replacer.ReplaceValue, {"Status"}),
    CheckedAt = Table.AddColumn(MissingMarked, "CheckedAtUTC", each
        if [Status] = "MISSING" then null else DateTimeZone.RemoveZone(DateTimeZone.FixedUtcNow()), type nullable datetime)
in
    CheckedAt

Conecta IBAN-Test a tu lista

Elija una cuota que se adapte a su lista y a la frecuencia de actualización planificada. El contrato técnico de la interfaz se puede encontrar en la documentación de la API.

Configurar el acceso APILeer la documentación de la API

Validación de datos bancarios

Validación con directorios bancarios de 40 países

Para estos países, comprobamos los IBAN con los directorios bancarios disponibles y, cuando existen, devolvemos datos como la entidad, la ciudad y el BIC.

ALAlbania ADAndorra ATAustria BEBélgica BGBulgaria HRCroacia CYChipre CZRepública Checa DKDinamarca EEEstonia FIFinlandia FRFrancia DEAlemania GIGibraltar GRGrecia HUHungría ISIslandia IEIrlanda ITItalia LVLetonia LILiechtenstein LTLituania LULuxemburgo MTMalta MDMoldavia MEMontenegro NLPaíses Bajos MKMacedonia del Norte NONoruega PLPolonia PTPortugal RORumanía SMSan Marino RSSerbia SKEslovaquia SIEslovenia ESEspaña SESuecia CHSuiza VACiudad del Vaticano

Comprobación de la sintaxis del IBAN

Comprobación de 115 formatos de IBAN

Comprueba que los IBAN tengan una estructura válida, la longitud correcta y una suma de control coherente. Así puedes detectar errores tipográficos y cifras invertidas antes de que falle un pago. Para los países indicados arriba también ofrecemos validación adicional con directorios bancarios reales.

Servidor MCP para agentes de IA - Conecta clientes de IA con las herramientas de validación de IBAN - https://www.iban-test.eu/mcp - Documentación de la API