ISO 20022 explicado

O que é pain.001? Iniciação de transferências no ISO 20022

A mensagem ISO 20022 que uma empresa envia ao banco para ordenar transferências: o que é, como é montada, qual versão usar e um exemplo completo que valida contra o esquema oficial.

pain.001 é a mensagem ISO 20022 que uma empresa envia ao seu banco para ordenar uma ou mais transferências. O nome completo é Customer Credit Transfer Initiation: "pain" é a família de mensagens de iniciação de pagamentos, .001 é o número da mensagem e o sufixo, como pain.001.001.09, é a versão. É XML, é validada contra um esquema oficial (XSD) e substitui formatos CSV específicos de cada banco e a mensagem de texto SWIFT MT101.

pain.001 em um minuto#

  • Quem envia: uma empresa (o devedor, ou um agente que atua em seu nome) envia ao próprio banco (o banco do devedor).
  • O que contém: um ou mais lotes de transferências, cada um com uma conta do devedor, uma data de execução solicitada e qualquer número de pagamentos a credores.
  • O que volta: o banco responde com pain.002, o Customer Payment Status Report, aceitando ou rejeitando o arquivo ou transações individuais com códigos de motivo ISO.
  • O que acontece depois: uma vez aceita, o banco transforma cada instrução em mensagens interbancárias como pacs.008, que a empresa nunca vê.
  • Onde é usada: transferências SEPA segundo os rulebooks do EPC, pagamentos internacionais na rede Swift sob o CBPR+ (pain.001.001.09) e muitos esquemas domésticos. O corpus de exemplos do Pain001 cobre 42 cenários em 17 mercados.

Como uma mensagem pain.001 é estruturada#

Todas as versões compartilham o mesmo esqueleto de três níveis dentro de um elemento <CstmrCdtTrfInitn>.

Nível Elemento O que contém
1 <GrpHdr> Group Header (cabeçalho do grupo) ID da mensagem, data e hora de criação, número de transações (NbOfTxs), soma de controle (CtrlSum), parte iniciadora
2 <PmtInf> Payment Information (informações de pagamento) Um lote: método de pagamento, data de execução solicitada, devedor, conta e banco do devedor, responsável pelas tarifas
3 <CdtTrfTxInf> Credit Transfer Transaction (transação de transferência) Um pagamento: referência ponta a ponta, valor e moeda, credor, conta e banco do credor, informações de remessa

Um arquivo pode conter vários lotes <PmtInf>, e cada lote muitos pagamentos <CdtTrfTxInf>. NbOfTxs e CtrlSum aparecem tanto no nível do arquivo quanto no do lote e precisam bater com os pagamentos que contam, um dos motivos mais comuns para um banco rejeitar um arquivo.

Um exemplo completo de pain.001#

Esta é uma única transferência SEPA em pain.001.001.09, extraída sem alterações do corpus de exemplos do Pain001. Ela valida contra o XSD oficial do ISO 20022. As partes, os IBANs e os BICs são fictícios.

<?xml version='1.0' encoding='UTF-8'?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
  <CstmrCdtTrfInitn>
    <GrpHdr>
      <MsgId>OML-SCT-20260921</MsgId>
      <CreDtTm>2026-09-21T12:00:00</CreDtTm>
      <NbOfTxs>1</NbOfTxs>
      <CtrlSum>2200.00</CtrlSum>
      <InitgPty>
        <Nm>Officine Meccaniche Lombarde SpA</Nm>
        <PstlAdr>
          <PstCd>20123</PstCd>
          <TwnNm>Milano</TwnNm>
          <Ctry>IT</Ctry>
          <AdrLine>Via Torino 15</AdrLine>
        </PstlAdr>
      </InitgPty>
    </GrpHdr>
    <PmtInf>
      <PmtInfId>SCT-20260921-IT-01</PmtInfId>
      <PmtMtd>TRF</PmtMtd>
      <BtchBookg>false</BtchBookg>
      <NbOfTxs>1</NbOfTxs>
      <CtrlSum>2200.00</CtrlSum>
      <PmtTpInf>
        <SvcLvl>
          <Cd>SEPA</Cd>
        </SvcLvl>
      </PmtTpInf>
      <ReqdExctnDt>
        <Dt>2026-09-22</Dt>
      </ReqdExctnDt>
      <Dbtr>
        <Nm>Officine Meccaniche Lombarde SpA</Nm>
        <PstlAdr>
          <PstCd>20123</PstCd>
          <TwnNm>Milano</TwnNm>
          <Ctry>IT</Ctry>
          <AdrLine>Via Torino 15</AdrLine>
        </PstlAdr>
      </Dbtr>
      <DbtrAcct>
        <Id>
          <IBAN>IT48T78971134594OGDKY5VXE41</IBAN>
        </Id>
      </DbtrAcct>
      <DbtrAgt>
        <FinInstnId>
          <BICFI>TLAOIT60</BICFI>
        </FinInstnId>
      </DbtrAgt>
      <ChrgBr>SLEV</ChrgBr>
      <CdtTrfTxInf>
        <PmtId>
          <EndToEndId>OML-2026-0921-01</EndToEndId>
        </PmtId>
        <Amt>
          <InstdAmt Ccy="EUR">2200.00</InstdAmt>
        </Amt>
        <CdtrAgt>
          <FinInstnId>
            <BICFI>MHXHITI0</BICFI>
          </FinInstnId>
        </CdtrAgt>
        <Cdtr>
          <Nm>Fonderia Bresciana Srl</Nm>
          <PstlAdr>
            <PstCd>25121</PstCd>
            <TwnNm>Brescia</TwnNm>
            <Ctry>IT</Ctry>
          </PstlAdr>
        </Cdtr>
        <CdtrAcct>
          <Id>
            <IBAN>IT23J14887404856NF3794IGWXN</IBAN>
          </Id>
        </CdtrAcct>
        <RmtInf>
          <Ustrd>Fattura 117/2026</Ustrd>
        </RmtInf>
      </CdtTrfTxInf>
    </PmtInf>
  </CstmrCdtTrfInitn>
