ISO 20022 простими словами

Що таке pain.001? Ініціювання кредитових переказів ISO 20022

Повідомлення ISO 20022, яке компанія надсилає своєму банку, щоб доручити кредитові перекази: що це, як воно побудоване, яку версію обрати, і повний приклад, що проходить перевірку за офіційною схемою.

pain.001 — це повідомлення ISO 20022, яке компанія надсилає своєму банку, щоб доручити один або кілька кредитових переказів. Його повна назва — Customer Credit Transfer Initiation (ініціювання кредитового переказу клієнтом): "pain" — родина повідомлень ініціювання платежів, .001 — номер повідомлення, а суфікс, наприклад pain.001.001.09, — версія. Це XML, воно перевіряється за офіційною схемою (XSD) і замінює власні CSV-формати банків та текстове повідомлення SWIFT MT101.

pain.001 за хвилину#

  • Хто надсилає: компанія (платник або агент, що діє від його імені) надсилає його своєму банку (банку платника).
  • Що містить: один або кілька пакетів кредитових переказів, кожен із рахунком платника, запитаною датою виконання та будь-якою кількістю платежів отримувачам.
  • Що надходить у відповідь: банк відповідає повідомленням pain.002 — звітом про статус платежів клієнта, який приймає або відхиляє файл чи окремі транзакції з кодами причин ISO.
  • Що відбувається далі: після прийняття банк перетворює кожне доручення на міжбанківські повідомлення, як-от pacs.008, яких компанія ніколи не бачить.
  • Де використовується: кредитові перекази SEPA за правилами EPC, транскордонні платежі в Swift за CBPR+ (pain.001.001.09) і багато національних платіжних схем. Корпус прикладів Pain001 охоплює 42 сценарії на 17 ринках.

Структура повідомлення pain.001#

Усі версії мають однаковий трирівневий каркас усередині елемента <CstmrCdtTrfInitn>.

Рівень Елемент Що містить
1 <GrpHdr> Заголовок групи Ідентифікатор повідомлення, час створення, кількість транзакцій (NbOfTxs), контрольна сума (CtrlSum), ініціатор
2 <PmtInf> Платіжна інформація Один пакет: спосіб платежу, запитана дата виконання, платник, рахунок і банк платника, сторона, що сплачує комісії
3 <CdtTrfTxInf> Транзакція кредитового переказу Один платіж: наскрізний ідентифікатор, сума й валюта, отримувач, рахунок і банк отримувача, призначення платежу

Файл може містити кілька пакетів <PmtInf>, а кожен пакет — багато платежів <CdtTrfTxInf>. NbOfTxs і CtrlSum наводяться і на рівні файлу, і на рівні пакета та мають відповідати платежам, які вони підраховують; це одна з найпоширеніших причин, чому банк відхиляє файл.

Повний приклад pain.001#

Це один кредитовий переказ SEPA у форматі pain.001.001.09, взятий без змін із корпусу прикладів Pain001. Він проходить перевірку за офіційною XSD ISO 20022. Сторони, IBAN і BIC вигадані.

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

Спробуйте власні дані в демо в браузері: воно створює файл pain.001 із CSV і перевіряє його за офіційною схемою, не передаючи даних за межі вашого пристрою.

Версії pain.001#

ISO випускає нову версію, коли змінюється модель повідомлення. Банки й платіжні схеми приймають певні версії, тож надсилати слід ту версію, яку вказано в документації каналу вашого банку.

Версія Примітки
pain.001.001.03 Давня робоча версія для SEPA і CGI; ідентифікує банки елементом <BIC>
.04, .05, .06, .07, .08 Проміжні версії, які використовують окремі канали
pain.001.001.09 Версія 2019 року, яку CBPR+ обрала для Swift; ідентифікує банки елементом <BICFI>, додає передавання LEI та UETR
.10, .11, .12 Уточнення після 2019 року
pain.001.001.13 Опублікована ISO 19 березня 2026 року; додає необов’язковий унікальний ідентифікатор транзакції (UnqTxIdr)

Матриця сумісності показує, які версії Pain001 генерує, перевіряє та між якими виконує міграцію.

Повідомлення Напрям Призначення
pain.001 Від компанії до її банку Доручає кредитові перекази (відправляє кошти)
pain.002 Від банку до компанії Повідомляє статус pain.001 або pain.008: прийнято, частково прийнято чи відхилено, з кодами причин
pain.008 Від компанії до її банку Доручає прямі дебети (стягує кошти за мандатом)
pacs.008 Між банками Міжбанківський кредитовий переказ, на який перетворюється доручення pain.001
MT101 Компанія або банк, через Swift Застаріле текстове повідомлення "Request for Transfer", яке замінює pain.001. У серпні 2026 року Swift відклав виведення з обігу міжбанківської ретрансляції MT101 (Swift); див. від MT101 до pain.001

Глосарій простою мовою пояснює решту термінології ISO 20022.

Чому банки відхиляють файли pain.001#

Файл може бути коректним XML і все одно бути відхиленим. Перевірки накладаються шарами:

  1. Схема: файл має проходити перевірку за офіційною XSD своєї версії.
  2. Якість даних: IBAN проходять перевірку контрольних цифр, BIC мають правильний формат, дати й суми коректні, а NbOfTxs і CtrlSum відповідають платежам.
  3. Правила схеми: SEPA, CBPR+ і національні схеми додають власні обмеження, наприклад дозволений набір символів або структуровану поштову адресу.
  4. Профіль і канал вашого банку: кожен банк публікує власні настанови з використання поверх правил схеми.

Pain001 перевіряє перші три шари ще до того, як файл потрапить до банку, і прямо зазначає, що четвертий має підтвердити банк.

Як створити файл pain.001#

  • З електронної таблиці: з Excel у pain.001 перетворює список платежів в Excel або CSV на перевірений файл.
  • У браузері: демо створює й перевіряє файл локально, без завантаження на сервер.
  • З коду або командного рядка: встановіть відкриту бібліотеку pain001 і виконайте:
pain001 -t pain.001.001.09 -d payments.csv -o out/

Технічний довідник описує всі параметри, а поширені запитання відповідають на те, що найчастіше запитують команди казначейства, операцій та розробки.

Джерела#

  • Визначення та архів повідомлень ISO 20022: iso20022.org
  • Правила кредитових переказів SEPA: European Payments Council
  • CBPR+ і ретрансляція MT101: Swift