# IBAN

> International Bank Account Number

O identificador único e internacional de uma conta bancária. Na França, 27 caracteres que contêm ao mesmo tempo o banco, a agência, o número da conta e um dígito de controle.

_Categoria: technique_

---

## Definição

O **IBAN** (_International Bank Account Number_) é o identificador único e internacional de uma conta bancária, definido pela norma ISO 13616.

Seu comprimento varia conforme o país (de 15 a 34 caracteres), mas seu papel é o mesmo em toda parte: permitir que qualquer banco encaminhe um pagamento à conta correta sem ambiguidade.

## Anatomia de um IBAN francês

Um IBAN francês tem 27 caracteres. Exemplo: `FR76 3000 6000 0112 3456 7890 189`

- `FR` — código do país (2 letras, ISO 3166).
- `76` — dígitos de controle internacionais (2 dígitos, algoritmo MOD 97-10).
- `30006` — código do banco (5 dígitos).
- `00001` — código da agência (5 dígitos).
- `12345678901` — número da conta (11 caracteres).
- `89` — dígito de controle RIB nacional (2 dígitos).

Os 23 últimos caracteres constituem o antigo RIB francês: o IBAN é o RIB prefixado com o código do país e os dígitos de controle internacionais.

## Comprimentos de IBAN por país

Algumas referências:

- **Alemanha**: 22 caracteres (`DE89 3704 0044 0532 0130 00`).
- **França, Espanha, Itália**: 27 caracteres.
- **Bélgica**: 16 caracteres.
- **Suíça**: 21 caracteres.
- **Malta**: 31 caracteres (o mais longo na zona SEPA).

Daí o erro de integração mais frequente: prever um campo de 27 caracteres acreditando que é universal. É preciso prever no máximo 34 caracteres.

## Validação: MOD 97-10

O algoritmo é simples:

1. Mover os 4 primeiros caracteres para o fim da cadeia.
2. Substituir cada letra por sua posição no alfabeto + 9 (A=10, B=11, … Z=35).
3. Calcular o resultado módulo 97.
4. Se o resultado for 1, o IBAN é estruturalmente válido.

Atenção: estruturalmente válido não significa conta existente. É a VoP que verifica, além disso, se o nome corresponde ao titular e se a conta está ativa.

## IBAN vs BIC

- **IBAN** — identifica a conta (e, indiretamente, o banco, pelos códigos de país e de banco).
- **BIC** — identifica o banco (seu código SWIFT).

Desde 2016, o BIC deixou de ser obrigatório no SEPA: o IBAN sozinho basta, pois o banco destinatário pode ser deduzido dele. O BIC continua útil para transferências fora do SEPA ou como campo de consistência em certas APIs.

## O que o IBAN não faz

- **Não revela o nome do titular**: esse é o papel da VoP.
- **Não garante que a conta esteja ativa**: um IBAN válido pode corresponder a uma conta encerrada.
- **Não é confidencial em sentido estrito**: ele transita em toda transferência, mas permanece sensível (risco de débitos fraudulentos se o mandato não for verificado).
- **Não é um RIB**: o RIB é o formato nacional francês que reúne IBAN, BIC, titular e endereço em forma imprimível.

## No ecossistema PSD2

O IBAN é o identificador-chave de todas as APIs da PSD2: o `debtorAccount` da autorização de pagamento, o `creditorAccount` da requisição de pagamento no STET e no Berlin Group, obrigatório em qualquer requisição de transferência.

```mermaid
flowchart LR
    subgraph IBAN_FR["IBAN francês — 27 caracteres"]
        FR["FR<br/>(país)"]
        K["76<br/>(dígito MOD 97)"]
        BANK["30006<br/>(banco)"]
        BR["00001<br/>(agência)"]
        ACC["12345678901<br/>(conta)"]
        RIB["89<br/>(dígito RIB FR)"]
    end

    FR --> K --> BANK --> BR --> ACC --> RIB

    IBAN_FR -->|"Encaminhamento"| PAYMENT["Pagamento SEPA<br/>(SCT, SCT Inst, SDD)"]
```

## Exemplos concretos

- **Campo de formulário**: `maxlength=34`, remoção dos espaços e conversão em maiúsculas no front-end, validação MOD 97-10 no servidor antes da chamada de API. O erro clássico: validar apenas o comprimento.
- **Exibição**: agrupar em blocos de 4 caracteres separados por espaços — padrão ISO e bem mais legível.
- **Bibliotecas**: `iban` (npm), `python-stdnum`, `iban4j` (Java) cuidam da validação e da formatação — nunca reimplementar o MOD 97-10 na mão.
- **Wise, Revolut, N26**: seus IBANs de clientes costumam ser belgas ou lituanos (licença local). Perfeitamente válidos no SEPA para um cliente francês, mesmo que alguns empregadores ainda os recusem — uma prática ilegal nos termos do regulamento SEPA.
- **IBANs virtuais**: Treezor, Swan ou Stripe Treasury geram IBANs virtuais vinculados a uma conta-mãe, para rastrear por cliente ou por finalidade — muito usado na cobrança.
- **Segurança**: nunca registrar um IBAN em texto puro; tratá-lo como dado sensível.

## Fontes

- [ISO 13616 — International Bank Account Number (IBAN)](https://www.iso.org/standard/81090.html) — ISO
- [IBAN Registry](https://www.swift.com/standards/data-standards/iban-international-bank-account-number) — SWIFT

---

Fonte: https://openfinanceguide.com/pt-br/glossary/iban
