Skip to main content
Voltar para Insights
Pagamentos8 min de leitura

ISO 20022 além da conversão de formato

Por que a classificação semântica nativa (Domain/Family/SubFamily) importa mais que parsing XML para reconciliação automatizada.

ISO 20022: Além da Conversão de Formato de Mensagens


A SWIFT completou a migração MT-para-MX em novembro de 2025. Os bancos em toda a zona SEPA agora enviam e recebem mensagens ISO 20022 como padrão. A migração está feita.

Exceto que não está. A maioria das implementações trata ISO 20022 como um formato de transmissão, XML entra, JSON sai, códigos proprietários internamente. Uma camada de conversão fica na fronteira do sistema, traduzindo entre o padrão externo e o que quer que o modelo interno seja. O extrato bancário chega como camt.053. O sistema o parseia, extrai campos, os mapeia para códigos internos e descarta a estrutura.

Isso funciona. Também é um desperdício da propriedade mais valiosa do padrão: seu modelo de classificação semântica.

O BankTransactionCode, Três Níveis de Significado

ISO 20022 define uma classificação hierárquica para cada transação financeira. Três níveis: Domain, Family, SubFamily. Juntos, formam um BankTransactionCode que diz exatamente o que uma transação é, não apenas seu valor e direção, mas seu significado econômico.

Código ISO 20022DomainFamilySubFamilySignificado
PMNT/RCDT/ESCTPaymentsReceived Credit TransferSEPA CTTransferência SEPA recebida
PMNT/RDDT/ESDDPaymentsReceived Direct DebitSEPA DDDébito direto SEPA recebido
PMNT/ICDT/ESCTPaymentsIssued Credit TransferSEPA CTTransferência SEPA enviada
PMNT/IDDT/ESDDPaymentsIssued Direct DebitSEPA DDDébito direto SEPA enviado
CAMT/MCOP/CHRGCash MgmtMiscellaneousChargesComissão ou taxa bancária

Quando seu sistema armazena esta classificação nativamente, quando PMNT/RCDT/ESCT é o código de transação interno, não uma tradução de algum código proprietário, a categorização de transações é automática. Sem tabela de mapeamento necessária para fluxos padrão. Sem heurísticas. O padrão já carrega a resposta.

A tabela de mapeamento se torna o que deveria ser: uma camada de override opcional para clientes que precisam de regras de contabilização GL personalizadas. O caminho padrão é zero-configuration porque o código ISO é auto-descritivo.

Códigos de Razão de R-Transactions, Tratamento Determinístico

pacs.004 (Payment Return) e camt.056 (Payment Cancellation Request) carregam códigos de razão estruturados de uma enumeração fechada definida pelo European Payments Council. Estes não são campos de texto livre. São instruções legíveis por máquina.

Código de RazãoSignificadoTipo de R-TransactionAção de Settlement
AC01Número de conta incorretoReject (pré-settlement)Sem impacto no ledger, apenas operações bancárias
AC04Conta encerradaReturnReverter valor liquidado
AM05Pagamento duplicadoReturnReverter valor liquidado
MD01Sem mandatoReturnReverter valor liquidado
MS02Rejeição do devedorReturn ou RefundDepende do período de retenção
DUPLEnvio duplicadoRefundNovo débito (reclamação pós-settlement)
CUSTSolicitado pelo originadorReversalLançamento de correção (Stornobuchung)
AGNTAgente incorretoRejectSem impacto no ledger

Quando o código de razão dirige a lógica de tratamento diretamente, o processamento de R-transactions se torna determinístico. O código indica o tipo. O tipo indica a ação de settlement. A ação de settlement indica o prazo PSD2 (D+1 para rejects, D+5 para returns Core DD, D+2 para returns B2B DD). Sem mapeamento intermediário. Sem ambiguidade.

Considere a alternativa: o sistema recebe uma pacs.004, extrai o código de razão, o busca em uma tabela de mapeamento, o traduz para um estado interno, e então aplica lógica de tratamento baseada nesse estado interno. Cada tradução é um potencial mismatch. Cada entrada de tabela de mapeamento é carga de manutenção. E quando um novo código de razão aparece no rulebook do EPC, alguém deve adicionar uma linha à tabela antes que o sistema possa tratá-lo.

Com modelos ISO nativos, um novo código de razão é uma nova variante de enum. O compilador indica cada handler que não o cobre.

Modelos Nativos vs. Conversão na Fronteira

Duas arquiteturas, comparadas diretamente:

