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 (Customer Payment Status Report), принимая или отклоняя файл или отдельные транзакции с кодами причин ISO.
  • Что происходит дальше: после принятия банк превращает каждое поручение в межбанковские сообщения, такие как pacs.008, которых компания никогда не видит.
  • Где используется: кредитовые переводы SEPA по правилам EPC, трансграничные платежи в сети Swift в рамках CBPR+ (pain.001.001.09) и многие национальные платёжные системы. Корпус примеров Pain001 охватывает 42 сценария на 17 рынках.

Как устроено сообщение pain.001#

Все версии имеют одинаковый трёхуровневый каркас внутри элемента <CstmrCdtTrfInitn>.

Уровень Элемент Что содержит
1 <GrpHdr> Group Header (заголовок группы) Идентификатор сообщения, время создания, число транзакций (NbOfTxs), контрольная сумма (CtrlSum), инициирующая сторона
2 <PmtInf> Payment Information (информация о платеже) Один пакет: способ платежа, запрошенная дата исполнения, плательщик, счёт и банк плательщика, распределение комиссий
3 <CdtTrfTxInf> Credit Transfer Transaction (транзакция перевода) Один платёж: сквозная ссылка, сумма и валюта, получатель, счёт и банк получателя, назначение платежа

Файл может содержать несколько пакетов <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/

Техническая документация описывает все параметры, а FAQ отвечает на вопросы, которые чаще всего задают казначейства, операционные и инженерные команды.

Источники#

  • Определения и архив сообщений ISO 20022: iso20022.org
  • Правила кредитовых переводов SEPA: European Payments Council
  • CBPR+ и ретрансляция MT101: Swift