Excel · Power Query · API IBAN-Test

Validare gli IBAN in Excel con Power Query

Invia un elenco IBAN da Excel all'API IBAN-Test e ottieni il risultato della verifica, il nome della banca e il BIC sotto forma di tabella, senza macro VBA.

Questa guida utilizza Excel per Microsoft 365 su Windows. Puoi impostare una query Power Query una volta e quindi aggiornare i risultati utilizzando il menu Dati. È richiesto un account IBAN-Test con token API e quota sufficiente.

Scarica il pacchetto iniziale di Excel

Il ZIP include un modello XLSX con tabelle di input e impostazioni, il codice completo di Power Query e una guida rapida. La query non è incorporata nella cartella di lavoro: incolla il codice una volta nell’Editor avanzato durante la configurazione.

Scarica il pacchetto iniziale (ZIP)

Versione 1.0 · 21 settembre 2026 · senza macro

Stato dei test: La struttura XLSX e la sintassi M vengono controllate e la chiamata API è allineata alla descrizione dell'interfaccia pubblicata. Un test completo con Microsoft Excel e query API autenticate è ancora in sospeso. Per prima cosa controlla il processo con alcuni dati di prova.

Cosa devi preparare

  • Excel per Microsoft 365 su Windows con Power Query. Questo processo non è garantito qui per Excel nel browser ed Excel per Mac.
  • Un token API: Accedi a IBAN-Test. Le informazioni sull'accesso si trovano nello Documentazione dell'API; la quota appropriata sotto Prezzi.
  • Rilascio al trattamento: Gli IBAN vengono trasferiti su IBAN-Test. Utilizza solo i dati che sei autorizzato a trattare in questo modo.

1. Preparare la cartella di lavoro e l'elenco IBAN

Decomprimi lo ZIP e apri iban-test-excel-en.xlsx. Nel foglio Input, sostituisci i dati di esempio con il tuo elenco. La colonna Reference è per la tua assegnazione; all'API viene inviato solo l'IBAN.

Lasciare invariati i nomi delle colonne Reference e IBAN e il nome della tabella IBAN_Input. Le nuove righe devono trovarsi all'interno di questa tabella Excel. Salva gli IBAN come testo. La query rimuove gli spazi e converte le lettere in maiuscolo.

Nel foglio Settings, sostituisci YOUR_API_TOKEN con il tuo token. Il nome della tabella è IBAN_Settings e la colonna è ApiToken. Il token viene salvato nel file. Non condividere questa cartella di lavoro con il tuo token.

2. Aggiungere il codice Power Query

  1. In Excel, apri Dati → Ottieni dati → Da altre fonti → Query vuota.
  2. Nell’editor di Power Query, apri Home → Editor avanzato.
  3. Apri iban-validation.pq dallo ZIP in un editor di testo. Copia l'intero contenuto e utilizzalo per sostituire il codice esistente nell'editor avanzato.
  4. Confermare con Fatto e denominare la richiesta IBAN_Results.

Anche l'anteprima può attivare richieste API. Il modello è quindi inizialmente limitato a 10 IBAN diversi e non vuoti per valutazione. Questa non è una promessa sul numero di richieste HTTP per clic: Power Query può valutare le query più volte.

3. Imposta l'accesso API e la protezione dei dati

Quando Excel richiede le credenziali per https://www.iban-test.eu, selezionare Anonimo. Il token API viene comunque inviato: il codice stesso lo inserisce nell'intestazione HTTP come Authorization: Bearer …. Il tipo di accesso API Web non viene utilizzato per questo modello.

Il codice invia una chiamata POST a /api/v2/iban/validate. Secondo Documentazione Microsoft su Web.Contents, il POST in questo flusso è possibile solo con il tipo di accesso all'origine dati Anonimo.

Imposta i livelli di protezione dei dati della cartella di lavoro e dell'origine Web in base alle tue esigenze operative. Un messaggio Formula.Firewall riguarda la combinazione di origini dati. Controllare Livelli di privacy di Power Query; Non disattivare la protezione dei dati su tutta la linea.

4. Carica i risultati e aggiornali in seguito

Seleziona Chiudi e carica... → Tabella → Nuovo foglio di lavoro. Non sovrascrivere la tabella di input o le impostazioni. Successivamente, modifica l'elenco nel foglio Input e seleziona Dati → Aggiorna tutto.

