Sebastien Rousseau

PAIN001

ISO 20022-kompatibilis fizetési fájlok létrehozásának automatizálása a pain001 segítségével

ISO 20022 fizetésautomatizálás és nagyértékű fizetések fejlesztése a pain001 könyvtárral.

6 min read
Banner for: ISO 20022-kompatibilis fizetési fájlok létrehozásának automatizálása a pain001 segítségével

Vezetői összefoglaló / Legfontosabb tanulságok

  • Az ISO 20022 pain.001 (CustomerCreditTransferInitiation) az a strukturált XML-üzenetformátum, amelyet átutalások kezdeményezésére használnak a SEPA (EPC SCT szabálykönyv) és a CBPR+ (a SWIFT határokon átnyúló üzenetküldési szabványa, amely a levelező bankok számára 2025 novemberétől kötelező) keretében.
  • A pain001 ⧉ beolvassa a fizetési adatokat CSV-ből vagy SQLite-ból, a sorokat a pain.001.001.09 üzenethierarchiához (GrpHdr → PmtInf → CdtTrfTxInf) rendeli, és egy sablonalapú generátoron keresztül megfelelő XML-fájlt jelenít meg: három sor Python az adattól a validált XML-ig.
  • Az XSD-validáció minden generált fájlon lefut a kimenet kiírása előtt; a könyvtár leíró kivételt vált ki, amely azonosítja a hibás elemet, a számosságot vagy a típuseltérést, így a hibák a generálás idején kerülnek elfogásra, nem pedig a banki benyújtáskor.
  • A CtrlSum és NbOfTxs értékeit a tranzakciókészletből számítja ki, nem kézzel adják meg őket: ezzel kiküszöbölhető a fizetési fájlok elutasításának leggyakoribb oka a SEPA és CBPR+ feldolgozási átjáróknál.
  • Mind a SEPA Credit Transfer (EUR, a SEPA-zónán belül), mind a CBPR+ (határokon átnyúló, több devizás) üzenetváltozat támogatott a message_type paraméteren keresztül, a mezőszintű validációs különbségeket belsőleg kezelve.

A pain001 ⧉ egy nyílt forráskódú Python-könyvtár ISO 20022 fizetéskezdeményezési fájlok generálásához. Beolvassa a fizetési adatokat egy strukturált bemenetből (CSV vagy SQLite), validálja az adatokat, megfelelő pain.001.001.09 XML-dokumentumot jelenít meg, és validálja a kimenetet az ISO 20022 XSD-sémával szemben, mindezt egyetlen függvényhívásban.

Ez a cikk leírja az ISO 20022 pain.001 üzenet szerkezetét, azt, hogy a pain001 hogyan rendeli a bemeneti adatokat az üzenetelemekhez, a validációs folyamatot, valamint a SEPA és CBPR+ közötti konfigurációs beállításokat.

Az ISO 20022 pain.001 üzenet szerkezete

Az ISO 20022 pain.001.001.09 (CustomerCreditTransferInitiation) üzenet három szintből áll:

GrpHdr (csoportfejléc) - egy fájlonként:

Elem Leírás Példa
MsgId Egyedi üzenetazonosító ACME20240115-001
CreDtTm Létrehozás dátuma és ideje 2024-01-15T09:00:00
NbOfTxs A tranzakciók teljes száma 3
CtrlSum Az összes utasított összeg összege 15000.00
InitgPty/Nm A kezdeményező fél neve Acme Corp

PmtInf (fizetési információ) - egy vagy több fájlonként, a tranzakciókat terhelt számla és fizetési dátum szerint csoportosítja:

Elem Leírás
PmtInfId Fizetési információ azonosítója
PmtMtd Fizetési mód - átutalás esetén mindig TRF
ReqdExctnDt/Dt Kért teljesítési dátum
Dbtr/Nm Terhelt fél (küldő) neve
DbtrAcct/Id/IBAN Terhelt fél IBAN-ja
DbtrAgt/FinInstnId/BICFI Terhelt fél bankjának BIC-je

CdtTrfTxInf (átutalási tranzakció információ) - egy vagy több minden PmtInf blokkonként:

Elem Leírás
PmtId/EndToEndId Végponttól végpontig terjedő hivatkozás (a láncon át megőrizve)
Amt/InstdAmt Utasított összeg deviza attribútummal
CdtrAgt/FinInstnId/BICFI Jóváírt fél bankjának BIC-je
Cdtr/Nm Jóváírt fél (fogadó) neve
CdtrAcct/Id/IBAN Jóváírt fél IBAN-ja
RmtInf/Ustrd Strukturálatlan átutalási információ (számlahivatkozás stb.)

XML generálása CSV-ből

Egy minimális pain001-hívás:

from pain001 import create_xml_v9

