Compreender o formato SEPA pain.001: um guia completo
O ficheiro pain.001 é o formato padrão para as transferências de crédito SEPA. Neste guia, explicamos a sua estrutura XML, os campos obrigatórios e os erros comuns a evitar.
O que é o pain.001?
O pain.001 (Payment Initiation) é a mensagem XML normalizada pelo EPC (European Payments Council) para iniciar transferências de crédito SEPA. É utilizado pelas empresas para transmitir ordens de pagamento ao seu banco.
Este formato baseia-se na norma ISO 20022 e faz parte da família de mensagens Customer Credit Transfer Initiation. É aceite por todos os bancos da zona SEPA, que abrange 36 países.
O pain.001 substituiu em grande medida os formatos de pagamento nacionais mais antigos (como o CFONB em França, o DTA na Alemanha e o CLIEOP nos Países Baixos). Um único ficheiro pain.001 pode conter milhares de transações de pagamento individuais, tornando-o o padrão para processamento em lote de salários, pagamentos a fornecedores e operações de tesouraria. O formato complementar pain.008 gere o fluxo inverso — os débitos diretos SEPA (SDD) para cobrar dinheiro a devedores.
Estrutura do ficheiro XML
Um ficheiro pain.001 está estruturado em três níveis: GroupHeader (informação global), PaymentInformation (informação de débito) e CreditTransferTransactionInformation (detalhes de cada transferência):
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>MSG-20260210-001</MsgId>
<CreDtTm>2026-02-10T10:00:00</CreDtTm>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>4500.00</CtrlSum>
<InitgPty><Nm>ACME SA</Nm></InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>PMT-001</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<ReqdExctnDt><Dt>2026-02-12</Dt></ReqdExctnDt>
<Dbtr><Nm>ACME SA</Nm></Dbtr>
<DbtrAcct>
<Id><IBAN>BE68539007547034</IBAN></Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId><BIC>GEBABEBB</BIC></FinInstnId>
</DbtrAgt>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>INV-2026-001</EndToEndId>
</PmtId>
<Amt><InstdAmt Ccy="EUR">1500.00</InstdAmt></Amt>
<CdtrAgt>
<FinInstnId><BIC>ABNANL2A</BIC></FinInstnId>
</CdtrAgt>
<Cdtr><Nm>Supplier NV</Nm></Cdtr>
<CdtrAcct>
<Id><IBAN>NL91ABNA0417164300</IBAN></Id>
</CdtrAcct>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>O elemento raiz deve incluir o namespace XML correto (xmlns) correspondente à versão utilizada. O GroupHeader aparece exatamente uma vez e contém o ID da mensagem, o timestamp de criação, o número de transações e a soma de controlo. Cada bloco PmtInf agrupa as transações que partilham a mesma conta de devedor e data de execução. Dentro de cada PmtInf, um ou mais elementos CdtTrfTxInf descrevem as transferências de crédito individuais.
Campos obrigatórios
Estes são os campos essenciais exigidos em qualquer ficheiro pain.001 válido:
- MsgId — Identificador único da mensagem (máx. 35 caracteres, único por envio)
- CreDtTm — Data e hora de criação no formato ISO 8601 (ex. 2026-02-10T10:00:00)
- NbOfTxs — Número total de transacções no ficheiro
- CtrlSum — Soma de controlo: total de todos os montantes das transferências
- IBAN — IBAN do devedor e de cada credor no formato europeu padrão
- PmtInfId — Identificador de informação de pagamento — único dentro do ficheiro. Identifica um grupo de transações que partilham o mesmo devedor e data de execução. Utilizado para reconciliação.
- PmtMtd — Método de pagamento: 'TRF' para transferência de crédito. Este campo indica ao banco que tipo de instrução SEPA executar.
- ReqdExctnDt — Data de execução solicitada no formato AAAA-MM-DD. Deve ser um dia útil bancário futuro. Os bancos aceitam geralmente datas até 30 dias no futuro.
- DbtrAcct / IBAN — IBAN do devedor — a conta a debitar. Deve passar a validação da soma de verificação mod-97 e corresponder a uma conta registada para SEPA no seu banco.
- EndToEndId — Identificador end-to-end para cada transação (máx. 35 caracteres). Percorre toda a cadeia de pagamento e aparece no extrato bancário do credor. Fundamental para a reconciliação.
Erros comuns
Estes erros são frequentemente encontrados durante a validação:
CtrlSum incorrecta
A soma de controlo não corresponde à soma dos montantes individuais. Verifique o arredondamento (máx. 2 casas decimais).
IBAN inválido
Um IBAN mal formado ou com soma de verificação incorrecta. Utilize um validador de IBAN antes de integrar os dados.
Data de execução no passado
O ReqdExctnDt (data de execução solicitada) deve ser hoje ou uma data futura.
MsgId duplicado
Os bancos rejeitam ficheiros com um MsgId já processado. Utilize uma combinação de timestamp e número de sequência único. Nunca reutilize MsgIds, mesmo em relações bancárias diferentes.
Versão do namespace incorreta
O namespace XML deve corresponder à versão esperada pelo seu banco. Utilizar o namespace pain.001.001.03 com uma estrutura pain.001.001.09 causará um erro de validação de esquema. Confirme com o seu banco qual a versão suportada.
Caracteres especiais em campos de texto
SEPA permite apenas um conjunto de caracteres limitado em campos de texto: a-z, A-Z, 0-9 e alguns caracteres especiais (/ - ? : ( ) . , ' + espaço). Caracteres acentuados como ä, ö, ü, é, ñ devem ser transliterados. O símbolo do euro (€) não é permitido em campos de texto.
Versões do pain.001: qual devo usar?
O formato pain.001 evoluiu através de várias versões desde a sua introdução. Cada versão acrescenta novos campos e capacidades mantendo compatibilidade retroativa. O seu banco pode suportar uma ou mais versões — consulte sempre o respetivo guia de implementação.
| Versão | Namespace | Ano | Alterações principais |
|---|---|---|---|
| pain.001.001.03 | urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 | 2009 | Versão SEPA original, ainda amplamente suportada. Campos básicos de transferência de crédito. |
| pain.001.001.09 | urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 | 2019 | Acrescenta informação de remessa estruturada, relatórios regulatórios e códigos de propósito. Recomendação atual do EPC. |
| pain.001.001.11 | urn:iso:std:iso:20022:tech:xsd:pain.001.001.11 | 2023 | Última versão ISO. Suporte LEI melhorado, campos de morada adicionais. A adoção varia por banco. |
O ValidateFin suporta as três versões principais. Para novas implementações, recomenda-se pain.001.001.09, pois oferece o melhor equilíbrio entre funcionalidades e compatibilidade bancária. Teste sempre com o seu banco antes de mudar de versão em produção.
Boas práticas para gerar ficheiros pain.001
Siga estas diretrizes comprovadas para minimizar rejeições e garantir um processamento de pagamentos fluido:
- Valide antes de enviar — Valide sempre o seu ficheiro pain.001 contra o esquema XSD antes de carregá-lo para o seu banco. O ValidateFin deteta 100% dos erros estruturais e a maioria das violações de regras de negócio em segundos.
- Use identificadores únicos de forma consistente — MsgId, PmtInfId e EndToEndId devem seguir uma convenção de nomenclatura previsível (ex. prefixos baseados em data). Isto simplifica enormemente a reconciliação e a resolução de problemas.
- Agrupe as transações de forma inteligente — Agrupe pagamentos por data de execução e moeda no mesmo bloco PmtInf. Isto reduz comissões de processamento nalguns bancos e torna a reconciliação mais clara.
- Gira corretamente a codificação de caracteres — Gere sempre os ficheiros em UTF-8. Translitere os caracteres não SEPA (é→e, ß→ss, ü→ue) antes de construir o XML. Os caracteres não transliterados causam rejeições silenciosas nalguns bancos.
- Teste primeiro com lotes pequenos — Ao implementar um novo gerador pain.001 ou mudar de versão, comece com um ficheiro contendo 2-3 transações de teste. Verifique que o banco as aceita e processa corretamente antes de enviar volumes de produção.
Para operações de pagamento de alto volume, considere implementar a validação automatizada como parte do seu pipeline de pagamentos. Gere o XML, valide com o ValidateFin e apenas envie ao banco se a validação passar.
Valide o seu ficheiro pain.001
A nossa ferramenta de validação SEPA verifica o seu ficheiro com o esquema XSD oficial do EPC e apresenta o detalhe de cada transacção. Nenhum ficheiro é enviado para os nossos servidores.
Validar o meu ficheiro SEPAPerguntas frequentes
O que é um ficheiro SEPA pain.001?
Um ficheiro SEPA pain.001 é um documento XML conforme com ISO 20022 que inicia pagamentos de transferência de crédito. Contém informação do devedor, dados do credor, montantes e referências de pagamento. Os bancos utilizam este formato normalizado para processar pagamentos em lote na zona SEPA de 36 países. Um único ficheiro pode conter milhares de transferências individuais.
Quais são os campos obrigatórios num ficheiro pain.001?
Os campos obrigatórios incluem MsgId (identificador da mensagem, máx. 35 caracteres), CreDtTm (timestamp de criação), NbOfTxs (número de transações), CtrlSum (soma de todos os montantes), InitgPty (parte iniciadora), PmtInfId (ID de informação de pagamento), PmtMtd (método de pagamento — TRF), ReqdExctnDt (data de execução), Dbtr (nome do devedor), DbtrAcct (IBAN do devedor) e, para cada transação: CdtrAcct (IBAN do credor), InstdAmt (montante com moeda) e EndToEndId (referência end-to-end).
Como posso validar o meu ficheiro SEPA pain.001 online?
Use a ferramenta gratuita de validação SEPA do ValidateFin para verificar o seu ficheiro pain.001 contra os esquemas XSD oficiais do EPC. Carregue o seu ficheiro XML — toda a validação ocorre localmente no browser sem transmitir dados para qualquer servidor, garantindo plena conformidade com o RGPD. A ferramenta valida estrutura, IBANs, BICs, montantes e somas de controlo.
Qual é a diferença entre pain.001 e pain.008?
Pain.001 (Customer Credit Transfer Initiation) é para transferências bancárias de saída — envia dinheiro a credores. Pain.008 (Customer Direct Debit Initiation) é para cobrar dinheiro a devedores — retira fundos das suas contas através de um mandato assinado. Ambos são formatos XML ISO 20022 processados pelos bancos na zona SEPA, mas têm campos obrigatórios e regras de negócio diferentes.
Qual versão de pain.001 devo usar?
Para novas implementações, recomenda-se pain.001.001.09, pois é a recomendação atual do EPC e oferece informação de remessa estruturada, códigos de propósito e campos de relatórios regulatórios. O pain.001.001.03 continua amplamente suportado para sistemas legados. Consulte sempre o seu banco sobre quais as versões aceites.
Que caracteres são permitidos nos campos de texto SEPA pain.001?
Os ficheiros de pagamento SEPA utilizam um conjunto de caracteres restrito definido pelo EPC: a-z, A-Z, 0-9 e os caracteres especiais / - ? : ( ) . , ' + e espaço. Caracteres nacionais com acentos (é, ü, ñ, etc.) devem ser transliterados. O símbolo do euro (€) e outros símbolos de moeda não são permitidos em campos de texto.
Como funciona o CtrlSum (soma de controlo) em pain.001?
O CtrlSum é uma soma de verificação que deve ser igual à soma exata de todos os valores InstdAmt individuais de todas as transações no ficheiro, arredondada a 2 casas decimais. Se existir mesmo uma diferença de €0,01, o ficheiro inteiro é rejeitado. Calcule somando os montantes pré-arredondados, não arredondando a soma total a posteriori.
Um ficheiro pain.001 pode conter transações em múltiplas moedas?
As transferências de crédito SEPA padrão (SCT) são apenas em EUR. Contudo, o próprio formato pain.001 suporta múltiplas moedas através do atributo Ccy do InstdAmt. Alguns bancos aceitam transações não EUR em pain.001 para pagamentos internacionais, mas depende da implementação do seu banco.
Quantas transações pode conter um único ficheiro pain.001?
A norma ISO 20022 não define um máximo, mas os limites práticos dependem do seu banco. A maioria dos bancos aceita ficheiros com até 100.000 transações. Os ficheiros muito grandes (>50.000 transações) podem demorar mais a processar e alguns bancos recomendam dividi-los.
O que acontece se o meu banco rejeitar um ficheiro pain.001?
Quando um banco rejeita um ficheiro pain.001, recebe-se um pain.002 (Payment Status Report) indicando o motivo da rejeição. Os códigos de rejeição comuns incluem AC01 (número de conta incorreto), AM05 (pagamento duplicado), DT01 (data inválida) e FF01 (formato de ficheiro inválido). Para prevenir rejeições, valide sempre o seu ficheiro com o ValidateFin antes da submissão.