pain.001 — Customer Credit Transfer Initiation
Le message qu'un ERP, un TMS ou un module bancaire envoie à la banque pour ordonner un lot de virements. Une enveloppe, un ordre de paiement, des transactions filles — le standard universel des initiations de virement depuis SEPA et CBPR+.
Objet et place dans le flux
pain.001 est le point d'entrée du « corporate to bank » dans la famille des paiements ISO 20022. Une entreprise (ou son ERP/TMS) construit un fichier XML qui contient : un en-tête de groupe, une (ou plusieurs) instructions de paiement PmtInf et, dans chaque instruction, autant de CdtTrfTxInf que de bénéficiaires à payer. La banque réceptionne le fichier, le valide (schéma + règles métier + règles SEPA/CBPR+), exécute les virements, et renvoie un pain.002 (Customer Payment Status Report) qui détaille l'acceptation ou le rejet par transaction.
En aval, chaque virement est routé sous forme de pacs.008 (FI to FI Customer Credit Transfer) entre la banque ordonnatrice et la banque du bénéficiaire. Côté client, le mouvement réapparaît dans le relevé bancaire camt.053 (ou MT940 en mode legacy).
Structure XML
pain.001 est encapsulé dans <Document> avec namespace de la
version. Trois niveaux structurent le contenu :
- GrpHdr (Group Header) — identifiant du message
MsgId, datetime de créationCreDtTm, nombre total de transactionsNbOfTxs, somme de contrôleCtrlSum, partie initiatriceInitgPty(peut différer du Debtor). - PmtInf (Payment Information) — un ordre de paiement par compte débiteur, par devise, par date d'exécution. Porte
PmtMtd(TRF pour Credit Transfer),ReqdExctnDt,Dbtr,DbtrAcct,DbtrAgt, et la liste desCdtTrfTxInf. Répétable. - CdtTrfTxInf (Credit Transfer Transaction Information) — une transaction par bénéficiaire. Porte
PmtId(EndToEndIdobligatoire,UETRoptionnel selon version),Amt,Cdtr,CdtrAcct,CdtrAgtfacultatif si SEPA SCT,RmtInf. Répétable.
Champs clés
GrpHdr/MsgId— identifiant unique du message côté émetteur. La banque rejette tout doublon dans une fenêtre glissante (typiquement 90 jours).GrpHdr/NbOfTxsetCtrlSum— totaux de contrôle qui doivent matcher exactement la somme des transactions filles. Une banque rejette le fichier entier en cas de mismatch.PmtInf/PmtMtd— fixe pour pain.001 àTRF(Credit Transfer). Le pendantDDappartient à pain.008 (Direct Debit).PmtInf/PmtTpInf/SvcLvl/Cd— niveau de service.SEPApour SCT,INSTpour SCT Inst,SDVApour Same Day Value,URGPpour urgent. Vide en CBPR+ classique.PmtInf/ReqdExctnDt— date d'exécution souhaitée. Format ISO date ouDtTmselon la version. La banque peut décaler à j+1 selon le cut-off.PmtInf/ChrgBr— code de répartition des frais.SLEVpour SEPA,DEBT(= MT OUR),SHAR(= SHA),CRED(= BEN).CdtTrfTxInf/PmtId/EndToEndId— référence métier transportée bout en bout. Apparaît dans le pacs.008 puis dans le camt.053 du bénéficiaire : c'est l'identifiant à utiliser pour le rapprochement comptable.CdtTrfTxInf/RmtInf/UstrdvsStrd— libellé non structuré (140 caractères max en SEPA) ou structuré (référence créancier ISO 11649, formatRF+ 2 check digits + 21 caractères).
Exemple SEPA SCT
Un fichier pain.001.001.09 émis par ACME SARL le 14 mai 2026 contenant deux virements : une facture vers Hans Mueller GmbH (12 500 EUR, référence structurée RF) et un salaire vers Maria Acosta en Espagne (750 EUR, libellé libre).
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>ACME-20260514-001</MsgId>
<CreDtTm>2026-05-14T09:15:00+02:00</CreDtTm>
<NbOfTxs>2</NbOfTxs>
<CtrlSum>13250.00</CtrlSum>
<InitgPty>
<Nm>ACME SARL</Nm>
<Id>
<OrgId>
<Othr><Id>SIRET12345678901234</Id></Othr>
</OrgId>
</Id>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>ACME-PMT-2026001</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<BtchBookg>true</BtchBookg>
<NbOfTxs>2</NbOfTxs>
<CtrlSum>13250.00</CtrlSum>
<PmtTpInf>
<SvcLvl><Cd>SEPA</Cd></SvcLvl>
</PmtTpInf>
<ReqdExctnDt>
<Dt>2026-05-15</Dt>
</ReqdExctnDt>
<Dbtr>
<Nm>ACME SARL</Nm>
</Dbtr>
<DbtrAcct>
<Id><IBAN>FR7630006000011234567890189</IBAN></Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId><BICFI>BNPAFRPPXXX</BICFI></FinInstnId>
</DbtrAgt>
<ChrgBr>SLEV</ChrgBr>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>INV2026-187</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">12500.00</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId><BICFI>DEUTDEFFXXX</BICFI></FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Hans Mueller GmbH</Nm>
</Cdtr>
<CdtrAcct>
<Id><IBAN>DE89370400440532013000</IBAN></Id>
</CdtrAcct>
<RmtInf>
<Strd>
<CdtrRefInf>
<Tp><CdOrPrtry><Cd>SCOR</Cd></CdOrPrtry></Tp>
<Ref>RF18INV2026187</Ref>
</CdtrRefInf>
</Strd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>SAL2026-05-ACOSTA</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">750.00</InstdAmt>
</Amt>
<Cdtr>
<Nm>Maria Acosta</Nm>
</Cdtr>
<CdtrAcct>
<Id><IBAN>ES9121000418450200051332</IBAN></Id>
</CdtrAcct>
<RmtInf>
<Ustrd>SALAIRE MAI 2026</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document> Versions
Plusieurs versions de pain.001 cohabitent en 2026. Le choix dépend du profil suivi.
| Version | Publication | Usage |
|---|---|---|
pain.001.001.03 | 2009 | Version historique, encore acceptée par certaines banques européennes pour le SEPA SCT (EPC Rulebook 2009-2023). |
pain.001.001.09 | 2019 | Version CBPR+ et profile harmonisé. Apparition du tag UETR, intégration des règles SEPA SCT Inst, alignement sur la version pacs.008 v10. |
pain.001.001.11 | 2023 | Dernière version CGI-MP. Renforcement du structured remittance, alignement HVPS+. |
Les banques européennes acceptent typiquement v3 et v9 en parallèle dans la fenêtre de migration SEPA 2023-2025, puis v9 ou v11 à partir de 2026.
Pièges courants
- NbOfTxs / CtrlSum mismatch — la première cause de rejet de fichier.
GrpHdr/NbOfTxsdoit égaler la somme desPmtInf/NbOfTxs, qui à leur tour doivent égaler le nombre deCdtTrfTxInfde chaque PmtInf.CtrlSumest la somme arithmétique desInstdAmt, à deux décimales, sans symbole. - MsgId trop long — limite 35 caractères. Un horodatage tronqué ou un compteur sans préfixe explose vite côté multi-banques.
- EndToEndId obligatoire — à fournir pour chaque transaction. Si l'ERP ne le génère pas, mettre
NOTPROVIDED(valeur prévue par la norme). - BICFI sans branch code — un BIC SWIFT à 11 caractères se termine par un branch code (souvent
XXX). LeBICFIISO 20022 accepte 8 ou 11 caractères, mais sansXXXajouté arbitrairement : c'est une cause classique de validation Schematron en CBPR+. - UTF-8 et caractères latins étendus — pain.001 v9 et v11 acceptent UTF-8 mais le profil SEPA limite le jeu autorisé au sous-ensemble SEPA character set (RFC 3986 + quelques caractères de ponctuation). Un caractère hors plage déclenche un rejet à la première gateway bancaire.
- RgltryRptg manquant — pour les virements hors UE au-dessus du seuil de reporting (12 500 EUR en France par exemple), le bloc
RgltryRptgavec code (BOP — Balance of Payments) est obligatoire. Son oubli déclenche un rejet par la Banque de France.
Messages liés
- pain.002 — Customer Payment Status Report. Réponse de la banque au pain.001, avec statut par transaction (
ACCP,RJCT,PDNG,ACSC…). - pain.008 — Customer Direct Debit Initiation. Le miroir prélèvement de pain.001.
- pain.007 — Customer Payment Reversal. Annulation côté débiteur.
- pacs.008 — message bank-to-bank généré à partir du pain.001 pour le routage interbancaire.
- camt.053 — relevé EOD où le mouvement réapparaîtra côté débiteur. Voir MT940 pour l'équivalent legacy.