AspectoConversão na FronteiraModelo Nativo
Representação internaCódigos proprietários, campos de estado personalizadosEstruturas ISO 20022 (Domain/Family/SubFamily)
Classificação de transaçõesRegras manuais ou matching heurísticoAutomática pelo BankTransactionCode
Tratamento de R-transactionsCódigo de razão → tabela lookup → estado interno → açãoCódigo de razão → tipo → ação (direto)
Importação de extratosParsear XML, extrair campos, mapear para códigos internosParsear em estruturas ISO nativas
Suporte multi-esquemaAdaptador por esquema com mapeamento personalizadoModelo compartilhado, parâmetros específicos por esquema
Suporte a novos códigosAdicionar entrada à tabela de mapeamento, testar, fazer deployAdicionar variante de enum, compilador marca handlers faltantes
ReconciliaçãoCódigos internos ↔ códigos de extrato (tradução necessária)Mesmos códigos no ledger e no extrato (match estrutural)
Reporting regulatórioExportar dados internos, traduzir para ISO para reguladoresExportar diretamente, formato interno É o formato de reporting

As duas últimas linhas são onde o custo operacional se acumula. A reconciliação, o matching de entradas internas do ledger contra extratos bancários, é o processo recorrente mais intensivo em mão de obra em operações financeiras. Se o ledger e o extrato bancário usam diferentes esquemas de classificação, cada match requer tradução. Se usam o mesmo esquema, o matching é estrutural: mesmo código, mesmo valor, mesma data. Pronto.

O reporting regulatório segue a mesma lógica. Bundesbank, EBA e reguladores nacionais requerem cada vez mais envios nativos ISO 20022. Se seu modelo interno já fala ISO 20022, o reporting é extração. Se não, o reporting é tradução, e cada tradução deve ser verificada.

O Que Isso Habilita

Três capacidades que a conversão na fronteira não pode fornecer eficientemente:

Reconciliação automatizada. Extratos bancários camt.053 usam BankTransactionCode. Se suas entradas internas do ledger usam os mesmos códigos, o matching é determinístico para fluxos padrão. O motor de matching com pontuação de confiança lida com os casos extremos (diferenças de timing, referências truncadas, taxas bancárias). Mas os fluxos padrão, que representam mais de 95% do volume, são matcheados automaticamente.

Straight-Through Processing. Uma pacs.008 recebida chega. O sistema a classifica por tipo de mensagem e direção (transferência recebida = PMNT/RCDT/ESCT). Registra a partida dobrada. Confirma. Sem humano no processo. Sem lookup em tabela de mapeamento. A mensagem carrega tudo que o sistema precisa para processá-la.

Arquitetura agnóstica de esquema. SEPA SCT, SEPA SDD Core, SEPA SDD B2B, SCT Inst, todos usam os mesmos tipos de mensagem ISO 20022 com diferentes parâmetros (ServiceLevel, LocalInstrument). Um único caminho de processamento lida com todos os esquemas. O comportamento específico do esquema está codificado na própria mensagem, não em código de adaptador por esquema.

A Questão da Migração

Se você está construindo um novo sistema hoje, o argumento é direto: use ISO 20022 nativamente. Não há razão para introduzir códigos proprietários que eventualmente precisará traduzir de volta para ISO para cada importação de extrato bancário, cada relatório regulatório e cada envio de clearing.

Se você está operando um sistema existente com códigos proprietários, o caminho de migração é incremental. Comece com novos tipos de transação, use códigos ISO desde o início. Mapeie códigos proprietários existentes para seus equivalentes ISO como exercício único. Com o tempo, os códigos proprietários se tornam aliases para a classificação ISO canônica, e eventualmente podem ser descontinuados.

O padrão existe. É exaustivo. É mantido por um organismo internacional. Construir alternativas proprietárias a ele é esforço de engenharia gasto em um problema que já foi resolvido.


Leia mais: Payments, Orquestração de Pagamentos | Connectivity, Financial Rails | Entendendo as R-Transactions SEPA


Fontes:

  • ISO 20022 BankTransactionCode, External Code Sets (enumeração Domain/Family/SubFamily)
  • European Payments Council: EPC016-06 (SEPA Core DD Rulebook), EPC222-07 (SEPA B2B DD Rulebook)
  • PSD2 (Diretiva 2015/2366), Art. 71 (transações não autorizadas), Art. 76 (direitos de reembolso)
  • HGB §239, lançamentos de correção (Stornobuchung) para contabilizações de reversão
  • SWIFT: migração MT-para-MX completada novembro 2025