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 等银行间报文,企业不会看到这些报文。
  • 使用场景:遵循 EPC 规则手册的 SEPA 贷记转账、在 Swift 上遵循 CBPR+ 的跨境支付(pain.001.001.09)以及众多国内支付体系。Pain001 的示例语料库覆盖 17 个市场的 42 个场景。

pain.001 报文的结构#

所有版本在 <CstmrCdtTrfInitn> 元素内都采用相同的三层骨架。

层级 元素 包含内容
1 <GrpHdr> 组头 报文 ID、创建时间戳、交易笔数(NbOfTxs)、控制总额(CtrlSum)、发起方
2 <PmtInf> 支付信息 一个批次:支付方式、指定执行日期、付款人、付款人账户及代理行、费用承担方
3 <CdtTrfTxInf> 贷记转账交易 一笔付款:端到端参考号、金额与币种、收款人、收款人账户及代理行、汇款信息

一个文件可以包含多个 <PmtInf> 批次,每个批次可包含多笔 <CdtTrfTxInf> 付款。NbOfTxs 和 CtrlSum 同时出现在文件级和批次级,必须与其统计的付款相符,这是银行退回文件最常见的原因之一。

完整的 pain.001 示例#

这是一笔 pain.001.001.09 格式的 SEPA 贷记转账,原样取自 Pain001 的示例语料库。它可通过官方 ISO 20022 XSD 验证。其中的当事方、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>

在浏览器演示中试用您自己的数据:它从 CSV 生成 pain.001 文件并依据官方模式进行验证,数据不会离开您的设备。

pain.001 的版本#

当报文模型发生变化时,ISO 会发布新版本。各银行和支付体系只接受特定版本,因此您发送的版本应以银行渠道文档中指定的为准。

版本 说明
pain.001.001.03 长期以来 SEPA 和 CGI 的主力版本;使用 <BIC> 标识银行
.04, .05, .06, .07, .08 特定渠道使用的维护版本
pain.001.001.09 CBPR+ 为 Swift 选定的 2019 年版本;使用 <BICFI> 标识银行,并支持携带 LEI 和 UETR
.10, .11, .12 2019 年之后的改进版本
pain.001.001.13 ISO 于 2026 年 3 月 19 日发布;新增可选的唯一交易标识符(UnqTxIdr)

兼容性矩阵列出了 Pain001 可生成、验证及相互迁移的版本。

报文 方向 用途
pain.001 企业发往其银行 发起贷记转账(向外付款)
pain.002 银行发往企业 报告 pain.001 或 pain.008 的状态:已接受、部分接受或已拒绝,并附原因代码
pain.008 企业发往其银行 发起直接借记(依据授权收款)
pacs.008 银行之间 pain.001 指令转换而成的银行间贷记转账
MT101 企业或银行,经由 Swift 被 pain.001 取代的传统文本报文 "Request for Transfer"。Swift 于 2026 年 8 月推迟了银行间 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/

技术参考涵盖所有选项,常见问题解答了财资、运营和工程团队最常提出的问题。

资料来源#