ISO 20022 pe înțeles

Ce este pain.001? Inițierea transferurilor în ISO 20022

Mesajul ISO 20022 prin care o companie dispune băncii transferuri de credit: ce este, cum este construit, ce versiune să folosești și un exemplu complet care se validează față de schema oficială.

pain.001 este mesajul ISO 20022 prin care o companie dispune băncii sale unul sau mai multe transferuri de credit. Numele complet este Customer Credit Transfer Initiation: "pain" este familia de mesaje pentru inițierea plăților, .001 este numărul mesajului, iar sufixul, de exemplu pain.001.001.09, este versiunea. Este XML, se validează față de o schemă oficială (XSD) și înlocuiește formatele CSV specifice fiecărei bănci și mesajul text SWIFT MT101.

pain.001 într-un minut#

  • Cine îl trimite: o companie (plătitorul sau un agent care acționează în numele său) îl trimite propriei bănci (banca plătitorului).
  • Ce conține: unul sau mai multe loturi de transferuri, fiecare cu un cont al plătitorului, o dată de execuție solicitată și oricâte plăți către beneficiari.
  • Ce primești înapoi: banca răspunde cu pain.002, Customer Payment Status Report, acceptând sau respingând fișierul ori tranzacții individuale, cu coduri de motiv ISO.
  • Ce urmează: după acceptare, banca transformă fiecare instrucțiune în mesaje interbancare precum pacs.008, pe care compania nu le vede niciodată.
  • Unde se folosește: transferuri SEPA conform regulamentelor EPC, plăți transfrontaliere prin Swift în cadrul CBPR+ (pain.001.001.09) și multe scheme naționale. Corpusul de exemple Pain001 acoperă 42 de scenarii din 17 piețe.

Cum este structurat un mesaj pain.001#

Toate versiunile au același schelet pe trei niveluri în interiorul unui element <CstmrCdtTrfInitn>.

Nivel Element Ce conține
1 <GrpHdr> Group Header (antetul grupului) ID-ul mesajului, momentul creării, numărul de tranzacții (NbOfTxs), suma de control (CtrlSum), partea inițiatoare
2 <PmtInf> Payment Information (informații de plată) Un lot: metoda de plată, data de execuție solicitată, plătitorul, contul și banca plătitorului, suportarea comisioanelor
3 <CdtTrfTxInf> Credit Transfer Transaction (tranzacția de transfer) O plată: referința end-to-end, suma și moneda, beneficiarul, contul și banca beneficiarului, informațiile de plată

Un fișier poate conține mai multe loturi <PmtInf>, iar fiecare lot multe plăți <CdtTrfTxInf>. NbOfTxs și CtrlSum apar atât la nivel de fișier, cât și la nivel de lot și trebuie să corespundă plăților pe care le numără, unul dintre cele mai frecvente motive pentru care o bancă respinge un fișier.

Un exemplu complet de pain.001#

Acesta este un singur transfer SEPA în pain.001.001.09, preluat neschimbat din corpusul de exemple Pain001. Se validează față de XSD-ul oficial ISO 20022. Părțile, codurile IBAN și BIC sunt fictive.

<?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>

Încearcă propriile date în demonstrația din browser: construiește un fișier pain.001 dintr-un CSV și îl validează față de schema oficială fără ca datele să părăsească computerul tău.

Versiunile pain.001#

ISO publică o versiune nouă atunci când se schimbă modelul mesajului. Băncile și schemele acceptă anumite versiuni, așa că trimiți versiunea indicată în documentația canalului băncii tale.

Versiune Observații
pain.001.001.03 Formatul consacrat pentru SEPA și CGI; identifică băncile prin <BIC>
.04, .05, .06, .07, .08 Versiuni de mentenanță folosite de anumite canale
pain.001.001.09 Versiunea din 2019 aleasă de CBPR+ pentru Swift; identifică băncile prin <BICFI> și adaugă suport pentru LEI și UETR
.10, .11, .12 Rafinări de după 2019
pain.001.001.13 Publicată de ISO la 19 martie 2026; adaugă un identificator unic opțional al tranzacției (UnqTxIdr)

Matricea de compatibilitate arată ce versiuni generează, validează Pain001 și între care migrează datele.

Mesaj Direcție Scop
pain.001 Companie către banca sa Dispune transferuri de credit (banii ies)
pain.002 Bancă către companie Raportează starea unui pain.001 sau pain.008: acceptat, acceptat parțial sau respins, cu coduri de motiv
pain.008 Companie către banca sa Dispune debitări directe (încasează sume pe baza unui mandat)
pacs.008 Bancă către bancă Transferul interbancar în care se transformă o instrucțiune pain.001
MT101 Companie sau bancă, prin Swift Vechiul mesaj text "Request for Transfer" pe care pain.001 îl înlocuiește. În august 2026, Swift a amânat retragerea retransmiterii interbancare MT101 (Swift); vezi MT101 în pain.001

Glosarul explică restul vocabularului ISO 20022 pe înțelesul tuturor.

De ce resping băncile fișierele pain.001#

Un fișier poate fi XML corect și totuși să fie respins. Verificările se suprapun pe straturi:

  1. Schema: fișierul trebuie să se valideze față de XSD-ul oficial al versiunii sale.
  2. Calitatea datelor: codurile IBAN au cifrele de control corecte, codurile BIC sunt bine formate, datele și sumele sunt valide, iar NbOfTxs și CtrlSum corespund plăților.
  3. Regulile schemei: SEPA, CBPR+ și schemele naționale adaugă propriile restricții, cum ar fi setul de caractere permis sau o adresă poștală structurată.
  4. Profilul și canalul băncii tale: fiecare bancă își publică propriile ghiduri de utilizare peste regulile schemei.

Pain001 verifică primele trei straturi înainte ca fișierul să ajungă la bancă și precizează clar că al patrulea trebuie confirmat de bancă.

Cum creezi un fișier pain.001#

  • Dintr-o foaie de calcul: Excel în pain.001 transformă o listă de plăți Excel sau CSV într-un fișier validat.
  • În browser: demonstrația generează și validează un fișier local, fără încărcare.
  • Din cod sau din linia de comandă: instalează biblioteca pain001 open-source și rulează:
pain001 -t pain.001.001.09 -d payments.csv -o out/

Referința tehnică acoperă fiecare opțiune, iar întrebările frecvente răspund la ce întreabă cel mai des echipele de trezorerie, operațiuni și inginerie.

Surse#