create_xml_v9(
    data_file="payments.csv",
    data_file_type="csv",
    xml_file_path="output/pain001.xml"
)

A CSV-fájl az oszlopneveket üzenetmezőkhöz rendeli. Egy minimális példa:

id,date,nb_of_txs,ctrl_sum,initiating_party_name,debtor_name,debtor_account_IBAN,debtor_agent_BIC,creditor_name,creditor_account_IBAN,creditor_agent_BIC,instd_amt,instd_amt_ccy,end_to_end_id,remittance_info
1,2024-01-15,1,1000.00,Acme Corp,Acme Corp,GB29NWBK60161331926819,NWBKGB2L,Supplier Ltd,DE89370400440532013000,COBADEFFXXX,1000.00,EUR,ACME20240115001,INV-2024-0042

A könyvtár a ctrl_sum és nb_of_txs értékeit a CSV-sorból olvassa be az egysoros fájlok esetében. Több soros fájloknál (több tranzakció egyetlen kötegben) a pain001 ezeket az értékeket a tranzakciókészletből számítja ki, ahelyett, hogy megbízna a bemeneti értékekben, ami megelőzi az eltéréseket.

Az SQLite-illesztés ugyanazt az oszlopnév-konvenciót használja. Adja át a data_file_type="sqlite" paramétert és a data_file útvonalat egy SQLite-adatbázisfájlhoz; a pain001 alapértelmezés szerint a payment táblát olvassa be.

A generált XML szerkezete

A fenti CSV-sorhoz helyesen megjelenített pain.001.001.09 dokumentum:

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
  <CstmrCdtTrfInitn>
    <GrpHdr>
      <MsgId>ACME20240115-001</MsgId>
      <CreDtTm>2024-01-15T09:00:00</CreDtTm>
      <NbOfTxs>1</NbOfTxs>
      <CtrlSum>1000.00</CtrlSum>
      <InitgPty><Nm>Acme Corp</Nm></InitgPty>
    </GrpHdr>
    <PmtInf>
      <PmtInfId>ACME20240115-PMT-001</PmtInfId>
      <PmtMtd>TRF</PmtMtd>
      <ReqdExctnDt><Dt>2024-01-16</Dt></ReqdExctnDt>
      <Dbtr><Nm>Acme Corp</Nm></Dbtr>
      <DbtrAcct><Id><IBAN>GB29NWBK60161331926819</IBAN></Id></DbtrAcct>
      <DbtrAgt><FinInstnId><BICFI>NWBKGB2L</BICFI></FinInstnId></DbtrAgt>
      <CdtTrfTxInf>
        <PmtId><EndToEndId>ACME20240115001</EndToEndId></PmtId>
        <Amt><InstdAmt Ccy="EUR">1000.00</InstdAmt></Amt>
        <CdtrAgt><FinInstnId><BICFI>COBADEFFXXX</BICFI></FinInstnId></CdtrAgt>
        <Cdtr><Nm>Supplier Ltd</Nm></Cdtr>
        <CdtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></CdtrAcct>
        <RmtInf><Ustrd>INV-2024-0042</Ustrd></RmtInf>
      </CdtTrfTxInf>
    </PmtInf>
  </CstmrCdtTrfInitn>
</Document>

XSD-validációs folyamat

A megjelenítés után a pain001 validálja a kimenetet az ISO 20022 pain.001.001.09 XSD-sémával szemben. A validáció ellenőrzi:

Ha a validáció sikertelen, a pain001 egy ValidationError kivételt vált ki az lxml hibaüzenettel, amely azonosítja a hibás XPath-kifejezést, elemnevet és korlátozást. Ez a hibás konfigurációkat a generálás idején hozza felszínre, nem pedig a banki benyújtáskor, ahol az elutasítási kódok jellemzően kevésbé leírók.

SEPA vs. CBPR+ konfiguráció

A SEPA Credit Transfer (ISO 20022 pain.001.001.09 az EPC SCT szabálykönyv alapján) és a CBPR+ (a SWIFT Cross-Border Payments and Reporting Plus szabványa) ugyanazt az üzenetsémát használja, de a kötelező mezőkészletekben és az értékkorlátozásokban különböznek:

Szempont SEPA SCT CBPR+
Deviza Csak EUR Több deviza
IBAN kötelező Igen Igen (jóváírt fél)
BIC kötelező Nem (SEPA-zóna útválasztás) Igen
Költségviselő (ChrgBr) SLEV DEBT, CRED vagy SHAR
Hatókör SEPA-zóna (36 ország) Globális levelező banki tevékenység

Konfigurálja az üzenettípust a payment_initiation_message_type paraméterrel:

create_xml_v9(
    data_file="payments.csv",
    data_file_type="csv",
    xml_file_path="output/pain001.xml",
    payment_initiation_message_type="pain.001.001.09"  # default; also accepts "pain.001.001.03" for legacy SEPA
)

