1001Ferramentas
🏦Validadores

Validador de Conta Bancária por País

Valida o formato básico de número de conta bancária por país: tamanho e padrão para Brasil (X-D), Portugal (NIB 21 dígitos), EUA (routing 9), Canadá, Reino Unido.

Formato de conta bancária por país: referência para devs

Não existe padrão global para conta bancária. O IBAN (ISO 13616) foi desenhado em 1997 como camada de harmonização pan-europeia, mas a adoção para no perímetro EU/EFTA mais alguns países da América do Sul e Oriente Médio. O resto do mundo — incluindo Brasil, EUA, Reino Unido (doméstico), Canadá e Japão — mantém o formato legado. Um validador multi-país robusto precisa ramificar por país antes de aplicar as regras abaixo.

Tabela rápida de formatos por país

  • Brasil: agencia 4 dígitos + DV opcional de 1 dígito; conta 4-10 dígitos + DV de 1 dígito. Algoritmo varia por banco (sem padrão nacional) — ver validador-conta-bancaria.
  • Estados Unidos: ABA Routing Number de 9 dígitos com checksum mod-10 ponderado; conta de 4-17 dígitos sem DV nacional.
  • Reino Unido: sort code de 6 dígitos no formato XX-XX-XX + conta de 8 dígitos. Sort code roteia para a agência; conta sem DV embutido. Confirmation of Payee (CoP), em produção desde 2020, valida o nome do titular contra a conta.
  • Alemanha: só IBAN desde 2014 (DE + 20 chars). O par BLZ + Kontonummer legado sumiu dos formulários de usuário final.
  • França: RIB (Relevé d'Identité Bancaire), 23 caracteres: 5 banco + 5 agência + 11 conta + 2 chave RIB (mod 97). RIB está embutido no IBAN francês.
  • Japão: 4 dígitos banco + 3 dígitos agência + 7 dígitos conta, sem DV embutido.
  • China: 16-19 dígitos em formato UnionPay; DV via Luhn.
  • Índia: IFSC de 11 caracteres (4 letras + 0 + 6 alfanuméricos) + conta de 9-18 dígitos.

ABA Routing Number (EUA): algoritmo mod-10

O ABA Routing Transit Number (RTN) de 9 dígitos carrega checksum mod-10 ponderado. Dados d1..d9, a soma 3*(d1+d4+d7) + 7*(d2+d5+d8) + (d3+d6+d9) precisa ser divisível por 10. Os dois primeiros dígitos codificam o distrito do Federal Reserve. RTNs são impressos no canto inferior esquerdo dos cheques em papel na linha MICR (fonte E-13B) para processamento automático.

function validarABA(rtn) {
  if (!/^\d{9}$/.test(rtn)) return false
  const d = rtn.split('').map(Number)
  const soma = 3*(d[0]+d[3]+d[6]) + 7*(d[1]+d[4]+d[7]) + (d[2]+d[5]+d[8])
  return soma % 10 === 0
}

Sort code e conta UK: as tabelas de modulus check

O Reino Unido usa sort codes de 6 dígitos (3 pares com hífen) e contas de 8 dígitos. A validade é governada pelo documento "Modulus Checking" da Vocalink, um PDF público que mapeia cada faixa de sort code para um de três algoritmos: módulo 10, módulo 11 ou DBLAL (double-alternating). Algumas faixas exigem rodar dois algoritmos seguidos e algumas pulam validação inteira. Para apps reais, use a API Confirmation of Payee em vez de reimplementar a tabela.

Trilhos cross-border e o papel do SWIFT

Para transferências internacionais, o par universal é BIC (código SWIFT) + IBAN (ou conta local onde IBAN não existe). SWIFT roteia a mensagem entre bancos; IBAN identifica a conta destino. Alternativas modernas que driblam o SWIFT em pagamentos domésticos instantâneos:

  • Brasil: Pix (BCB, 2020) — instantâneo 24/7, chaveado por CPF/CNPJ/email/celular/UUID aleatório.
  • EUA: FedNow (Federal Reserve, 2023) e RTP (The Clearing House, 2017).
  • Reino Unido: Faster Payments Service (FPS), desde 2008.
  • União Europeia: SEPA Instant Credit Transfer (SCT Inst), desde 2017.
  • Índia: UPI (NPCI, 2016), chaveado por virtual payment address.

Fintech brasileira, cross-border e os rails da dLocal/EBANX

A expansão das fintechs brasileiras (Wise, Nubank, Stripe Connect BR) mostra o padrão de convergência: trilho local para receber (Pix, TED) + SWIFT/IBAN para enviar ao exterior. Processadoras de e-commerce multi-país Mercado Pago, dLocal, EBANX escondem tudo isso atrás de uma API única: você faz POST do cliente com o documento local e elas escolhem o trilho por país. Para devs construindo formulários multi-país, bibliotecas como iban (npm), schwifty (Python) e BankAccountValidator (.NET) cobrem a família IBAN; checagens locais sensíveis (Brasil, UK, EUA) tendem a precisar de pacotes específicos.

PCI DSS e armazenamento de dados de conta

Números de conta bancária não são "cardholder data" sob PCI DSS (que cobre PAN, CVV, expiração), mas são dado pessoal regulado sob LGPD, GDPR e leis equivalentes. Nunca guarde número de conta inteiro em armazenamento do client (localStorage, IndexedDB) e nunca logue em texto puro. Criptografe em repouso com envelope encryption (AWS KMS, GCP KMS), mascare todos menos os últimos 4 nas UIs e gire tokens de acesso periodicamente.

FAQ

Brasil usa IBAN?

Só para transferências internacionais. Contas domésticas brasileiras usam o padrão agência + conta + DV; o IBAN é gerado sob demanda para mensagens SWIFT.

O ABA Routing dos EUA tem mesmo 9 dígitos?

Sim — exatamente 9 dígitos com checksum mod-10 ponderado. Contas nos EUA variam de 4-17 dígitos e não têm DV embutido.

Existe uma biblioteca que cubra todos os países?

Não existe uma completamente abrangente. O iban do npm cobre os países ISO 13616; você ainda precisa de pacotes específicos para Brasil, ABA dos EUA, Vocalink do UK e IFSC da Índia.

O que é Confirmation of Payee?

Um serviço britânico (obrigatório desde 2020 para bancos grandes) que cruza o nome do titular contra o número da conta antes de permitir a transferência. Bloqueia fraude de pagamento push autorizado e está sendo adotado por outros países.

Posso validar qualquer conta só pelo formato?

Não. Checagem de formato diz que a string está bem-formada; não confirma que a conta existe ou pertence à pessoa indicada. Para isso você precisa de APIs bancárias, serviços tipo CoP ou pre-notes (pequenos débitos/créditos de teste).

Ferramentas Relacionadas