Respostas diretas para tesoureiros, operações de pagamento, engenheiros e auditores. As perguntas estão formuladas do jeito que as pessoas realmente perguntam. Para mais detalhes técnicos, consulte a Referência técnica.
Para líderes de tesouraria e finanças#
O que é pain.001, em um parágrafo?
pain.001 é a mensagem ISO 20022 que um cliente envia ao seu banco para iniciar transferências de crédito — o sucessor XML de formatos como o SWIFT MT101 e arquivos planos domésticos. Seu banco a valida contra um esquema e um rulebook de esquema antes de aceitá-la. O Pain001 (o software) produz esses arquivos a partir dos dados que você já tem e comprova que são válidos antes do envio.
Qual é a diferença entre pain.001 e pain.008?
A direção do fluxo. pain.001 inicia transferências de crédito — você envia dinheiro. pain.008 inicia débitos diretos — você cobra valores que lhe são devidos sob um mandato. O Pain001 gera ambos: dez versões de pain.001 (de .001.03 a .001.12) e pain.008.001.02.
Ainda enviamos arquivos MT101. Quão urgente é a migração?
Urgente. A SWIFT aposentou as mensagens MT das categorias 1, 2 e 9 para instruções de pagamento interbancárias internacionais em novembro de 2025; os canais corporativos que ainda aceitam MT o fazem a critério de cada banco e com prazo contado. O loader MT101 converte fluxos MT101 existentes em pain.001 validado sem redigitar nada.
O que o prazo de endereços estruturados de novembro de 2026 significa para nós?
A partir do fim de novembro de 2026, endereços postais totalmente não estruturados deixam de ser aceitos em pagamentos internacionais CBPR+; os endereços devem ser estruturados ou híbridos — elementos discretos como cidade () e país () em vez de linhas de texto livre. Se seus dados mestres guardam endereços como blocos de texto, o trabalho está nos seus dados, não na sua conexão bancária. Comece por aí. O briefing de 2026 cobre o cronograma em detalhes.
Quanto custa o Pain001?
Nada. O núcleo tem licença dupla Apache-2.0 / MIT; os pacotes complementares são Apache-2.0. Uso comercial, modificação e redistribuição são todos permitidos. Como referência de escala, apenas o SDK de tradução da SWIFT é listado por €10,000–30,000 ao ano.
Para operações de pagamento#
Por que os bancos rejeitam arquivos de pagamento?
Quatro causas recorrentes: violações de esquema (elemento errado, versão errada, namespace errado), identificadores inválidos (falhas de checksum de IBAN, BICs malformados), totais de controle quebrados (NbOfTxs / CtrlSum divergentes das transações) e caracteres fora do conjunto latino ISO 20022. O Pain001 verifica os quatro antes que o arquivo exista: validação por JSON Schema em cada registro, verificações mod-97 de IBAN e ISO 9362 de BIC, totais de controle recalculados, transliteração do conjunto de caracteres e validação XSD final do XML renderizado.
Podemos validar um arquivo sem gerar nada?
Sim — pain001 --dry-run (ou o subcomando validate, ou POST /api/v1/validate). Código de saída 0 significa válido; 1 significa falha de validação com erros em nível de campo. Integre-o à CI ou a uma checklist de pré-envio.
Quais rulebooks SEPA são cobertos?
Cinco rulebooks de esquema vêm incluídos: SEPA Credit Transfer (sepa-sct), SEPA Instant (sepa-inst), SEPA Direct Debit Core (sepa-sdd), SEPA B2B (sepa-b2b) e transferência de crédito transfronteiriça (xborder-ct). Use --scheme para ver cada regra aprovada ou reprovada.
Nossos dados vivem no Excel. Qual é o problema?
O Excel converte silenciosamente strings parecidas com IBAN em números. O loader de Excel lê .xlsx/.xlsm diretamente e interrompe imediatamente se colunas de IBAN contiverem células numéricas — a corrupção é capturada no carregamento, não no banco.
Como ele lida com um lote de 500,000 linhas?
--streaming processa a entrada em blocos com memória limitada (padrão de 1,000 transações), cada um emitido como seu próprio arquivo XML com totais de controle corretamente recalculados. Pelo mesmo motivo, a API REST oferece POST /api/v1/generate/async com polling de jobs.
Para engenheiros e arquitetos#
Como integramos — biblioteca, CLI ou API?
As três superfícies existem como cidadãs de primeira classe: uma API Python tipada, uma CLI com códigos de saída amigáveis à CI e um microsserviço FastAPI (pain001 serve) com endpoints síncronos, de jobs assíncronos, de health e de métricas Prometheus. O mesmo pipeline de validação por baixo, então os resultados nunca divergem entre as superfícies.
A geração de XML é mesmo segura contra arredondamento de float?
Os valores são decimal.Decimal de ponta a ponta na geração e na validação de esquema — analisados como decimais exatos, somados como decimais exatos, renderizados sem representação em float. Os totais de controle são recalculados a partir dos registros validados, nunca aceitos da entrada.
Qual é a postura de segurança?
Todo o parsing de XML passa pelo defusedxml (bloqueando ataques XXE e de expansão de entidades); não há lxml na árvore de dependências. As entradas passam por um validador de path traversal. A imagem Docker roda sem root. Um SBOM CycloneDX é gerado para as releases do núcleo, e a descoberta de plugins de terceiros pode ser desativada por completo com PAIN001_DISABLE_PLUGINS=1.
Como a qualidade é imposta?
Cobertura de linhas e ramificações de 100% como portão rígido de CI no núcleo (verificável: 3,828 linhas, 926 ramificações a 100%), mypy estrito, cobertura de docstrings de 100%, linting de segurança com Bandit e pip-audit, e varredura CodeQL. Os pacotes complementares seguem a mesma disciplina de cobertura de 100%.
Podemos estendê-lo para um formato proprietário?
Sim — quatro grupos de entry points de plugin (pain001.loaders, pain001.validators, pain001.schemes, pain001.writers). O loader de Excel é ele próprio um plugin que usa o protocolo público, servindo também como implementação de referência.
Para auditores e compliance#
Podemos reproduzir um arquivo gerado no trimestre passado?
Sim. Fixe a versão do pacote, reproduza a mesma entrada e a saída é determinística. Como a toolchain é de código aberto, a trilha de auditoria se estende ao próprio caminho do código — não apenas a um atestado do fornecedor.
Os dados de pagamento saem do nosso ambiente?
Não. Todo componente — CLI, biblioteca, API REST, servidor MCP, LSP — executa localmente. Não há telemetria, callback SaaS nem serviço externo de validação. O servidor MCP fala apenas stdio e todas as suas 17 ferramentas são anotadas como somente leitura e idempotentes.
Quem mantém o Pain001?
Sebastien Rousseau, líder de engenharia fintech baseado em Londres, com contribuidores da comunidade. O desenvolvimento é público no GitHub, as releases são publicadas no PyPI e o changelog é versionado a cada release.