A CBPR+ megfelelőség a SWIFT levelező banki tevékenység esetében a bejövő üzenetekre 2023 novemberétől, a kimenő üzenetekre pedig 2025 novemberétől vált kötelezővé. A CBPR+-kompatibilis pain.001 fájlok generálásához szükséges, hogy a BIC-mező ki legyen töltve, és hogy a ChrgBr elem jelen legyen.

Gyakran ismételt kérdések

Mi a különbség a pain.001 és a pain.008 között? A pain.001 (CustomerCreditTransferInitiation) átutalást kezdeményez: a küldő bankja megterheli a küldő számláját és jóváírja a fogadónál. A pain.008 (CustomerDirectDebitInitiation) beszedést kezdeményez: a jóváírt fél bankja beszedi a pénzeszközöket a terhelt féltől. A pain001 könyvtár kizárólag pain.001 fájlokat generál.

Melyik ISO 20022-verziót célozza a pain001? Az elsődleges cél a pain.001.001.09, az a verzió, amelyet a CBPR+ megkövetel, és amelyet az EPC az új SEPA-implementációkhoz előír. A könyvtár a payment_initiation_message_type paraméteren keresztül támogatja a pain.001.001.03-at is (a régi SEPA-verzió) azon szervezetek számára, amelyek még mindig régebbi banki illesztéseket használnak.

Kezelhet-e a pain001 több terhelt számlát egyetlen fájlban? Igen. Több PmtInf blokk különböző terhelt IBAN-okkal állítható elő úgy, hogy a különböző terhelt számlaértékekkel rendelkező CSV-sorokat csoportosítja. A pain001 minden egyedi (terhelt IBAN, teljesítési dátum) kombinációhoz egy PmtInf blokkot hoz létre, az összes megfelelő tranzakcióval CdtTrfTxInf gyermekelemekként beágyazva.

Mi történik, ha az XSD-validáció sikertelen? A pain001 egy pain001.exceptions.ValidationError kivételt vált ki az lxml validációs üzenettel. Az XML-fájl nem kerül a lemezre írásra, ha a validáció sikertelen, így csak érvényes fájlok jutnak el a kimeneti útvonalra. Gyakori hibaokok: az IBAN rossz formátumú, a BIC nem 8 vagy 11 karakter, a devizakód nem szerepel az ISO 4217-ben, vagy hiányoznak a kötelező elemek, amikor egy szükséges CSV-oszlop hiányzik.

Hivatkozások

  1. European Payments Council. SEPA Credit Transfer Scheme Customer-to-Bank Implementation Guidelines (v1.1). EPC, 2023. https://www.europeanpaymentscouncil.eu/document-library/implementation-guidelines/sepa-credit-transfer-scheme-customer-bank
  2. SWIFT. CBPR+ Usage Guidelines — Customer Credit Transfer Initiation (pain.001). SWIFT Standards, 2023. https://www.swift.com/standards/iso-20022/cbpr-plus-usage-guidelines
  3. ISO. ISO 20022 — Financial services — Universal financial industry message scheme. ISO.org, 2023. https://www.iso20022.org/
  4. Rousseau, S. pain001 — ISO 20022 payment file generator. GitHub, 2023. https://github.com/sebastienrousseau/pain001

Utolsó felülvizsgálat .

A cikk keresztközlése

Medium-formátumban másolás

# ISO 20022-kompatibilis fizetési fájlok létrehozásának automatizálása a pain001 segítségével — Sebastien Rousseau