</Document>

Teste seus próprios dados na demonstração no navegador: ela gera um arquivo pain.001 a partir de um CSV e o valida contra o esquema oficial sem que os dados saiam do seu computador.

Versões do pain.001#

A ISO publica uma nova versão quando o modelo da mensagem muda. Bancos e esquemas aceitam versões específicas, então a versão que você envia é a indicada na documentação do canal do seu banco.

Versão Observações
pain.001.001.03 O padrão consolidado de SEPA e CGI; identifica bancos com <BIC>
.04, .05, .06, .07, .08 Versões de manutenção usadas por canais específicos
pain.001.001.09 A versão de 2019 escolhida pelo CBPR+ para a rede Swift; identifica bancos com <BICFI> e acrescenta suporte a LEI e UETR
.10, .11, .12 Refinamentos posteriores a 2019
pain.001.001.13 Publicada pela ISO em 19 de março de 2026; acrescenta um identificador único de transação opcional (UnqTxIdr)

A matriz de compatibilidade mostra quais versões o Pain001 gera, valida e entre quais migra dados.

Mensagem Direção Finalidade
pain.001 Empresa para o seu banco Ordena transferências (o dinheiro sai)
pain.002 Banco para a empresa Informa o status de um pain.001 ou pain.008: aceito, parcialmente aceito ou rejeitado, com códigos de motivo
pain.008 Empresa para o seu banco Ordena débitos diretos (cobra valores com base em um mandato)
pacs.008 Banco para banco A transferência interbancária em que uma instrução pain.001 se transforma
MT101 Empresa ou banco, via Swift A antiga mensagem de texto "Request for Transfer" que o pain.001 substitui. Em agosto de 2026 a Swift adiou a desativação do relay interbancário de MT101 (Swift); veja MT101 para pain.001

O glossário define o restante do vocabulário ISO 20022 em linguagem simples.

Por que os bancos rejeitam arquivos pain.001#

Um arquivo pode ser um XML bem formado e mesmo assim ser rejeitado. As verificações se acumulam em camadas:

  1. Esquema: o arquivo precisa validar contra o XSD oficial da sua versão.
  2. Qualidade dos dados: os IBANs passam nos dígitos verificadores, os BICs estão bem formados, datas e valores são válidos, e NbOfTxs e CtrlSum batem com os pagamentos.
  3. Regras do esquema: SEPA, CBPR+ e esquemas domésticos acrescentam restrições próprias, como o conjunto de caracteres permitido ou um endereço postal estruturado.
  4. Perfil e canal do seu banco: cada banco publica suas próprias diretrizes de uso além das regras do esquema.

O Pain001 verifica as três primeiras camadas antes que o arquivo chegue ao banco e deixa claro que a quarta cabe ao banco confirmar.

Como criar um arquivo pain.001#

  • A partir de uma planilha: Excel para pain.001 transforma uma lista de pagamentos em Excel ou CSV em um arquivo validado.
  • No navegador: a demonstração gera e valida um arquivo localmente, sem upload.
  • Por código ou linha de comando: instale a biblioteca pain001 de código aberto e execute:
pain001 -t pain.001.001.09 -d payments.csv -o out/

A referência técnica cobre todas as opções, e as perguntas frequentes respondem ao que as equipes de tesouraria, operações e engenharia mais perguntam.

Fontes#