ColonnaSignificato
Reference / IBANIl tuo compito e input originali.
IBAN_NormalizedIBAN in maiuscolo senza spazi rettificati.
Status
  • VALID: codice 2100 senza errore API.
  • INVALID: codice errore tecnico 3100, 3101 o 3102.
  • MISSING: input vuoto, non una richiesta API.
Code / MessageCodice API e descrizione per classificare il risultato.
Bank / BICNome della banca e BIC, se l'API fornisce queste informazioni.
CheckedAtUTCOra UTC di valutazione della query. Se le voci sono vuote, il campo rimane vuoto.

Gli IBAN identici puliti vengono combinati all'interno di una valutazione e i risultati vengono quindi assegnati a tutte le righe associate. L'ordine di input viene mantenuto.

Gestire gli errori correttamente

  • Token o accesso: Controlla il token e le autorizzazioni salvate in Dati → Recupera dati → Impostazioni origine dati. Il tipo di accesso Anonimo deve essere applicato all'indirizzo API.
  • Quota, accesso disabilitato o errore del server: La query viene interrotta. Tali problemi non dovrebbero produrre un risultato INVALID.
  • Vecchi risultati dopo un errore: Excel può mantenere l'ultimo stato della tabella riuscita. Controllare lo stato dell'aggiornamento e CheckedAtUTC prima di riutilizzare i risultati.
  • Più di dieci IBAN diversi: Innanzitutto, controlla la quota API disponibile. Solo allora si incrementa MaxUniqueIbans nel codice. Prendi in considerazione ulteriori richieste di anteprima e riproduzione.

Ciò che un IBAN valido non dimostra

La verifica controlla l'IBAN e fornisce le coordinate bancarie disponibili. Non conferma l'esistenza di un conto specifico, il suo proprietario, il saldo o l'esecuzione corretta di un pagamento. Anche una cifra di controllo valida non sostituisce la verifica del titolare del conto.

Domande frequenti

Posso verificare l'IBAN anche tramite formula Excel?

I controlli del formato e delle cifre di controllo possono generalmente essere implementati come una formula. Un semplice controllo della lunghezza non è sufficiente. Queste istruzioni utilizzano l'API per leggere le informazioni bancarie e i codici di errore differenziati disponibili lì.

Il modello Excel è gratuito?

Il download è gratuito. L'utilizzo dell'API dipende dal piano e dalla quota disponibile. Ogni aggiornamento e persino un'anteprima possono consumare quota.

Come posso condividere i risultati in modo sicuro?

Copia solo i valori dei risultati richiesti in un nuovo file. Rimuovi token, query e IBAN non necessari. Nascondere semplicemente il foglio Settings non protegge il token.

Visualizza il codice completo di 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

Collega IBAN-Test alla tua lista

Scegli una quota adatta al tuo elenco e alla frequenza di aggiornamento pianificata. Il contratto tecnico dell'interfaccia si trova nella documentazione API.

Configura l'accesso APILeggi la documentazione dell'API

Verifica dei dati bancari

Verifiche negli archivi bancari di 40 Paesi

IBAN-Test va oltre le cifre di controllo. Per i paesi elencati confrontiamo il codice della banca con gli archivi disponibili e restituiamo le informazioni presenti, come istituto, città e BIC. Scopri come funziona la verifica IBAN.

ALAlbania ADAndorra ATAustria BEBelgio BGBulgaria HRCroazia CYCipro CZCechia DKDanimarca EEEstonia FIFinlandia FRFrancia DEGermania GIGibilterra GRGrecia HUUngheria ISIslanda IEIrlanda ITItalia LVLettonia LILiechtenstein LTLituania LULussemburgo MTMalta MDMoldavia MEMontenegro NLPaesi Bassi MKMacedonia del Nord NONorvegia PLPolonia PTPortogallo RORomania SMSan Marino RSSerbia SKSlovacchia SISlovenia ESSpagna SESvezia CHSvizzera VACittà del Vaticano

Controllo del formato IBAN

Controllo di 115 formati IBAN

Controlla struttura, lunghezza e cifre di controllo per individuare errori di battitura e cifre invertite prima di un pagamento. Per i paesi indicati sopra è disponibile anche la verifica negli archivi bancari.

Server MCP per agenti IA – Collega i tuoi client IA agli strumenti di verifica IBAN – https://www.iban-test.eu/mcp – Documentazione API