> Originally published at [https://sebastienrousseau.com/hu/2023-09-29-automating-iso-20022-compliant-payment-file-creation-with-pain001/](https://sebastienrousseau.com/hu/2023-09-29-automating-iso-20022-compliant-payment-file-creation-with-pain001/)

Automatizálja az ISO 20022 pain.001 fizetési fájlok létrehozását CSV-ből vagy SQLite-ból. A pain001 az a nyílt forráskódú Python-könyvtár, amely leegyszerűsíti a megfelelőséget.

Read the full article on sebastienrousseau.com: https://sebastienrousseau.com/hu/2023-09-29-automating-iso-20022-compliant-payment-file-creation-with-pain001/

Mastodon-formátumban másolás

ISO 20022-kompatibilis fizetési fájlok létrehozásának automatizálása a pain001 segítségével — Sebastien Rousseau

Automatizálja az ISO 20022 pain.001 fizetési fájlok létrehozását CSV-ből vagy SQLite-ból. A pain001 az a nyílt forráskódú Python-könyvtár, amely leegyszerűsíti a megfelelőséget.

https://sebastienrousseau.com/hu/2023-09-29-automating-iso-20022-compliant-payment-file-creation-with-pain001/

LinkedIn-formátumban másolás

ISO 20022-kompatibilis fizetési fájlok létrehozásának automatizálása a pain001 segítségével — Sebastien Rousseau

Automatizálja az ISO 20022 pain.001 fizetési fájlok létrehozását CSV-ből vagy SQLite-ból. A pain001 az a nyílt forráskódú Python-könyvtár, amely leegyszerűsíti a megfelelőséget.

Íme a legfontosabb stratégiai tanulságok:

- Az ISO 20022 pain.001 üzenet szerkezete. Az ISO 20022 pain.001.001.09 (CustomerCreditTransferInitiation) üzenet három szintből áll:.
- XML generálása CSV-ből. Egy minimális pain001-hívás:.
- A generált XML szerkezete. A fenti CSV-sorhoz helyesen megjelenített pain.001.001.09 dokumentum:.
- XSD-validációs folyamat. A megjelenítés után a pain001 validálja a kimenetet az ISO 20022 pain.001.001.09 XSD-sémával szemben.

Mi az Ön szervezetének megközelítése az e cikkben felvázolt kihívásokhoz?

→ https://sebastienrousseau.com/hu/2023-09-29-automating-iso-20022-compliant-payment-file-creation-with-pain001/

#Pain001 #Iso20022 #Pain.001.001.09 #Customercredittransferinitiation #SepaCreditTransfer

Sebastien Rousseau | CC-BY-4.0
A cikk idézése

ISO 20022-kompatibilis fizetési fájlok létrehozásának automatizálása a pain001 segítségével — Sebastien Rousseau

Automatizálja az ISO 20022 pain.001 fizetési fájlok létrehozását CSV-ből vagy SQLite-ból. A pain001 az a nyílt forráskódú Python-könyvtár, amely leegyszerűsíti a megfelelőséget.

BibTeX

@online{rousseau2023iso,
  author  = {Rousseau, Sebastien},
  title   = {{ISO 20022-kompatibilis fizetési fájlok létrehozásának automatizálása a pain001 segítségével — Sebastien Rousseau}},
  year    = {2023},
  url     = {https://sebastienrousseau.com/hu/2023-09-29-automating-iso-20022-compliant-payment-file-creation-with-pain001/},
  urldate = {2023}
}

RIS

TY  - GEN
AU  - Rousseau, Sebastien
TI  - ISO 20022-kompatibilis fizetési fájlok létrehozásának automatizálása a pain001 segítségével — Sebastien Rousseau
PY  - 2023
UR  - https://sebastienrousseau.com/hu/2023-09-29-automating-iso-20022-compliant-payment-file-creation-with-pain001/
ER  -

Vancouver

Rousseau S. ISO 20022-kompatibilis fizetési fájlok létrehozásának automatizálása a pain001 segítségével — Sebastien Rousseau. sebastienrousseau.com. 2023 Sep 29. Available from: https://sebastienrousseau.com/hu/2023-09-29-automating-iso-20022-compliant-payment-file-creation-with-pain001/

Chicago

Rousseau, Sebastien. "ISO 20022-kompatibilis fizetési fájlok létrehozásának automatizálása a pain001 segítségével — Sebastien Rousseau." sebastienrousseau.com. September 29, 2023. https://sebastienrousseau.com/hu/2023-09-29-automating-iso-20022-compliant-payment-file-creation-with-pain001/.

APA

Rousseau, S. (2023, September 29). ISO 20022-kompatibilis fizetési fájlok létrehozásának automatizálása a pain001 segítségével — Sebastien Rousseau. sebastienrousseau.com. https://sebastienrousseau.com/hu/2023-09-29-automating-iso-20022-compliant-payment-file-creation-with-pain001/

A cikk újraközlése

ISO 20022-kompatibilis fizetési fájlok létrehozásának automatizálása a pain001 segítségével — Sebastien Rousseau

Automatizálja az ISO 20022 pain.001 fizetési fájlok létrehozását CSV-ből vagy SQLite-ból. A pain001 az a nyílt forráskódú Python-könyvtár, amely leegyszerűsíti a megfelelőséget.

Ez a cikk a következő licenc alatt áll: Creative Commons Attribution 4.0 International. Az újraközléshez a kanonikus URL forrásmegjelölése szükséges.

ISO 20022-kompatibilis fizetési fájlok létrehozásának automatizálása a pain001 segítségével — Sebastien Rousseau

Automatizálja az ISO 20022 pain.001 fizetési fájlok létrehozását CSV-ből vagy SQLite-ból. A pain001 az a nyílt forráskódú Python-könyvtár, amely leegyszerűsíti a megfelelőséget.

Originally published at https://sebastienrousseau.com/hu/2023-09-29-automating-iso-20022-compliant-payment-file-creation-with-pain001/ by Sebastien Rousseau.
Licensed under CC-BY-4.0.