Gerador e Validador de IBAN - Ferramenta de Teste de Dados Bancários
Gere IBANs de teste válidos ou valide IBANs existentes instantaneamente. Suporta 10 países europeus com validação MOD 97. Perfeito para testes e desenvolvimento de software financeiro.
Gerador e Validador de IBAN
Documentação
Gerador e Validador de IBAN
O Que Esta Ferramenta Faz
Testando software financeiro sem dados reais de contas bancárias? Você precisará de formatos de IBAN válidos que passem em verificações de validação. Esta ferramenta gera IBANs aleatórios que seguem formatos específicos por país e valida os existentes usando o padrão ISO 13616.
Aqui está o problema prático que ela resolve: ao construir sistemas de pagamento ou aplicações bancárias, você precisa de dados de teste que não falhem na validação, mas também não exponham números de conta reais. Um erro comum que os desenvolvedores cometem é criar IBANs "falsos" que não passam no algoritmo de verificação MOD 97, fazendo com que os testes falhem pelos motivos errados.
A ferramenta realiza duas tarefas principais:
- Gerador: Cria IBANs estruturalmente válidos para qualquer país suportado. Cada número gerado passa nas mesmas verificações de validação que seu sistema de produção executará.
- Validador: Verifica a estrutura do IBAN, dígitos de verificação e formatação específica do país. Útil para depurar por que um IBAN está sendo rejeitado.
IBANs (Números Internacionais de Conta Bancária) padronizam como os bancos identificam contas através de fronteiras. Cada um contém um código de país, dois dígitos de verificação calculados via MOD 97, e um Número Básico de Conta Bancária (BBAN) que varia por país. O que torna isso complicado é que a Alemanha usa 22 caracteres, enquanto a França precisa de 27, e a estrutura interna é completamente diferente.
Como os IBANs Funcionam
Estrutura e Formato do IBAN
Os IBANs podem ter até 34 caracteres alfanuméricos, embora a maioria dos países europeus use 22-27. Cada IBAN é dividido em três partes:
- Código do País: Duas letras do padrão ISO 3166-1 alfa-2 (DE para Alemanha, GB para Reino Unido)
- Dígitos de Verificação: Dois dígitos calculados que validam todo o IBAN usando MOD 97
- Número Básico da Conta Bancária (BBAN): A parte específica do país que contém:
- Identificador do banco (às vezes chamado de número de roteamento ou código do banco)
- Identificador da agência (no Reino Unido chamado de código de classificação)
- Número da conta
- Às vezes dígitos de verificação nacionais adicionais
Tome um IBAN alemão como exemplo. O padrão DE2!n8!n10!n significa:
DE= código do país2!n= dois dígitos numéricos de verificação8!n= código do banco de oito dígitos (Bankleitzahl)10!n= número da conta de dez dígitos (Kontonummer)
O que surpreende as pessoas é como esses formatos variam entre países:
| País | Comprimento | Estrutura | Exemplo |
|---|---|---|---|
| Alemanha (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| Reino Unido (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| França (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| Espanha (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| Itália (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
Algoritmo de Validação do IBAN
A validação do IBAN depende do algoritmo MOD 97 definido na ISO 7064. Aqui está o que realmente acontece quando você valida um IBAN:
- Mova os primeiros quatro caracteres (código do país e dígitos de verificação) para o final
- Substitua cada letra por números: A=10, B=11, até Z=35
- Calcule o módulo 97 da sequência de números resultante
- IBANs válidos sempre produzem um resto exatamente igual a 1
Matematicamente:
Por que MOD 97 especificamente? Ele captura quase todos os erros comuns: erros de dígito único, dígitos trocados, até mesmo a maioria dos erros de digitação envolvendo caracteres semelhantes. Na prática, descobri que ele captura cerca de 99,9% dos erros de entrada de dados acidentais, razão pela qual se tornou o padrão internacional.
Um detalhe interessante: ao gerar IBANs, você calcula os dígitos de verificação começando com "00", executando o algoritmo e, em seguida, usando 98 menos o resto. Isso garante que o IBAN final será validado corretamente.
Recursos da Ferramenta
Gerador de IBAN
Gere IBANs de teste que passam na validação sem usar números de conta reais:
- Seleção de País: Suporta 10 principais países europeus (Alemanha, Reino Unido, França, Espanha, Itália, Holanda, Suíça, Áustria, Bélgica, Polônia)
- Conformidade de Formato: Cada IBAN gerado corresponde à estrutura oficial do país e passa na validação MOD 97
- Geração com Um Clique: Nenhuma configuração necessária—basta selecionar um país e gerar
- Copiar para Área de Transferência: Um único clique copia o IBAN completo para colar em seus testes
- Detalhamento Visual: Exibição colorida mostra código do país, dígitos de verificação e detalhes bancários separadamente
O processo de geração:
- Seleciona o modelo de formato específico do país
- Preenche dígitos/letras aleatórios na parte BBAN
- Calcula dígitos de verificação usando MOD 97
- Monta e valida o IBAN completo
Dica profissional: Ao popular bancos de dados de teste, gere IBANs de múltiplos países para testar cenários transfronteiriços. Sistemas de pagamento reais frequentemente têm casos de borda com países específicos.
Validador de IBAN
Verifique a estrutura do IBAN e detecte problemas de formatação antes de chegar à produção:
- Verificação de Formato: Verifica requisitos de comprimento e estrutura específicos do país
- Validação MOD 97: Executa o algoritmo completo de verificação de dígitos
- Detalhamento de Componentes: Mostra exatamente como o IBAN se divide em código do país, dígitos de verificação, código bancário e número da conta
- Mensagens de Erro Específicas: Em vez de mensagens genéricas de "inválido", você verá exatamente o que está errado
- Formatação Automática: Lida com IBANs com ou sem espaços—a formatação acontece automaticamente
As verificações de validação são executadas na ordem:
- Reconhecimento do código do país (é suportado?)
- Verificação de comprimento (contagem correta de caracteres para aquele país?)
- Validação do tipo de caractere (números onde esperado, letras onde permitido)
- Cálculo do dígito de verificação MOD 97 (a matemática funciona?)
Cenário comum: Seu API recebe um IBAN de entrada do usuário com espaçamento inconsistente. Use o validador para normalizá-lo antes do processamento—ele remove espaços automaticamente e mostra o formato adequado.
Guia Passo a Passo
Gerando um IBAN
- Acessar a Aba de Geração: Clique na aba "Gerador" (selecionada por padrão)
- Selecionar um País: Escolha o país desejado no menu suspenso
- Gerar o IBAN: Clique no botão "Gerar IBAN"
- Visualizar o Resultado: O IBAN gerado aparecerá abaixo com uma análise visual de seus componentes
- Copiar para a Área de Transferência: Clique no botão "Copiar para a área de transferência" para copiar o IBAN para uso em outro local
Validando um IBAN
- Acessar a Aba de Validação: Clique na aba "Validador"
- Inserir um IBAN: Digite ou cole um IBAN no campo de entrada
- Espaços e formatação serão tratados automaticamente
- A ferramenta aceita IBANs formatados (com espaços) e não formatados
- Visualizar Resultados da Validação: A ferramenta validará automaticamente o IBAN conforme você digita
- Verificar os Detalhes: Para IBANs válidos, será exibida uma análise de seus componentes
- Revisar Possíveis Erros: Para IBANs inválidos, mensagens de erro específicas ajudarão a identificar o problema
Casos de Uso e Aplicações do Mundo Real
Desenvolvimento de Software e Testes
Teste de API: Ao construir testes de integração de pagamento, você precisa de IBANs que passem na validação, mas não acionem transações reais. Gere um lote de IBANs de teste para sua suíte de testes automatizados, garantindo que seu tratamento de erros funcione corretamente para diferentes formatos de países.
Validação de Formulário: Testando um fluxo de checkout? Use o validador para verificar se a validação do frontend corresponde aos requisitos do backend. Um problema frequente é aceitar um formato de IBAN que seu processador de pagamento posteriormente rejeitará—capturar isso durante o desenvolvimento evita a frustração do cliente.
Teste de Casos Extremos: A maioria dos desenvolvedores testa com um ou dois formatos de país. O que acontece quando um cliente suíço com um IBAN de 21 caracteres usa seu sistema projetado em torno de IBANs alemães de 22 caracteres? Gere diversos formatos de países para testar os limites de comprimento de campo e a lógica de validação.
Teste de Regressão: Após atualizar sua biblioteca de validação de IBAN, execute IBANs gerados através das versões antiga e nova. Quaisquer discrepâncias indicam mudanças que podem afetar a produção.
Desenvolvimento de Aplicações Financeiras
Sistemas de Pagamento: Ao construir funcionalidade de transferência internacional, você encontrará cenários onde a estrutura do IBAN determina o comportamento de roteamento. IBANs dos Países Baixos (que incluem letras no BBAN) expõem bugs que IBANs alemães totalmente numéricos não detectariam.
Software Bancário: Analisar IBANs para extrair códigos bancários e identificadores de agência requer lógica específica do país. Gere IBANs para cada país suportado para verificar se seu algoritmo de análise identifica corretamente esses componentes.
Verificação de Conformidade: Regulamentações financeiras frequentemente exigem validar IBANs antes do processamento. Use esta ferramenta para criar casos de teste que comprovem que seu sistema rejeita dígitos de verificação inválidos e formatos incorretos—essencial para trilhas de auditoria.
Educacional e Documentação
Educação em Padrões Bancários: Estudantes que aprendem sobre sistemas de pagamento internacional se beneficiam ao ver estruturas reais de IBAN. Gere exemplos de múltiplos países para ilustrar como a padronização funciona em diferentes sistemas bancários.
Documentação de API: Em vez de usar IBANs potencialmente reais em sua documentação técnica, gere exemplos limpos. Documentação com frases como "Use IBAN DE89370400440532013000 para teste" indica imediatamente aos desenvolvedores que são valores seguros para teste.
Operações de Dados
Preenchimento de Banco de Dados: Ambientes de desenvolvimento e staging precisam de dados de teste realistas. Gere IBANs diversos para popular seu banco de dados com perfis de clientes internacionais representativos sem preocupações de privacidade.
Anonimização de Dados: Migrando de produção para staging? Substitua IBANs reais por gerados que mantenham a validade de formato para teste, removendo informações sensíveis. Crítico para conformidade com GDPR em ambientes de desenvolvimento.
Alternativas e Quando Usá-las
Ferramentas diferentes atendem a necessidades diferentes. Aqui está uma comparação honesta:
APIs Bancárias Comerciais (por exemplo, Stripe, Adyen)
Melhores para validação de produção contra registros bancários reais. Esses serviços verificam se um IBAN corresponde a uma conta ativa real, não apenas se o formato está correto.
Use quando: Você precisa verificar se um IBAN existe e pode receber pagamentos, não apenas se é estruturalmente válido.
Limitações: Custa dinheiro (geralmente com preços por chamada de API), requer trabalho de integração e você ainda precisa de IBANs de teste para desenvolvimento - é aí que esta ferramenta entra.
Bibliotecas de Linguagens de Programação (ibantools, iban.js, python-stdnum)
Melhores para validação incorporada no código do seu aplicativo. Bibliotecas como ibantools para JavaScript ou python-stdnum para Python fornecem funções de validação e geração.
Use quando: Você precisa de acesso programático como parte da sua validação de compilação ou tempo de execução.
Limitações: Requer esforço de desenvolvimento para integrar e você ainda precisa de uma maneira rápida de testar manualmente IBANs específicos durante a depuração. É aí que uma ferramenta web é mais rápida do que escrever scripts de teste.
Registro IBAN da SWIFT
O registro IBAN oficial mantido pela SWIFT lista todos os formatos de países e regras de validação. É a fonte autoritativa.
Use quando: Você está implementando suporte a IBAN do zero e precisa das especificações oficiais.
Limitações: É documentação, não uma ferramenta. Você ainda precisaria construir ou encontrar algo para realmente gerar e validar IBANs com base nessas especificações.
Validadores Bancários Oficiais
Muitos bancos nacionais fornecem validadores específicos do país (por exemplo, Bundesbank para IBANs alemães). Estes são altamente precisos para seu país específico.
Use quando: Você trabalha apenas com um país e precisa de detalhes de validação bancária.
Limitações: Foco em um único país. Se você está construindo sistemas de pagamento internacionais, precisaria de validadores para cada país.
Quando Esta Ferramenta Faz Sentido
Use esta ferramenta quando precisar de testes rápidos, sem configuração e sem integração de API. É particularmente útil durante o desenvolvimento e depuração quando você precisa gerar dados de teste válidos imediatamente ou verificar por que um IBAN específico está falhando na validação. Não substituirá bibliotecas de validação de nível de produção no seu código, mas é mais rápido do que escrever scripts de teste descartáveis.
Perguntas Frequentes
O que é um IBAN e por que isso importa?
IBAN significa Número Internacional de Conta Bancária—um formato padronizado criado pela Organização Internacional de Normalização (ISO) para reduzir erros em pagamentos transfronteiriços. Antes dos IBANs, cada país usava seu próprio formato de número de conta, o que levava a frequentes erros e transferências malsucedidas. Os IBANs adicionam códigos de país e dígitos de verificação para capturar erros antes que o dinheiro seja movimentado.
Quão precisos são os IBANs gerados?
Os IBANs gerados são matematicamente corretos e passam no algoritmo de validação MOD 97 definido na ISO 13616. Eles seguem as estruturas específicas de cada país. No entanto, são criados aleatoriamente e não correspondem a contas bancárias reais—esse é o ponto. Eles são seguros para teste precisamente porque não atingirão acidentalmente uma conta real.
Quais países esta ferramenta suporta?
Atualmente 10 países europeus: Alemanha, Reino Unido, França, Espanha, Itália, Holanda, Suíça, Áustria, Bélgica e Polônia. Estes cobrem os formatos de IBAN mais comuns que você encontrará em sistemas de pagamento europeus. Precisa de outro país? O formulário de feedback é a melhor maneira de solicitar adições.
Posso usar IBANs gerados para transferências de dinheiro reais?
Absolutamente não. Estes são IBANs de teste apenas. Eles passam na validação de formato, mas não estão conectados a contas bancárias reais. Usá-los em transações reais resultará em falhas ou rejeições de pagamento. Eles são destinados apenas a desenvolvimento, teste e fins educacionais.
Como funciona a validação de IBAN?
O validador executa quatro verificações em sequência:
- Código do país: É um código de duas letras reconhecido?
- Comprimento: Corresponde ao comprimento exigido para aquele país? (Alemanha = 22, Reino Unido = 22, França = 27, etc.)
- Tipos de caracteres: Letras e números estão nas posições corretas com base no formato do país?
- Verificação MOD 97: O checksum matemático é igual a 1 de acordo com a ISO 7064?
Se qualquer verificação falhar, você verá uma mensagem de erro específica explicando o que está errado.
Os espaços importam nos IBANs?
Não para validação. IBANs são tipicamente exibidos com espaços (grupos de quatro) para legibilidade, mas os espaços são cosméticos. DE89 3704 0044 0532 0130 00 e DE89370400440532013000 são idênticos para fins de validação. A ferramenta lida com ambos os formatos automaticamente.
Meus dados são enviados para um servidor ou armazenados em algum lugar?
Não. Tudo é executado no seu navegador usando JavaScript. Nenhum dado de IBAN sai da sua máquina, toca um servidor ou é armazenado em qualquer lugar. Você pode verificar isso abrindo as ferramentas de desenvolvedor do navegador e observando a aba de rede—você não verá nenhuma solicitação ao gerar ou validar IBANs.
E se eu precisar validar um IBAN de um país não listado?
A ferramenta atualmente suporta apenas os 10 países no menu suspenso. Adicionar mais requer implementar as regras de formato específicas de cada país. Se você precisar de validação para países como Noruega, Suécia ou outros, nos avise através do formulário de feedback—priorizamos adições com base na demanda.
Por que um IBAN corretamente formatado pode falhar na validação?
Razões mais comuns:
- Dígitos de verificação incorretos: Mesmo um dígito errado falha no teste MOD 97
- Erros de digitação: Caracteres trocados ou dígitos errados em qualquer lugar no IBAN
- Comprimento incorreto: Caracteres faltando ou extras para aquele país
- Caracteres inválidos: Letras onde apenas números são permitidos, ou vice-versa
- País não suportado: O código do país existe, mas não está em nossa lista de suportados
A mensagem de erro informará especificamente o que está errado.
Como posso relatar bugs ou solicitar recursos?
Use o formulário de feedback na parte inferior da página. Relatórios de bugs específicos com exemplos de IBANs são mais úteis. Para solicitações de recursos, explicar seu caso de uso ajuda a priorizar o que será construído a seguir.
Qual é a diferença entre IBAN e códigos SWIFT/BIC?
IBANs identificam contas bancárias específicas, enquanto códigos SWIFT/BIC identificam bancos ou agências bancárias. Pense assim: o código SWIFT diz qual banco, o IBAN diz qual conta naquele banco. Para transferências internacionais, você frequentemente precisa de ambos—o código SWIFT roteia para o banco correto, então o IBAN roteia para a conta específica.
Posso validar um IBAN sem conhecer o país?
Sim, porque as duas primeiras letras de cada IBAN são o código do país. O validador lê esses dois primeiros caracteres para determinar qual formato de país aplicar. É por isso que a detecção de país acontece automaticamente quando você cola um IBAN—não é necessário selecionar o país manualmente.
Existem formatos de IBAN para países fora da Europa?
Sim, mas menos. Embora o IBAN tenha se originado na Europa e tenha a maior adoção lá, países como Arábia Saudita, EAU, Brasil e outros o adotaram. Esta ferramenta atualmente se concentra em formatos europeus, pois representam a grande maioria das transações transfronteiriças. O Registro SWIFT de IBAN mantém a lista completa.
Como Ler e Decodificar um IBAN
Já olhou para um IBAN como DE89370400440532013000 e se perguntou o que cada parte significa? Aqui está como decodificar qualquer IBAN:
Etapa 1: Código do País (Primeiros 2 caracteres)
DE= Alemanha- Indica quais regras de formato do país se aplicam
Etapa 2: Dígitos de Verificação (Próximos 2 caracteres)
89= soma de verificação calculada- Esses dígitos verificam se o IBAN inteiro é válido usando MOD 97
Etapa 3: Código do Banco (Varia por país)
37040044em IBANs alemães = identificador de banco de 8 dígitos- Diferentes países usam diferentes comprimentos (Reino Unido usa 4 caracteres)
Etapa 4: Número da Conta (Caracteres restantes)
0532013000= o número da conta real naquele banco- Comprimento e formato dependem do país
Diferentes países organizam a parte BBAN de maneira diferente. IBANs do Reino Unido incluem um código de classificação de 6 dígitos (identificador de agência) entre o código do banco e o número da conta. IBANs franceses combinam código do banco, código da agência e número da conta com uma chave de verificação. Entender essas diferenças é crucial ao analisar IBANs programaticamente.
Erros Comuns de Validação de IBAN e Como Corrigi-los
Ao implementar a validação de IBAN, você encontrará repetidamente estes problemas:
Erro de "Dígitos de Verificação Inválidos"
Causa: O cálculo MOD 97 não é igual a 1. Os dígitos de verificação estão errados, ou há um erro em outro lugar no IBAN.
Correção: Execute a validação novamente após corrigir quaisquer erros de digitação. Mesmo um único caractere errado em qualquer lugar do IBAN causa falha no dígito de verificação. Isso é por design—detecta erros de entrada de dados.
Erro de "Comprimento Incorreto para o País"
Causa: O IBAN tem caracteres demais ou de menos para o código do país.
Correção: Verifique se o código do país corresponde ao país pretendido. IBANs alemães sempre têm 22 caracteres, IBANs do Reino Unido têm 22, franceses têm 27. Caracteres faltando ou extras indicam truncamento ou dados incorretos.
Erro de "Caracteres Inválidos"
Causa: Caracteres que não deveriam aparecer naquela posição—como letras onde apenas números são permitidos.
Correção: Verifique o formato específico do país. Por exemplo, IBANs alemães são totalmente numéricos após o código do país e os dígitos de verificação, enquanto IBANs do Reino Unido incluem 4 letras para o código do banco.
Erro de "Código de País Não Suportado"
Causa: As duas primeiras letras não são um código de país reconhecido, ou não são suportadas pelo seu validador.
Correção: Verifique a grafia do código do país. Erros comuns incluem usar UK em vez de GB, ou EN em vez de códigos de país. Esta ferramenta suporta 10 países europeus; validadores de produção devem suportar todos os países do registro SWIFT.
Formato vs. Existência da Conta
Distinção importante: a validação confirma que um IBAN está estruturalmente correto, não que a conta exista. Um IBAN pode passar em todos os testes de validação, mas ainda não corresponder a uma conta bancária real. Para sistemas de pagamento em produção, você precisa de verificação adicional além da validação de formato.
Implementação Técnica para Desenvolvedores
Se você está implementando suporte a IBAN em sua aplicação, aqui estão exemplos de código comprovados em várias linguagens. Essas implementações lidam com os casos de borda que você encontrará em produção:
Validação de IBAN
1function validateIban(iban) {
2 // Remover espaços e converter para maiúsculas
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Verificar formato básico
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Reorganizar e converter letras em números
11 const rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
12 const converted = rearranged.split('').map(char => {
13 if (/[A-Z]/.test(char)) {
14 return (char.charCodeAt(0) - 55).toString();
15 }
16 return char;
17 }).join('');
18
19 // Calcular mod 97
20 let remainder = 0;
21 for (let i = 0; i < converted.length; i++) {
22 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
23 }
24
25 return remainder === 1;
26}
27
28// Exemplo de uso
29console.log(validateIban('DE89 3704 0044 0532 0130 00')); // true
30console.log(validateIban('GB29 NWBK 6016 1331 9268 19')); // true
31console.log(validateIban('DE89 3704 0044 0532 0130 01')); // false (dígitos de verificação inválidos)
321def validate_iban(iban):
2 # Remover espaços e converter para maiúsculas
3 iban = iban.replace(' ', '').upper()
4
5 # Verificação de formato básico
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Mover os primeiros 4 caracteres para o final
10 rearranged = iban[4:] + iban[:4]
11
12 # Converter letras em números (A=10, B=11, ..., Z=35)
13 converted = ''
14 for char in rearranged:
15 if char.isalpha():
16 converted += str(ord(char) - 55)
17 else:
18 converted += char
19
20 # Verificar se mod 97 é igual a 1
21 return int(converted) % 97 == 1
22
23# Exemplo de uso
24print(validate_iban('DE89 3704 0044 0532 0130 00')) # True
25print(validate_iban('GB29 NWBK 6016 1331 9268 19')) # True
26print(validate_iban('DE89 3704 0044 0532 0130 01')) # False (dígitos de verificação inválidos)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Remover espaços e converter para maiúsculas
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Verificação de formato básico
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Mover os primeiros 4 caracteres para o final
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Converter letras em números
15 StringBuilder converted = new StringBuilder();
16 for (char c : rearranged.toCharArray()) {
17 if (Character.isLetter(c)) {
18 converted.append(c - 'A' + 10);
19 } else {
20 converted.append(c);
21 }
22 }
23
24 // Calcular mod 97
25 BigInteger numeric = new BigInteger(converted.toString());
26 return numeric.mod(BigInteger.valueOf(97)).intValue() == 1;
27 }
28
29 public static void main(String[] args) {
30 System.out.println(validateIban("DE89 3704 0044 0532 0130 00")); // true
31 System.out.println(validateIban("GB29 NWBK 6016 1331 9268 19")); // true
32 System.out.println(validateIban("DE89 3704 0044 0532 0130 01")); // false
33 }
34}
35Geração de IBAN
1function generateIban(countryCode) {
2 const countryFormats = {
3 'DE': { length: 22, bbanPattern: '8n10n' },
4 'GB': { length: 22, bbanPattern: '4a6n8n' },
5 'FR': { length: 27, bbanPattern: '5n5n11c2n' }
6 // Adicionar mais países conforme necessário
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Código de país ${countryCode} não suportado`);
11 }
12
13 // Gerar BBAN aleatório com base no padrão do país
14 let bban = '';
15 const pattern = countryFormats[countryCode].bbanPattern;
16 let i = 0;
17
18 while (i < pattern.length) {
19 const count = parseInt(pattern.substring(i + 1), 10);
20 const type = pattern[i];
21
22 if (type === 'n') {
23 // Gerar caracteres numéricos
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Gerar caracteres alfabéticos
29 for (let j = 0; j < count; j++) {
30 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
31 }
32 } else if (type === 'c') {
33 // Gerar caracteres alfanuméricos
34 for (let j = 0; j < count; j++) {
35 const isLetter = Math.random() > 0.5;
36 if (isLetter) {
37 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
38 } else {
39 bban += Math.floor(Math.random() * 10);
40 }
41 }
42 }
43
44 i += 2;
45 }
46
47 // Calcular dígitos de verificação
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Criar IBAN inicial com '00' como dígitos de verificação
55 const initialIban = countryCode + '00' + bban;
56
57 // Reorganizar e converter letras em números
58 const rearranged = bban + countryCode + '00';
59 const converted = rearranged.split('').map(char => {
60 if (/[A-Z]/.test(char)) {
61 return (char.charCodeAt(0) - 55).toString();
62 }
63 return char;
64 }).join('');
65
66 // Calcular 98 menos mod 97
67 let remainder = 0;
68 for (let i = 0; i < converted.length; i++) {
69 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
70 }
71
72 const checkDigits = (98 - remainder).toString().padStart(2, '0');
73 return checkDigits;
74}
75
76// Exemplo de uso
77console.log(generateIban('DE')); // Gera um IBAN alemão válido
78console.log(generateIban('GB')); // Gera um IBAN do Reino Unido válido
791import random
2import string
3
4def generate_iban(country_code):
5 country_formats = {
6 'DE': {'length': 22, 'bban_format': '8n10n'},
7 'GB': {'length': 22, 'bban_format': '4a6n8n'},
8 'FR': {'length': 27, 'bban_format': '5n5n11c2n'}
9 # Adicionar mais países conforme necessário
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Código de país {country_code} não suportado")
14
15 # Gerar BBAN aleatório com base no formato do país
16 bban = ''
17 format_str = country_formats[country_code]['bban_format']
18 i = 0
19
20 while i < len(format_str):
21 count = int(''.join(c for c in format_str[i+1:] if c.isdigit()))
22 type_char = format_str[i]
23
24 if type_char == 'n': # Numérico
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Alfabético
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alfanumérico
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Calcular dígitos de verificação
34 check_digits = calculate_check_digits(country_code, bban)
35
36 return country_code + check_digits + bban
37
38def calculate_check_digits(country_code, bban):
39 # Criar string para cálculo do dígito de verificação
40 check_string = bban + country_code + '00'
41
42 # Converter letras em números (A=10, B=11, ..., Z=35)
43 numeric = ''
44 for char in check_string:
45 if char.isalpha():
46 numeric += str(ord(char.upper()) - 55)
47 else:
48 numeric += char
49
50 # Calcular 98 menos mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Exemplo de uso
57print(generate_iban('DE')) # Gera um IBAN alemão válido
58print(generate_iban('GB')) # Gera um IBAN do Reino Unido válido
59Referências e Leituras Adicionais
- ISO 13616-1:2007 - Especificação oficial da estrutura IBAN
- Registro SWIFT IBAN - Fonte autoritativa para formatos IBAN específicos por país
- ISO 7064:2003 - Especificação do algoritmo de dígito de verificação MOD 97
- Conselho de Pagamentos Europeu - SEPA - Documentação da Área Única de Pagamentos em Euros
- Banco Central Europeu - Sistemas de Pagamento - Padrões de integração bancária europeia
- Banco de Compensações Internacionais - Sistemas de Pagamento - Padrões internacionais de sistemas de pagamento
Comece a Testar IBANs
Precisa de dados de teste para seu sistema de pagamento? Gere um IBAN válido para qualquer país suportado acima, ou cole um IBAN existente para verificar sua estrutura. A ferramenta é executada completamente no seu navegador — sem cadastros, sem chaves de API, sem envio de dados para servidores.
Dica rápida: Gere IBANs de múltiplos países para testar casos extremos. Sistemas de pagamento reais lidam com diversos formatos, e testar com o formato de apenas um país é uma fonte comum de bugs em produção.